#!/bin/bash # Copyright 2014 overflowerror (https://github.com/overflowerror/) # # This file is part of Anineko. # # Anineko is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Anineko is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Anineko. If not, see . export useragent="Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37... nope, actually wget" mode=$1 help() { if test "$2" = "file"; then echo -e \ "Usage: $1 file URL FILE"\ "\nDownloads one video from URL (GoGoAnime-Page) to FILE." elif test "$2" = "search"; then echo -e \ "Usage: $1 search KEYWORDS [DIRECTORY]"\ "\nLists all links on the result pages on a search for KEYWORDS on GoGoAnime."\ "\nIf DIRECTORY is given, it will be created if it doesn't exist yet and all result videos will be downloaded to that directory." else echo -e \ "Usage: $1 file|search|update"\ "\nDownloads videos from GoGoAnime."\ "\n"\ "\nFor more help try: $1 file"\ "\n or: $1 search" fi } if test "$mode" = "update"; then echo "Checking md5sum of current version..." if test "$(md5sum $0 | awk '{print $1}')" = $(wget -O - "https://raw.githubusercontent.com/overflowerror/Anineko/master/anineko.md5" -q); then echo "Local version is up to date." exit 0 fi echo "Downloading update script..." wget -O /tmp/$$.anineko-install "https://raw.githubusercontent.com/overflowerror/Anineko/master/install" --progress=bar:force 2>&1 | tail -f -n +12 echo "Download finished..." echo "Executing..." echo bash /tmp/$$.anineko-install exit $? elif test "$mode" = "search"; then text=$(echo $2 | tr " " "+") dir=$3 tmp="/tmp/anineko.$$.log" echo "" > $tmp if test -z "$text"; then help $0 search exit 2 fi echo "Searching for $text ... " defpage="page/" pagest="" pagenr=1 links="" while true; do #echo "http://www.gogoanime.com/${pagest}?s=${text}" spage==$(wget --user-agent="$useragent" -O - "http://www.gogoanime.com/${pagest}?s=${text}" 2> /dev/null ) found=$(echo $spage | grep "&2 vurl=$(wget --user-agent="$useragent" -q -O - "$1" 2> /dev/null| grep "url: " | grep '.flv\|.mp4' | tr '\"' "'" | awk -F"'" '{ print $2 }' 2> /dev/null) if test -z "$vurl"; then echo -e "[ \033[31mfail\033[0m ]" 1>&2 return fi vurl=$(python2 -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' $vurl) echo -e "[ \033[32mdone\033[0m ]" 1>&2 echo $vurl } download() { # first param: video url if test -z "$1"; then return 1 fi echo -n " Probing size... " size=$(wget --user-agent="$useragent" "$1" --spider --server-response -O - 2>&1 | grep "Content-Length: " | awk '{ print $2 }' | egrep ".{5}") echo -n $size if test $size -lt 20000000 ; then echo -e " \033[31m< 20 MB\033[0m" return 1 fi echo -e " > 20 MB" echo " Starting Download... " echo -ne "\033[?25l" wget --user-agent="$useragent" -O "${file}" -c "$1" --progress=bar:force 2>&1 | tail -f -n +12 echo -ne "\033[?25h" # echo -ne "\033[2A\033[0K" echo " Download completed." return 0 } provider() { # params: # - provider name # - provider grep-thing text=" Try to extract "${1}"-frame..." echo -n "$text" for i in $(seq ${#text} 39); do echo -n " " done purl=$(echo -e "${page}" | grep "${2}" | sed -e "s/#038;//g" | awk -F'\"' '{ print $2; }' 2> /dev/null) if test -n "${purl}"; then echo -e "[ \033[32mdone\033[0m ]" download `extract $purl` ret=$? echo -n " overall download... " if test "$ret" == 0; then echo -e "[ \033[32mdone\033[0m ]" exit 0 fi fi echo -e "[ \033[31mfail\033[0m ]" } export page=$(wget --user-agent="$useragent" -q -O - "${url}") provider "playpanda" "playpanda" provider "videowing" "videowing" provider "playbb" "playbb.me" provider "easyvideo" "easyvideo.me" # Add additional providers here echo -e " \033[31mPermanent fail!\033[0m" exit 1 else help $0 exit 2 fi