diff options
author | Christopher <4Christopher@gmx.de> | 2013-03-13 20:28:44 +0100 |
---|---|---|
committer | Christopher <4Christopher@gmx.de> | 2013-03-13 20:28:44 +0100 |
commit | 1e8bd2ee4ed5818eb1b79c36946579229adede9e (patch) | |
tree | 055471957947ddef7a02483c28e95b17c3a11b7e /module/plugins/crypter | |
parent | Movie2kTo: Added quality recognition. (diff) | |
download | pyload-1e8bd2ee4ed5818eb1b79c36946579229adede9e.tar.xz |
Movie2kTo: Fixed and tested it.
Diffstat (limited to 'module/plugins/crypter')
-rw-r--r-- | module/plugins/crypter/Movie2kTo.py | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py index 7595c845d..f5800b498 100644 --- a/module/plugins/crypter/Movie2kTo.py +++ b/module/plugins/crypter/Movie2kTo.py @@ -27,7 +27,7 @@ class Movie2kTo(Crypter): def decrypt(self, pyfile): self.package = pyfile.package() self.folder = self.package.folder - self.q = [] ## to calculate the average, min and max of the quality + self.qStatReset() whole_season = self.getConfig('whole_season') everything = self.getConfig('everything') self.getInfo(pyfile.url) @@ -49,7 +49,7 @@ class Movie2kTo(Crypter): self.logDebug(season_links) self.packages.append(('%s: Season %s (%s)' % (self.name, season, self.qStat()), season_links, 'Season %s' % season)) - self.q = [] + self.qStatReset() else: links = self.getLinks() self.package.name = '%s%s' % (self.package.name, self.qStat()) @@ -57,8 +57,11 @@ class Movie2kTo(Crypter): def qStat(self): if len(self.q) == 0: return '' - return (' (Average quality: %d, min: %d, max: %d)' - % (sum(self.q) / float(len(self.q)), min(self.q), max(self.q))) + return (' (Average quality: %d, min: %d, max: %d, %s, max (all hosters): %d)' + % (sum(self.q) / float(len(self.q)), min(self.q), max(self.q), self.q, self.max_q)) + def qStatReset(self): + self.q = [] ## to calculate the average, min and max of the quality + self.max_q = None def tvshow_number(self, number): if int(number) < 10: return '0%s' % number @@ -94,22 +97,33 @@ class Movie2kTo(Crypter): accepted_hosters = re.findall(r'\b(\w+?)\b', self.getConfig('accepted_hosters')) firstN = self.getConfig('firstN') links = [] - re_quality = r'.+?Quality:.+?smileys/(\d)\.gif' + re_quality = re.compile(r'.+?Quality:.+?smileys/(\d)\.gif') ## The quality is one digit. 0 is the worst and 5 is the best. ## Is not always there … - re_hoster_id_html = re.compile(r'<a href=".*?(\d{7}).*?".+? ([^<>]+?)</a>' + re_quality) - re_hoster_id_js = re.compile(r'links\[(\d+?)\].+ (.+?)</a>' + re_quality) + re_hoster_id_html = re.compile(r'(?:<td height|<tr id).+?<a href=".*?(\d{7}).*?".+? ([^<>]+?)</a>(.+?)</tr>') + re_hoster_id_js = re.compile(r'links\[(\d+?)\].+ (.+?)</a>(.+?)</tr>') ## I assume that the ID is 7 digits longs count = defaultdict(int) matches = re_hoster_id_html.findall(self.html) matches += re_hoster_id_js.findall(self.html) + # self.logDebug(matches) ## h_id: hoster_id of a possible hoster - for h_id, hoster, quality in matches: + for h_id, hoster, q_html in matches: + match_q = re_quality.search(q_html) + if match_q: + quality = int(match_q.group(1)) + if self.max_q: + if self.max_q < quality: self.max_q = quality + else: ## was None before + self.max_q = quality + q_s = ', Quality: %d' % quality + else: + q_s = ', unknown quality' if hoster in accepted_hosters: - self.logDebug('Accepted: %s, ID: %s, Quality: %s' % (hoster, h_id, quality)) + self.logDebug('Accepted: %s, ID: %s%s' % (hoster, h_id, q_s)) count[hoster] += 1 if count[hoster] <= firstN: - self.q.append(int(quality)) + if match_q: self.q.append(quality) if h_id != self.id: self.html = self.load('%s/tvshows-%s-%s.html' % (self.BASE_URL, h_id, self.name)) else: @@ -121,7 +135,7 @@ class Movie2kTo(Crypter): except: self.logDebug('Failed to find the URL') else: - self.logDebug('Not accepted: %s, ID: %s, Quality: %s' % (hoster, h_id, quality)) + self.logDebug('Not accepted: %s, ID: %s%s' % (hoster, h_id, q_s)) # self.logDebug(links) return links |