Home

Awesome

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 @<username> (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]
argumentconfigenvvaluedefaultdescription
--config-fileCONFIG_FILECONFIG_FILENonePath to config file
--log-filelog_fileGENERAL_LOG_FILELOG_FILE/dev/stdoutPath to log file or /dev/stdout for standard output
--log-formatlog_formatGENERAL_LOG_FORMATLOG_FORMAT%(asctime)-15s [%(levelname)s] %(message)sLogging format using syntax for python logging module
--log-levellog_levelGENERAL_LOG_LEVELCRITICAL<br>FATAL<br>ERROR<br>WARN<br>WARNING<br>INFO<br>DEBUG<br>NOTSETINFOLogging level using for python logging module
--log-filemodelog_filemodeGENERAL_LOG_FILEMODEa<br>waLogging file mode using for python logging module<br>a - appending to the end of file if it exists<br>w - truncating the file first
portportGENERAL_PORTPORT_NUMBER15000Port 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

configenvdefault valuetypedescription
api_keyYT_API_KEYNonestringA Google API Key. See documentation
cleanup_periodYT_CLEANUP_PERIOD600000intPeriodicity of the call to the cache clearing function. In milliseconds
convert_video_periodYT_CONVERT_VIDEO_PERIOD1000intPeriodicity of calling the function of converting video to audio. In milliseconds
audio_expiration_timeYT_AUDIO_EXPIRATION_TIME259200000intExpiration time of stored files
start_cleanup_size_thresholdYT_START_CLEANUP_SIZE_THRESHOLD536870912intThe 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_thresholdYT_STOP_CLEANUP_SIZE_THRESHOLD16106127360intEnough space threshold
autoload_newest_audioYT_AUTOLOAD_NEWEST_AUDIOTrueboolWhether to automatically download the newest audio when updating the rss feed

License

BSD-2-Clause