mirror of
https://github.com/neosubhamoy/neodlp.git
synced 2026-05-06 23:05:50 +05:30
Compare commits
13 Commits
v0.4.4
...
1ad9c9797b
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
@@ -1,6 +1,6 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
github: neosubhamoy
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
@@ -10,6 +10,6 @@ liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
polar: # Replace with a single Polar username
|
||||
buy_me_a_coffee: neosubhamoy
|
||||
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||
thanks_dev: # Replace with a single thanks.dev username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
|
||||
42
.github/workflows/release.yml
vendored
42
.github/workflows/release.yml
vendored
@@ -2,6 +2,12 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag_name:
|
||||
description: 'Draft release tag (e.g. v0.4.5-test)'
|
||||
required: true
|
||||
default: 'v0.0.0-test'
|
||||
|
||||
name: 🚀 Release on GitHub
|
||||
jobs:
|
||||
@@ -13,15 +19,29 @@ jobs:
|
||||
matrix:
|
||||
include:
|
||||
- platform: 'macos-latest'
|
||||
target_platform: 'darwin'
|
||||
target_arch: 'arm64'
|
||||
args: '--target aarch64-apple-darwin --config ./src-tauri/tauri.macos-aarch64.conf.json'
|
||||
- platform: 'macos-latest'
|
||||
target_platform: 'darwin'
|
||||
target_arch: 'x64'
|
||||
args: '--target x86_64-apple-darwin --config ./src-tauri/tauri.macos-x86_64.conf.json'
|
||||
- platform: 'ubuntu-22.04'
|
||||
target_platform: 'linux'
|
||||
target_arch: 'x64'
|
||||
args: '--target x86_64-unknown-linux-gnu --config ./src-tauri/tauri.linux-x86_64.conf.json'
|
||||
- platform: 'ubuntu-22.04-arm'
|
||||
target_platform: 'linux'
|
||||
target_arch: 'arm64'
|
||||
args: '--target aarch64-unknown-linux-gnu --config ./src-tauri/tauri.linux-aarch64.conf.json'
|
||||
- platform: 'windows-latest'
|
||||
args: ''
|
||||
target_platform: 'win32'
|
||||
target_arch: 'x64'
|
||||
args: '--target x86_64-pc-windows-msvc --config ./src-tauri/tauri.windows-x86_64.conf.json'
|
||||
- platform: 'windows-11-arm'
|
||||
target_platform: 'win32'
|
||||
target_arch: 'arm64'
|
||||
args: '--target aarch64-pc-windows-msvc --config ./src-tauri/tauri.windows-aarch64.conf.json'
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: 🚚 Checkout repository
|
||||
@@ -53,20 +73,20 @@ jobs:
|
||||
run: npm install
|
||||
|
||||
- name: 📥 Download binaries
|
||||
run: npm run download
|
||||
run: npm run download -- ${{ matrix.target_platform }} ${{ matrix.target_arch }}
|
||||
|
||||
- name: 📄 Read and Process CHANGELOG (Unix)
|
||||
if: matrix.platform != 'windows-latest'
|
||||
if: matrix.platform != 'windows-latest' && matrix.platform != 'windows-11-arm'
|
||||
id: changelog_unix
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -f CHANGELOG.md ]; then
|
||||
# Extract version number from tag
|
||||
VERSION_NUM=$(echo "${{ github.ref_name }}" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$/\1/')
|
||||
VERSION_NUM=$(echo "${{ inputs.tag_name || github.ref_name }}" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$/\1/')
|
||||
|
||||
# Read and replace placeholders
|
||||
CONTENT=$(cat CHANGELOG.md)
|
||||
CONTENT=${CONTENT//<release_tag>/${{ github.ref_name }}}
|
||||
CONTENT=${CONTENT//<release_tag>/${{ inputs.tag_name || github.ref_name }}}
|
||||
CONTENT=${CONTENT//<version>/$VERSION_NUM}
|
||||
|
||||
echo "content<<EOF" >> $GITHUB_OUTPUT
|
||||
@@ -77,17 +97,17 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: 📄 Read and Process CHANGELOG (Windows)
|
||||
if: matrix.platform == 'windows-latest'
|
||||
if: matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
|
||||
id: changelog_windows
|
||||
shell: pwsh
|
||||
run: |
|
||||
if (Test-Path "CHANGELOG.md") {
|
||||
# Extract version number from tag
|
||||
$version_num = "${{ github.ref_name }}" -replace '^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$','$1'
|
||||
$version_num = "${{ inputs.tag_name || github.ref_name }}" -replace '^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$','$1'
|
||||
|
||||
# Read and replace placeholders
|
||||
$content = Get-Content -Path CHANGELOG.md -Raw
|
||||
$content = $content -replace '<release_tag>', "${{ github.ref_name }}"
|
||||
$content = $content -replace '<release_tag>', "${{ inputs.tag_name || github.ref_name }}"
|
||||
$content = $content -replace '<version>', "$version_num"
|
||||
|
||||
"content<<EOF" >> $env:GITHUB_OUTPUT
|
||||
@@ -104,9 +124,9 @@ jobs:
|
||||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||
with:
|
||||
tagName: ${{ github.ref_name }}
|
||||
releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }}
|
||||
releaseBody: ${{ matrix.platform == 'windows-latest' && steps.changelog_windows.outputs.content || steps.changelog_unix.outputs.content }}
|
||||
tagName: ${{ inputs.tag_name || github.ref_name }}
|
||||
releaseName: ${{ github.event.repository.name }}-${{ inputs.tag_name || github.ref_name }}
|
||||
releaseBody: ${{ (matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm') && steps.changelog_windows.outputs.content || steps.changelog_unix.outputs.content }}
|
||||
releaseDraft: true
|
||||
prerelease: false
|
||||
includeUpdaterJson: true
|
||||
|
||||
@@ -34,12 +34,10 @@
|
||||
| Architecture | Windows (msi) ⬆️ | Windows (exe) ⬆️ | Linux (deb) | Linux (rpm) | Linux (AppImage) ⬆️ | MacOS (dmg) ⬆️ | MacOS (app) ⬆️ |
|
||||
| :---- | :---- | :---- | :---- | :---- | :---- | :---- | :---- |
|
||||
| x86_64 | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_x64_en-US.msi) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_x64-setup.exe) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_amd64.deb) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP-<version>-1.x86_64.rpm) | 🚫 [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_amd64.AppImage) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_x64.dmg) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_x64.app.tar.gz) |
|
||||
| ARM64 | N/A | 🪟 [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_x64-setup.exe) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_arm64.deb) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP-<version>-1.aarch64.rpm) | N/A | ⚠️ [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_aarch64.dmg) | ⚠️ [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_aarch64.app.tar.gz) |
|
||||
| ARM64 | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_arm64_en-US.msi) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_arm64-setup.exe) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_arm64.deb) | [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP-<version>-1.aarch64.rpm) | N/A | ⚠️ [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_<version>_aarch64.dmg) | ⚠️ [Download](https://github.com/neosubhamoy/neodlp/releases/download/<release_tag>/NeoDLP_aarch64.app.tar.gz) |
|
||||
|
||||
> ⬆️ icon indicates this packaging format supports in-built app-updater
|
||||
|
||||
> 🪟 Windows x86_64 binary also works on ARM64 (Windows on ARM) devices with emulation (Not planning to release native Windows ARM64 build anytime soon as, x86_64 one works fine on ARM64 without noticeable performance impact)
|
||||
|
||||
> 🚫 Linux AppImage builds are experimental and does not support neodlp's browser intergration features and yt-dlp updates due to it's limitations. Also, don't run the AppImage with portable (.home, .config) folders, it will break things (it is highly recommended to use native [DEB, RPM, AUR] builds if possible for the full experiance, otherwise AppImages are good for trying out NeoDLP without installing)
|
||||
|
||||
> ⚠️ MacOS ARM64 binary downloads are experimental and may not open on Apple Silicon Macs if downloaded from browser (You will get 'Damaged File' error) it's because the binaries are not signed (signing MacOS binaries requires 99$/year Apple Developer Account subscription, which I can't afford RN!) and Apple Silicon Macs don't allow unsigned apps (downloaded from browser) to be installed on the system. If you want to use NeoDLP on your Apple Silicon Macs, There are few ways you can bypass these restrictions:
|
||||
|
||||
74
CODE_OF_CONDUCT.md
Normal file
74
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at [support@neodlp.neosubhamoy.com](mailto:support@neodlp.neosubhamoy.com). All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
98
CONTRIBUTING.md
Normal file
98
CONTRIBUTING.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Contributing Guidelines
|
||||
|
||||
When contributing to this project/repository, please first discuss the change you wish to make via issue,
|
||||
email, or any other method with the owners/maintainers of this repository before making a change.
|
||||
|
||||
Please note we have a [code of conduct](https://github.com/neosubhamoy/neodlp?tab=coc-ov-file), please follow it in all your interactions with the project.
|
||||
|
||||
## Creating an Issue
|
||||
|
||||
### When to create an issue
|
||||
|
||||
- Noticed any bug or inconstencies? report it!
|
||||
- Want a feature? request it!
|
||||
- Want to contribute to this project? communicate with the maintainers.
|
||||
- Want to give us some suggetions? or you have any other question regarding this project.
|
||||
|
||||
### Steps to create an issue
|
||||
|
||||
1. Go to [issues](https://github.com/neosubhamoy/neodlp/issues) tab
|
||||
2. Click on the 'New Issue' button
|
||||
3. Choose a issue template: [Report a Bug](https://github.com/neosubhamoy/neodlp/issues/new?template=bug_report.md) / [Request a Feature](https://github.com/neosubhamoy/neodlp/issues/new?template=feature_request.md) / [Other Issue](https://github.com/neosubhamoy/neodlp/issues/new?template=BLANK_ISSUE)
|
||||
4. Fill-up all the issue template fields in detail
|
||||
5. Click on the 'Create' button to submit the issue
|
||||
6. Wait for the maintainers to review your issue! If everything goes well, You will most likely hear back from us within 24-48hrs. (You can view the status of your issue anytime at the [isuues](https://github.com/neosubhamoy/neodlp/issues) tab)
|
||||
|
||||
> [!NOTE]
|
||||
> DO NOT SKIP ANY REQUIRED FIELD INTENTINALY WHILE CREATING AN ISSUE, INCOMPLETE ISSUES WILL BE CLOSED WITHOUT FURTHER NOTICE. Always make sure to include as much detail as possible to clearly explain the matter! Attach screenshots/links whenever needed.
|
||||
|
||||
## Sending a Pull Request
|
||||
|
||||
### PR Guidelines
|
||||
|
||||
- Each pull request must be tied to resolve a sole pourpose/goal, it should not change anything extra out of it's primary scope.
|
||||
- The pull request body should briefly describe the notable changes made through the PR and why it is done in that way!
|
||||
- The PR body should include screenshots/links if applicable.
|
||||
- The PR title must be related to the primary goal (it should be short, precise and easy to understand)
|
||||
- If the PR is resolving any issue, it must reference the issues at the end of the PR title using the `#` notation.
|
||||
|
||||
### Steps to send a pull request
|
||||
|
||||
1. First find an isuue you would like to resolve. View the [open issues](https://github.com/neosubhamoy/neodlp/issues) tab. (comment on the issue to attract the attention of the maintainers and ask them that you would like to work on it) Once you get the approval you can start working...!!
|
||||
2. Make sure to install [Rust](https://www.rust-lang.org/tools/install), [Node.js](https://nodejs.org/en), [Git](https://git-scm.com/downloads) and [Tauri Prerequisites](https://v2.tauri.app/start/prerequisites/) for your platform (OS) before proceeding.
|
||||
3. Fork this repo in your GitHub account (click on the 'fork' button on the top right corner of the repo)
|
||||
4. Clone the forked repo in your local machine: `git clone https://github.com/<your_username>/neodlp.git`
|
||||
5. Go inside the cloned project directory: `cd neodlp`
|
||||
6. Create a new git feature branch (name it based on the changes you are about to make): `git checkout -b <new-branch-name>`
|
||||
7. Install Node.js dependencies: `npm install`
|
||||
8. Download required external binaries (for your platform): `npm run download`
|
||||
9. Run build / dev process (run the command based on your platform and architecture, run the build command once before running the dev command for the first time to avoid compile time errors)
|
||||
```shell
|
||||
# build commands for windows users
|
||||
npm run tauri:build:windows-x64 # for x64 devices
|
||||
npm run tauri:build:windows-arm64 # for ARM64 devices
|
||||
|
||||
# development commands for windows users
|
||||
npm run tauri:dev:windows-x64 # for x64 devices
|
||||
npm run tauri:dev:windows-arm64 # for ARM64 devices
|
||||
|
||||
# build commands for linux users
|
||||
npm run tauri:build:linux-x64 # for x64 devices
|
||||
npm run tauri:build:linux-arm64 # for ARM64 devices
|
||||
|
||||
# development commands for linux users
|
||||
npm run tauri:dev:linux-x64 # for x64 devices
|
||||
npm run tauri:dev:linux-arm64 # for ARM64 devices
|
||||
|
||||
# build commands for macOS users
|
||||
npm run tauri:build:macos-arm64 # for apple silicon macs
|
||||
npm run tauri:build:macos-x64 # for intel x86 macs
|
||||
|
||||
# development commands for macOS users
|
||||
npm run tauri:dev:macos-arm64 # for apple silicon macs
|
||||
npm run tauri:dev:macos-x64 # for intel x86 macs
|
||||
```
|
||||
10. Do the required code changes (following the style guidelines)
|
||||
11. Add and commit the changes: `git add .` then `git commit -m "prefix: your message here"`
|
||||
12. Push the commits: `git push origin <new-branch-name>`
|
||||
13. Visit GitHub and send the pull request. (following the PR guidelines)
|
||||
14. Wait for the maintainers to review your PR! You will most likely hear back from us within 24-48hrs. (You can view the status of your PR anytime at the [pull requests](https://github.com/neosubhamoy/neodlp/pulls) tab)
|
||||
15. You might be asked to do more changes if required. (try to resolve the requested changes ASAP, and always follow-up the maintainers). If everything goes well, your pull request will be merged by the maintainers.
|
||||
|
||||
## Style Guidelines
|
||||
|
||||
- Write maintainable and easy to understand code and follow existing code conventions
|
||||
- Use meaningful variable and function names
|
||||
- Explain complex code using comments
|
||||
- Use [conventional commit messages](https://www.conventionalcommits.org/en/v1.0.0/)
|
||||
- Follow [semantic versioning](https://semver.org/) conventions
|
||||
|
||||
## AI Guidelines
|
||||
|
||||
In this era of Artificial Intelligence, Using AI for your coding help is fine! But, contributions made purely using vibe-coding / AI automations without proper human intervention is not acceptable! If we identify such cases your Issue/PR will be closed/rejected without further notice and repeating such action more than one time will result in a permanent ban from this repo.
|
||||
|
||||
## License
|
||||
|
||||
By contributing to this project/repository, You agree that your code will be published under the [MIT License](https://github.com/neosubhamoy/neodlp/blob/main/LICENSE).
|
||||
|
||||
Thanks for your contribution, We appreciate your efforts :)
|
||||
55
README.md
55
README.md
@@ -10,14 +10,14 @@ Cross-platform Video/Audio Downloader Desktop App based on YT-DLP with Modern UI
|
||||
[](https://github.com/neosubhamoy/neodlp/blob/main/LICENSE)
|
||||
|
||||
> [!TIP]
|
||||
> **🥰 Liked this project? Please consider giving it a star (🌟) on github to show us your appreciation and help the algorythm recommend this project to even more awesome people like you!**
|
||||
> **🥰 Liked this project? Please consider giving it a star (🌟) on github to show us your appreciation and help the algorithm recommend this project to even more awesome people like you!**
|
||||
|
||||
[](https://github.com/microsoft/winget-pkgs/tree/master/manifests/n/neosubhamoy/neodlp)
|
||||
[](https://flathub.org/en/apps/com.neosubhamoy.neodlp)
|
||||
[](https://aur.archlinux.org/packages/neodlp)
|
||||
|
||||
|
||||
## ✨ Highlighted Features
|
||||
## Highlighted Features
|
||||
|
||||
- Download Video/Audio from thousands of popular sites (YT, FB, IG, X and other 2.5k+ [supported sites](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md))
|
||||
- Fully Configured YT-DLP Environment Out-of-the-Box (with JS Runtime, PO Token Server, Real-Time Logs etc.)
|
||||
@@ -31,7 +31,7 @@ Cross-platform Video/Audio Downloader Desktop App based on YT-DLP with Modern UI
|
||||
- Network controls (proxy, rate limit etc.)
|
||||
- Highly customizable and many more...😉
|
||||
|
||||
## 🧩 Browser Integration
|
||||
## Browser Integration
|
||||
|
||||
You can integrate NeoDLP with your favourite browser (any Chromium/Firefox based browser) Just, install [NeoDLP Extension](https://github.com/neosubhamoy/neodlp-extension) to get started!
|
||||
|
||||
@@ -41,7 +41,7 @@ After installing the extension you can do the following directly from the browse
|
||||
|
||||
- Right Click Context Menu Action (Search with Neo Downloader Plus - Link, Selection, Media Source)
|
||||
|
||||
## 👀 Sneak Peek
|
||||
## User Interface Overview
|
||||
|
||||

|
||||
|
||||
@@ -49,13 +49,13 @@ After installing the extension you can do the following directly from the browse
|
||||
| :---- | :---- | :---- | :---- |
|
||||
|  |  |  |  |
|
||||
|
||||
## 💻 Supported Platforms
|
||||
## Supported Platforms
|
||||
|
||||
- Windows (10 / 11)
|
||||
- Linux (Mostly all modern distros)
|
||||
- MacOS (>=11)
|
||||
- 🪟 Windows (10 / 11)
|
||||
- 🐧 Linux (Mostly all modern distros)
|
||||
- 🍎 MacOS (>=11)
|
||||
|
||||
## 🤝 External Dependencies
|
||||
## External Dependencies
|
||||
|
||||
- [YT-DLP](https://github.com/yt-dlp/yt-dlp) [Unlicense] - The core CLI tool used to download video/audio from the web (Hero of the show 😎)
|
||||
- [FFmpeg & FFprobe](https://www.ffmpeg.org) [LGPLv2.1+] - Used for video/audio post-processing
|
||||
@@ -63,13 +63,13 @@ After installing the extension you can do the following directly from the browse
|
||||
- [Deno](https://deno.com) [MIT] - Provides sandboxed javascript runtime environment for yt-dlp (Required for YT downloads, as per the new yt-dlp [announcement](https://github.com/yt-dlp/yt-dlp/issues/14404))
|
||||
- [BgUtils POT Provider (Rust)](https://github.com/jim60105/bgutil-ytdlp-pot-provider-rs) [GPLv3+] - Provides PO (Proof-of-Origin) Token for YT downloads
|
||||
|
||||
## ℹ️ System Pre-Requirements
|
||||
## Platform Pre-Requirements
|
||||
|
||||
- **Windows:** [Microsoft Visual C++ Redistributable 2015+](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) `winget install Microsoft.VCRedist.2015+.x64` (Will be auto-installed if you install NeoDLP via winget)
|
||||
- **MacOS:** XCode Command Line Tools `xcode-select --install` (Mostly, comes pre-installed on modern macos, still if you encounter any issue then try installing it manually)
|
||||
- **Linux:** Most linux packages comes with pre-defined system dependencies which will be auto installed by your package manager (if you are on `fedora` make sure to [enable rpmfusion free+nonfree repos](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/#_enabling_the_rpm_fusion_repositories_using_command_line_utilities) before installing the rpm package. also, if you prefer to install dependencies manually [follow this](https://v2.tauri.app/start/prerequisites/#linux))
|
||||
|
||||
## ⬇️ Download and Installation
|
||||
## Download and Installation
|
||||
|
||||
1. Download the latest NeoDLP release based on your OS and CPU Architecture, then install it! -OR- Install it directly from an available distribution channel (listed below)
|
||||
|
||||
@@ -90,7 +90,7 @@ After installing the extension you can do the following directly from the browse
|
||||
| Linux x86_64 / ARM64 (Native) | Curl-Bash Installer | `curl -sSL https://neodlp.neosubhamoy.com/linux_installer.sh \| bash` |
|
||||
| Arch Linux x86_64 / ARM64 (Native) | AUR | `yay -S neodlp` or `paru -S neodlp` |
|
||||
|
||||
## 🧪 Package Testing Status
|
||||
## Package Testing Status
|
||||
|
||||
Though NeoDLP is supported on most platforms but not all packages are tested on all platforms, to save some time (and brain cells) and ship the software as fast as possible! Current test coverage is given below. So, untested packages may have issues, test it yourself and always feel free to report any issue on github.
|
||||
|
||||
@@ -115,7 +115,7 @@ Though NeoDLP is supported on most platforms but not all packages are tested on
|
||||
|
||||
</details>
|
||||
|
||||
## 🪜 Roadmap
|
||||
## Roadmap
|
||||
|
||||
- [x] Add support for yt-dlp
|
||||
- [x] Add basic settings and customization
|
||||
@@ -129,7 +129,7 @@ Though NeoDLP is supported on most platforms but not all packages are tested on
|
||||
- [ ] Implement plugin system
|
||||
- [ ] Add more cool stuffs 😉
|
||||
|
||||
## ⚡ Technologies Used
|
||||
## Technologies Used
|
||||
|
||||
[](https://tauri.app)
|
||||
[](https://rust-lang.org)
|
||||
@@ -137,7 +137,7 @@ Though NeoDLP is supported on most platforms but not all packages are tested on
|
||||
[](https://www.typescriptlang.org)
|
||||
[](https://ui.shadcn.com)
|
||||
|
||||
## 🛠️ Building from Source
|
||||
## Building from Source
|
||||
|
||||
Want to build/compile NeoDLP from the source code? Follow these simple steps to create a production build:
|
||||
|
||||
@@ -149,8 +149,9 @@ Want to build/compile NeoDLP from the source code? Follow these simple steps to
|
||||
4. Download required external binaries (for your platform): `npm run download`
|
||||
5. Run build process (run the command based on your platform and architecture)
|
||||
```shell
|
||||
# command for windows users
|
||||
npm run tauri build # for both x64/ARM64 devices
|
||||
# commands for windows users
|
||||
npm run tauri:build:windows-x64 # for x64 devices
|
||||
npm run tauri:build:windows-arm64 # for ARM64 devices
|
||||
|
||||
# commands for linux users
|
||||
npm run tauri:build:linux-x64 # for x64 devices
|
||||
@@ -160,17 +161,11 @@ npm run tauri:build:linux-arm64 # for ARM64 devices
|
||||
npm run tauri:build:macos-arm64 # for apple silicon macs
|
||||
npm run tauri:build:macos-x64 # for intel x86 macs
|
||||
```
|
||||
6. Give it the time to compile (~5-10min) (if you get an error, something like this at the end: `Error A public key has been found, but no private key. Make sure to set 'TAURI_SIGNING_PRIVATE_KEY' environment variable.` simply ignore it! Your build is successfull!). You can find the compiled packages under: `src-tauri/target/release/bundle` directory.
|
||||
6. Give it the time to compile (~10-15min). After completion, You can find the compiled packages under: `src-tauri/target/release/bundle` directory.
|
||||
|
||||
## 🐞 Bug Report and Discussions
|
||||
Also, want to contribute to this project? Read the [contributing guidelines](https://github.com/neosubhamoy/neodlp?tab=contributing-ov-file).
|
||||
|
||||
Noticed any Bug? or Want to give us some suggetions? Always feel free to let us know! We would love to hear from you...!! You can reach us out via the following methods:
|
||||
|
||||
- GitHub Issues (Recommended): [Report a Bug](https://github.com/neosubhamoy/neodlp/issues/new?template=bug_report.md) -OR- [Request a Feature](https://github.com/neosubhamoy/neodlp/issues/new?template=feature_request.md)
|
||||
- Mailing List: If you prefer the good old mailing list way, You can just simply write us on [support@neodlp.neosubhamoy.com](mailto:support@neodlp.neosubhamoy.com) (Kindly follow the Bug Report/Feature Request Template on that case)
|
||||
- Reddit Community: If you have any other general pourpose query/discussion related to NeoDLP, post it on our subreddit community [r/NeoDLP](https://www.reddit.com/r/NeoDLP)
|
||||
|
||||
## 📦 Sources
|
||||
## Sources
|
||||
|
||||
- [Official Website](https://neodlp.neosubhamoy.com)
|
||||
- Official Repositories
|
||||
@@ -185,14 +180,14 @@ Noticed any Bug? or Want to give us some suggetions? Always feel free to let us
|
||||
- [NeoDLP Extension](https://github.com/neosubhamoy/neodlp-extension)
|
||||
- [NeoDLP Website](https://github.com/neosubhamoy/neodlp-website)
|
||||
|
||||
## 💫 Credits
|
||||
## Credits
|
||||
|
||||
- NeoDLP is made possible by the joint efforts of [yt-dlp](https://github.com/yt-dlp/yt-dlp) and [FFmpeg](https://www.ffmpeg.org). Lots of NeoDLP features are actually powered by these tools under the hood! So huge thanks to all the developers/contributers for making these great tools! 🙏
|
||||
- NeoDLP's 'Format Selection' options are inspired from the [Seal](https://github.com/JunkFood02/Seal) app by [@JunkFood02](https://github.com/JunkFood02)
|
||||
- Aria2 Linux x86_64 static binaries are built by [@asdo92](https://github.com/asdo92/aria2-static-builds)
|
||||
- Aria2 Linux x86_64 static binaries are built by [@asdo92](https://github.com/asdo92/aria2-static-builds) and Windows arm64 static binaries are built by [@minnyres](https://github.com/minnyres/aria2-windows-arm64)
|
||||
- NeoDLP's 'POT Server' is based on [@jim60105's Rust Implementation](https://github.com/jim60105/bgutil-ytdlp-pot-provider-rs) of [Brainicism/bgutil-ytdlp-pot-provider](https://github.com/Brainicism/bgutil-ytdlp-pot-provider)
|
||||
|
||||
## ⚖️ License and Usage
|
||||
## License and Usage
|
||||
|
||||
NeoDLP is a Fully Open-Source Software Licensed under the [MIT license](https://github.com/neosubhamoy/neodlp/blob/main/LICENSE). Anyone can view, modify, use (personal and commercial) or distribute it's sources without any extra permission (Just include the LICENSE file :)
|
||||
|
||||
@@ -200,4 +195,4 @@ NeoDLP is a Fully Open-Source Software Licensed under the [MIT license](https://
|
||||
> NeoDLP facilitates downloading from various Online Platforms with different Policies and Terms of Use which Users must follow. We strictly do not promote any unauthorized downloading of copyrighted content. NeoDLP is only made for downloading content that the user holds the copyright to or has the authority for. Users must use the downloaded content wisely and solely at their own legal responsibility. The developer is not responsible for any action taken by the user, and takes zero direct or indirect liability for that matter.
|
||||
|
||||
****
|
||||
An Open Sourced Project - Developed with ❤️ by **Subhamoy**
|
||||
A FOSS Initiative - Proudly Made with ❤️ in **INDIA**
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
"tauri:build:macos-x64": "npm run tauri build -- --config ./src-tauri/tauri.macos-x86_64.conf.json",
|
||||
"tauri:dev:macos-arm64": "npm run tauri dev -- --config ./src-tauri/tauri.macos-aarch64.conf.json",
|
||||
"tauri:build:macos-arm64": "npm run tauri build -- --config ./src-tauri/tauri.macos-aarch64.conf.json",
|
||||
"tauri:dev:windows-x64": "npm run tauri dev -- --config ./src-tauri/tauri.windows-x86_64.conf.json",
|
||||
"tauri:build:windows-x64": "npm run tauri build -- --config ./src-tauri/tauri.windows-x86_64.conf.json",
|
||||
"tauri:dev:windows-arm64": "npm run tauri dev -- --config ./src-tauri/tauri.windows-aarch64.conf.json",
|
||||
"tauri:build:windows-arm64": "npm run tauri build -- --config ./src-tauri/tauri.windows-aarch64.conf.json",
|
||||
"download": "node ./scripts/download-bins.js"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -12,8 +12,23 @@ const downloadDir = path.join(projectRoot, 'src-tauri', 'resources', 'downloads'
|
||||
const binDir = path.join(projectRoot, 'src-tauri', 'binaries');
|
||||
|
||||
const platform = os.platform();
|
||||
const arch = os.arch();
|
||||
const targetPlatform = process.argv[2];
|
||||
const targetBin = process.argv[3];
|
||||
const targetArch = process.argv[3];
|
||||
const targetBin = process.argv[4];
|
||||
|
||||
function getArchesForBin(bin) {
|
||||
const paths = [
|
||||
...(bin.dest || []),
|
||||
...((bin.archive && bin.archive.binDest) || [])
|
||||
];
|
||||
const arches = new Set();
|
||||
for (const path of paths) {
|
||||
if (path.includes('-x86_64-') || path.includes('-x64-')) arches.add('x64');
|
||||
if (path.includes('-aarch64-') || path.includes('-arm64-')) arches.add('arm64');
|
||||
}
|
||||
return arches;
|
||||
}
|
||||
|
||||
const versions = {
|
||||
'yt-dlp': '2026.03.21.233500',
|
||||
@@ -38,6 +53,19 @@ const binaries = {
|
||||
path.join(downloadDir, 'yt-dlp-x86_64-pc-windows-msvc.exe')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'yt-dlp-aarch64-pc-windows-msvc',
|
||||
platform: 'win32',
|
||||
url: `https://github.com/yt-dlp/yt-dlp-nightly-builds/releases${versions['yt-dlp'] === 'latest' ? '/latest' : ''}/download${versions['yt-dlp'] !== 'latest' ? '/'+versions['yt-dlp'] : ''}/yt-dlp_arm64.exe`,
|
||||
src: path.join(downloadDir, 'yt-dlp-aarch64-pc-windows-msvc.exe'),
|
||||
dest: [
|
||||
path.join(binDir, 'yt-dlp-aarch64-pc-windows-msvc.exe')
|
||||
],
|
||||
archive: null,
|
||||
cleanup: [
|
||||
path.join(downloadDir, 'yt-dlp-aarch64-pc-windows-msvc.exe')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'yt-dlp-x86_64-unknown-linux-gnu',
|
||||
platform: 'linux',
|
||||
@@ -102,6 +130,28 @@ const binaries = {
|
||||
path.join(downloadDir, 'ffmpeg-master-latest-win64-gpl')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'ffmpeg-ffprobe-aarch64-pc-windows-msvc',
|
||||
platform: 'win32',
|
||||
url: `https://github.com/yt-dlp/FFmpeg-Builds/releases${versions['ffmpeg-ffprobe'] === 'latest' ? '/latest' : ''}/download${versions['ffmpeg-ffprobe'] !== 'latest' ? '/'+versions['ffmpeg-ffprobe'] : ''}/ffmpeg-master-latest-winarm64-gpl.zip`,
|
||||
src: path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl.zip'),
|
||||
dest: null,
|
||||
archive: {
|
||||
type: 'zip',
|
||||
binSrc: [
|
||||
path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl', 'bin', 'ffmpeg.exe'),
|
||||
path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl', 'bin', 'ffprobe.exe')
|
||||
],
|
||||
binDest: [
|
||||
path.join(binDir, 'ffmpeg-aarch64-pc-windows-msvc.exe'),
|
||||
path.join(binDir, 'ffprobe-aarch64-pc-windows-msvc.exe')
|
||||
]
|
||||
},
|
||||
cleanup: [
|
||||
path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl.zip'),
|
||||
path.join(downloadDir, 'ffmpeg-master-latest-winarm64-gpl')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'ffmpeg-ffprobe-x86_64-unknown-linux-gnu',
|
||||
platform: 'linux',
|
||||
@@ -256,6 +306,26 @@ const binaries = {
|
||||
path.join(downloadDir, 'deno.exe')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'deno-aarch64-pc-windows-msvc',
|
||||
platform: 'win32',
|
||||
url: `https://github.com/denoland/deno/releases${versions['deno'] === 'latest' ? '/latest' : ''}/download${versions['deno'] !== 'latest' ? '/v'+versions['deno'] : ''}/deno-aarch64-pc-windows-msvc.zip`,
|
||||
src: path.join(downloadDir, 'deno-aarch64-pc-windows-msvc.zip'),
|
||||
dest: null,
|
||||
archive: {
|
||||
type: 'zip',
|
||||
binSrc: [
|
||||
path.join(downloadDir, 'deno.exe')
|
||||
],
|
||||
binDest: [
|
||||
path.join(binDir, 'deno-aarch64-pc-windows-msvc.exe')
|
||||
]
|
||||
},
|
||||
cleanup: [
|
||||
path.join(downloadDir, 'deno-aarch64-pc-windows-msvc.zip'),
|
||||
path.join(downloadDir, 'deno.exe')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'deno-x86_64-unknown-linux-gnu',
|
||||
platform: 'linux',
|
||||
@@ -358,6 +428,26 @@ const binaries = {
|
||||
path.join(downloadDir, `aria2-${versions['aria2c']}-win-64bit-build1`)
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'aria2c-aarch64-pc-windows-msvc',
|
||||
platform: 'win32',
|
||||
url: `https://github.com/minnyres/aria2-windows-arm64/releases/download/v${versions['aria2c']}/aria2_${versions['aria2c']}_arm64.zip`,
|
||||
src: path.join(downloadDir, `aria2_${versions['aria2c']}_arm64.zip`),
|
||||
dest: null,
|
||||
archive: {
|
||||
type: 'zip',
|
||||
binSrc: [
|
||||
path.join(downloadDir, 'aria2c.exe')
|
||||
],
|
||||
binDest: [
|
||||
path.join(binDir, 'aria2c-aarch64-pc-windows-msvc.exe')
|
||||
]
|
||||
},
|
||||
cleanup: [
|
||||
path.join(downloadDir, `aria2_${versions['aria2c']}_arm64.zip`),
|
||||
path.join(downloadDir, 'aria2c.exe')
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'aria2c-x86_64-unknown-linux-gnu',
|
||||
platform: 'linux',
|
||||
@@ -406,7 +496,8 @@ const binaries = {
|
||||
url: `https://github.com/jim60105/bgutil-ytdlp-pot-provider-rs/releases${versions['neodlp-pot'] === 'latest' ? '/latest' : ''}/download${versions['neodlp-pot'] !== 'latest' ? '/v'+versions['neodlp-pot'] : ''}/bgutil-pot-windows-x86_64.exe`,
|
||||
src: path.join(downloadDir, 'bgutil-pot-windows-x86_64.exe'),
|
||||
dest: [
|
||||
path.join(binDir, 'neodlp-pot-x86_64-pc-windows-msvc.exe')
|
||||
path.join(binDir, 'neodlp-pot-x86_64-pc-windows-msvc.exe'),
|
||||
path.join(binDir, 'neodlp-pot-aarch64-pc-windows-msvc.exe')
|
||||
],
|
||||
archive: null,
|
||||
cleanup: [
|
||||
@@ -527,15 +618,21 @@ if (targetPlatform && !['win32', 'linux', 'darwin', 'all'].includes(targetPlatfo
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (targetArch && !['x64', 'arm64', 'all'].includes(targetArch)) {
|
||||
console.error(`ERROR: Invalid arch specified: '${targetArch}'. Use one of: x64, arm64, or all`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (targetBin && !binaries.hasOwnProperty(targetBin) && targetBin !== 'all') {
|
||||
console.error(`ERROR: Invalid binary specified: '${targetBin}'. Use one of: ${Object.keys(binaries).join(', ')}, or all`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const effectivePlatform = targetPlatform || platform;
|
||||
const effectiveArch = targetArch || arch;
|
||||
const effectiveBin = targetBin || 'all';
|
||||
|
||||
console.log(`RUNNING: 📦 Binary Downloader (platform: ${effectivePlatform} | binary: ${effectiveBin})`);
|
||||
console.log(`RUNNING: 📦 Binary Downloader (platform: ${effectivePlatform} | arch: ${effectiveArch} | binary: ${effectiveBin})`);
|
||||
|
||||
Object.keys(binaries).forEach((binKey) => {
|
||||
if (effectiveBin !== 'all' && binKey !== effectiveBin) {
|
||||
@@ -547,6 +644,13 @@ Object.keys(binaries).forEach((binKey) => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (effectiveArch !== 'all') {
|
||||
const binArches = getArchesForBin(bin);
|
||||
if (!binArches.has(effectiveArch)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
downloadAndProcess(bin);
|
||||
});
|
||||
});
|
||||
|
||||
63
src-tauri/tauri.windows-aarch64.conf.json
Normal file
63
src-tauri/tauri.windows-aarch64.conf.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"identifier": "com.neosubhamoy.neodlp",
|
||||
"build": {
|
||||
"beforeDevCommand": "cargo build --target=aarch64-pc-windows-msvc --manifest-path=./src-tauri/msghost/Cargo.toml && npm run dev",
|
||||
"beforeBuildCommand": "cargo build --release --target=aarch64-pc-windows-msvc --manifest-path=./src-tauri/msghost/Cargo.toml && npm run build",
|
||||
"devUrl": "http://localhost:1420",
|
||||
"frontendDist": "../dist"
|
||||
},
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"title": "NeoDLP",
|
||||
"width": 1080,
|
||||
"height": 680,
|
||||
"decorations": false,
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null,
|
||||
"capabilities": [
|
||||
"default",
|
||||
"shell-scope"
|
||||
]
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": ["msi", "nsis"],
|
||||
"createUpdaterArtifacts": true,
|
||||
"licenseFile": "../LICENSE",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"externalBin": [
|
||||
"binaries/yt-dlp",
|
||||
"binaries/ffmpeg",
|
||||
"binaries/ffprobe",
|
||||
"binaries/aria2c",
|
||||
"binaries/deno",
|
||||
"binaries/neodlp-pot"
|
||||
],
|
||||
"resources": {
|
||||
"target/aarch64-pc-windows-msvc/release/neodlp-msghost.exe": "neodlp-msghost.exe",
|
||||
"resources/msghost-manifest/windows/chrome.json": "chrome.json",
|
||||
"resources/msghost-manifest/windows/firefox.json": "firefox.json",
|
||||
"resources/plugins/yt-dlp-plugins/": "yt-dlp-plugins/"
|
||||
},
|
||||
"windows": {
|
||||
"wix": {
|
||||
"fragmentPaths": ["installer/windows/wix/reg-fragment.wxs"],
|
||||
"componentRefs": ["NeoDlpRegEntriesFragment"]
|
||||
},
|
||||
"nsis": {
|
||||
"installerHooks": "installer/windows/nsis/hooks.nsi"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"identifier": "com.neosubhamoy.neodlp",
|
||||
"build": {
|
||||
"beforeDevCommand": "cargo build --manifest-path=./src-tauri/msghost/Cargo.toml && npm run dev",
|
||||
"beforeBuildCommand": "cargo build --release --manifest-path=./src-tauri/msghost/Cargo.toml && npm run build",
|
||||
"beforeDevCommand": "cargo build --target=x86_64-pc-windows-msvc --manifest-path=./src-tauri/msghost/Cargo.toml && npm run dev",
|
||||
"beforeBuildCommand": "cargo build --release --target=x86_64-pc-windows-msvc --manifest-path=./src-tauri/msghost/Cargo.toml && npm run build",
|
||||
"devUrl": "http://localhost:1420",
|
||||
"frontendDist": "../dist"
|
||||
},
|
||||
@@ -45,7 +45,7 @@
|
||||
"binaries/neodlp-pot"
|
||||
],
|
||||
"resources": {
|
||||
"target/release/neodlp-msghost.exe": "neodlp-msghost.exe",
|
||||
"target/x86_64-pc-windows-msvc/release/neodlp-msghost.exe": "neodlp-msghost.exe",
|
||||
"resources/msghost-manifest/windows/chrome.json": "chrome.json",
|
||||
"resources/msghost-manifest/windows/firefox.json": "firefox.json",
|
||||
"resources/plugins/yt-dlp-plugins/": "yt-dlp-plugins/"
|
||||
@@ -13,7 +13,7 @@ import { useLogger } from "@/helpers/use-logger";
|
||||
import { ulid } from "ulid";
|
||||
import { sendNotification } from '@tauri-apps/plugin-notification';
|
||||
import { FetchVideoMetadataParams, StartDownloadParams } from "@/providers/appContextProvider";
|
||||
import { useDebouncedCallback } from '@tanstack/react-pacer/debouncer';
|
||||
import { useThrottledCallback } from '@tanstack/react-pacer/throttler';
|
||||
import { fetchDownloadStateById } from "@/services/database";
|
||||
import { dataDir } from "@tauri-apps/api/path";
|
||||
|
||||
@@ -102,7 +102,7 @@ export default function useDownloader() {
|
||||
const isProcessingQueueRef = useRef(false);
|
||||
const lastProcessedDownloadIdRef = useRef<string | null>(null);
|
||||
|
||||
const updateDownloadProgress = useDebouncedCallback((state: DownloadState) => {
|
||||
const updateDownloadProgress = useThrottledCallback((state: DownloadState) => {
|
||||
downloadStateSaver.mutate(state, {
|
||||
onSuccess: (_data) => {
|
||||
// console.log("Download State saved successfully:", data);
|
||||
@@ -201,9 +201,10 @@ export default function useDownloader() {
|
||||
|
||||
const isFlatpak = await invoke<boolean>('is_flatpak');
|
||||
const xdgDataDir = await dataDir();
|
||||
const spawnOpts = { env: { PYTHONUNBUFFERED: '1' } };
|
||||
const command = isFlatpak
|
||||
? Command.create('sh', ['-c', `${xdgDataDir}/yt-dlp/yt-dlp ${args.map(arg => `'${arg.replace(/'/g, "'\\''")}'`).join(' ')}`])
|
||||
: Command.sidecar('binaries/yt-dlp', args);
|
||||
? Command.create('sh', ['-c', `${xdgDataDir}/yt-dlp/yt-dlp ${args.map(arg => `'${arg.replace(/'/g, "'\\''")}'`).join(' ')}`], spawnOpts)
|
||||
: Command.sidecar('binaries/yt-dlp', args, spawnOpts);
|
||||
|
||||
let jsonOutput = '';
|
||||
|
||||
@@ -572,9 +573,10 @@ export default function useDownloader() {
|
||||
console.log('Starting download with args:', args);
|
||||
const isFlatpak = await invoke<boolean>('is_flatpak');
|
||||
const xdgDataDir = await dataDir();
|
||||
const spawnOpts = { env: { PYTHONUNBUFFERED: '1' } };
|
||||
const command = isFlatpak
|
||||
? Command.create('sh', ['-c', `${xdgDataDir}/yt-dlp/yt-dlp ${args.map(arg => `'${arg.replace(/'/g, "'\\''")}'`).join(' ')}`])
|
||||
: Command.sidecar('binaries/yt-dlp', args);
|
||||
? Command.create('sh', ['-c', `${xdgDataDir}/yt-dlp/yt-dlp ${args.map(arg => `'${arg.replace(/'/g, "'\\''")}'`).join(' ')}`], spawnOpts)
|
||||
: Command.sidecar('binaries/yt-dlp', args, spawnOpts);
|
||||
|
||||
command.on('close', async (data) => {
|
||||
if (data.code !== 0) {
|
||||
|
||||
Reference in New Issue
Block a user