-
-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement yt-dlp
support and backups for overrides
#93
Conversation
This way, users have a stable backend to use instead of having to rely on potentially unstable Invidious instances.
I also tried to implement downloading functionality for Invidious, but for the only publicly accessible instance at the moment (nerdvpn), the downloads would always fail with an SSL certificate error, so I removed that functionality for now.
Hey @falko17 thanks so much for the PR! I've given it a quick look over and everything looks great. I'll find some time to do some testing in the next few days then get it merged in. Thanks again! |
How exactly did you try to download the audio in the Python backend? From what I remember, you had to specify an SSL context for SSL connections to work correctly. See Deckcord or decky-loader for example. |
Thanks for the pointers! I just very naively used |
Installed your branch onto my deck to test. Using yt-dlp with download disabled. Opening a game page with a song that was already set plays fine, but opening search I cant get any songs to load. When performing a search I'm getting this error
Any ideas? |
My bad, I didn't test the changes enough when switching to asyncio, and it appears there were some concurrency issues. The critical sections are now guarded by locks. |
Sorry for not getting back at this earlier, I was traveling and didn't have reliable internet to be able to do any sort of code reviews. |
No problem, thanks for your reviews! |
@falko17 Have a look at the PR I opened on your repo. Mostly style changes, translation updates & binary update. |
* style: small changes to shut prettier up * chore: upgrade yt-dlp binary to latest at time of commit * chore: update .gitignore to ignore files produced as a result of decky CLI * missing keys for translations added with English translation as value
We should maybe consider having a slider to adjust the minimum length. |
That sounds like a good idea, but I think I'd do that in a separate issue and PR after this one has been merged. |
@falko17 Do you have a Ko-Fi or somewhere that we could support your efforts? I really appreciate the work you’ve put in to resurrect this plugin. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's very kind, thanks @BrentTechDesigns! I do now, but it'll probably be at least a few weeks before I implement another feature for this plugin.
Great, thanks, and thank you to @eXhumer from me as well for the helpful comments. |
@OMGDuke hows the submission going? i dont see the update. |
SteamDeckHomebrew/decky-plugin-database#730 Awaiting review from the Decky team. No ETA unfortunately. They're all volunteers. |
This PR adds support for the YouTube downloader
yt-dlp
as an alternative to Invidious instances. Additionally, support for downloading and for creating backups of the overrides have been added. Hence, this should resolve #27, resolve #92, and should provide a stable enough alternative to Invidious that we might consider closing #87 and #89 as well.Details
ytsearch10
syntax (i.e., searching for the first 10 matching videos) while restricting results to videos that are not longer than 20 minutes to remove unlikely candidates.AudioResolver
class, or moving types into thetypes/
directory), I hope none of these are too jarring compared to the old codebase.appName
followed by "Theme Music" initially).Caveats
package.json
, as is recommended in the decky docs.2zipimport
, I had to usesubprocess
to execute it as a binary instead. The reason is that when I tried importing it, there seems to be a problem with accessingxml.etree
from within decky which I haven't been able to resolve.Footnotes
Currently only one public instance works (the nerdvpn one), so maybe it's just broken on there? But then I'm not sure why streaming it would work. ↩
I'm still not exactly sure how this works though, when will the remote binary be downloaded? When testing, I couldn't remove the yt-dlp binary from the
defaults
folder. Will it only be downloaded on production builds? ↩