Skip to content

Instantly share code, notes, and snippets.

@imayhaveborkedit
Created July 19, 2015 05:44
Show Gist options
  • Save imayhaveborkedit/522cc69b3ffaaea6e219 to your computer and use it in GitHub Desktop.
Save imayhaveborkedit/522cc69b3ffaaea6e219 to your computer and use it in GitHub Desktop.
Program to do that thing
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))
print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment