A Python Flask server that serves archived videos and metadata from a MySQL database. A bunch of stuff patched together.
- A Flask based server that serves archived videos and thumbnails from storage
- Metadata is stored and served from a MySQL database
- Able to track a queue of videos to be archived
- Able to track workers which automatically download and upload videos to storage
git clone https://github.com/pinapelz/Patchwork-Flask.git && cd Patchwork-Flask
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate.bat on Windows
pip install -r requirements.txtConfigure config.ini according to your needs. Leave ssh and remote_bind blank if you are not using a remote MySQL server.
accountId and api_token are optional fields for connecting to an external API to retrieve storage statistics. By default, manual_storage_data.py is used and pulls data from the kv tables of your MySQL DB.
-
For other storage providers, create a new class in a new Python module within the
webapidirectory which inherits from abstract classstorage_api. Implement theget_storage_usedandget_number_of_filesmethods -
Modify the
[storage]section inconfig.iniwith any additional authentication fields required by your storage provider -
Then modify
flask_app.pyto use your new class. Authentication fields can be accessed viaCONFIG['storage']['FIELD_NAME']
Alternatively leave this field empty to not return storage statistics
To add videos to the queue for workers to process send a POST request to the /api/worker/queue endpoint
curl -X POST -H "X-AUTHENTICATION: YOUR_QUEUE_TOKEN" -d "url=VIDEO_URL" http://localhost:5000/api/worker/queueTo read from the queue send a GET request to the /api/worker/next endpoint
curl -X GET -H "X-AUTHENTICATION: YOUR_WORKER_TOKEN" http://localhost:5000/api/worker/nextRun dbm.py to create the necesarry tables in your database
python dbm.pyTokens are not automatically generated.
To create new tokens for workers, run dbm.py with the --addworkertoken flag
- All workers you deploy will need a token to be able to read from the queue and write its results to the database
To create new tokens for queuers, run dbm.py with the --addqueuetoken flag
- Anyone who has a token can add videos to the
archive_queuetable which workers will then read from.
python dbm.py --addqueuetoken "THE_QUEUE_TOKEN_YOU_WANT_TO_USE" --addworkertoken "THE_WORKER_TOKEN_YOU_WANT_TO_USE"Run flask_app.py with the WSIG server of your choice or directly.