Check for cuesheet

Attempt to allow single track .wav with cuesheet.
+ Small tidy up
This commit is contained in:
Ade
2012-09-24 23:28:17 +12:00
parent b8c5782765
commit f2b6e3d6da
2 changed files with 45 additions and 14 deletions

View File

@@ -848,7 +848,7 @@ def searchTorrent(albumid=None, new=False, losslessOnly=False):
if rulist:
for ru in rulist:
title = ru[0]
title = ru[0].decode('utf-8')
size = ru[1]
url = ru[2]
resultlist.append((title, size, url, provider))

View File

@@ -3,7 +3,6 @@
# Headphones rutracker.org search
# Functions called from searcher.py
# Requires BeautifulSoup 4 for parsing http://www.crummy.com/software/BeautifulSoup/
import urllib
import urllib2
@@ -18,7 +17,7 @@ class Rutracker():
logged_in = False
# Stores a number of login attempts to prevent recursion.
login_counter = 0
#login_counter = 0
def __init__(self):
@@ -34,7 +33,7 @@ class Rutracker():
if login is None or password is None:
return False
self.login_counter += 1
#self.login_counter += 1
# No recursion wanted.
#if self.login_counter > 1:
@@ -104,7 +103,7 @@ class Rutracker():
try:
page = self.opener.open(searchurl, timeout=60)
soup = BeautifulSoup(page.read(), from_encoding="utf-8")
soup = BeautifulSoup(page.read())
# Debug
#logger.debug (soup.prettify())
@@ -162,7 +161,7 @@ class Rutracker():
for torrent in torrentlist:
title = torrent[0]
title = torrent[0].encode('utf-8')
url = torrent[1]
seeders = torrent[2]
size = torrent[3]
@@ -179,8 +178,8 @@ class Rutracker():
self.cookiejar.set_cookie(cookielib.Cookie(version=0, name='bb_dl', value=torrent_id, port=None, port_specified=False, domain='.rutracker.org', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False))
# Debug
for cookie in self.cookiejar:
logger.debug ('Cookie: %s' % cookie)
#for cookie in self.cookiejar:
# logger.debug ('Cookie: %s' % cookie)
try:
page = self.opener.open(url)
@@ -193,9 +192,10 @@ class Rutracker():
logger.error('Error getting torrent: %s' % e)
return False
# get torrent track count
# get torrent track count and check for cue
trackcount = 0
cuecount = 0
if 'files' in metainfo: # multi
for pathfile in metainfo['files']:
@@ -203,17 +203,48 @@ class Rutracker():
for file in path:
if '.ape' in file or '.flac' in file or '.ogg' in file or '.m4a' in file or '.aac' in file or '.mp3' in file or '.wav' in file or '.aif' in file:
trackcount += 1
logger.debug ('torrent title: %s' % title)
logger.debug ('hp trackcount: %s' % hptrackcount)
logger.debug ('torrent trackcount: %s' % trackcount)
if '.cue' in file:
cuecount += 1
#Torrent topic page
topicurl = 'http://rutracker.org/forum/viewtopic.php?t=' + torrent_id
logger.debug ('torrent title: %s' % title)
logger.debug ('headphones trackcount: %s' % hptrackcount)
logger.debug ('rutracker trackcount: %s' % trackcount)
# If torrent track count less than headphones track count, and there's a cue, then attempt to get track count from log(s)
# This is for the case where we have a single .flac/.wav which can be split by cue
# Not great, but shouldn't be doing this too often
totallogcount = 0
if trackcount < hptrackcount and cuecount > 0 and cuecount < hptrackcount:
page = self.opener.open(topicurl, timeout=60)
soup = BeautifulSoup(page.read())
findtoc = soup.find_all(text='TOC of the extracted CD')
if not findtoc:
findtoc = soup.find_all(text='TOC извлечённого CD')
for toc in findtoc:
logcount = 0
for toccontent in toc.find_all_next(text=True):
cut_string = toccontent.split('|')
new_string = cut_string[0].lstrip().rstrip()
if new_string == '1' or new_string == '01':
logcount = 1
elif logcount > 0:
if new_string.isdigit():
logcount += 1
else:
break
totallogcount = totallogcount + logcount
if totallogcount > 0:
trackcount = totallogcount
logger.debug ('rutracker logtrackcount: %s' % totallogcount)
# If torrent track count = hp track count then return torrent,
# if greater, check for deluxe/special/foreign editions
# if less, then allow if it's a single track with a cue
valid = False