mirror of
https://github.com/rembo10/headphones.git
synced 2026-05-15 16:19:28 +01:00
Add magnet support for KAT rTorrent via blackhole
KAT torrents downloads were 100% broken. This is a temporary hack to get KAT partially working.
This commit is contained in:
@@ -336,9 +336,14 @@
|
||||
<input type="radio" name="magnet_links" id="magnet_links_2" value="2" ${config['magnet_links_2']}>
|
||||
Convert
|
||||
</label>
|
||||
|
||||
<label class="inline">
|
||||
<input type="radio" name="magnet_links" id="magnet_links_3" value="3" ${config['magnet_links_3']}>
|
||||
Embed
|
||||
</label>
|
||||
<div style="clear: both"></div>
|
||||
|
||||
<small>Note: opening magnet URL's is not suitable for headless/console/terminal servers.</small>
|
||||
<small>Note: Opening magnet URLs is not suitable for headless/console/terminal servers.<br />Embed only works for rTorrent.</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset id="transmission_options">
|
||||
|
||||
@@ -334,7 +334,7 @@ form .row label {
|
||||
font-size: 12px;
|
||||
line-height: normal;
|
||||
padding-top: 7px;
|
||||
width: 175px;
|
||||
width: 170px;
|
||||
}
|
||||
form .row label.inline {
|
||||
margin-right: 5px;
|
||||
@@ -368,7 +368,7 @@ form .row small {
|
||||
display: block;
|
||||
font-size: 9px;
|
||||
line-height: 12px;
|
||||
margin-left: 175px;
|
||||
margin-left: 170px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
form .left label {
|
||||
|
||||
@@ -190,7 +190,7 @@ form {
|
||||
font-size: 12px;
|
||||
line-height: normal;
|
||||
padding-top: 7px;
|
||||
width: 175px;
|
||||
width: 170px;
|
||||
|
||||
&.inline {
|
||||
margin-right: 5px;
|
||||
@@ -216,7 +216,7 @@ form {
|
||||
display: block;
|
||||
font-size: 9px;
|
||||
line-height: 12px;
|
||||
margin-left: 175px;
|
||||
margin-left: 170px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ _CONFIG_DEFINITIONS = {
|
||||
'OMGWTFNZBS': (int, 'omgwtfnzbs', 0),
|
||||
'OMGWTFNZBS_APIKEY': (str, 'omgwtfnzbs', ''),
|
||||
'OMGWTFNZBS_UID': (str, 'omgwtfnzbs', ''),
|
||||
'OPEN_MAGNET_LINKS': (int, 'General', 0), # 0: Ignore, 1: Open, 2: Convert
|
||||
'OPEN_MAGNET_LINKS': (int, 'General', 0), # 0: Ignore, 1: Open, 2: Convert, 3: Embed (rtorrent)
|
||||
'MAGNET_LINKS': (int, 'General', 0),
|
||||
'OSX_NOTIFY_APP': (str, 'OSX_Notify', '/Applications/Headphones'),
|
||||
'OSX_NOTIFY_ENABLED': (int, 'OSX_Notify', 0),
|
||||
|
||||
@@ -165,7 +165,7 @@ def get_seed_ratio(provider):
|
||||
elif provider == 'Mininova':
|
||||
seed_ratio = headphones.CONFIG.MININOVA_RATIO
|
||||
elif provider == 'Strike':
|
||||
seed_ratio = headphones.CONFIG.STRIKE_RATIO
|
||||
seed_ratio = headphones.CONFIG.STRIKE_RATIO
|
||||
else:
|
||||
seed_ratio = None
|
||||
|
||||
@@ -711,7 +711,7 @@ def searchNZB(album, new=False, losslessOnly=False, albumlength=None, choose_spe
|
||||
|
||||
def send_to_downloader(data, bestqual, album):
|
||||
|
||||
logger.info(u'Found best result from %s: <a href="%s">%s</a> - %s', bestqual[3], bestqual[2], bestqual[0], helpers.bytes_to_mb(bestqual[1]))
|
||||
logger.info(u'Found best result from %s: [%s] - %s - %s', bestqual[3], bestqual[2], bestqual[0], helpers.bytes_to_mb(bestqual[1]))
|
||||
# Get rid of any dodgy chars here so we can prevent sab from renaming our downloads
|
||||
kind = bestqual[4]
|
||||
seed_ratio = None
|
||||
@@ -810,8 +810,11 @@ def send_to_downloader(data, bestqual, album):
|
||||
logger.warning("Unable to convert magnet with hash " \
|
||||
"'%s' into a torrent file.", torrent_hash)
|
||||
return
|
||||
elif headphones.CONFIG.MAGNET_LINKS == 3:
|
||||
torrent_to_file(download_path, data)
|
||||
return
|
||||
else:
|
||||
logger.error("Cannot save magnet link in blackhole. " \
|
||||
logger.error("Ignoring magnet links for blackhole. " \
|
||||
"Please switch your torrent downloader to " \
|
||||
"Transmission or uTorrent, or allow Headphones " \
|
||||
"to open or convert magnet links")
|
||||
@@ -1198,20 +1201,41 @@ def searchTorrent(album, new=False, losslessOnly=False, albumlength=None, choose
|
||||
seeders = item['seeds']
|
||||
url = item['torrentLink']
|
||||
size = int(item['size'])
|
||||
hash = item['hash']
|
||||
# The "tr" querystring used in magnetUri is a hack since it assumes the tracker is always the same for KAT.
|
||||
# It currently works for all torrents tested but it should be changed to load the HTML, and parse out the real magnet URI.
|
||||
magnetUri = r"magnet:?xt=urn:btih:" + hash + r"&tr=udp%3A%2F%2Fopen.demonii.com%3A1337"
|
||||
|
||||
if format == "2":
|
||||
torrent = request.request_content(url, headers=headers)
|
||||
if not torrent or (int(torrent.find(".mp3")) > 0 and int(torrent.find(".flac")) < 1):
|
||||
rightformat = False
|
||||
|
||||
if rightformat and size < maxsize and minimumseeders < int(seeders):
|
||||
match = True
|
||||
logger.info('Found %s. Size: %s' % (title, helpers.bytes_to_mb(size)))
|
||||
else:
|
||||
match = False
|
||||
logger.info('%s is larger than the maxsize, the wrong format or has too little seeders for this category, skipping. (Size: %i bytes, Seeders: %d, Format: %s)', title, size, int(seeders), rightformat)
|
||||
#if rightformat and size < maxsize and minimumseeders < int(seeders):
|
||||
# match = True
|
||||
# logger.info('Found %s. Size: %s' % (title, helpers.bytes_to_mb(size)))
|
||||
#else:
|
||||
# match = False
|
||||
# logger.info('%s is larger than the maxsize, the wrong format or has too little seeders for this category, skipping. (Size: %i bytes, Seeders: %d, Format: %s)', title, size, int(seeders), rightformat)
|
||||
|
||||
resultlist.append((title, size, url, provider, 'torrent', match))
|
||||
match = False
|
||||
if rightformat:
|
||||
if size < maxsize:
|
||||
if minimumseeders < int(seeders):
|
||||
match = True
|
||||
logger.info('Found %s. Size: %s' % (title, helpers.bytes_to_mb(size)))
|
||||
else:
|
||||
logger.info('%s has too little seeders for this category, skipping. (Size: %i bytes, Seeders: %d, Format: %s)', title, size, int(seeders), rightformat)
|
||||
else:
|
||||
logger.info('%s is larger than the maxsize for this category, skipping. (Size: %i bytes, Seeders: %d, Format: %s)', title, size, int(seeders), rightformat)
|
||||
else:
|
||||
logger.info('%s is the wrong format for this category, skipping. (Size: %i bytes, Seeders: %d, Format: %s)', title, size, int(seeders), rightformat)
|
||||
|
||||
|
||||
# The URL returned from KAT is NOT a torrent URL. It is a jump page.
|
||||
# More work needs to be done here to get this to work right for real torrent files. Refer to CouchPotatos HTML parsing method.
|
||||
#resultlist.append((title, size, url, provider, 'torrent', match))
|
||||
resultlist.append((title, size, magnetUri, provider, 'magnet', match))
|
||||
except Exception as e:
|
||||
logger.exception("Unhandled exception in the KAT parser")
|
||||
|
||||
@@ -1669,7 +1693,6 @@ def preprocess(resultlist):
|
||||
headers = {}
|
||||
|
||||
if result[3] == 'Kick Ass Torrents':
|
||||
#headers['Referer'] = 'http://kat.ph/'
|
||||
headers['User-Agent'] = USER_AGENT
|
||||
elif result[3] == 'What.cd':
|
||||
headers['User-Agent'] = 'Headphones'
|
||||
@@ -1677,6 +1700,10 @@ def preprocess(resultlist):
|
||||
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2243.2 Safari/537.36'
|
||||
return request.request_content(url=result[2], headers=headers), result
|
||||
|
||||
if result[4] == 'magnet':
|
||||
magnet_link = result[2]
|
||||
return "d10:magnet-uri%d:%se" % (len(magnet_link), magnet_link), result
|
||||
|
||||
else:
|
||||
headers = {'User-Agent': USER_AGENT}
|
||||
|
||||
|
||||
@@ -1153,6 +1153,7 @@ class WebInterface(object):
|
||||
"magnet_links_0": radio(headphones.CONFIG.MAGNET_LINKS, 0),
|
||||
"magnet_links_1": radio(headphones.CONFIG.MAGNET_LINKS, 1),
|
||||
"magnet_links_2": radio(headphones.CONFIG.MAGNET_LINKS, 2),
|
||||
"magnet_links_3": radio(headphones.CONFIG.MAGNET_LINKS, 3),
|
||||
"log_dir": headphones.CONFIG.LOG_DIR,
|
||||
"cache_dir": headphones.CONFIG.CACHE_DIR,
|
||||
"interface_list": interface_list,
|
||||
|
||||
Reference in New Issue
Block a user