-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.py
123 lines (104 loc) · 3.53 KB
/
index.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import json
import os
import re
import requests
from bs4 import BeautifulSoup
from flask import Flask, request, send_from_directory
from lxml import html
blacklist = [
'[document]',
'noscript',
'header',
'html',
'meta',
'head',
'input',
'script',
'style'
]
def getEpisodeNo(url):
res = requests.get(url)
tree = html.fromstring(res.content)
if 'movies' in url:
no = 1
else:
no = tree.xpath(
'/html/body/div[1]/div[2]/section/main/div/div/h2/text()')[0]
no = re.search(r'Episode \d+', no).group(0)
no = int(re.search(r'(\d+)', no).group(0))
return no
def getResults(term, website):
websites = ['http://animeyoutube.com', 'http://kiss-anime.website']
url = websites[website] + '/?s=' + term
res = requests.get(url)
soup = BeautifulSoup(res.content, 'lxml')
mydivs = soup.findAll('div', {'class': 'col-6 col-sm-2 new-movies'})
results = []
for div in mydivs:
results.append({'name': div.find('h2').getText() + ' ' + div.find('span').getText(),
'img': div.find('img').get('src'), 'url': div.find('a').get('href')})
return {'results': results}
def getVideo(animeUrl, no):
if 'www1.kiss-anime.website/movies' in animeUrl:
url = animeUrl
server = r'\/\/vidcloud9\.com.*?\"'
else:
if 'www1.kiss-anime.website' in animeUrl:
url = 'http://www1.kiss-anime.website/watch/'
server = r'\/\/vidcloud9\.com.*?\"'
elif 'animeyoutube.com' in animeUrl:
url = 'http://animeyoutube.com/episode/'
server = r'\/\/vidstreaming\.io.*?\"'
animeUrl = animeUrl.split('/')
if animeUrl[-1] == '':
url += animeUrl[-2]
else:
url += animeUrl[-1]
url += '-episode-' + str(no)
res = requests.get(url)
url = re.search(server,
str(res.content)).group(0)
url = 'https:' + re.sub(r'streaming.php', 'download', url[:-1])
res = requests.get(url)
soup = BeautifulSoup(res.content, 'lxml')
mydivs = soup.findAll('div', {'class': 'dowload'})
links = []
for div in mydivs:
for link in div.findAll('a'):
if 'download for ad' not in link.getText().lower():
links.append({'name': link.getText(), 'url': link.get('href')})
if len(links) == 0:
links.append({'name': 'Links', 'url': url})
return {'links': links}
def getInfo(url, start, end):
no = getEpisodeNo(url)
if end == -1 or end > no:
end = no
if start < 1:
start = 1
if start > end:
start = end
return {'start': start, 'end': end}
app = Flask(__name__, static_folder='./client/build')
@app.route('/info', methods=['POST'])
def respondInfo():
data = json.loads(request.data)
responseData = getInfo(data['url'], 1, -1)
return json.dumps(responseData)
@app.route('/link', methods=['POST'])
def respondLink():
data = json.loads(request.data)
responseData = getVideo(data['url'], data['no'])
return json.dumps(responseData)
@app.route('/search', methods=['POST'])
def respondSearch():
data = json.loads(request.data)
responseData = getResults(data['term'], data['website'])
return json.dumps(responseData)
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
if path != '' and os.path.exists(app.static_folder + '/' + path):
return send_from_directory(app.static_folder, path)
else:
return send_from_directory(app.static_folder, 'index.html')