Docker integration, using gunicorn+nginx
YouTube Subscription Manager
A self-hosted tool which manages your YouTube subscriptions, and downloads files automatically.
Current state
Currently, the program will do what it's main job is to do: download videos, and keep track of the subscriptions.
Of course, there are a lot of things that still need to be done. The web interface is still pretty limited. This is what still needs to be done:
- get status bar to actually display something (right now it's just a hardcoded message)
 - add an indication of what the synchronization jobs are doing to the UI
 - video page, which contains an embedded player
 - OAuth YouTube authentication, so private playlists can be obtained
 - Web UI improvements:
- Paging for videos
 - Handle drag & drop for the subscription folders
 - Update UI when something changes
 
 - Improve stability
 - Bonus: Plex integration
 
Docker
To run with docker, edit the config file (config/config.ini) and then run docker-compose up -d, it will bind to port 80.
You can edit the default download locations in the docker-compose.yml file.
Dependencies
- python3: 
$ apt install python3 - pip: 
$ apt install python3-pip - django: 
$ pip3 install django - crispy_forms: 
$ pip3 install django-crispy-forms - youtube-dl: 
$ pip3 install youtube-dl - google-api-python-client: 
$ pip3 install google-api-python-client - google_auth_oauthlib: 
$ pip3 install google_auth_oauthlib - apscheduler (v3.5+): 
$ pip3 install apscheduler - (recommended) oauth2client: 
$ pip3 install oauth2client 
Installation
- 
Install all the dependencies listed above.
sudo apt install python3 python3-pip sudo pip3 install apscheduler django django-crispy-forms youtube-dl google-api-python-client google_auth_oauthlib oauth2client - 
Clone this repository:
git clone https://github.com/chibicitiberiu/ytsm.git cd ytsm - 
Set up the database:
python3 manage.py migrateBy default, a SQLite database is used, which is located in the project's folder. You can customize that in
YtManager/settings.py, by modifying theDATABASESvariable (search Django documentation for details). - 
Set up the
MEDIA_ROOTvariable inYtManager/settings.py. This is where the thumbnails will be downloaded. (note: this will be moved toconfig.iniin the future). - 
Obtain an YouTube API developer key from https://console.developers.google.com/apis/dashboard. You can find a detailed guide on this page.
The
defaults.inifile already has an API key, but if the quotas are reached, you won't be able to use this program any more. Also, I might decide to delete that key, which will break your installation. - 
Modify
config/config.inito your liking. All the settings should be documented through comments. All these settings apply server-wide. The settings in theusersection can be overriden from the web page for each individual user.The most important settings are:
[Global] YoutubeApiKey- put your YouTube API key here[User] DownloadPath- sets the folder where videos will be downloaded
 - 
Start the server:
python3 manage.py runserver [port] --noreloadThe
portparameter is optional.The
--noreloadoption is necessary, otherwise the scheduler will run on 2 separate processes at the same time, which is not ideal. - 
Open the server's page in your browser, by entering
http://localhost:portin your address bar. - 
Create an admin user by going to the register page, and creating an user account.
 - 
Add some subscriptions, and enjoy!
 
Correct deploying procedure
This is a django project, so the correct way to deploy it to a server would be by using mod_wsgi. Since this project is still in development, I haven't really thought about getting it ready for production.
If you are willing to try that, you can find the information on how to deploy this application on the Django website.