2012-12-16 17:57:02 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import lib.feedparser as feedparser
|
|
|
|
#import feedparser
|
|
|
|
import re
|
2013-01-02 17:56:46 +00:00
|
|
|
import logger
|
2013-02-09 03:34:02 +00:00
|
|
|
import mylar
|
2013-04-12 02:14:27 +00:00
|
|
|
import unicodedata
|
2014-10-13 19:46:38 +00:00
|
|
|
import urllib
|
2013-04-12 02:14:27 +00:00
|
|
|
|
2013-12-09 19:44:26 +00:00
|
|
|
def Startit(searchName, searchIssue, searchYear, ComicVersion, IssDateFix):
|
2012-12-16 17:57:02 +00:00
|
|
|
#searchName = "Uncanny Avengers"
|
|
|
|
#searchIssue = "01"
|
|
|
|
#searchYear = "2012"
|
2014-06-15 05:05:42 +00:00
|
|
|
if searchName.lower().startswith('the '):
|
|
|
|
searchName = searchName[4:]
|
2014-03-19 18:54:39 +00:00
|
|
|
cName = searchName
|
2012-12-16 17:57:02 +00:00
|
|
|
#clean up searchName due to webparse.
|
|
|
|
searchName = searchName.replace("%20", " ")
|
2013-05-09 02:22:47 +00:00
|
|
|
if "," in searchName:
|
|
|
|
searchName = searchName.replace(",", "")
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug("name:" + str(searchName))
|
|
|
|
#logger.fdebug("issue:" + str(searchIssue))
|
|
|
|
#logger.fdebug("year:" + str(searchYear))
|
2014-10-13 19:46:38 +00:00
|
|
|
encodeSearch = urllib.quote_plus(searchName)
|
|
|
|
splitSearch = encodeSearch.split(" ")
|
|
|
|
|
2015-05-22 08:32:51 +00:00
|
|
|
joinSearch = "+".join(splitSearch) +"+" +searchIssue
|
|
|
|
searchIsOne = "0" +searchIssue
|
|
|
|
searchIsTwo = "00" +searchIssue
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2014-12-01 17:23:49 +00:00
|
|
|
if mylar.PREFERRED_QUALITY == 1: joinSearch = joinSearch + " .cbr"
|
|
|
|
elif mylar.PREFERRED_QUALITY == 2: joinSearch = joinSearch + " .cbz"
|
|
|
|
|
2013-04-12 02:14:27 +00:00
|
|
|
if "-" in searchName:
|
|
|
|
searchName = searchName.replace("-", '((\\s)?[-:])?(\\s)?')
|
|
|
|
|
|
|
|
regexName = searchName.replace(" ", '((\\s)?[-:])?(\\s)?')
|
|
|
|
|
2015-05-22 08:32:51 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
#logger.fdebug('searchName:' + searchName)
|
|
|
|
#logger.fdebug('regexName:' + regexName)
|
2013-04-12 02:14:27 +00:00
|
|
|
|
2013-02-09 03:34:02 +00:00
|
|
|
if mylar.USE_MINSIZE:
|
|
|
|
size_constraints = "minsize=" + str(mylar.MINSIZE)
|
|
|
|
else:
|
|
|
|
size_constraints = "minsize=10"
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-02-09 03:34:02 +00:00
|
|
|
if mylar.USE_MAXSIZE:
|
|
|
|
size_constraints = size_constraints + "&maxsize=" + str(mylar.MAXSIZE)
|
|
|
|
|
2013-03-01 20:20:39 +00:00
|
|
|
if mylar.USENET_RETENTION != None:
|
|
|
|
max_age = "&age=" + str(mylar.USENET_RETENTION)
|
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
feeds = []
|
|
|
|
feeds.append(feedparser.parse("http://nzbindex.nl/rss/alt.binaries.comics.dcp/?sort=agedesc&" + str(size_constraints) + str(max_age) + "&dq=%s&max=50&more=1" %joinSearch))
|
|
|
|
if mylar.ALTEXPERIMENTAL:
|
|
|
|
feeds.append(feedparser.parse("http://nzbindex.nl/rss/?dq=%s&g[]=41&g[]=510&sort=agedesc&hidespam=0&max=&more=1" %joinSearch))
|
2012-12-16 17:57:02 +00:00
|
|
|
|
|
|
|
entries = []
|
|
|
|
mres = {}
|
2013-09-20 05:17:04 +00:00
|
|
|
tallycount = 0
|
|
|
|
|
|
|
|
for feed in feeds:
|
|
|
|
totNum = len(feed.entries)
|
|
|
|
tallycount += len(feed.entries)
|
|
|
|
|
2014-02-26 19:48:50 +00:00
|
|
|
#keyPair = {}
|
|
|
|
keyPair = []
|
2013-09-20 05:17:04 +00:00
|
|
|
regList = []
|
|
|
|
countUp = 0
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug(str(totNum) + " results")
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
while countUp < totNum:
|
|
|
|
urlParse = feed.entries[countUp].enclosures[0]
|
|
|
|
#keyPair[feed.entries[countUp].title] = feed.entries[countUp].link
|
2014-02-26 19:48:50 +00:00
|
|
|
#keyPair[feed.entries[countUp].title] = urlParse["href"]
|
|
|
|
keyPair.append({"title": feed.entries[countUp].title,
|
|
|
|
"link": urlParse["href"],
|
|
|
|
"length": urlParse["length"],
|
|
|
|
"pubdate": feed.entries[countUp].updated})
|
2015-05-27 05:40:38 +00:00
|
|
|
countUp=countUp +1
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug('keypair: ' + str(keyPair))
|
2012-12-16 17:57:02 +00:00
|
|
|
|
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
# thanks to SpammyHagar for spending the time in compiling these regEx's!
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
regExTest=""
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
regEx = "(%s\\s*(0)?(0)?%s\\s*\\(%s\\))" %(regexName, searchIssue, searchYear)
|
|
|
|
regExOne = "(%s\\s*(0)?(0)?%s\\s*\\(.*?\\)\\s*\\(%s\\))" %(regexName, searchIssue, searchYear)
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
#Sometimes comics aren't actually published the same year comicVine says - trying to adjust for these cases
|
2015-05-22 08:32:51 +00:00
|
|
|
regExTwo = "(%s\\s*(0)?(0)?%s\\s*\\(%s\\))" %(regexName, searchIssue, int(searchYear) +1)
|
|
|
|
regExThree = "(%s\\s*(0)?(0)?%s\\s*\\(%s\\))" %(regexName, searchIssue, int(searchYear) -1)
|
|
|
|
regExFour = "(%s\\s*(0)?(0)?%s\\s*\\(.*?\\)\\s*\\(%s\\))" %(regexName, searchIssue, int(searchYear) +1)
|
|
|
|
regExFive = "(%s\\s*(0)?(0)?%s\\s*\\(.*?\\)\\s*\\(%s\\))" %(regexName, searchIssue, int(searchYear) -1)
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
regexList=[regEx, regExOne, regExTwo, regExThree, regExFour, regExFive]
|
2012-12-16 17:57:02 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
except_list=['releases', 'gold line', 'distribution', '0-day', '0 day']
|
2013-07-17 04:20:52 +00:00
|
|
|
|
2014-02-26 19:48:50 +00:00
|
|
|
for entry in keyPair:
|
|
|
|
title = entry['title']
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug("titlesplit: " + str(title.split("\"")))
|
2013-09-20 05:17:04 +00:00
|
|
|
splitTitle = title.split("\"")
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
noYear = 'False'
|
2014-12-01 17:23:49 +00:00
|
|
|
_digits = re.compile('\d')
|
2013-04-12 02:14:27 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
for subs in splitTitle:
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug('sub:' + subs)
|
2013-09-20 05:17:04 +00:00
|
|
|
regExCount = 0
|
2014-12-01 17:23:49 +00:00
|
|
|
if len(subs) >= len(cName) and not any(d in subs.lower() for d in except_list) and bool(_digits.search(subs)) is True:
|
2013-04-12 02:14:27 +00:00
|
|
|
#Looping through dictionary to run each regEx - length + regex is determined by regexList up top.
|
2013-07-10 01:45:10 +00:00
|
|
|
# while regExCount < len(regexList):
|
|
|
|
# regExTest = re.findall(regexList[regExCount], subs, flags=re.IGNORECASE)
|
|
|
|
# regExCount = regExCount +1
|
2015-05-22 08:32:51 +00:00
|
|
|
# if regExTest:
|
2013-07-10 01:45:10 +00:00
|
|
|
# logger.fdebug(title)
|
|
|
|
# entries.append({
|
|
|
|
# 'title': subs,
|
|
|
|
# 'link': str(link)
|
|
|
|
# })
|
2014-12-01 17:23:49 +00:00
|
|
|
# this will still match on crap like 'For SomeSomayes' especially if the series length < 'For SomeSomayes'
|
2014-12-01 22:15:31 +00:00
|
|
|
if subs.lower().startswith('for'):
|
|
|
|
if cName.lower().startswith('for'):
|
2014-12-01 17:23:49 +00:00
|
|
|
pass
|
|
|
|
else:
|
2015-01-16 19:40:08 +00:00
|
|
|
#this is the crap we ignore. Continue (commented else, as it spams the logs)
|
|
|
|
#logger.fdebug('this starts with FOR : ' + str(subs) + '. This is not present in the series - ignoring.')
|
2014-12-01 17:23:49 +00:00
|
|
|
continue
|
2016-04-13 03:19:37 +00:00
|
|
|
#logger.fdebug('match.')
|
2013-12-09 19:44:26 +00:00
|
|
|
if IssDateFix != "no":
|
|
|
|
if IssDateFix == "01" or IssDateFix == "02": ComicYearFix = str(int(searchYear) - 1)
|
|
|
|
else: ComicYearFix = str(int(searchYear) + 1)
|
|
|
|
else:
|
|
|
|
ComicYearFix = searchYear
|
|
|
|
|
|
|
|
if searchYear not in subs and ComicYearFix not in subs:
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
noYear = 'True'
|
|
|
|
noYearline = subs
|
|
|
|
|
2013-12-09 19:44:26 +00:00
|
|
|
if (searchYear in subs or ComicYearFix in subs) and noYear == 'True':
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
#this would occur on the next check in the line, if year exists and
|
|
|
|
#the noYear check in the first check came back valid append it
|
2015-05-22 08:32:51 +00:00
|
|
|
subs = noYearline + ' (' + searchYear + ')'
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
noYear = 'False'
|
|
|
|
|
|
|
|
if noYear == 'False':
|
2015-05-22 08:32:51 +00:00
|
|
|
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
entries.append({
|
2014-02-26 19:48:50 +00:00
|
|
|
'title': subs,
|
|
|
|
'link': entry['link'],
|
|
|
|
'pubdate': entry['pubdate'],
|
|
|
|
'length': entry['length']
|
IMP: Added ForceRSS Check and Test SABnzbd Connection buttons in Config, FIX: If Annuals not enabled, would error on home screen, IMP: updated mylar.init.d (thnx Kalinon), FIX: Manual Post-Processing fix for Manual Run (thnx Kalinon), IMP: Library Monitor working (check folder every X minutes and Post-Process), IMP: Future Upcoming introduction, IMP: Experimental search better handling of year inclusions, FIX: Filechecker will now pick up series with years in the series title accordingly, FIX: Torrent seedbox sending would lockup occassionally when attempting to send torrent file, FIX: malformed image url on some series, IMP: Moved issue updating to a seperate function, IMP: When series was refreshed, would download the last issue (or few issues depending on date), regardless of status, IMP: When series is volume 1 or volume label doesn't exist, either assume V1 or remove volume requirements to improve matching hits, IMP: StoryArcs will now check in StoryArc folder for existing issues and change status in StoryArc accordingly...
2013-11-28 15:48:59 +00:00
|
|
|
})
|
|
|
|
break # break out so we don't write more shit.
|
2015-05-22 08:32:51 +00:00
|
|
|
|
2013-09-20 05:17:04 +00:00
|
|
|
# if len(entries) >= 1:
|
|
|
|
if tallycount >= 1:
|
2012-12-16 17:57:02 +00:00
|
|
|
mres['entries'] = entries
|
2015-05-22 08:32:51 +00:00
|
|
|
return mres
|
2012-12-16 17:57:02 +00:00
|
|
|
else:
|
2013-01-02 17:56:46 +00:00
|
|
|
logger.fdebug("No Results Found")
|
2012-12-16 17:57:02 +00:00
|
|
|
return "no results"
|