rendered paste body
#!/bin/bash
echo "Google Video Scraper -- EiNSTeiN_";
echo "Downloads all videos from video.google.com on all pages for a specific search term."
echo ""
SEARCH_TERM="$1"
die() { echo "$1"; exit 1; }
[ "$SEARCH_TERM" != "" ] || die "usage: $0 search-term"
echo "Scraping for $SEARCH_TERM"
BASE_PAGE="http://www.google.com/search?q=$SEARCH_TERM&sitesearch=&tbm=vid"
# get links to all other pages (next> links)
ALL_PAGES=`lynx --dump "$BASE_PAGE" | grep '&start=' | sed -e 's/.*\(http.*\)/\1/' | sort | uniq`
ALL_PAGES="$BASE_PAGE $ALL_PAGES"
ALL_PAGES=( $ALL_PAGES )
# get links to all videos from all pages
ALL_VIDEOS=""
for PAGE in $ALL_PAGES;
do
#echo "page -- $PAGE"
PAGE_VIDEOS=`lynx --dump "$PAGE" | grep -e 'video\.google.*/videoplay?docid=.*' | sed -e 's/.*\(http.*\)/\1/' | sort | uniq`
ALL_VIDEOS="$ALL_VIDEOS $PAGE_VIDEOS"
done
ALL_VIDEOS=`echo "$ALL_VIDEOS" | sort | uniq`
ALL_VIDEOS=( $ALL_VIDEOS )
echo "Found ${#ALL_VIDEOS[@]} videos on ${#ALL_PAGES[@]} pages"
# get links to all playback urls from all video pages
for VIDEO in $ALL_VIDEOS;
do
#echo "video -- $VIDEO"
SRC="`lynx "$VIDEO" --source --prettysrc`"
NAME=`echo "$SRC" | grep '<title>' | head -n1 | sed -e 's/<title>\(.*\)<\/title>/\1/'`
#echo "title --$NAME--"
PLAYBACK_URL="`echo "$SRC" | grep 'preview_url' | xargs -n1 -I{} php -r 'echo urldecode("{}");' | sed -e 's/.*videoUrl=\(.*\)&thumbnailUrl=.*/\1/'`"
#echo "url -- $PLAYBACK_URL"
echo "Downloading: $NAME"
wget --continue --output-document="$NAME" "$PLAYBACK_URL"
echo "---"
done