No description
Find a file
Ethan Dalool ff1b043279 Arrange the state filters horizontally instead of vertically.
The "New videos are" dropdown and the sorting options are both
horizontal, so this one being vertical stuck out badly visually.
This is a little better.
2020-06-10 23:09:17 -07:00
frontends Arrange the state filters horizontally instead of vertically. 2020-06-10 23:09:17 -07:00
utilities Add utility merge_db.py. 2020-05-21 17:33:59 -07:00
ycdl Add more attributes to ytapi.Video from API data. 2020-05-26 22:05:08 -07:00
README.md Add instructions for getting youtube API key to readme. 2020-06-10 23:05:17 -07:00
requirements.txt Changes 2018-12-17 19:17:53 -08:00
ycdl_logo.svg Add ycdl_logo.svg. 2020-01-19 10:51:54 -08:00

Youtube Channel Downloader

YouTubeChannelDownloader creates an SQLite3 database of Youtube channels and their videos, and serves it out of a web server.

YCDL solves three main problems:

Metadata archive

The database acts as a permanent archive of video metadata including title, description, duration, view count, and more. Even if a video or channel is deleted from Youtube, you will still have this information. Perfect for never losing track of unlisted videos, too.

The thumbnails, however, are not stored in the database, but you can use utilities\download_thumbnails.py to download them.

Note: At this time, refreshing a channel in YCDL will update video titles, descriptions, and view counts with their current values. If you refresh a channel after they have changed their video's title or description you will lose the previous value.

Easily watch every video on the channel

When I discover a channel, I like to watch through their videos over the course of weeks or months. Within Youtube's own interface, it becomes difficult to know which videos I've watched and which ones I haven't. Scrolling through all of a channel's videos is tough especially if there are many.

In YCDL, videos start off as pending and you can mark them as ignore or download, so the pending page is always your "to-watch" list.

On my Youtube subscription box, I would often press the "hide" button on videos only to find them come back a few days later, and hiding live broadcasts was never reliable. YCDL makes watching my subscriptions much easier.

Send video IDs to youtube-dl

YCDL does not perform the downloading of videos itself. When you click on the download button, it will create an empty file called xxxxxxxxxxx.ytqueue in the directory specified by the ycdl.json config file. You can send this ID into youtube-dl in your preferred way.

Features

  • Web interface with video embeds
  • "Sub-box" page where newest videos from all channels are listed in order
  • Sort videos by date, duration, views, or random
  • Background thread will refresh channels over time
  • Automark channels as ignore or download

Your API key

You are responsible for your own bot.py file, with a function get_youtube_key, called with no arguments, that returns a Youtube API key.

  1. Go to https://console.developers.google.com/.
  2. Create a project using the menu in the upper left.
  3. From the project's dashboard, click "Enable APIs and Services".
  4. Search for and choose the latest YouTube Data API.
  5. On the left bar, click "Credentials".
  6. Click "Create credentials" and choose "API key". In my experience they all start with "AIzaSy".
  7. Return this value from get_youtube_key however you deem fit.

Screenshots

2020-04-04_15-27-15

2020-04-04_15-29-25

2020-04-04_15-36-05

2020-04-04_15-36-10

2020-04-04_15-40-27

To do list

  • Keep permanent record of titles and descriptions.
  • Progress indicator for channel refresh.
  • Delete channel from web interface.