Skip to content

Commit e1c0ca6

Browse files
committed
kinopoiskapiunofficial.tech
Плагин переделан на работу с неофициальным API kinopoiskapiunofficial.tech
1 parent 72bd7b5 commit e1c0ca6

File tree

10 files changed

+145
-82
lines changed

10 files changed

+145
-82
lines changed

Contents/DefaultPrefs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@
114114
"label": "Включить отображение коллекций",
115115
"type": "bool",
116116
"default": "true"
117+
},
118+
{
119+
"id": "api_key",
120+
"label": "Ключ https://kinopoiskapiunofficial.tech/",
121+
"type":"text",
122+
"default":""
117123
},
118124
{
119125
"id": "captcha_key",

Contents/Libraries/Shared/kinoplex/const.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ def __setattr__(self, attr, val):
2222
# sources section
2323
# kinopoisk api
2424
config['kinopoisk']['api']['base'] = 'https://ext.kinopoisk.ru/ios/5.0.0/%s'
25-
config['kinopoisk']['api']['search'] = config.kinopoisk.api.base % 'getKPLiveSearch?keyword=%s'
26-
config['kinopoisk']['api']['film_details'] = config.kinopoisk.api.base % 'getKPFilmDetailView?filmID=%s&still_limit=50&sr=1'
25+
config['kinopoisk']['api']['search'] = 'https://kinopoiskapiunofficial.tech/api/v2.1/films/search-by-keyword?keyword=%s&page=%s'
26+
config['kinopoisk']['api']['film_details'] = 'https://kinopoiskapiunofficial.tech/api/v2.2/films/%s'
27+
config['kinopoisk']['api']['distributions'] = 'https://kinopoiskapiunofficial.tech/api/v2.2/films/%s/distributions'
2728
config['kinopoisk']['api']['list_films'] = config.kinopoisk.api.base % 'getKPFilmsList?filmID=%s&type=%s'
28-
config['kinopoisk']['api']['staff'] = config.kinopoisk.api.base % 'getStaffList?filmID=%s&type=all'
29-
config['kinopoisk']['api']['film_reviews'] = config.kinopoisk.api.base % 'getKPReviews?filmID=%s&type=0&sortType=0'
29+
config['kinopoisk']['api']['staff'] = 'https://kinopoiskapiunofficial.tech/api/v1/staff?filmId=%s'
30+
config['kinopoisk']['api']['similars'] = 'https://kinopoiskapiunofficial.tech/api/v2.2/films/%s/similars'
31+
config['kinopoisk']['api']['film_reviews'] = 'https://kinopoiskapiunofficial.tech/api/v1/reviews?filmId=%s&page=1'
3032
config['kinopoisk']['api']['gallery'] = config.kinopoisk.api.base % 'getGallery?filmID=%s'
3133
config['kinopoisk']['api']['series'] = config.kinopoisk.api.base % 'getKPSeriesList?serialID=%s&season=%s&page=%s'
3234
config['kinopoisk']['api']['hash'] = 'IDATevHDS7'
@@ -39,17 +41,19 @@ def __setattr__(self, attr, val):
3941
'Accept': 'application/json',
4042
'device': 'android',
4143
'Android-Api-Version': '22',
44+
'X-API-KEY': '93fbd7a8-47d8-4c0d-a822-8615816c9536',
4245
'User-Agent': 'Android client (4.4 / api22),ru.kinopoisk/4.2.1 (52)'
4346
}
4447

45-
config['kinopoisk']['main']['search'] = 'https://www.kinopoisk.ru/search/suggest/?q=%s&topsuggest=true&ajax=1'
48+
config['kinopoisk']['main']['search'] = 'https://kinopoiskapiunofficial.tech/api/v2.1/films/search-by-keyword?keyword=%s&page=%s'
4649
config['kinopoisk']['main']['headers'] = lambda: {
4750
'Referer': 'https://www.kinopoisk.ru',
4851
'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
4952
'Accept-Encoding': 'gzip, deflate',
5053
'Accept-Language': 'en-US,en;q=0.8,ru;q=0.7,uk;q=0.5,de-DE;q=0.3,de;q=0.2',
5154
'User-agent': generate_user_agent(),
5255
'X-Compress': 'null',
56+
'X-API-KEY': '93fbd7a8-47d8-4c0d-a822-8615816c9536',
5357
'Upgrade-Insecure-Requests': '1'
5458
}
5559

@@ -58,8 +62,8 @@ def __setattr__(self, attr, val):
5862
config['kinopoisk']['images'] = '%s'
5963
config['kinopoisk']['imagesactor'] = 'https://st.kp.yandex.net/images/%s'
6064
config['kinopoisk']['actor'] = config.kinopoisk.imagesactor % 'actor_iphone/iphone360_%s.jpg'
61-
config['kinopoisk']['thumb'] = config.kinopoisk.images % 'film_iphone/iphone360_%s.jpg'
62-
config['kinopoisk']['poster'] = config.kinopoisk.images % 'film_big/%s.jpg'
65+
config['kinopoisk']['thumb'] = 'https://kinopoiskapiunofficial.tech/images/posters/kp_small/%s.jpg'
66+
config['kinopoisk']['poster'] = 'https://kinopoiskapiunofficial.tech/images/posters/kp/%s.jpg'
6367

6468
config['kptrailers']['extras']['base'] = 'https://www.kinopoisk.ru/film/%s/video/'
6569
config['kptrailers']['extras']['re'] = "//table[ancestor::table[2]]//div/a[@class='all' and contains(@href,'/film/')]"

Contents/Libraries/Shared/kinoplex/meta.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ def parse_meta(metadata_dict, metadata, api):
261261
continue
262262

263263
dict_value = metadata_dict[attr_name]
264+
if dict_value is None:
265+
continue
264266
try:
265267
if isinstance(dict_value, list):
266268

@@ -333,11 +335,11 @@ def prepare_meta(metadata_dict, metadata, app):
333335
meta_staff.photo = staff.get('photo', '')
334336
meta_staff.role = staff.get('role', '')
335337

336-
metadata.reviews.clear()
337-
for review in metadata_dict.get('reviews', []):
338-
r = metadata.reviews.new()
339-
r.author = review.get('author')
340-
r.source = review.get('source')
341-
r.image = review.get('image')
342-
r.link = review.get('link')
343-
r.text = review.get('text')
338+
if not (metadata_dict.get('reviews') is None):
339+
for review in metadata_dict.get('reviews', []):
340+
r = metadata.reviews.new()
341+
r.author = review.get('author')
342+
r.source = review.get('source')
343+
r.image = review.get('image')
344+
r.link = review.get('link')
345+
r.text = review.get('text')
3.28 KB
Binary file not shown.

Contents/Libraries/Shared/kinoplex/sources/fanart.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def update(self, metadata, media, lang, force=False, periodic=False):
1313
try:
1414
json = self.api.JSON.ObjectFromURL(self.conf.movie % metadata['meta_ids'].get('tmdb'), headers=self.conf.headers(''))
1515
except:
16-
self.l.Debug('No data from FanArt.tv')
16+
self.l.Debug('No data from FanArt.tv')
1717

1818
if json:
1919
for key, value in json.items():

Contents/Libraries/Shared/kinoplex/sources/itunes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ def _search(self, metadata, media):
4444
self.d('search for itunes on rottentomatoes')
4545
omdb = self.api.JSON.ObjectFromURL(self.conf.omdb % imdb_id)
4646
if 'tomatoURL' in omdb and omdb['tomatoURL'] != 'N/A':
47-
page = self.api.HTML.ElementFromURL(omdb['tomatoURL'].replace('http://', 'https://'), headers=self.c.headers.all, cacheTime=0)
47+
tomatoURL = omdb['tomatoURL'].replace('http://', 'https://')
48+
tomatoURL = tomatoURL.replace('https://rottentomatoes.com', 'https://www.rottentomatoes.com')
49+
page = self.api.HTML.ElementFromURL(tomatoURL, headers=self.c.headers.all, cacheTime=0)
4850
lnk = page.xpath(self.c.itunes.rt_re)
4951
if len(lnk) > 0:
5052
return re.search('(?<=id)[0-9]+', lnk[0]).group(0)

0 commit comments

Comments
 (0)