baaf9577da
* Ignore .dist folder used by visual studio code * Add example env file * Added environment variables * Ignore env file * Added default name to be ytmanager instead * Default to postgres * Update example env for postgres instead of sqlite * Added default as postgres as well in settings * Add volume for sqlite3 database storage (incase desired) * Added example env file for sqlite3 configuration * whitespace for sanity of my own * Add database_url as an optional env variable * hopefully working towards chibicitiberiu/ytsm#6 * Added default command * Expose 8000 * Added environment variable prefixes * added environment variable to parse for dj_database_url * Take out command in docker-compose since it's already in the Dockerfile as a cmd * SQLite as default * Create Docker README with information about how to run with Docker * Took out postgres. If people desire it, they can add it themselves. * Took out db depenednecy for docker-compose * Change cmd * Fixed up commands to run better in readme * Added underscore to Docker_README * Change default .db file location |
||
---|---|---|
.idea | ||
app | ||
config | ||
nginx | ||
.gitignore | ||
Docker_README.md | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
README.md | ||
sqlite3.env.env |
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, and there might still be uncaught bugs. These are some of the things that need 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
- Bonus: Support for additional services (Twitch, Vimeo)
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
Normal installation for development/testing
-
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 migrate
By default, a SQLite database is used, which is located in the project's folder. You can customize that in
YtManager/settings.py
, by modifying theDATABASES
variable (search Django documentation for details). -
Set up the
MEDIA_ROOT
variable inYtManager/settings.py
. This is where the thumbnails will be downloaded. (note: this will be moved toconfig.ini
in 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.ini
file 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.ini
to your liking. All the settings should be documented through comments. All these settings apply server-wide. The settings in theuser
section 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] --noreload
The
port
parameter is optional.The
--noreload
option 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:port
in your address bar. -
Create an admin user by going to the register page, and creating an user account.
-
Add some subscriptions, and enjoy!
Docker
A much easier way to install is to use 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.
Deploying for production
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.