From 6ca0efe4d2eaf30e7384bde189a4c79989f9d890 Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 22:31:10 +0100 Subject: [PATCH 1/9] fixed bug where yts would add Avatar (2009) when searching for Avatar 4 - should work for others. --- .../core/media/_base/providers/torrent/yts.py | 56 +++++++++++----------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 2df6bc7..4881f28 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -29,33 +29,35 @@ class Base(TorrentMagnetProvider): else: result = data['data']['movies'][0] name = result['title'] - year = result['year'] - detail_url = result['url'] - - - for torrent in result['torrents']: - t_quality = torrent['quality'] - - if t_quality in quality['label']: - hash = torrent['hash'] - size = tryInt(torrent['size_bytes'] / 1048576) - seeders = tryInt(torrent['seeds']) - leechers = tryInt(torrent['peers']) - pubdate = torrent['date_uploaded'] # format: 2017-02-17 18:40:03 - pubdate = datetime.strptime(pubdate, '%Y-%m-%d %H:%M:%S') - age = (datetime.now() - pubdate).days - - results.append({ - 'id': random.randint(100, 9999), - 'name': '%s (%s) %s %s %s' % (name, year, 'YTS', t_quality, 'BR-Rip'), - 'url': self.make_magnet(hash, name), - 'size': size, - 'seeders': seeders, - 'leechers': leechers, - 'age': age, - 'detail_url': detail_url, - 'score': 1 - }) + + if getTitle(movie) == name: + + year = result['year'] + detail_url = result['url'] + + for torrent in result['torrents']: + t_quality = torrent['quality'] + + if t_quality in quality['label']: + hash = torrent['hash'] + size = tryInt(torrent['size_bytes'] / 1048576) + seeders = tryInt(torrent['seeds']) + leechers = tryInt(torrent['peers']) + pubdate = torrent['date_uploaded'] # format: 2017-02-17 18:40:03 + pubdate = datetime.strptime(pubdate, '%Y-%m-%d %H:%M:%S') + age = (datetime.now() - pubdate).days + + results.append({ + 'id': random.randint(100, 9999), + 'name': '%s (%s) %s %s %s' % (name, year, 'YTS', t_quality, 'BR-Rip'), + 'url': self.make_magnet(hash, name), + 'size': size, + 'seeders': seeders, + 'leechers': leechers, + 'age': age, + 'detail_url': detail_url, + 'score': 1 + }) return From 0a2d8f8a5807caf1c9e2fa5e0709564ece223f87 Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 22:44:10 +0100 Subject: [PATCH 2/9] increased limit in the API call to be sure that the result is found. --- .../core/media/_base/providers/torrent/yts.py | 67 +++++++++++----------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 4881f28..06d3bea 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -17,7 +17,7 @@ class Base(TorrentMagnetProvider): } def _search(self, movie, quality, results): - limit = 1 + limit = 5 page = 1 data = self.getJsonData(self.urls['search'] % (getTitle(movie), limit, page)) @@ -27,37 +27,40 @@ class Base(TorrentMagnetProvider): if movie_count == 0: log.error('%s returned an error (search or tryInt() failed): %s', (self.getName(), data['error'])) else: - result = data['data']['movies'][0] - name = result['title'] - - if getTitle(movie) == name: - - year = result['year'] - detail_url = result['url'] - - for torrent in result['torrents']: - t_quality = torrent['quality'] - - if t_quality in quality['label']: - hash = torrent['hash'] - size = tryInt(torrent['size_bytes'] / 1048576) - seeders = tryInt(torrent['seeds']) - leechers = tryInt(torrent['peers']) - pubdate = torrent['date_uploaded'] # format: 2017-02-17 18:40:03 - pubdate = datetime.strptime(pubdate, '%Y-%m-%d %H:%M:%S') - age = (datetime.now() - pubdate).days - - results.append({ - 'id': random.randint(100, 9999), - 'name': '%s (%s) %s %s %s' % (name, year, 'YTS', t_quality, 'BR-Rip'), - 'url': self.make_magnet(hash, name), - 'size': size, - 'seeders': seeders, - 'leechers': leechers, - 'age': age, - 'detail_url': detail_url, - 'score': 1 - }) + + movie_results = data['data']['movies'] + for i in range(0,len(movie_results)): + result = data['data']['movies'][i] + name = result['title'] + + if getTitle(movie) == name: + + year = result['year'] + detail_url = result['url'] + + for torrent in result['torrents']: + t_quality = torrent['quality'] + + if t_quality in quality['label']: + hash = torrent['hash'] + size = tryInt(torrent['size_bytes'] / 1048576) + seeders = tryInt(torrent['seeds']) + leechers = tryInt(torrent['peers']) + pubdate = torrent['date_uploaded'] # format: 2017-02-17 18:40:03 + pubdate = datetime.strptime(pubdate, '%Y-%m-%d %H:%M:%S') + age = (datetime.now() - pubdate).days + + results.append({ + 'id': random.randint(100, 9999), + 'name': '%s (%s) %s %s %s' % (name, year, 'YTS', t_quality, 'BR-Rip'), + 'url': self.make_magnet(hash, name), + 'size': size, + 'seeders': seeders, + 'leechers': leechers, + 'age': age, + 'detail_url': detail_url, + 'score': 1 + }) return From 9e6fa8a969e414eebbc5bae5012b1d9553309a15 Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 23:04:15 +0100 Subject: [PATCH 3/9] fixed name check - it was too narrow. --- couchpotato/core/media/_base/providers/torrent/yts.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 06d3bea..8c620a2 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -33,7 +33,9 @@ class Base(TorrentMagnetProvider): result = data['data']['movies'][i] name = result['title'] - if getTitle(movie) == name: + t = getTitle(movie).split(' ') + + if all(word in name for word in t): year = result['year'] detail_url = result['url'] From 23ef6611eb99617013d04531400b05f2908b9373 Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 23:14:34 +0100 Subject: [PATCH 4/9] movie name was too simple - used original title. --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 8c620a2..c7512e9 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -33,7 +33,7 @@ class Base(TorrentMagnetProvider): result = data['data']['movies'][i] name = result['title'] - t = getTitle(movie).split(' ') + t = movie['info']['original_title'] if all(word in name for word in t): From a626789fbb8feae2a883e99eac8b3535bc4097c6 Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 23:18:00 +0100 Subject: [PATCH 5/9] increased limit - sometimes long film series like Star Wars puts the result at the bottom. --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index c7512e9..de46942 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -17,7 +17,7 @@ class Base(TorrentMagnetProvider): } def _search(self, movie, quality, results): - limit = 5 + limit = 10 page = 1 data = self.getJsonData(self.urls['search'] % (getTitle(movie), limit, page)) From 53913723c0e4d7b8c2e44a63cfe6463e1fd0b35a Mon Sep 17 00:00:00 2001 From: SWG Date: Sat, 4 Mar 2017 23:20:51 +0100 Subject: [PATCH 6/9] forgot to split name - working/fixed now. --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index de46942..34cb93c 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -33,7 +33,7 @@ class Base(TorrentMagnetProvider): result = data['data']['movies'][i] name = result['title'] - t = movie['info']['original_title'] + t = movie['info']['original_title'].split(' ') if all(word in name for word in t): From 9f492ad22b082b5673b921cdabaabff4b1bfc0b2 Mon Sep 17 00:00:00 2001 From: swkgram Date: Thu, 9 Mar 2017 22:06:54 +0100 Subject: [PATCH 7/9] fixed wonder woman 2009/2017 release confusion. --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 34cb93c..55029b2 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -35,7 +35,7 @@ class Base(TorrentMagnetProvider): t = movie['info']['original_title'].split(' ') - if all(word in name for word in t): + if all(word in name for word in t) and movie['info']['year'] == result['year']: year = result['year'] detail_url = result['url'] From b87c3f4e144777ab9f6d0159b575643cc563eecb Mon Sep 17 00:00:00 2001 From: "Sebastian W. Gram" Date: Thu, 9 Mar 2017 22:39:52 +0100 Subject: [PATCH 8/9] fixed key error exception throws a key error exception when finding 0 movie results from the api call - tried to return error from the repsonse but there will never exists an error, because of the way yts.ag's API works. --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 55029b2..5a6b330 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -25,7 +25,7 @@ class Base(TorrentMagnetProvider): movie_count = tryInt(data['data']['movie_count']) if movie_count == 0: - log.error('%s returned an error (search or tryInt() failed): %s', (self.getName(), data['error'])) + log.error('%s returned an error (search or tryInt() failed): found no results', (self.getName())) else: movie_results = data['data']['movies'] From 50d3a5b4062962f9fbc77724581f9cfa4b2e0f88 Mon Sep 17 00:00:00 2001 From: "Sebastian W. Gram" Date: Thu, 9 Mar 2017 23:18:58 +0100 Subject: [PATCH 9/9] changed log type when not getting any results --- couchpotato/core/media/_base/providers/torrent/yts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/_base/providers/torrent/yts.py b/couchpotato/core/media/_base/providers/torrent/yts.py index 5a6b330..f4567a9 100644 --- a/couchpotato/core/media/_base/providers/torrent/yts.py +++ b/couchpotato/core/media/_base/providers/torrent/yts.py @@ -25,7 +25,7 @@ class Base(TorrentMagnetProvider): movie_count = tryInt(data['data']['movie_count']) if movie_count == 0: - log.error('%s returned an error (search or tryInt() failed): found no results', (self.getName())) + log.debug('%s - found no results', (self.getName())) else: movie_results = data['data']['movies']