diff options
Diffstat (limited to 'module/plugins')
| -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 | 
