Skip to content

Instantly share code, notes, and snippets.

@guanix
Created March 10, 2011 20:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save guanix/864842 to your computer and use it in GitHub Desktop.
Save guanix/864842 to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# GRAPEFRUIT: Given a user, downloads all that user's videos.
#
USER=$1
PAGE=$2
PYTHON=`which python`
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 \"/\" \"_\"`"
sleep 1
if [ -z "$title" ]; then
echo "NOTITLE: $VNUM $title"
touch "$VNUM.notitle"
continue
fi
url="`$PYTHON ../../youtube-dl -g $fruitmeat`"
sleep 1
if [ -z "$url" ]; then
echo "NOURL: $VNUM $title"
touch "$VNUM.notitle"
continue
fi
echo "$VNUM-$title"
tmp="video-$VNUM.flv.tmp"
filename="$title-$VNUM.flv"
wget -c -O "$tmp" $url && mv -v -- "$tmp" "$filename"
done
# If there's a link for "Older", then call myself again, but this time add a page.
OLDIECHECK=`grep ">Older >" $VICTIM | grep href`
sleep 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