def findByProvider(self, data, provider): results = {'480p':[], '720p':[], '1080p':[]} try: tables = SoupStrainer('table') html = BeautifulSoup(data, parseOnlyThese = tables) resultTable = html.find('table', attrs = {'class':'bottomTable'}) for tr in resultTable.findAll('tr'): trtext = str(tr).lower() if 'clips' in trtext: break if 'trailer' in trtext and not 'clip' in trtext and provider in trtext: nr = 0 resolutions = tr.findAll('td', attrs = {'class':'bottomTableResolution'}) #sizes = tr.findNext('tr').findAll('td', attrs = {'class':'bottomTableFileSize'}) for res in resolutions: results[str(res.a.contents[0])].insert(0, res.a['href']) #int(sizes[nr].contents[0].replace('MB', '')) nr += 1 return results except AttributeError: log.debug('No trailers found in provider %s.' % provider) results['404'] = True return results
def getInfo(self, url): log.debug('Getting info: %s' % url) try: data = urllib2.urlopen(url, timeout = self.timeout).read() pass except IOError: log.error('Failed to open %s.' % url) return '' div = SoupStrainer('div') html = BeautifulSoup(data, parseOnlyThese = div) html = html.find('div', attrs = {'class':'nfo'}) return str(html).decode("utf-8", "replace")
def getInfo(self, url): log.debug('Getting info: %s' % url) try: data = urllib2.urlopen(url, timeout = self.timeout).read() pass except IOError: log.error('Failed to open %s.' % url) return '' tables = SoupStrainer('table') html = BeautifulSoup(data) movieInformation = html.find('div', attrs = {'class':'i_info'}) return str(movieInformation).decode("utf-8", "replace")
def find(self, movie, quality, type): results = [] if not self.enabled() or not self.isAvailable(self.searchUrl): return results url = self.searchUrl % quote_plus( self.toSearchString(movie.name + ' ' + quality)) log.info('Searching: %s' % url) try: data = urllib2.urlopen(url, timeout=self.timeout).read() except (IOError, URLError): log.error('Failed to open %s.' % url) return results try: tables = SoupStrainer('table') html = BeautifulSoup(data, parseOnlyThese=tables) resultable = html.find('table', attrs={'class': 't'}) for result in resultable.findAll('span', attrs={'class': 'cname'}): new = self.feedItem() a = result.find('a') id = re.search('(?<=detail\?c\=)\w+', a['href']) new.id = id.group(0) text = a.findAll(text=True) words = '' for text in a.findAll(text=True): words = words + unicode(text).encode('utf-8') new.name = words new.size = 9999 new.content = 'mysterbin' new.type = 'nzb' new.url = self.downloadUrl % (new.id) new.date = time.time() new.score = self.calcScore(new, movie) if self.isCorrectMovie(new, movie, type): results.append(new) log.info('Found: %s' % new.name) return results except AttributeError: log.debug('No search results found.') return results
def find(self, movie, quality, type): results = [] if not self.enabled() or not self.isAvailable(self.searchUrl): return results url = self.searchUrl % quote_plus( self.toSearchString(movie.name + ' ' + quality)) log.info('Searching: %s' % url) try: data = urllib2.urlopen(url, timeout=self.timeout).read() except (IOError, URLError): log.error('Failed to open %s.' % url) return results try: tables = SoupStrainer('table') html = BeautifulSoup(data, parseOnlyThese=tables) resultTable = html.find('table', attrs={'class': 'requests'}) for result in resultTable.findAll('tr', attrs={'class': 'req_filled'}): new = self.feedItem() id = result.find('td', attrs={'class': 'reqid'}) new.id = id.contents[0] name = result.find('td', attrs={'class': 'release'}) new.name = self.toSaveString(name.contents[0]) new.size = 9999 new.content = 'x264' new.type = 'nzb' new.url = self.downloadUrl % (new.id) new.date = time.time() new.score = self.calcScore(new, movie) if self.isCorrectMovie(new, movie, type): results.append(new) log.info('Found: %s' % new.name) return results except AttributeError: log.debug('No search results found.') return results
def find(self, movie, quality, type): results = [] if not self.enabled() or not self.isAvailable(self.apiUrl): return results url = self.apiUrl % (quote_plus(self.toSearchString(movie.name + ' ' + quality) + self.makeIgnoreString(type)), self.getCatId(type)) log.info('Searching: %s' % url) try: data = urllib2.urlopen(url, timeout = self.timeout).read() except (IOError, URLError): log.error('Failed to open %s.' % url) return results try: tables = SoupStrainer('table') html = BeautifulSoup(data, parseOnlyThese = tables) resultTable = html.find('table', attrs = {'id':'searchResult'}) for result in resultTable.findAll('tr'): details = result.find('a', attrs = {'class':'detLink'}) if details: href = re.search('/(?P<id>\d+)/', details['href']) id = href.group('id') name = self.toSaveString(details.contents[0]) desc = result.find('font', attrs = {'class':'detDesc'}).contents[0].split(',') date = '' size = 0 for item in desc: # Weird date stuff if 'uploaded' in item.lower(): date = item.replace('Uploaded', '') date = date.replace('Today', '') # Do something with yesterday yesterdayMinus = 0 if 'Y-day' in date: date = date.replace('Y-day', '') yesterdayMinus = 86400 datestring = date.replace(' ', ' ').strip() date = int(time.mktime(parse(datestring).timetuple())) - yesterdayMinus # size elif 'size' in item.lower(): size = item.replace('Size', '') seedleech = [] for td in result.findAll('td'): try: seedleech.append(int(td.contents[0])) except ValueError: pass seeders = 0 leechers = 0 if len(seedleech) == 2 and seedleech[0] > 0 and seedleech[1] > 0: seeders = seedleech[0] leechers = seedleech[1] # to item new = self.feedItem() new.id = id new.type = 'torrent' new.name = name new.date = date new.size = self.parseSize(size) new.seeders = seeders new.leechers = leechers new.url = self.downloadLink(id, name) new.score = self.calcScore(new, movie) + self.uploader(result) + (seeders / 10) if seeders > 0 and (new.date + (int(self.conf('wait')) * 60 * 60) < time.time()) and Qualities.types.get(type).get('minSize') <= new.size: new.detailUrl = self.detailLink(id) new.content = self.getInfo(new.detailUrl) if self.isCorrectMovie(new, movie, type): results.append(new) log.info('Found: %s' % new.name) return results except AttributeError: log.debug('No search results found.') return []
results = {'480p':[], '720p':[], '1080p':[]} arguments = urlencode({ 's':movie }) url = "%s?%s" % (self.backupUrl, arguments) log.debug('Searching %s' % url) try: data = urllib2.urlopen(url, timeout = self.timeout).read() except (IOError, URLError), e: log.debug('Failed to open %s. %s' % (url, e)) return results try: tables = SoupStrainer('div') html = BeautifulSoup(data, parseOnlyThese = tables) resultTable = html.findAll('h2', text = re.compile(movie)) for h2 in resultTable: if 'trailer' in h2.lower(): parent = h2.parent.parent.parent trailerLinks = parent.findAll('a', text = re.compile('480p|720p|1080p')) try: for trailer in trailerLinks: results[trailer].insert(0, trailer.parent['href']) except: pass except AttributeError: