def Movie_Genre(url): html = process.OPEN_URL('http://www.imdb.com/genre/') match = re.compile('<h3><a href="(.+?)">(.+?)<span class="normal">').findall(html) for url, name in match: url = 'http://www.imdb.com/search/title?genres='+name.replace(' ','').lower()+'&title_type=feature&sort=moviemeter,asc' process.Menu(name,url,203,'','','','') process.setView('movies', 'INFO')
def IMDB_Grab(url): try: List = [] xbmc.log(url) html = process.OPEN_URL(url) match = re.compile('<div class="lister-item-image float-left">.+?<a href="(.+?)".+?<img alt="(.+?)".+?loadlate="(.+?)".+?<span class="lister-item-year text-muted unbold">(.+?)</span>.+?<p class="text-muted">\n(.+?)</p>',re.DOTALL).findall(html) for url,name,image,year,desc in match: image = image.replace('45,67','174,256').replace('UY67','UY256').replace('UX67','UX175').replace('UY98','UY256').replace('SX54','SX170').replace('54,74','174,256').replace('67,98','174,256') try: if '(2017)' in year: pass else: xbmc.log(image) year = year.replace('(I) ','').replace('II','') process.Menu(name + ' ' + year,'Movies',16,image,'',desc,'OLD') process.setView('movies', 'INFO') except: pass next_page = re.compile('<a href="(.+?)"\nclass="lister-page-next next-page" ref-marker=adv_nxt>Next »</a>').findall(html) for item in next_page: if item not in List: process.Menu('Next Page','http://imdb.com/search/title'+item,203,'','','','') List.append(item) except: pass
def Search(): Dialog = xbmcgui.Dialog() image = ICON description = '' fanart = FANART Search_name = Dialog.input('Search', type=xbmcgui.INPUT_ALPHANUM) Search_url = Main + 'search/' + (Search_name).replace(' ', '%20') if Search_name == '': pass else: OPEN = process.OPEN_URL(Search_url) match = re.compile( '<div class="block-left-home-inside col-sm-9 col-xs-12" title=".+?">.+?<a href="(.+?)" title=.+?<img src="(.+?)" alt=.+?<b>(.+?)</b></a><br>(.+?)<br>', re.DOTALL).findall(OPEN) for url, img, name, desc in match: name = (name).replace(' ', '-').replace('---', ' - ').replace( ''', '\'').replace('&', '&').replace('"', '"') url = Main + url image = Main + img description = (desc).replace('<b>', '').replace( '</b>', '').replace(' ', '-').replace('---', ' - ').replace( ''', '\'').replace('&', '&').replace( '"', '"').replace('Description: ', '').replace(' ', '') process.Menu(name, url, 305, image, fanart, description, name) process.setView('Movies', 'INFO') xbmcplugin.endOfDirectory(int(sys.argv[1]))
def Latest_Eps(url): OPEN = process.OPEN_URL(url) match = re.compile('<li class="col-md-6 col-xs-12 list-movies-li"><a href="(.+?)" title=".+?">(.+?)<span class="epnum">(.+?)</span></a></li>').findall(OPEN) for url,name,date in match: url = Main + url name = (name).replace('Seas.','Season').replace('Ep.','Episode').replace(' ','-').replace('---',' - ').replace(''','\'').replace('&','&').replace('"','"') process.Menu(name+' - [COLORred]'+date+'[/COLOR]',url,310,ICON,FANART,'','') process.setView('Movies', 'INFO') xbmcplugin.endOfDirectory(int(sys.argv[1]))
def search_movies(): Search_title = xbmcgui.Dialog().input('Search', type=xbmcgui.INPUT_ALPHANUM) url = 'http://www.imdb.com/find?ref_=nv_sr_fn&q='+Search_title.replace(' ','+')+'&s=all' html = process.OPEN_URL(url) match = re.compile('<tr class="findResult.+?"> <td class="primary_photo"> <a href=".+?" ><img src="(.+?)" /></a> </td> <td class="result_text"> <a href=".+?" >(.+?)</a>(.+?)</td>').findall(html) for image,title,year in match: if '<' in year: pass else: if '(TV Series)' in year: pass else: image = image.replace('32,44','174,256').replace('UY67','UY256').replace('UX32','UX175').replace('UY44','UY256') process.Menu(title,'Movies',16,image,'','','OLD') process.setView('movies', 'INFO')
def Latest_Eps(url): OPEN = process.OPEN_URL(url) match = re.compile( '<li class="col-md-6 col-xs-12 list-movies-li"><a href="(.+?)" title=".+?">(.+?)<span class="epnum">(.+?)</span></a></li>' ).findall(OPEN) for url, name, date in match: url = Main + url name = (name).replace('Seas.', 'Season').replace( 'Ep.', 'Episode').replace(' ', '-').replace('---', ' - ').replace( ''', '\'').replace('&', '&').replace('"', '"') process.Menu(name + ' - [COLORred]' + date + '[/COLOR]', url, 310, ICON, FANART, '', '') process.setView('Movies', 'INFO') xbmcplugin.endOfDirectory(int(sys.argv[1]))
def IMDB_Get_Episode_info(url, title): ep_year = '' image = '' html = process.OPEN_URL(url) block = re.compile( '<div class="list_item(.+?)itemprop="description">(.+?)</div>', re.DOTALL).findall(html) for block_, desc in block: name = re.compile('title="(.+?)"').findall(str(block_)) for item in name: name = item image = re.compile('src="(.+?)"').findall(str(block_)) for item in image: image = item year = re.compile('<div class="airdate">(.+?)</div>', re.DOTALL).findall(str(block_)) for item in year: date = item splitone = item.replace('\n', '').replace(' ', '').replace( ' ', '') + '>' show_year_split = re.compile(' .+?\. (.+?)>').findall( str(splitone)) for item in show_year_split: ep_year = item ep_no = re.compile('<div>S(.+?)</div>').findall(str(block_)) for item in ep_no: ep_no = item ep_split = ep_no + '<' Split = re.compile('(.+?),(.+?)<').findall(str(ep_split)) for one, two in Split: season = one.replace('S', 'Season ') episode = two.replace('Ep', 'Episode ').replace(' Episode ', '') title_split = re.compile('(.+?)\((.+?)\)').findall(str(title)) for title, show_year in title_split: title = title show_year = show_year search_split = 'SPLITTER>' + title + '>' + show_year + '>' + ep_year + '>' + season + '>' + episode + '>' search_split = search_split.replace(' >', '>') final_name = 'Episode ' + episode + ' - ' + name try: process.Menu( str(final_name), '', 307, str(image), '', '[COLORred]AIR DATE[/COLOR] == ' + str(date).replace(' ', '').replace('\n', '') + '\n' + str(desc), search_split) process.setView('movies', 'INFO') except: pass
def Grab_Season(iconimage,url): image = ' ' description = ' ' fanart = ' ' season = ' ' OPEN = process.OPEN_URL(url) image = re.compile('<img src="(.+?)">').findall(OPEN) for image in image: image = image background = re.compile('style="background-image: url\((.+?)\)">').findall(OPEN) for fanart in background: fanart = fanart match = re.compile('itemprop="season".+?href=".+?" href="(.+?)".+?aria-hidden=".+?"></i>.+?S(.+?)</span>',re.DOTALL).findall(OPEN) for url,season in match: season = 'S'+(season).replace(' ','').replace('\n','').replace(' ','').replace(' ','') url = Main + url process.Menu((season).replace(' ',''),url,113,image,fanart,description,'') process.setView('Movies', 'INFO') xbmcplugin.endOfDirectory(int(sys.argv[1]))
def Search(): Dialog = xbmcgui.Dialog() image = ICON description = '' fanart = FANART Search_name = Dialog.input('Search', type=xbmcgui.INPUT_ALPHANUM) Search_url = Main + 'search/' + (Search_name).replace(' ','%20') if Search_name == '': pass else: OPEN = process.OPEN_URL(Search_url) match = re.compile('<div class="block-left-home-inside col-sm-9 col-xs-12" title=".+?">.+?<a href="(.+?)" title=.+?<img src="(.+?)" alt=.+?<b>(.+?)</b></a><br>(.+?)<br>',re.DOTALL).findall(OPEN) for url,img,name,desc in match: name = (name).replace(' ','-').replace('---',' - ').replace(''','\'').replace('&','&').replace('"','"') url = Main + url image = Main + img description = (desc).replace('<b>','').replace('</b>','').replace(' ','-').replace('---',' - ').replace(''','\'').replace('&','&').replace('"','"').replace('Description: ','').replace(' ','') process.Menu(name,url,305,image,fanart,description,name) process.setView('Movies', 'INFO') xbmcplugin.endOfDirectory(int(sys.argv[1]))
def IMDB_Get_Episode_info(url,title): ep_year = '' html = requests.get(url).text block = re.compile('<div class="list_item(.+?)itemprop="description">(.+?)</div>',re.DOTALL).findall(html) for block_,desc in block: name = re.compile('title="(.+?)"').findall(str(block_)) for item in name: name = item image = re.compile('src="(.+?)"').findall(str(block_)) for item in image: image = item else: image = '' year = re.compile('<div class="airdate">(.+?)</div>',re.DOTALL).findall(str(block_)) for item in year: splitone = item.replace('\n','').replace(' ','').replace(' ','') +'>' xbmc.log(splitone) show_year_split = re.compile(' .+?\. (.+?)>').findall(str(splitone)) for item in show_year_split: ep_year = item ep_no = re.compile('<div>S(.+?)</div>').findall(str(block_)) for item in ep_no: ep_no = item ep_split = ep_no+'<' Split = re.compile('(.+?),(.+?)<').findall(str(ep_split)) for one,two in Split: season = one.replace('S','Season ') episode = two.replace('Ep','Episode ').replace(' Episode ','') title_split = re.compile('(.+?)\((.+?)\)').findall(str(title)) for title,show_year in title_split: title = title show_year = show_year search_split = 'SPLITTER>'+title+'>'+show_year+'>'+ep_year+'>'+season+'>'+episode+'>' search_split = search_split.replace(' >','>') xbmc.log('SPLIT===='+search_split) xbmc.log('EPISODE='+episode) final_name = 'Episode '+episode+' - '+name process.Menu(final_name.encode('utf-8'),'',307,image,'',desc.encode('utf-8'),search_split) process.setView('movies', 'I')
def WhatsOnCOUK(url, extra): try: html = requests.get(url).text channel_block = re.compile( '<div class="div-epg-channel-progs">.+?<div class="div-epg-channel-name">(.+?)</div>(.+?)</div></div></div>', re.DOTALL).findall(html) for channel, block in channel_block: prog = re.compile( '<a qt-title="(.+?)".+?<br>(.+?)<br>.+?</div>(.+?)<br>', re.DOTALL).findall(str(block.encode('utf-8'))) for show_info, show_no, info in prog: show_no = show_no.replace('</div>', '') info = info.replace('</div>', '').replace('</a>', '') if 'href' in info: change = re.compile('(.+?)href').findall(str(info)) for thing in change: info = thing time_finder = re.compile('(.+?)-(.+?) ').findall( str(show_info)) for start, finish in time_finder: if 'am' in start: time_split = re.compile('(.+?):(.+?)am').findall( str(start)) for hour, minute in time_split: start_number = (int(hour) * 60) + int(minute) elif 'pm' in start: time_split = re.compile('(.+?):(.+?)pm').findall( str(start)) for hour, minute in time_split: if hour == '12': start_number = (int(hour) * 60) + int(minute) else: start_number = (int(hour) + 12) * 60 + int(minute) if 'am' in finish: time_split = re.compile('(.+?):(.+?)am').findall( str(finish)) for hour, minute in time_split: finish_number = (int(hour) * 60) + int(minute) elif 'pm' in finish: time_split = re.compile('(.+?):(.+?)pm').findall( str(finish)) for hour, minute in time_split: if hour == '12': finish_number = (int(hour) * 60) + int(minute) else: finish_number = (int(hour) + 12) * 60 + int(minute) if int(start_number) < int(time_now_number) < int( finish_number): if not extra or extra == '': clean_channel = channel.replace( 'BBC1 London', 'BBC1').replace('BBC2 London', 'BBC2').replace( 'ITV London', 'ITV1') process.Menu( clean_channel.encode('utf-8') + ': ' + show_info.encode('utf-8'), '', 2203, '', '', show_no + '\n' + info, clean_channel.replace('HD', '')) process.setView('movies', 'INFO2') else: clean_channel = channel.replace( 'BBC1 London', 'BBC1').replace('BBC2 London', 'BBC2').replace( 'ITV London', 'ITV1') clean_extra = extra.replace( 'BBC1 London', 'BBC1').replace( 'BBC2 London', 'BBC2').replace('ITV London', 'ITV1') if clean_extra == clean_channel: process.Menu( clean_channel.encode('utf-8') + ': ' + show_info.encode('utf-8'), '', 2203, '', '', show_no + '\n' + info, clean_channel.replace('HD', '')) process.setView('movies', 'INFO2') else: pass except: pass