Skip to content

Instantly share code, notes, and snippets.

@guanix
Created March 8, 2011 22:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guanix/861217 to your computer and use it in GitHub Desktop.
Save guanix/861217 to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# GRAPEFRUIT: Given a user, downloads all that user's videos.
# THIS IS THE AXEL version. BEWARE IT WILL EAT ALL OF YOUR BANDWITH LIKE COOKIE MONSTER, BUT BETTER
USER=$1
PAGE=$2
#Path to axel
AXEL="$(which aria2c)"
if [ ! -x "$AXEL" ]; then
echo "DUDE, MOTHERFUCKING INSTALL AXEL. " >&2
exit 1
fi
if [ ! -d videos ]
then
mkdir videos
fi
if [ ! -d videos/$USER ]
then
mkdir videos/$USER
fi
# Using the PAGE attribution, know how many times we've been called.
if [ "$PAGE" ]
then
KEEPINGUPAPPEARANCES=$(($PAGE + 1))
echo "[!] $USER Page $KEEPINGUPAPPEARANCES."
cd videos/$USER
VICTIM=$USER-$PAGE.html
SKIP=$(($PAGE * 10))
wget -q -O $USER-$PAGE.html "http://video.yahoo.com/mypage/video?s=$USER&o=$SKIP"
else
echo "[!] $USER"
cd videos/$USER
wget -q -O $USER.html -q "http://video.yahoo.com/mypage/video?s=$USER"
VICTIM=$USER.html
PAGE=0
fi
# extract URLs.
for fruitmeat in `grep \.com/watch $VICTIM | sed 's/.*href=\"//g' | cut -f1 -d'"' | sort -u`
do
CUTESY="`echo $fruitmeat | sed 's/.*watch\///g' | sed 's/\//-/g'`"
VNUM="`echo $CUTESY|tr "-" " "|awk '{print $2}'`"
if [ -f *-$VNUM.flv ] && [ -f *-$VNUM.html ]; then
echo "EXISTS: `ls *-$VNUM.flv`"
continue
fi
if [ -f $VNUM.notitle ]; then
echo "PREVIOUS NOTITLE: $VNUM"
continue
fi
wget -q -O $CUTESY.html $fruitmeat
title="`python ../../youtube-dl -e $fruitmeat|tr \"/\" \"_\"`"
if [ -z "$title" ]
then
echo "NOTITLE: $VNUM $title"
touch "$VNUM.notitle"
continue
fi
sleep 1.1
url="`python ../../youtube-dl -g $fruitmeat`"
if [ -z "$url" ]
then
echo "NOURL: $VNUM $title"
touch "$VNUM.notitle"
continue
fi
echo $VNUM-$title
fileflv="$title-$VNUM.flv"
filetmp="guan-video-temp-$VNUM.tmp"
$AXEL --split=5 --max-concurrent-downloads=100 --min-split-size=1M --remote-time=true -o "$fileflv" $url
done
# If there's a link for "Older", then call myself again, but this time add a page.
OLDIECHECK=`grep ">Older >" $VICTIM | grep href`
# Always sleep for 1
sleep 1.1
if [ "$OLDIECHECK" ]
then
echo "Yep! Another page of this!"
cd ../..
PAGE=$(($PAGE+1))
exec $0 $USER $PAGE
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment