amckee / PodTube

This is a fork of podtube.aquacash5.com's python application for converting Youtube playlists and channels into podcast RSS feeds. This fork adds the same functionality to Rumble and Bitchute.
BSD 2-Clause "Simplified" License
15 stars 3 forks source link

PodTube

This is an extended functionality fork of a python application for converting Youtube, Rumble and Bitchute channels into podcast-friendly RSS feeds.

For basic or original usage that may be needed, see the original project page. To use this fork:

Usage

Youtube

Key

For the YouTube module, you must specify the Google API Key. See documentation

Channels

http://yourserver.com/youtube/channel/youtube-channel-id

YouTube channel by @ (should automatically grab canonical URL):

http://yourserver.com/youtube/user/@username

Playlists

http://yourserver.com/youtube/playlist/<PlaylistID>

Audio

If you want an audio podcast add a /audio to the url

http://yourserver.com/youtube/playlist/<PlaylistID>/audio

http://yourserver.com/youtube/channel/youtube-channel-id/audio

http://yourserver.com/youtube/user/@username/audio

#### For Youtube only, limit the number of pages we pull from to 10 pages
...
http://yourserver.com/youtube/channel/youtube-channel-id?max=10

Bitchute

Channels

http://yourserver.com/bitchute/channel/bitchute-channel-name

Rumble

Channels

http://yourserver.com/rumble/channel/rumble-channel-name

Users

http://yourserver.com/rumble/user/rumble-user-name

Categories

http://yourserver.com/rumble/category/category-name

Daily Motion

http://yourserver.com/dailymotion/user/dailymotion-user-name

Docker

Docker container info: Be sure to open a port to containers default 15000

-e YT_API_KEY - required for Youtube functions

https://hub.docker.com/r/ftawesome/podtube

Configuration

Command line

podtube.py [--config-file CONFIG_FILE] [--log-file LOG_FILE] [--log-format LOG_FORMAT] [--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}] [--log-filemode {a,w}] [port]
argument config env value default description
--config-file CONFIG_FILE CONFIG_FILE None Path to config file
--log-file log_file GENERAL_LOG_FILE LOG_FILE /dev/stdout Path to log file or /dev/stdout for standard output
--log-format log_format GENERAL_LOG_FORMAT LOG_FORMAT %(asctime)-15s [%(levelname)s] %(message)s Logging format using syntax for python logging module
--log-level log_level GENERAL_LOG_LEVEL CRITICAL
FATAL
ERROR
WARN
WARNING
INFO
DEBUG
NOTSET
INFO Logging level using for python logging module
--log-filemode log_filemode GENERAL_LOG_FILEMODE a
w
a Logging file mode using for python logging module
a - appending to the end of file if it exists
w - truncating the file first
port port GENERAL_PORT PORT_NUMBER 15000 Port Number to listen on

Priority for applying the configuration in descending order:

  1. command line arguments
  2. environment variables
  3. configuration file

Configuration file example

[general]
port=8080
log_file=./podtube.log
log_format=%(asctime)-15s %(message)s
log_level=DEBUG
log_filemode=w

[youtube]
api_key=YOUTUBE_API_KEY
cleanup_period=600000
convert_video_period=1000
audio_expiration_time=259200000 # 3 days in seconds
start_cleanup_size_threshold=536870912 # 0.5GiB
stop_cleanup_size_threshold=16106127360 # 15GiB
autoload_newest_audio=1

Youtube configuration

config env default value type description
api_key YT_API_KEY None string A Google API Key. See documentation
cleanup_period YT_CLEANUP_PERIOD 600000 int Periodicity of the call to the cache clearing function. In milliseconds
convert_video_period YT_CONVERT_VIDEO_PERIOD 1000 int Periodicity of calling the function of converting video to audio. In milliseconds
audio_expiration_time YT_AUDIO_EXPIRATION_TIME 259200000 int Expiration time of stored files
start_cleanup_size_threshold YT_START_CLEANUP_SIZE_THRESHOLD 536870912 int The minimum required amount of space in the ./audio folder. If there is not enough free space, the oldest files will be deleted until there is enough space
stop_cleanup_size_threshold YT_STOP_CLEANUP_SIZE_THRESHOLD 16106127360 int Enough space threshold
autoload_newest_audio YT_AUTOLOAD_NEWEST_AUDIO True bool Whether to automatically download the newest audio when updating the rss feed

License

BSD-2-Clause