Automatic video downloader compatible with Jellyfin and its jellyfin-youtube-metadata-plugin downloading using yt-dlp.
- Channels and Seasons
- Download the latest video from a channel on a interval
- Download videos from a video ID list
- Move videos between Seasons
- Svelte [frontend]
- SvelteKit [backend]
- enmap [database]
- yt-dlp [downloader]
- decAPI [latest video API]
- Clone this Repo to your Server/System
git clone https://github.com/flloschy/auto-dl.git
- Set a username and password
- edit
/src/lib/settings.ts
- change
username
andpassword
- edit
- (optional) add a discord webhook
- create a webhook in your discord server
- edit
/src/lib/settings.ts
- change paste the url into
webhook
docker-compose up -d
-
npm i
-
npm run build
-
node build
Info: This wont run it in the background, but thats a you problem :D
- Go to the Dashboard
- Move the Interval Slider
- anything between 1h and 7d
Info: This defined how often channels will be scanned for new Videos
- Go to the Dashboard
- Click the
Checkbox
on the right of "Auto" to toggle
Info: This will enable or disabled the automatic downloading.
- Go to the Dashboard
- Click
Add Channel
- Enter the Channel ID
- Go to your desired Channel
- Go into their About page
- Click
Share channel
- Click
Copy channel ID
- Enter the Display Name
MUST be the same name else downloads WILL fail!
- Enter a Description
- Thats just something for you, though this cant be empty
Create
Info: New Channels are by default excluded from auto downloading
- Go to
Channels
- Select a Channel
- Edit Name
- Click on the Name
- Edit
- Press the
Enter
key
- Edit Description
- Click on the Description (under the name)
- Edit
- Press the
Enter
key
- Edit Downloading
- Click the
Checkbox
on the right of "Downloading" to toggle
- Click the
- Go to
Channels
- Select a Channel
- Click
< new >
- Enter name
- Enter Regex
- Used for selecting the destination of a video
- Javascript Regex String
- You can go to regex101 to make yourself a new Regex
- DONT just copy the regex eg.
/[A-Z]/gm
because this wont work.[A-Z]
is enough (no starting/
and no/gm
).
- Enter Description
- Thats just something for you, though this cant be empty
- Go to
Channels
- Select a Channel
- Select a Season
- Edit Name
- Click on the Name
- Edit
- Press the
Enter
key
- Edit Description
- Click on the Description (under the name)
- Edit
- Press the
Enter
key
- Edit Regex
- Click on the Regex
- Edit
- Press the
Enter
key
- Go to
Channels
- Select a Channel
- Select a Season
- Select a Video
- Edit Name
- Click on the Name
- Edit
- Press the
Enter
key
- Move to another Season
- Select a new season (the big blue select option (looks like a button))
- Press the
Transfer
Button
- Go to
Waitlist
- Click
Add to Waitlist
- Enter Video Id
- NEEDS to be JUST the ID, not the url/link!
- CLick
Append
Important: In order for a video to be downloaded, the Channel MUST exist with the CORRECT channel name, else a video cant be assigned to a channel and thus wont be downloaded.
What is this Button? Well...
The way the downloading Interval works is that a value gets increased by one every hour until the desired hours are reached. This Button will set this value back to 0.
sudo docker-compose down
git pull
sudo docker-compose up -d --build
- < Remove fragments from old build >
- < stop process >
git pull
- < start process >
I dont know how stable this feature is when there is a huge amount of database entries.
Get all the Database Tables as a JSON string.
- Go to
/import
- Paste the new Database in (formatted like the output of the Export)
This is ONLY an emergency option in case the database gets messed up / desynced from the file system. This can break A LOT and should only be done with all your brain cells on at least 120% +
I know placing something important this far down is nothing good but thats a you problem, again :D (only if you didnt scroll here)
NO and I mean NOT A SINGLE button has ANY kind of confirmation. So a delete button WILL execute the deleting with NO way back, NO backups NO anything!
/data
/downloads
/Channel-Name-1
/Season 00
/S00E00 [ ... ].webm
/S00E01 [ ... ].webm
/S00E02 [ ... ].webm
/S00E03 [ ... ].webm
/Season 01
/S01E00 [ ... ].webm
/S01E01 [ ... ].webm
/Season 02
/S01E00 [ ... ].webm
/...
/Channel-Name-2
/Season 00
/...
inside the square brackets ([ ... ]
) the video ID is placed for the jellyfin-youtube-metadata-plugin.
This file layout should satisfy the Jellyfin Shows naming Convention.
ask any creators for permission before downloading any of their content. And even more important do not (publicly) share access to your downloaded files. Out of respect to the creators as well as Legal Issues... I guess, im not a Lawyer.
- Requirements
npm i
npm run dev
- Type
o
andEnter
in the console to open