#!/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 '' | 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