warren-bank / node-hls-downloader-tubitv

Command-line utility for downloading an offline copy of TubiTV HLS video streams.
GNU General Public License v2.0
58 stars 8 forks source link

TubiTV Downloader

Command-line utility for downloading an offline copy of TubiTV HLS video streams.

Features:

Installation:

npm install --global @warren-bank/node-hls-downloader-tubitv

Usage:

tubidl <options>

options:
========
"-h"
"--help"
    Print a help message describing all command-line options.

"-v"
"--version"
    Display the version.

"-q"
"--quiet"
    Do not print a verbose log of operations.

"-ll" <integer>
"--log-level" <integer>
    Specify the log verbosity level.
      0 = no output (same as --quiet)
      1 = include only episode TubiTV URLs
      2 = include only episode ffmpeg commands
      3 = include all operational metadata (default)

"-dr"
"--dry-run"
    Do not write to the file system.

"-nm"
"--no-mp4"
    Do not use "ffmpeg" to bundle the downloaded video stream into an .mp4 file container.

"-mf" <integer>
"--mp4-filename" <integer>
    Specify the numeric mode used to configure the filename of the .mp4 file container.
      0 = "video.mp4" (default)
      1 = "${movie-or-episode-title}.mp4"
      2 = "${movie-title}.mp4" or "${series-title} - ${episode-title}.mp4"

"-mc" <integer>
"--max-concurrency" <integer>
"--threads" <integer>
    Specify the maximum number of URLs to download in parallel.
    The default is 1, which processes the download queue sequentially.

"-P" <dirpath>
"--directory-prefix" <dirpath>
    Specifies the directory where the resulting file structure will be saved to.
    The default is "." (the current directory).

"-u" <URL>
"--url" <URL>
    Specify a TubiTV URL. (movie, episode, or series)

"-i <filepath>"
"--input-file <filepath>"
    Read TubiTV URLs from a local text file. Format is one URL per line.

Example:

Suggestions:
  1. download with options: --no-mp4 --log-level 3
    • redirect stdout to a log file
    • when download completes, check the log file for any error messages
    • if any .ts chunks encountered a download problem
      • identify the url of the TubiTV page that was being processed when this error occurred
      • redownload that page (using the same --directory-prefix)
      • all previously downloaded data not be modified or deleted
      • only missing data will be retrieved
  2. repeat the above process until the log file shows no download errors
  3. finally, convert the HLS stream to mp4
    • the ffmpeg command to perform this conversion is included in the log file
    • when converting the episodes in a series, a list of all ffmpeg commands can be generated with the options: --dry-run --log-level 2

Requirements:

Legal: