How I Watch Youtube Videos without Having Internet at Home
People ask how I can watch Youtube videos at home while riding the exercise bike, without having the Internet at home. I use the youtube-dl python script which can download Youtube videos from the internet while at the library or another public wi-fi, along with some custom scripts I built and posted below.
Then I browse the Youtube pages of the channels I follow and other suggested videos. From there, I right click on the video, and put the link to the video into the clipboard. From there, I click on an icon in my toolbar that executes a script that “saves” the video URL. Here is the script:
#!/bin/sh
xclip -o >> ~/vd1.txt
VIDEO1="$(xclip -o)"
echo "\n" >> ~/vd1.txt
TITLE=$(youtube-dl -e ${VIDEO1})
notify-send -i "/usr/share/icons/gnome/32x32/mimetypes/video-x-generic.png" 'Youtube Added ...' "${TITLE}"
xclip -i /dev/null
Once I’ve made my list up to download the youtube-videos, and are ready to consume oodles of bandwidth on the free public wifi at the library or other locations, I run my script that downloads the videos.
#!/bin/bash
mkdir -p /home/andy/Videos/Home.Watching/
mkdir -p /home/andy/Videos/Home.Listening/
FILE=/home/andy/vd${1}.txt
if [ -f $FILE ]; then
for WORD in `cat $FILE`; do
if [ ${#WORD} -gt 5 ]; then
TITLE=$(youtube-dl -e ${WORD})
notify-send -i "/usr/share/icons/gnome/32x32/mimetypes/video-x-generic.png" -t 25000 -u normal 'Started Download' "${TITLE}"
cd /home/andy/Videos/Home.Watching/
youtube-dl --mark-watched $WORD
convert-home-watching-to-listening & # script shown below
notify-send -i "/usr/share/icons/gnome/32x32/mimetypes/video-x-generic.png" -t 10000 -u normal 'Downloaded' "${TITLE}"
fi
done
NEWFILE=$(basename $FILE).done.txt
mv $FILE /home/andy/$NEWFILE
done
ls -t /home/andy/Videos/Home.Watching/*/*|xargs -d '\n' vlc &
Nice, but there is one more part. I like to be able to listen to videos on my phone while at camp, hiking, or walking, so I also have a script to convert them over to MP3 format using ffmpeg. I also automatically delete any MP3 files that don’t match videos on my system, as I figure if I deleted the videos, I probably don’t need them.
#!/bin/bash
MOVIES=/home/andy/Videos/Home.Watching
LISTEN=/home/andy/Videos/Home.Listening
# first delete any MP3s
# that don't have a matching
# movie file
for f in $LISTEN/*
do
FILE=${f##*/}
BASE=${FILE%%.*}
if ! ls $MOVIES/"$BASE"* 1> /dev/null 2>&1
then
rm "$f"
fi
done
touch $LISTEN/.nomedia # so these files don't appear with my music files
# then do the conversion of
# the Movies to MP3s
for f in $MOVIES/*
do
FILE=${f##*/}
BASE=${FILE%%.*}
#echo $BASE
if [[ ! -f $LISTEN/"$BASE".mp3 ]]
then
ffmpeg -i "$f" $LISTEN/"$BASE".mp3
fi
done
Lastly, I use jmtpfs and rsync to sync the files over to my phone. The ten second delay, if the folder is not mounted, is so I see that things weren’t mounted, because the phone is unplugged.
#!/bin/bash
jmtpfs -l
mkdir -p ~/phone/
jmtpfs ~/phone/
if [ -d "/home/andy/phone/SD card/Home.Listening" ]
then
rsync -v --progress /home/andy/Videos/Home.Listening/* "/home/andy/phone/SD card/Home.Listening"
cd
fusermount -u ~/phone/
else
sleep 10
fi