diff --git a/.SRCINFO b/.SRCINFO index c1bc8ee..0ae2226 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,17 +1,19 @@ pkgbase = open-video-downloader-appimage - pkgdesc = A cross-platform GUI for youtube-dl made in Electron and node.js - pkgver = 2.4.10 - pkgrel = 3 - url = https://github.com/StefanLobbenmeier/youtube-dl-gui + pkgdesc = A cross-platform GUI for youtube-dl made in Rust with Tauri and Vue + Typescript + pkgver = 3.2.0 + pkgrel = 1 + url = https://github.com/jely2002/youtube-dl-gui arch = x86_64 license = AGPL3 - depends = zlib - depends = glibc - depends = python-mutagen + provides = open-video-downloader conflicts = open-video-downloader - conflicts = youtube-dl-gui options = !strip - source = open-video-downloader-2.4.10.AppImage::https://github.com/StefanLobbenmeier/youtube-dl-gui/releases/download/v2.4.10/Open-Video-Downloader-2.4.10.AppImage - sha256sums = e99cf7780eebbe74a1e45cbac822f965c7e7299193adce39b37240d75d8e2389 + options = !debug + source = open-video-downloader-3.2.0.AppImage::https://github.com/jely2002/youtube-dl-gui/releases/download/app-v3.2.0/Open.Video.Downloader_3.2.0_amd64.AppImage + source = open-video-downloader.desktop + source = open-video-downloader.png + sha256sums = dffee4cfef50e8edb9be4136d5650b123e49b8a1ffd959ff3d2c42502fc391e3 + sha256sums = 217d02211a51853d920e53558cd9cbd7a753ba9f2036ddaa0ec4e00a77351b6c + sha256sums = 188992cbe106d0dd6e7b9c219020118a1246c3657c828f86e463617c3d6214cb pkgname = open-video-downloader-appimage diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6518c1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# AppImages +*.AppImage +# built packages +*.pkg.tar.zst diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..04f030a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Bryan Joshua Pedini + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PKGBUILD b/PKGBUILD index dadff1b..dc9e5e9 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,27 +1,41 @@ -# Maintainer: zxp19821005 -pkgname="open-video-downloader-appimage" -pkgver=2.4.10 -pkgrel=3 -pkgdesc="A cross-platform GUI for youtube-dl made in Electron and node.js" -arch=('x86_64') -url="https://github.com/StefanLobbenmeier/youtube-dl-gui" -license=('AGPL3') -conflicts=("${pkgname%-appimage}" "youtube-dl-gui") -depends=('zlib' 'glibc' 'python-mutagen') -options=('!strip') -_install_path="/opt/appimages" -source=("${pkgname%-appimage}-${pkgver}.AppImage::${url}/releases/download/v${pkgver}/Open-Video-Downloader-${pkgver}.AppImage") -sha256sums=('e99cf7780eebbe74a1e45cbac822f965c7e7299193adce39b37240d75d8e2389') - +# Maintainer: Bryan Joshua Pedini + +_pkgname="open-video-downloader" +_srcname="youtube-dl-gui" +_srcmntr="jely2002" + +pkgname="${_pkgname}-appimage" +pkgver="3.2.0" +pkgrel="1" +pkgdesc="A cross-platform GUI for youtube-dl made in Rust with Tauri and Vue + Typescript" +url="https://github.com/${_srcmntr}/${_srcname}" +arch=("x86_64") +license=("AGPL3") +options=("!strip" "!debug") +_archive="${_pkgname}-${pkgver}.AppImage" +source=( + "${_archive}::https://github.com/${_srcmntr}/${_srcname}/releases/download/app-v${pkgver}/Open.Video.Downloader_${pkgver}_amd64.AppImage" + "${_pkgname}.desktop" + "${_pkgname}.png" +) +conflicts=("open-video-downloader") +provides=("open-video-downloader") + +sha256sums=( + "dffee4cfef50e8edb9be4136d5650b123e49b8a1ffd959ff3d2c42502fc391e3" + "217d02211a51853d920e53558cd9cbd7a753ba9f2036ddaa0ec4e00a77351b6c" + "188992cbe106d0dd6e7b9c219020118a1246c3657c828f86e463617c3d6214cb" +) + prepare() { - chmod a+x "${srcdir}/${pkgname%-appimage}-${pkgver}.AppImage" - "${srcdir}/${pkgname%-appimage}-${pkgver}.AppImage" --appimage-extract > /dev/null - sed "s|AppRun|${_install_path}/${pkgname%-appimage}.AppImage|g;s|youtube-dl-gui|${pkgname%-appimage}|g;s|X-utility|Utility|g" \ - -i "${srcdir}/squashfs-root/${pkgname%-appimage}.desktop" + sed -i -e '/^X-AppImage-/d' "${srcdir}/${_pkgname}.desktop" } - + package() { - install -Dm755 "${srcdir}/${pkgname%-appimage}-${pkgver}.AppImage" "${pkgdir}/${_install_path}/${pkgname%-appimage}.AppImage" - install -Dm644 "${srcdir}/squashfs-root/usr/share/icons/hicolor/0x0/apps/${pkgname%-appimage}.png" -t "${pkgdir}/usr/share/pixmaps" - install -Dm644 "${srcdir}/squashfs-root/${pkgname%-appimage}.desktop" -t "${pkgdir}/usr/share/applications" -} \ No newline at end of file + install -Dm755 "${srcdir}/${_archive}" \ + "${pkgdir}/usr/bin/${_pkgname}" + install -Dm644 "$srcdir/${_pkgname}.desktop" \ + "$pkgdir/usr/share/applications/${_pkgname}.desktop" + install -Dm644 "$srcdir/${_pkgname}.png" \ + "$pkgdir/usr/share/icons/hicolor/256x256/apps/${_pkgname}.png" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..8bb2d73 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# open-video-downloader-appimage +PKGBUILD script for Arch Linux for `open-video-downloader-appimage` package diff --git a/open-video-downloader.desktop b/open-video-downloader.desktop new file mode 100644 index 0000000..01fab73 --- /dev/null +++ b/open-video-downloader.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Categories= +Comment=Download videos from all over the web. +Exec=open-video-downloader +StartupWMClass=open-video-downloader +Icon=open-video-downloader +Name=Open Video Downloader +Terminal=false +Type=Application + +X-AppImage-Name=Open_Video_Downloader +X-AppImage-Version=UNKNOWN +X-AppImage-Arch=x86_64 diff --git a/open-video-downloader.png b/open-video-downloader.png new file mode 100644 index 0000000..3de22fb Binary files /dev/null and b/open-video-downloader.png differ diff --git a/push.sh b/push.sh new file mode 100755 index 0000000..ac89e6a --- /dev/null +++ b/push.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +# Variables +gui=true +desktop="Open Video Downloader.desktop" +icon="open-video-downloader.png" + +# Get version +oldver=$(grep -E "^pkgver=" PKGBUILD | sed 's/pkgver="//;s/"//') +if [ $# -eq 1 ]; then + pkgver="${1}" +else + echo "Old version: ${oldver}" + read -p "New version: " pkgver +fi + +# Check version +if [ "${pkgver}" = "${oldver}" ] && [ -z "${FORCE_REBUILD}" ]; then + echo >/dev/stderr "Error: same (old) version specified - update aborted" + exit 1 +fi + +# Get variables from PKGBUILD +url=$(sed -n '/^source=(/,/)/p' PKGBUILD | grep -oE 'https?://[^"]+') +pkgname=$(grep -E "^pkgname=" PKGBUILD | sed 's/pkgname="//;s/"//') +_pkgname=$(grep -E "^_pkgname=" PKGBUILD | sed 's/_pkgname="//;s/"//') +_srcname=$(grep -E "^_srcname=" PKGBUILD | sed 's/_srcname="//;s/"//') +_srcmntr=$(grep -E "^_srcmntr=" PKGBUILD | sed 's/_srcmntr="//;s/"//') +_archive=$(grep -E "^_archive=" PKGBUILD | sed 's/_archive="//;s/"//') +pkgrel=$(grep -E "^pkgrel=" PKGBUILD | sed 's/pkgrel="//;s/"//') +aur_url="ssh://aur@aur.archlinux.org/${pkgname}.git" +if [ "${gui}" = "true" ] && [ -n "${_pkgname}" ]; then + newdesktop="${_pkgname}.desktop" + newicon="${_pkgname}.png" +else + newdesktop="${package}.desktop" + newicon="${package}.png" +fi + +# Perform variable substitution +url="${url//\$\{pkgname\}/$pkgname}" +url="${url//\$\{_pkgname\}/$_pkgname}" +url="${url//\$\{_srcname\}/$_srcname}" +url="${url//\$\{_srcmntr\}/$_srcmntr}" +url="${url//\$\{pkgver\}/$pkgver}" +_archive="${_archive//\$\{pkgname\}/$pkgname}" +_archive="${_archive//\$\{_pkgname\}/$_pkgname}" +_archive="${_archive//\$\{pkgver\}/$pkgver}" +aur_url="${aur_url//\$\{_pkgname\}/$_pkgname}" + +# Download archive +wget -O ${_archive} "${url}" +# Extract icon / .desktop files if appimage +if printf '%s' "${_archive,,}" | grep -qi "appimage"; then + chmod +x "${_archive}" + "./${_archive}" --appimage-extract + cp "squashfs-root/${desktop}" "${newdesktop}" + cp "squashfs-root/${icon}" "${newicon}" + if [ -L "squashfs-root" ]; then + rm -rf $(readlink -f squashfs-root) squashfs-root + fi +fi +# Calculate checksums +sha256bin=$(sha256sum ${_archive} | awk '{print $1}') +if [ "${gui}" = "true" ]; then + sha256dsk=$(sha256sum ${newdesktop} | awk '{print $1}') + sha256ico=$(sha256sum ${newicon} | awk '{print $1}') +fi +# Yoink the archive - unnecessary anymore +rm -f ${_archive} + +# Update PKGBUILD with new values +sed -i -E "s/^pkgver=\"[^\"]+\"/pkgver=\"$pkgver\"/" PKGBUILD +if [ "${gui}" = "true" ]; then + sed -i '/^sha256sums=(/,/^)/c\ +sha256sums=(\ + "'"$sha256bin"'"\ + "'"$sha256dsk"'"\ + "'"$sha256ico"'"\ +)' PKGBUILD +else + sed -i -E "s/^sha256sums=\(\"[^\"]+\"\)/sha256sums=(\"$sha256bin\")/" PKGBUILD +fi +# Update .SRCINFO +makepkg --printsrcinfo > .SRCINFO + +# Create git message with correct variable +if [ -n "$_pkgname" ]; then + commit_msg="Updated ${pkgname//\$\{_pkgname\}/_pkgname} to ${pkgver}-${pkgrel}" +else + commit_msg="Updated ${pkgname} to ${pkgver}-${pkgrel}" +fi + +if [ -z "${NO_GIT_PUSH}" ]; then + # In case of fire, git commit, git push, leave building + git add . + git commit -m "Updated ${pkgname} to ${pkgver}-${pkgrel}" + git remote add aur ${aur_url} + git push origin main + git push aur main:master +fi