Copy online media to your USB pen by night and watch it on your daily commute

Overview

commute-tube

Build Status Coverage Status

commute-tube is your friend on your daily commute. It will download videos of your interest to your USB pen by night so that you're able to watch the program in bus or train. It is basically a configurable wrapper for youtube-dl.

I made this tool because I was getting a new job with a daily commute via train attached. On that train ride no cellular network nor wifi was available. Despite wifi was introduced to the trains in the mean time, commute-tube still holds up by giving me instant access to the videos I want to watch without thinking about bandwidth and spinning loading wheels.

commute-tube is a tool written in Python and should be run in a headless environment such as a server with a USB pen attached. It will look for your USB pen. The only thing that should be done regularly is to plug in your pen after work and catch it before you leave the house.

Alternatively, it is possible to just download to a folder and synch this folder via rsynch to your laptop or smart device.

Installation

End User

Run pip install commute-tube.

Development

Run pip install -e . in the checked out folder.

Running

By running commute-tube commute-tube will look for the configuration file (see below) and start downloading to the configured download location.

Configuration

See the example config.json file. The configuration is stored in $HOME/.config/commutetube/config.json.

The file already_downloaded.txt will hold all the files already downloaded. They won`t be downloaded in any following run.

pen section

In the pen section you may declare basic settings such as penPath (path to your pen), downloadFolder (the path where files are going be downloaded inside your penPath).

common subsection

The common subsection features settings that should be inheritet by all subsequent sources. Things like maximum download quality should be configured here.

source section

The source section contains all the various sources you want to download from. Besides description which contains a description of the source and shellscript all the parameters are basic youtube-dl options. See the youtube-dl implementation for a detailed overview over the parameters available and how to set them.

Shell script support

In addition to the youtube-dl wrapper it is possible to set the value shellscript which invokes a shell script or command that you specify and takes the output one line at a time for youtube-dl as input. This is helpful if you want to parse a video source that is not yet supported by youtube-dl.

For example, by this approach you can write a shellscript onliner which extracts a list of urls that is supported by youtube-dl.

The output of the shellscript is passed to youtube-dl.

File copy support

Basic files on your host file system are also supported. Use the path element for specifying a file to the USB pen. In order to avoid re copying of already copied files, files are checked for their checksum.

Changes to older versions

Both config.json and already_downloaded.txt are now stored in $HOME/.config/commutetube/. Their location can also be changed via command line arguments.

Best Practices

Here are some best practices listed that I've used on my daily commute ever since creating commute-tube.

Running commute-tube once every night

For my scenario I've created a Jenkins job that will trigger commute-tube every night at 4 am. The job does also do the following tasks and will upload the log file to an internet resource for me to monitor in case of something went wrong.

So far I was using two scenarios:

  1. Synch via wifi
  2. Copy to USB pen

Synching a folder to my laptop every morning

This one is my preferred way since it takes away the need to deal with a USB pen every day.

Instead I'm waking up my MacBook via a launchd job every morning and synch all the contents of the download folder via rsynch.

Working with a USB pen

Prior to the actual downloading, Jenkins also checks if the USB pen has been plugged in using the commute-tube --check command. If not plugged-in, Jenkins will remind me by sending a push notification to my phone.

Deleting contents of the USB pen

Eventually the disk space on your USB pen will run out. In my case I was using a Windows host system for watching the contents on my pen. I wrote a Windows batch file that moves all the contents of the Download folder of the pen to a sub folder called delete.

The nightly routine for starting commute-tube will then delete all the contents of the delete folder. This will also keep the files on the pen in case of error or when I forget to plug-in the pen.

Later I was switching over to a more automated process by writing something like this in my Jenkins job:

find /mnt/commute/Download/ -type f -mtime +7 -exec rm -v {} \;

This will delete all files older than 7 days.

Mount point for USB pen

Best way would be to use a FAT32 formatted USB pen. Since there is a good working and hassle free implementation of FAT32 on almost any Unix machine. At first you should create a mount point with mkdir /mnt/commuteUSB and after that configure /etc/fstab.

In order to do so, extract the UUID of your USB pen and put it into the /etc/fstab configuration. The user flag will allow any user to mount and unmount the pen by using mount /mnt/commuteUSB or umount /mnt/commuteUSB respectively:

[[email protected] ~]$ sudo blkid
/dev/sdd1: LABEL="KINGSTON" UUID="25E6-B035" TYPE="vfat" PARTUUID="c3072e18-01"
[[email protected] ~]$ cat /etc/fstab
UUID=25E6-B035    /mnt/commuteUSB  vfat   user,noauto,rw,umask=000              0  0

Mounting the USB pen

In earlier versions commute-tube brang it's own functionality for mounting and unmounting USB pens, I've found this behaviour rather unreliable compared to native mount mountpoint and umount mountpoint commands of the system. You'll be better of runnign something like:

mount mountpoint &&
commute-tube
unmount mountpoint ||
echo "Unable to unmount"
Owner
Matthias Küch
Bringing personal ideas to life here.
Matthias Küch
A discord bot for downloading youtube video and audio files

disctube disctube is a discord bot for downloading video and audio files from youtube using python pytube. disclaimer i am not the best python program

razor420 3 Feb 03, 2022
Simple python script to download .mp3 formatted files from YouTube video URLs

Introduction: Simple python script to download .mp3 formatted files from YouTube video URLs Requirements: Requires: youtube_dl module Requires: ffmpeg

Pat 2 Aug 18, 2022
📼Command line tool based on youtube-dl to easily download selected channels from your subscriptions.

youtube-cdl Command line tool based on youtube-dl to easily download selected channels from your subscriptions. This tool is very handy if you want to

Anatoly 64 Dec 25, 2022
Make YouTube videos tasks in Todoist faster and time efficient!

Youtubist Basically fork of yt-dlp python module to my needs. You can paste playlist or channel link on the YouTube. It will automatically format to s

Konrad Konieczny 1 Dec 04, 2022
this is udemy course downloader, before a start you know how to get access token.

udemy_downloader this is udemy course downloader, before a start you know how to get access token. To get the access_token on Google Chrome (once on U

OkUgur 18 Dec 04, 2022
A program which takes an Anime name or URL and downloads the specified range of episodes.

super-anime-downloader A console application written in Python3.x (GUI will be added soon) which takes a Anime Name/URL as input and downloads the ran

Sayyid Ali Sajjad Rizavi 26 Jul 18, 2022
Jocomol 16 Dec 12, 2022
A toolkit to automatically crawl the paper list and download paper pdfs of ACL Ahthology.

ACL-Anthology-Crawler A toolkit to automatically crawl the paper list and download paper pdfs of ACL Anthology

Ray GG 9 Oct 09, 2022
Code for "Temporal Difference Learning for Model Predictive Control"

Temporal Difference Learning for Model Predictive Control Original PyTorch implementation of TD-MPC from Temporal Difference Learning for Model Predic

Nicklas Hansen 156 Jan 03, 2023
Let's you download entire YT-playlists.

Youtube MP3 Playlist Downloader Let's you download entire youtube playlists as mp3 files. This application is basically a script that makes it easier

11 Dec 18, 2022
Code for "Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions"

Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions Codebase for the "Adversarial Motion Priors Make Good Substitutes for Com

Alejandro Escontrela 54 Dec 13, 2022
Apple Music Animated Artwork Fetcher

A python script for downloading the animated artwork of an Apple Music album.

bunny 46 Jan 03, 2023
Making the process of downloading youtube videos faster and more convinient.

Easy-YT Making the process of downloading youtube videos faster and more convinient. What can it do? This python script can be used to download youtub

Meynam 39 Nov 15, 2021
🔥 A Bot To Telegram For Download High Qulity Videos & Songs From Youtube

🔥 A Bot To Telegram For Download High Qulity Videos & Songs From Youtube 🎗 Fast And Free Bot No Need To Pay ✅ By SL-Alpha-X-Team ⚡

Official Alpha-X-Team Account 7 Aug 31, 2022
Ebook downloader built using python

ebook-downloader Getting Started Open a terminal and run the following commands. git clone github.com/georgemunyoro/ebook-downloader cd ./ebook-downlo

George Munyoro 1 Oct 19, 2021
A tool to make easy to search for directories in the URL.

Welcome to Brutos Directory Scanner 🚀 The Brutos is a python script used to provide agility in obtaining verifications to informations about related

Sérgio Corrêa 4 Apr 14, 2022
The tool allows to download a list of tiktok sounds

dependencies: pip install requests how to use LAUCH THE PROGRAM file (option f)

carpal 3 Jan 21, 2022
Get the latest updates around you as they happen

Adherent We all are different, experience various things happening around us but we stick together. We are all a part of a greater community. As human

Shreyas Daniel 1 Nov 10, 2022
Download history data from binance and save to dataframe or csv file

Binance history data downloader Download history data from binance and save to dataframe or csv file

10 Dec 02, 2022
AkShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库

Overview AkShare requires Python(64 bit) 3.7 or greater, aims to make fetch financial data as convenient as possible. Write less, get more! Documentat

Albert King 5.8k Jan 03, 2023