Created
July 19, 2015 05:44
-
-
Save imayhaveborkedit/522cc69b3ffaaea6e219 to your computer and use it in GitHub Desktop.
Program to do that thing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re, requests, webbrowser | |
from BeautifulSoup import BeautifulSoup | |
class Anime(object): | |
def __init__(self, url): | |
self.baseurl = 'http://gogoanime.tv/' | |
self.input_path = url | |
if '.tv/category/' in url: | |
self.anime_name = url.split('/')[-1] | |
self.start_ep = 1 | |
self.info_page = url | |
elif '-episode-' in url: | |
self.anime_name = '-'.join(url.split('/')[-1].split('-')[:-2]) | |
self.start_ep = int(url.split('/')[-1].split('-')[-1]) | |
self.info_page = self.baseurl + 'category/' + self.anime_name | |
else: | |
raise AttributeError("What the fuck is up with this: " + url) | |
self.current_ep = self.start_ep | |
self._total_episodes = -1 | |
def get_episode(self, episode=1): | |
return self.baseurl + self.anime_name + '-episode-%s' % int(episode) | |
def pop_episode(self): | |
if self.reached_end: | |
return | |
else: | |
self.current_ep += 1 | |
return self.get_episode(self.current_ep-1) | |
def get_video_link(self, episode): | |
data = BeautifulSoup(requests.get(self.get_episode(episode)).text) | |
udata = data.body.find('select', attrs={'id':'selectQuality'}) | |
odata = udata.findChildren()[-1] | |
print 'using quality ' + odata.string | |
return str(odata.get('value')) | |
@property | |
def reached_end(self): | |
return self.total_episodes == self.current_ep | |
@property | |
def total_episodes(self): | |
if self._total_episodes < 0: | |
data = BeautifulSoup(requests.get(self.info_page).text) | |
eps = data.body.find('ul', attrs={'id':'episode_page'}) | |
self._total_episodes = int(eps()[-1].string.split('-')[-1]) | |
return self._total_episodes | |
if __name__ == '__main__': | |
print "Enter path for anime:" | |
animepath = 'http://gogoanime.tv/' + raw_input('http://gogoanime.tv/') | |
anime = Anime(animepath) | |
print 'Starting at episode', anime.current_ep | |
for ae in range(anime.current_ep, anime.total_episodes+1): | |
webbrowser.open_new_tab(anime.get_video_link(ae)) | |
anime.pop_episode() | |
if anime.reached_end: | |
print 'You have reached the end of the available anime episodes.' | |
break | |
raw_input('Press enter to open episode ' + str(ae + 1)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment