commit 8b85584d7c62966aca3f57c3c38a3c68b480e170 Author: Pulguer Gonzalo Date: Wed Feb 16 09:49:12 2022 -0300 first commit diff --git a/display.py b/display.py new file mode 100644 index 0000000..c38b087 --- /dev/null +++ b/display.py @@ -0,0 +1,26 @@ +from bs4 import BeautifulSoup +import requests +import webbrowser + +#get ep url +def get_vid(url): + webp = requests.get(url) + soup = BeautifulSoup(webp.text, 'html.parser') + res = soup.find_all('html') + raw = str(res) + vid = raw.split('var video') + r = vid[1] + src = r.split('src=') + src = str(src).replace('"', '') + sour = str(src).split(' width') + end = str(sour).split(',') + links = [] + for x in end: + if '.net' in x: + links.append(x[2:-1]) + return links + + +#opens link in a firefox tab (couldnt make mpv work yet :c) +def display(url): + webbrowser.open_new(url) diff --git a/main.py b/main.py new file mode 100644 index 0000000..2aec429 --- /dev/null +++ b/main.py @@ -0,0 +1,95 @@ +import search +import makeLink +import display + +#user input +anime = input('Search anime: ') + +#search function +results = search.search(anime) + +#display results +num = 0 +print('Results:') +for result in results: + num += 1 + print(str(num) + ' - ' + result) + +#selecting anime +while True: + pick = input('Select anime entering its number: ') + if pick.isnumeric(): + if int(pick) <= num and int(pick) > 0: + url = makeLink.ani_link(results[int(pick)-1]) + break + else: + print('Invalid number `-´') + else: + print("That's not a number `-´") + +#episodes +while True: + eps = search.episodes(url) + ep_sel = input(results[int(pick)-1] + ' has ' + eps + ' episodes. Select the episode u want to watch: ') + if ep_sel.isnumeric(): + if int(ep_sel) <= int(eps) and int(ep_sel) > 0: + epi = int(ep_sel) + link = makeLink.ep_link(url, ep_sel) + break + else: + print('Invalid number `-´') + else: + print("That's not a number `-´") + +#display +def showtime(link): + vido = display.get_vid(link) + display.display(vido[-1]) + return vido + +#stores the different hosts in case the default one doesn't work +servers = showtime(link) + +#options +while True: + res = input("""\np to watch previous episode + +d to pick a different host + +n to watch next episode + +q to quit: """) + #quits + if res.lower() == 'q': + print('cya') + break + #previous episode + elif res.lower() == 'p': + if epi == 1: + print('Error! This is the first episode') + elif res.lower() == 'n': + epi += 1 + if epi > int(eps): + print('Error! This is the last episode') + else: + link = makeLink.ep_link(url, epi) + showtime(link) + #diff host + elif res.lower() == 'd': + j = 0 + for x in servers: + j += 1 + print('Server ' + str(j)) + host = input('Pick the host: ') + if host.isnumeric(): + if int(host) > 0 and int(host) < j: + ref = servers[int(host)] + display.display(ref) + continue + else: + print('Invalid number') + else: + print('not a number sadly') + else: + print("That wasn't an option dude") + diff --git a/makeLink.py b/makeLink.py new file mode 100644 index 0000000..f360cd2 --- /dev/null +++ b/makeLink.py @@ -0,0 +1,15 @@ +filler = ['!', '¡', '?', '¿', '.', "'", ':', '='] + +def ani_link(anime): + base_link = 'https://jkanime.net/' + anime = anime.replace('½', '-') + for x in filler: + anime = anime.replace(x, '') + anime = anime.replace(' ', '-') + anime = anime.lower() + final_link = base_link + anime + '/' + return final_link + +def ep_link(link, ep): + link = link + str(ep) + '/' + return link diff --git a/search.py b/search.py new file mode 100644 index 0000000..33940c3 --- /dev/null +++ b/search.py @@ -0,0 +1,41 @@ +from bs4 import BeautifulSoup +import requests + +def search(anime): + #etc + search_base = 'https://jkanime.net/buscar/' + filler = ['
', '
', '[', ']'] + final_list = [] + + #search + search_link = search_base + anime + '/' + + #scrap + webp = requests.get(search_link) + soup = BeautifulSoup(webp.text, 'html.parser') + results = soup.find_all('div', class_ = 'title') + results = str(results) + for words in filler: + results = results.replace(words, '') + results_list = results.split(',') + + #fixing names + for x in results_list: + if x[0] == ' ': + x = x.replace(' ', '', 1) + final_list.append(x) + return final_list + +def episodes(link): + #scrap + webs = requests.get(link) + sopa = BeautifulSoup(webs.text, 'html.parser') + nums = sopa.find_all('div', class_ = 'anime__details__content') + #find eps + text = str(nums) + eps = text.find('Episodios:') + eps2 = str(text[eps:]) + split = eps2.split('', 1) + half = split[0] + half = half.replace('Episodios: ', '') + return half