All pastes #2047474 Raw Edit

Unnamed

public text v1 · immutable
#2047474 ·published 2011-04-17 17:51 UTC
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"

# 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`

V=( $ALL_VIDEOS )
P=( $ALL_PAGES )
echo "Found ${#V[@]} videos on ${#P[@]} 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