1
1
mirror of https://github.com/neosubhamoy/pytubepp-helper.git synced 2026-02-04 11:22:22 +05:30

(feat): added initial tauri updater and minor ci/cd changes

This commit is contained in:
2025-02-11 19:41:14 +05:30
Verified
parent ff5ed47bf6
commit 94ad04f780
14 changed files with 389 additions and 114 deletions

View File

@@ -55,15 +55,27 @@ jobs:
- name: 🛠️ Install frontend dependencies - name: 🛠️ Install frontend dependencies
run: npm install run: npm install
- name: 📄 Read CHANGELOG
id: changelog
run: |
CONTENT=$(cat CHANGELOG.md)
echo "content<<EOF" >> $GITHUB_OUTPUT
echo "$CONTENT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: 🚀 Build and publish - name: 🚀 Build and publish
uses: tauri-apps/tauri-action@v0 uses: tauri-apps/tauri-action@v0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TARGET_ARCH: ${{ matrix.arch }} TARGET_ARCH: ${{ matrix.arch }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with: with:
tagName: ${{ github.ref_name }} tagName: ${{ github.ref_name }}
releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }} releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }}
releaseBody: 'See the assets to download this version and install.' releaseBody: ${{ steps.changelog.outputs.content }}
releaseDraft: true releaseDraft: true
prerelease: false prerelease: false
includeUpdaterJson: true
updaterJsonPreferNsis: true
args: ${{ matrix.args }} args: ${{ matrix.args }}

29
CHANGELOG.md Normal file
View File

@@ -0,0 +1,29 @@
### ✨ Changelog
- Migrated to Tauri v2
- Added support for caption download
- Added new Settings page
- Added dynamic websocket server port configuration option
- Added Node.js detection and installation option
- Changed RPM ffmpeg-free dependency to ffmpeg (as full ffmpeg is required for embedding captions)
- Improved single instance capability by switching to tauri_plugin_single_instance from websocket based single instance detection
- Enabled app-updater (for some packaging formats in Windows, MacOS)
- Minor fixes and improvements
### 📎 Minimum Requirements
- pytubepp v1.1.8
- pytubepp-extension v0.2.0
> IMPORTANT: MacOS users must re-click the 'Register' button after updating
> This is an Un-Signed Build (Windows doesn't trust this Certificate so, it may flag this as malicious software, in that case, disable Windows SmartScreen and Defender, install it, and then re-enable them)
> This is an Un-Signed Build (MacOS doesn't trust this Certificate so, it may flag this as from 'unverified developer' and prevent it from opening, in that case, open Settings and allow it from 'Settings > Privacy and Security' section to get started)
### ⬇️ Download Section
| Arch\OS | Windows (msi) | Windows (exe) | Linux (deb) | Linux (rpm) | MacOS (dmg) | MacOS (app) |
| :---- | :---- | :---- | :---- | :---- | :---- | :---- |
| x86_64 | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64_en-US.msi) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64-setup.exe) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_amd64.deb) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper-0.7.0-1.x86_64.rpm) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64.dmg) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_x64.app.tar.gz) |
| ARM64 | N/A | N/A | N/A | N/A | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_aarch64.dmg) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_aarch64.app.tar.gz) |

10
package-lock.json generated
View File

@@ -18,6 +18,7 @@
"@tauri-apps/plugin-fs": "^2.2.0", "@tauri-apps/plugin-fs": "^2.2.0",
"@tauri-apps/plugin-os": "^2.2.0", "@tauri-apps/plugin-os": "^2.2.0",
"@tauri-apps/plugin-shell": "^2.2.0", "@tauri-apps/plugin-shell": "^2.2.0",
"@tauri-apps/plugin-updater": "^2.5.0",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
@@ -1893,6 +1894,15 @@
"@tauri-apps/api": "^2.0.0" "@tauri-apps/api": "^2.0.0"
} }
}, },
"node_modules/@tauri-apps/plugin-updater": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-updater/-/plugin-updater-2.5.0.tgz",
"integrity": "sha512-CWpwrkgpMESDPgJ0EuXgQTI/U9zeZQ9NLUvMyuWVrsuRez7tJ/3c7y73LAkvkI6+ekUxVaRJrxYrSfd8W+DRvQ==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@tauri-apps/api": "^2.0.0"
}
},
"node_modules/@types/babel__core": { "node_modules/@types/babel__core": {
"version": "7.20.5", "version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",

View File

@@ -20,6 +20,7 @@
"@tauri-apps/plugin-fs": "^2.2.0", "@tauri-apps/plugin-fs": "^2.2.0",
"@tauri-apps/plugin-os": "^2.2.0", "@tauri-apps/plugin-os": "^2.2.0",
"@tauri-apps/plugin-shell": "^2.2.0", "@tauri-apps/plugin-shell": "^2.2.0",
"@tauri-apps/plugin-updater": "^2.5.0",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",

206
src-tauri/Cargo.lock generated
View File

@@ -62,6 +62,15 @@ version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "arbitrary"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
dependencies = [
"derive_arbitrary",
]
[[package]] [[package]]
name = "async-broadcast" name = "async-broadcast"
version = "0.7.2" version = "0.7.2"
@@ -346,6 +355,25 @@ dependencies = [
"byte-tools", "byte-tools",
] ]
[[package]]
name = "block-sys"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
dependencies = [
"objc-sys",
]
[[package]]
name = "block2"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e58aa60e59d8dbfcc36138f5f18be5f24394d33b38b24f7fd0b1caa33095f22f"
dependencies = [
"block-sys",
"objc2",
]
[[package]] [[package]]
name = "block2" name = "block2"
version = "0.5.1" version = "0.5.1"
@@ -829,6 +857,17 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "derive_arbitrary"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]] [[package]]
name = "derive_more" name = "derive_more"
version = "0.99.18" version = "0.99.18"
@@ -918,6 +957,17 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "displaydoc"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]] [[package]]
name = "dlopen2" name = "dlopen2"
version = "0.7.0" version = "0.7.0"
@@ -1111,6 +1161,18 @@ dependencies = [
"rustc_version 0.4.0", "rustc_version 0.4.0",
] ]
[[package]]
name = "filetime"
version = "0.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
dependencies = [
"cfg-if 1.0.0",
"libc",
"libredox",
"windows-sys 0.59.0",
]
[[package]] [[package]]
name = "fix-path-env" name = "fix-path-env"
version = "0.0.0" version = "0.0.0"
@@ -1839,6 +1901,16 @@ dependencies = [
"png", "png",
] ]
[[package]]
name = "icrate"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb69199826926eb864697bddd27f73d9fddcffc004f5733131e15b465e30642"
dependencies = [
"block2 0.4.0",
"objc2",
]
[[package]] [[package]]
name = "ident_case" name = "ident_case"
version = "1.0.1" version = "1.0.1"
@@ -2113,6 +2185,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"libc", "libc",
"redox_syscall 0.5.3",
] ]
[[package]] [[package]]
@@ -2226,6 +2299,12 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "minisign-verify"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6367d84fb54d4242af283086402907277715b8fe46976963af5ebf173f8efba3"
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.7.4" version = "0.7.4"
@@ -2422,7 +2501,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [ dependencies = [
"proc-macro-crate 2.0.0", "proc-macro-crate 3.2.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.98", "syn 2.0.98",
@@ -2463,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"libc", "libc",
"objc2", "objc2",
"objc2-core-data", "objc2-core-data",
@@ -2479,7 +2558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-core-location", "objc2-core-location",
"objc2-foundation", "objc2-foundation",
@@ -2491,7 +2570,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"
dependencies = [ dependencies = [
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
] ]
@@ -2503,7 +2582,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
] ]
@@ -2514,7 +2593,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
dependencies = [ dependencies = [
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
"objc2-metal", "objc2-metal",
@@ -2526,7 +2605,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"
dependencies = [ dependencies = [
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-contacts", "objc2-contacts",
"objc2-foundation", "objc2-foundation",
@@ -2545,7 +2624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"libc", "libc",
"objc2", "objc2",
] ]
@@ -2556,7 +2635,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"
dependencies = [ dependencies = [
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-app-kit", "objc2-app-kit",
"objc2-foundation", "objc2-foundation",
@@ -2569,11 +2648,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
] ]
[[package]]
name = "objc2-osa-kit"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6788b04a18ea31e3dc3ab256b8546639e5bbae07c1a0dc4ea8615252bc6aee9a"
dependencies = [
"bitflags 2.6.0",
"objc2",
"objc2-app-kit",
"objc2-foundation",
]
[[package]] [[package]]
name = "objc2-quartz-core" name = "objc2-quartz-core"
version = "0.2.2" version = "0.2.2"
@@ -2581,7 +2672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
"objc2-metal", "objc2-metal",
@@ -2604,7 +2695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-cloud-kit", "objc2-cloud-kit",
"objc2-core-data", "objc2-core-data",
@@ -2624,7 +2715,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"
dependencies = [ dependencies = [
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-foundation", "objc2-foundation",
] ]
@@ -2636,7 +2727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-core-location", "objc2-core-location",
"objc2-foundation", "objc2-foundation",
@@ -2649,7 +2740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"block2", "block2 0.5.1",
"objc2", "objc2",
"objc2-app-kit", "objc2-app-kit",
"objc2-foundation", "objc2-foundation",
@@ -2769,6 +2860,20 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "osakit"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35366a452fce3f8947eb2f33226a133aaf0cacedef2af67ade348d58be7f85d0"
dependencies = [
"icrate",
"objc2-foundation",
"objc2-osa-kit",
"serde",
"serde_json",
"thiserror 1.0.63",
]
[[package]] [[package]]
name = "pango" name = "pango"
version = "0.18.3" version = "0.18.3"
@@ -3174,6 +3279,7 @@ dependencies = [
"tauri-plugin-os", "tauri-plugin-os",
"tauri-plugin-shell", "tauri-plugin-shell",
"tauri-plugin-single-instance", "tauri-plugin-single-instance",
"tauri-plugin-updater",
"tokio", "tokio",
"tokio-tungstenite", "tokio-tungstenite",
] ]
@@ -4275,6 +4381,17 @@ dependencies = [
"syn 1.0.109", "syn 1.0.109",
] ]
[[package]]
name = "tar"
version = "0.4.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6"
dependencies = [
"filetime",
"libc",
"xattr",
]
[[package]] [[package]]
name = "target-lexicon" name = "target-lexicon"
version = "0.12.16" version = "0.12.16"
@@ -4488,6 +4605,37 @@ dependencies = [
"zbus", "zbus",
] ]
[[package]]
name = "tauri-plugin-updater"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebf3da08c36fb03c98c76e5563d4e74d9a590df0f40978cbe07f39cb52833f7c"
dependencies = [
"base64 0.22.1",
"dirs 6.0.0",
"flate2",
"futures-util",
"http",
"infer",
"minisign-verify",
"osakit",
"percent-encoding 2.3.1",
"reqwest",
"semver 1.0.23",
"serde",
"serde_json",
"tar",
"tauri",
"tauri-plugin",
"tempfile",
"thiserror 2.0.11",
"time 0.3.36",
"tokio",
"url 2.5.2",
"windows-sys 0.59.0",
"zip",
]
[[package]] [[package]]
name = "tauri-runtime" name = "tauri-runtime"
version = "2.3.0" version = "2.3.0"
@@ -5944,7 +6092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1" checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1"
dependencies = [ dependencies = [
"base64 0.22.1", "base64 0.22.1",
"block2", "block2 0.5.1",
"cookie", "cookie",
"crossbeam-channel", "crossbeam-channel",
"dpi", "dpi",
@@ -6011,6 +6159,17 @@ dependencies = [
"pkg-config", "pkg-config",
] ]
[[package]]
name = "xattr"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909"
dependencies = [
"libc",
"linux-raw-sys",
"rustix",
]
[[package]] [[package]]
name = "xdg-home" name = "xdg-home"
version = "1.3.0" version = "1.3.0"
@@ -6111,6 +6270,21 @@ version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
[[package]]
name = "zip"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils 0.8.20",
"displaydoc",
"indexmap 2.4.0",
"memchr",
"thiserror 2.0.11",
]
[[package]] [[package]]
name = "zvariant" name = "zvariant"
version = "5.4.0" version = "5.4.0"

View File

@@ -26,6 +26,7 @@ tauri-plugin-os = "2"
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-single-instance = "2" tauri-plugin-single-instance = "2"
tauri-plugin-updater = "2"
[features] [features]
# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!!

View File

@@ -11,6 +11,7 @@
"shell:default", "shell:default",
"os:default", "os:default",
"fs:default", "fs:default",
"updater:default",
"core:window:allow-hide", "core:window:allow-hide",
"fs:allow-app-write", "fs:allow-app-write",
"fs:allow-app-write-recursive" "fs:allow-app-write-recursive"

View File

@@ -1,98 +1,133 @@
{ {
"$schema": "../gen/schemas/desktop-schema.json", "$schema": "../gen/schemas/desktop-schema.json",
"identifier": "shell-scope", "identifier": "shell-scope",
"description": "allowed shell scopes", "description": "allowed shell scopes",
"windows": ["main"], "windows": [
"permissions": [ "main"
],
"permissions": [
{
"identifier": "shell:allow-execute",
"allow": [
{ {
"identifier": "shell:allow-execute", "name": "detect-windows",
"allow": [ "cmd": "systeminfo",
"args": []
},
{
"name": "detect-macos",
"cmd": "sw_vers",
"args": []
},
{
"name": "detect-distro",
"cmd": "grep",
"args": [
"^ID=",
"/etc/os-release"
]
},
{
"name": "detect-pkgmngr",
"cmd": "sh",
"args": [
"-c",
"command -v apt || command -v dnf || command -v pacman"
]
},
{
"name": "is-apt-installed",
"cmd": "apt",
"args": [
"--version"
]
},
{
"name": "is-dnf-installed",
"cmd": "dnf",
"args": [
"--version"
]
},
{
"name": "is-python3-installed",
"cmd": "python3",
"args": [
"--version"
]
},
{
"name": "is-pip3-installed",
"cmd": "pip3",
"args": [
"--version"
]
},
{
"name": "is-winget-installed",
"cmd": "winget",
"args": [
"--version"
]
},
{
"name": "is-homebrew-installed",
"cmd": "brew",
"args": [
"--version"
]
},
{
"name": "is-python-installed",
"cmd": "python",
"args": [
"--version"
]
},
{
"name": "is-pip-installed",
"cmd": "pip",
"args": [
"--version"
]
},
{
"name": "is-ffmpeg-installed",
"cmd": "ffmpeg",
"args": [
"-version"
]
},
{
"name": "is-nodejs-installed",
"cmd": "node",
"args": [
"--version"
]
},
{
"name": "is-pytubepp-installed",
"cmd": "pytubepp",
"args": [
"--version"
]
},
{
"name": "fetch-video-info",
"cmd": "pytubepp",
"args": [
{ {
"name": "detect-windows", "validator": "\\S+"
"cmd": "systeminfo",
"args": []
}, },
{ "--raw-info"
"name": "detect-macos", ]
"cmd": "sw_vers",
"args": []
},
{
"name": "detect-distro",
"cmd": "grep",
"args": ["^ID=", "/etc/os-release"]
},
{
"name": "detect-pkgmngr",
"cmd": "sh",
"args": ["-c", "command -v apt || command -v dnf || command -v pacman"]
},
{
"name": "is-apt-installed",
"cmd": "apt",
"args": ["--version"]
},
{
"name": "is-dnf-installed",
"cmd": "dnf",
"args": ["--version"]
},
{
"name": "is-python3-installed",
"cmd": "python3",
"args": ["--version"]
},
{
"name": "is-pip3-installed",
"cmd": "pip3",
"args": ["--version"]
},
{
"name": "is-winget-installed",
"cmd": "winget",
"args": ["--version"]
},
{
"name": "is-homebrew-installed",
"cmd": "brew",
"args": ["--version"]
},
{
"name": "is-python-installed",
"cmd": "python",
"args": ["--version"]
},
{
"name": "is-pip-installed",
"cmd": "pip",
"args": ["--version"]
},
{
"name": "is-ffmpeg-installed",
"cmd": "ffmpeg",
"args": ["-version"]
},
{
"name": "is-nodejs-installed",
"cmd": "node",
"args": ["--version"]
},
{
"name": "is-pytubepp-installed",
"cmd": "pytubepp",
"args": ["--version"]
},
{
"name": "fetch-video-info",
"cmd": "pytubepp",
"args": [{ "validator": "\\S+" }, "--raw-info"]
}
]
} }
], ]
"platforms": [ }
"windows", ],
"macOS", "platforms": [
"linux" "windows",
] "macOS",
"linux"
]
} }

View File

@@ -318,6 +318,7 @@ pub async fn run() {
let start_hidden = args.contains(&"--hidden".to_string()); let start_hidden = args.contains(&"--hidden".to_string());
tauri::Builder::default() tauri::Builder::default()
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { .plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
// Focus the main window when attempting to launch another instance // Focus the main window when attempting to launch another instance
if let Some(window) = app.get_webview_window("main") { if let Some(window) = app.get_webview_window("main") {

View File

@@ -3,4 +3,4 @@
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
pytubepp_helper_lib::run().await; pytubepp_helper_lib::run().await;
} }

View File

@@ -9,6 +9,7 @@
"bundle": { "bundle": {
"active": true, "active": true,
"targets": "all", "targets": "all",
"createUpdaterArtifacts": true,
"icon": [ "icon": [
"icons/32x32.png", "icons/32x32.png",
"icons/128x128.png", "icons/128x128.png",
@@ -21,7 +22,17 @@
"mainBinaryName": "pytubepp-helper", "mainBinaryName": "pytubepp-helper",
"version": "0.6.0", "version": "0.6.0",
"identifier": "com.neosubhamoy.pytubepp.helper", "identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {}, "plugins": {
"updater": {
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEMwNjIwMjQ1OTk4NjJDRUMKUldUc0xJYVpSUUppd0Y5NGhyTUg0VDhDNFd3SFMzNnBYUlhZSlE1WGNjamcxS0tOMDE5M1dycWYK",
"endpoints": [
"https://releases.neosubhamoy.com/tauri-update/pytubepp-helper/{{target}}/{{arch}}/{{current_version}}"
],
"windows": {
"installMode": "passive"
}
}
},
"app": { "app": {
"security": { "security": {
"csp": null "csp": null

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist" "frontendDist": "../dist"
}, },
"identifier": "com.neosubhamoy.pytubepp.helper", "identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": { "app": {
"windows": [ "windows": [
{ {
@@ -27,6 +26,7 @@
"bundle": { "bundle": {
"active": true, "active": true,
"targets": ["deb", "rpm"], "targets": ["deb", "rpm"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE", "licenseFile": "../LICENSE",
"icon": [ "icon": [
"icons/32x32.png", "icons/32x32.png",

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist" "frontendDist": "../dist"
}, },
"identifier": "com.neosubhamoy.pytubepp.helper", "identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": { "app": {
"windows": [ "windows": [
{ {
@@ -50,6 +49,7 @@
"bundle": { "bundle": {
"active": true, "active": true,
"targets": ["app", "dmg"], "targets": ["app", "dmg"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE", "licenseFile": "../LICENSE",
"icon": [ "icon": [
"icons/32x32.png", "icons/32x32.png",

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist" "frontendDist": "../dist"
}, },
"identifier": "com.neosubhamoy.pytubepp.helper", "identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": { "app": {
"windows": [ "windows": [
{ {
@@ -41,6 +40,7 @@
"bundle": { "bundle": {
"active": true, "active": true,
"targets": ["msi", "nsis"], "targets": ["msi", "nsis"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE", "licenseFile": "../LICENSE",
"icon": [ "icon": [
"icons/32x32.png", "icons/32x32.png",