-
Notifications
You must be signed in to change notification settings - Fork 1
/
commonHelpers.py
115 lines (101 loc) · 3.69 KB
/
commonHelpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import string, imdb, re, httplib
import models.movie as movie
import models.series as series
import helpers.titleHandler as titleHandler
import helpers.settingsManager as settingsManager
def getSeries(fileName):
parsed = re.search("([Ss][\d]+[Xx_\.\s]?[Ee][Pp]?[\d]+)|([_\.\s][\d]+[Xx][\d]+[_\.\s])", fileName)
if parsed == None:
return None
series = fileName[:parsed.start(0)]
for c in string.punctuation:
series = series.replace(c, ' ')
series = series.lower()
series = string.capwords(series)
parsedNumbers = re.findall("\d+", parsed.group(0))
season = parsedNumbers[0]
if len(season) == 1:
season = '0'+season
episode = parsedNumbers[1]
if len(episode) ==1:
episode = '0'+episode
return [series, season, episode]
def findImdbSeriesLikeTitle(fileName):
imdbContext = imdb.IMDb()
fileNameArray = titleHandler.returnWellFormatedArrayFromTitle(fileName)
seriesTitles = {}
serieses = []
lastSuccessfulSeries = ''
for i in range(0, len(fileNameArray)):
partialFileName = titleStringFromIndexOfTitleArray(fileNameArray, i)
imdbResults = imdbContext.search_movie(partialFileName)
loop = 10 if len(imdbResults) >= 10 else len(imdbResults)
for j in range(0, loop):
imdbResult = imdbResults[j]
if imdbResult['kind'] == 'tv series':
newSeries = series.create(imdbResult['title'])
if not newSeries.title in seriesTitles:
seriesTitles[newSeries.title] = True
serieses.append(newSeries)
lastSuccessfulSeries = partialFileName
serieses = titleHandler.orderTvArrayByMatchingSeries(serieses, lastSuccessfulSeries)
return serieses
def findImdbMoviesLikeTitle(fileName):
imdbContext = imdb.IMDb()
fileNameArray = titleHandler.returnWellFormatedArrayFromTitle(fileName)
titles = {}
movies = []
lastSuccessfulTitle = ''
for i in range(0, len(fileNameArray)):
partialFileName = titleStringFromIndexOfTitleArray(fileNameArray, i)
imdbResults = imdbContext.search_movie(partialFileName)
loop = 15 if len(imdbResults) >= 15 else len(imdbResults)
for j in range(0, loop):
imdbResult = imdbResults[j]
newMovie = movie.create(imdbResult['title'])
if imdbResult.has_key('year'):
newMovie.year = imdbResult['year']
try:
titleIndex = '{0} {1}'.format(newMovie.title, newMovie.year)
if not titleIndex in titles:
titles[titleIndex] = True
movies.append(newMovie)
except UnicodeEncodeError:
continue
lastSuccessfulTitle = partialFileName
movies = titleHandler.orderMovieArrayByMatchingTitle(movies, lastSuccessfulTitle)
return movies
def findTitlesRaw(fileName):
a = imdb.IMDb()
filteredFileName = filter(fileName)
results = a.search_movie(filteredFileName)
titles = []
for i in range(0, 5):
if i >= len(results):
break
titles.append('%s (%s)' % (results[i]['title'], results[i]['year']))
return titles
def sendXbmcNotification(title, message):
title = string.replace(title, ' ', '%20')
message = string.replace(message, ' ', '%20')
try:
settings = settingsManager.systemSettings()
conn = httplib.HTTPConnection('localhost', settings.xbmcPort, timeout=1)
conn.connect()
conn.request('GET', '/xbmcCmds/xbmcHttp?command=ExecBuiltIn(Notification('+title+','+message+'))')
r = conn.getresponse()
conn.close()
except:
print "Had a problem sending message to XBMC"
def sendXbmcLibraryUpdate():
try:
settings = settingsManager.systemSettings()
conn = httplib.HTTPConnection('localhost', settings.xbmcPort, timeout=1)
conn.connect()
conn.request('GET', '/xbmcCmds/xbmcHttp?command=ExecBuiltIn(UpdateLibrary(video))')
r = conn.getresponse()
conn.close()
except:
print "Had a problem updating XBMC's library"
def titleStringFromIndexOfTitleArray(titleArray, index):
return string.replace(','.join(titleArray[0:index+1]), ',', ' ')