aecx / fintube Goto Github PK
View Code? Open in Web Editor NEWJellyfin Plugin to import directly from YT
Jellyfin Plugin to import directly from YT
Currently every video is downloaded in the format:
{youtube ID}-{youtube title}.{ext}
but it would be nice to be able to customize this a bit. I personally don't care to have the youtube ID in the filename, but it would be nice to see the resolution, like
{youtube title} [{resolution}].{ext}
Additionally, it would be nice to keep the last format as the default.
When installing the 1.0.1.0 version from the web gui, it downloads the correct version but shows it as 1.0.0.0 in the gui. This also prevents uninstalling the plugin from the web gui. (I was trying to uninstall to go to the 1.0.0.0 version)
The version likely needs to just be updated here:
Line 11 in fcabbf8
As above I would like to change default download path so that I don't have to change it every time.
Looking at the 'Plugin Page' it only shows YouTube Link or ID so I assume this just work with One video at a time.
Would it be possible to support playlists that will auto download./update once a day?
I want to download all videos of a playlist and have a repeated job in the background check whether there's a new episode and download it. Is that possible? I don't know enough about yt-dlp and Jellyfin plugins to assess that...
Best, Lena
Hallo Maurice,
ich würde gerne Fintube für Jellyfin Server für Windows nutzen, aber ich bekomme leider nicht hin.
Daher wollte ich dich fragen, ob du Lust und Zeit hast, für ein Step by Step Guide wie man Fintube unter Windows zum laufen bekommt
Aktuell nutze ich Jellyfin 10.9.3 auf Windows 11.
Bei der Installation von Fintube 1.01. wird nur 1.00 installiert
Bei den Einstellungen habe ich den Pfad zu Yt-dlp.exe eingeben:
C:\Fintube\ytube
oder auch
C:\Fintube\ytube\yt-dlp.exe
Anschließend den Server neugestartet und versucht übner den Tab ein Video herunterzuladen. Es scheitert aber schon daran, dass ich kein Ordner bei "Target libery" auswählen kann.
Ich mag die Idee des Pluigin sehr und würde es gerne nutzen wohlen. Ich hoffe du kannst mir weiterhelfen.
Using Jellyfin version 10.9.2.
Cannot select target library.
Clicking submit does nothing.
There is error message in log:
[2024-05-23 09:40:06.011 +00:00] [ERR] Error processing request. URL "GET" "/fintube/libraries".
System.InvalidOperationException: The AuthorizationPolicy named: 'DefaultAuthorization' was not found.
at Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(IAuthorizationPolicyProvider policyProvider, IEnumerable`1 authorizeData, IEnumerable`1 policies)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
Can you include the .sln, .csproj and everything else needed to compile this? i want to make my own modification of this plugin but i cant get it to compile a dll properly. thanks
Hello,
thank you for this awesome plugin - exactly what I need to archive some YouTube videos into my media collection!
I have observed that the plugin does not seem to handle errors (i.e. exit code != 0) from youtube-dl
/ yt-dlp
.
As far as I can tell, whatever the exit code of the tool, the plugin always happily reports "File saved".
For example, I tried to download a video but the Jellyfin user is not allowed to write into the media collection.
The plugin reported:
Filename: /storage/YouTube/7-MYHOpzT5A
Exec: /usr/bin/yt-dlp -f mp4 -S res:1080 -o "/storage/YouTube/7-MYHOpzT5A-%(title)s.%(ext)s" 7-MYHOpzT5A
File Saved!
But my library was still empty - only the Jellyfin logs revealed the issue:
[19:55:57] [INF] [67] Jellyfin.Plugin.FinTube.Api.FinTubeActivityController: FinTubeActivityController Loaded
[19:55:57] [INF] [67] Jellyfin.Plugin.FinTube.Api.FinTubeActivityController: FinTubeDLibraries count: 4
[19:56:13] [INF] [67] Jellyfin.Plugin.FinTube.Api.FinTubeActivityController: FinTubeActivityController Loaded
[19:56:13] [INF] [67] Jellyfin.Plugin.FinTube.Api.FinTubeActivityController: FinTubeDownload : 7-MYHOpzT5A to , prefer free format: True audio only: False
[youtube] Extracting URL: 7-MYHOpzT5A
[youtube] 7-MYHOpzT5A: Downloading webpage
[youtube] 7-MYHOpzT5A: Downloading ios player API JSON
[youtube] 7-MYHOpzT5A: Downloading android player API JSON
[youtube] 7-MYHOpzT5A: Downloading player d8a5aa5e
WARNING: Writing cache to '/root/.cache/yt-dlp/youtube-nsig/d8a5aa5e.json' failed: Traceback (most recent call last):
File "/usr/local/bin/yt-dlp/yt_dlp/cache.py", line 41, in store
os.makedirs(os.path.dirname(fn), exist_ok=True)
File "/usr/lib/python3.10/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/lib/python3.10/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/lib/python3.10/os.py", line 225, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/root/.cache'
[youtube] 7-MYHOpzT5A: Downloading m3u8 information
[info] 7-MYHOpzT5A: Downloading 1 format(s): 22
[download] Unable to open file: [Errno 13] Permission denied: '/storage/YouTube/7-MYHOpzT5A-How To Change Your Cassette | Road Bike Maintenance.mp4.part'. Retrying (1/3)...
[download] Unable to open file: [Errno 13] Permission denied: '/storage/YouTube/7-MYHOpzT5A-How To Change Your Cassette | Road Bike Maintenance.mp4.part'. Retrying (2/3)...
[download] Unable to open file: [Errno 13] Permission denied: '/storage/YouTube/7-MYHOpzT5A-How To Change Your Cassette | Road Bike Maintenance.mp4.part'. Retrying (3/3)...
ERROR: unable to open for writing: [Errno 13] Permission denied: '/storage/YouTube/7-MYHOpzT5A-How To Change Your Cassette | Road Bike Maintenance.mp4.part'
Maybe the error handling can be improved :-)
I have set up and configured FinTube as instructed in the README (excluding id3v2). However, I am unable to download videos because I cannot select the target library. When I click the drop down, it appears, but is empty and does not list any of my libraries (seen in screenshot). I also cannot select the Submit button, but I assume that issue is caused by this one.
I don't really have any idea where to start with this issue, so apologies if there is some bit of important information I have left out.
Would it be possible to add a Check box to enable or disabled sponsor block options? Or a section to add in command args to the yt-dlp download?
How do i improve the quality of the downloads. I keep getting 360P
Where do i set YT-DLP to grab the highest quality available?
The problem should be obvious, please let me know if I should explain this in more detail:
https://github.com/AECX/FinTube/blob/fcabbf851ab39f3f9a15531e9747c7ea27352cd0/Jellyfin.Plugin.FinTube/Api/FinTubeActivityController.cs#L140C21-L140C25
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.