Advertisement
Guest User

Untitled

a guest
Aug 26th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.66 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Venom.
  3. from resources.lib.config import cConfig
  4. from resources.lib.gui.hoster import cHosterGui
  5. from resources.lib.handler.rechercheHandler import cRechercheHandler
  6. from resources.lib.handler.hosterHandler import cHosterHandler
  7. from resources.lib.gui.gui import cGui
  8. from resources.lib.favourite import cFav
  9. from resources.lib.gui.guiElement import cGuiElement
  10. from resources.lib.handler.inputParameterHandler import cInputParameterHandler
  11. from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
  12. from resources.lib.handler.requestHandler import cRequestHandler
  13. from resources.lib.parser import cParser
  14. from resources.lib.util import cUtil
  15. import urllib, unicodedata, re
  16. import xbmcgui
  17. import xbmc
  18. #import sqlalchemy
  19.  
  20. try:    import json
  21. except: import simplejson as json
  22.  
  23. SITE_IDENTIFIER = 'topimdb'
  24. SITE_NAME = '[COLOR orange]Top 1000 IMDb[/COLOR]'
  25. SITE_DESC = 'Base de données video.'
  26.  
  27. #doc de l'api http://docs.themoviedb.apiary.io/
  28.  
  29. URL_MAIN = 'http://imdb.com'
  30.  
  31. #API_KEY = '92ab39516970ab9d86396866456ec9b6'
  32. #API_VERS = '3'
  33. #API_URL = URL_MAIN+API_VERS
  34.  
  35. URL_SEARCH = (URL_MAIN + '/search/title?groups=top_1000&sort=user_rating,desc&start=%s', 'showMovies')
  36. #FUNCTION_SEARCH = 'showMovies'
  37.  
  38.  
  39. MOVIE_WORLD = (URL_MAIN + '/search/title?groups=top_1000&sort=user_rating,desc&start=1', 'showMovies')
  40. MOVIE_FR = (URL_MAIN + '/search/title?countries=fr&languages=fr&production_status=released&title_type=feature,tv_movie', 'showMovies')
  41. MOVIE_ACTORS = (URL_MAIN + '/list/ls000004615/', 'showMovies')  
  42. POSTER_URL = 'https://ia.media-imdb.com/images/m/'
  43. #FANART_URL = 'https://image.tmdb.org/t/p/w780/'
  44. FANART_URL = 'https://ia.media-.imdb.com/images/m/'
  45. #FANART_URL = 'https://image.tmdb.org/t/p/original/'
  46.                
  47.         #runtime = ''
  48.         #runtime_match = re.search(r'<span class="runtime">(.+?) mins\.</span>', item, flags=(re.DOTALL | re.MULTILINE))
  49.         #if runtime_match:
  50.             #runtime = int(runtime_match.group(1)) * 60
  51.        
  52.  
  53. def unescape(text):
  54.     def fixup(m):
  55.         text = m.group(0)
  56.         if text[:2] == "&#":
  57.             # character reference
  58.             try:
  59.                 if text[:3] == "&#x":
  60.                     return unichr(int(text[3:-1], 16))
  61.                 else:
  62.                     return unichr(int(text[2:-1]))
  63.             except ValueError:
  64.                 pass
  65.         else:
  66.             # named entity
  67.             try:
  68.                 text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
  69.             except KeyError:
  70.                 pass
  71.         return text # leave as is
  72.     return re.sub("&#?\w+;", fixup, text)
  73.    
  74. #https://api.themoviedb.org/3/movie/popular?api_key=92ab39516970ab9d86396866456ec9b6
  75.  
  76. #<views>551,504,503,508,515,50,51,500,550,560,501,572,573,574,570,571,505,511</views>
  77. #viewmode = 500 Film
  78. #viewmode = 503 Film + Information
  79. #viewmode = 50  Liste
  80.  
  81. def showSearch():
  82.     oGui = cGui()
  83.  
  84.     sSearchText = oGui.showKeyBoard()
  85.     if (sSearchText != False):
  86.         sSearchText = cUtil().urlEncode(sSearchText)
  87.         sUrl = 'http://imdb.com/search/title?groups=top_1000&sort=user_rating,desc&start=%s'+sSearchText
  88.         #sUrl = 'http://%s.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&languages=fr|1&sort=moviemeter,asc&count=40&start=%s', 'showMovies')
  89.  
  90.         resultSearch(sUrl)
  91.         oGui.setEndOfDirectory()
  92.         return
  93.  
  94. def showPage():
  95.     oGui = cGui()
  96.  
  97.     sSearchNum = oGui.showNumBoard()
  98.    
  99.     if (sSearchNum):
  100.  
  101.         oInputParameterHandler = cInputParameterHandler()
  102.         sUrl = oInputParameterHandler.getValue('siteUrlbase')
  103.         sMaxPage = oInputParameterHandler.getValue('MaxPage')
  104.        
  105.         sSearchNum = str(sSearchNum)
  106.        
  107.         if int(sSearchNum) > int (sMaxPage):
  108.             sSearchNum = sMaxPage
  109.            
  110.         sUrl = sUrl + str(sSearchNum)
  111.        
  112.         showMovies(sUrl)
  113.         oGui.setEndOfDirectory()
  114.         return
  115.  
  116.  
  117. def load():
  118.     oGui = cGui()
  119.    
  120.     oOutputParameterHandler = cOutputParameterHandler()
  121.     oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
  122.     oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche Film', 'search.png', oOutputParameterHandler)
  123.  
  124.     oOutputParameterHandler = cOutputParameterHandler()
  125.     oOutputParameterHandler.addParameter('siteUrl', MOVIE_WORLD[0])
  126.     oGui.addDir(SITE_IDENTIFIER, MOVIE_WORLD[1], 'Top Films Mondial', 'films.png', oOutputParameterHandler)
  127.  
  128.     oOutputParameterHandler = cOutputParameterHandler()
  129.     oOutputParameterHandler.addParameter('siteUrl', MOVIE_FR[0])
  130.     oGui.addDir(SITE_IDENTIFIER, MOVIE_FR[1], 'Top Films Francais', 'films.png', oOutputParameterHandler)
  131.  
  132.     oOutputParameterHandler = cOutputParameterHandler()
  133.     oOutputParameterHandler.addParameter('siteUrl', MOVIE_ACTORS[0])
  134.     oGui.addDir(SITE_IDENTIFIER, MOVIE_ACTORS[1], 'Top 250 - Meilleure Acteurs', 'films.png', oOutputParameterHandler)
  135.  
  136.     oGui.setEndOfDirectory()
  137.  
  138.  
  139. def showMovies(sSearch = ''):
  140.     oGui = cGui()
  141.    
  142.     if sSearch:
  143.         sUrl = sSearch
  144.     else:
  145.         oInputParameterHandler = cInputParameterHandler()
  146.         sUrl = oInputParameterHandler.getValue('siteUrl')
  147.         oRequestHandler = cRequestHandler(sUrl)
  148.         oRequestHandler.addHeaderEntry('Accept-Language','fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
  149.         sHtmlContent = oRequestHandler.request()
  150.         #oRequestHandler = cRequestHandler(sUrl)
  151.         #sHtmlContent = oRequestHandler.request()
  152.         #sHtmlContent = sHtmlContent.replace('<span class="runtime">', '').replace('</span>','')
  153.    
  154.     #fh = open('c:\\test.txt', "w")
  155.     #fh.write(sHtmlContent)
  156.     #fh.close()
  157.  
  158.     #sPattern = '<td class="number">(.*?)<\/td>.*?class="image">.*?<a href=".+?" title=".+?"><img src="(.*?)" alt="(.*?)" title=".*?".*?<a href="([^<]+)">.*?<\/a>'
  159.  
  160.     #sPattern = '<img.*?src="(.*?)"width="67".*?<span class="lister-item-index unbold text-primary">(.*?)<\/span> *<a href="(.*?)">(.*?)<\/a>'
  161.     #sPattern = '<span class="lister-item-index unbold text-primary">(.*?)<\/span>.*?<img.*?src="([^"]+)".*?<a href="\/title\/.*?">([^<]+)<\/a>'      #([^"]+)
  162.     #sPattern = '<span class="lister-item-index unbold text-primary">([^<]+)<\/span>.*?<img.*?src="([^"]+)"?:<a href="\/title\/.*?">([^<]+)<\/a>'  
  163.     #sPattern = '<a href="/title/(.*?)">.*?<img alt=".*?" class="loadlate" data-tconst=".*?" src="([^"]+).*?<span class="lister-item-index unbold text-primary">([^<]+)</span> *<a href="(.*?)">(.*?)<\/a>'
  164.     sPattern = '<img.*?src="([^"]+).*?<span class="lister-item-index unbold text-primary">([^<]+)<\/span> *<a href=".*?">([^<]+)<\/a>'  
  165.     #sPattern = '<img.*?src="(.*?)".*?<div class="number">(.*?)<\/div> *<b><a href=".*?">(.*?)<\/a><\/b>'
  166.     #sPattern = '<div class="number">(.*?)<\/div>.*?class="image">.*?<a href=".+?" title=".+?"><img src="(.*?)" alt="(.*?)" title=".*?".*?<a href="([^<]+)">.*?<\/a>'
  167.  
  168.     #sPattern = '<span class="lister-item-index unbold text-primary">(.*?)<\/span>.*?<img src="(.*?)".*?<a href="(.*?)">(.*?)<\/a>.*?<span class="lister-item-year text-muted unbold">(.*?)<\/span>">'  
  169.     oParser = cParser()
  170.     aResult = oParser.parse(sHtmlContent, sPattern)
  171.    
  172.     if (aResult[0] == True):
  173.         total = len(aResult[1])
  174.         dialog = cConfig().createDialog(SITE_NAME)
  175.         for aEntry in aResult[1]:
  176.             cConfig().updateDialog(dialog, total)
  177.             if dialog.iscanceled():
  178.                 break
  179.  
  180.  
  181.             sTitle = unicode(aEntry[1], 'utf-8')#converti en unicode
  182.             sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore')#vire accent
  183.             sTitle = unescape(str(aEntry[1]))
  184.             #sTitle = sTitle.encode( "utf-8")
  185.             sNumber = aEntry[1].replace('<span class="lister-item-index unbold text-primary">', '').replace('</span>', '')
  186.             #sRuntime = aEntry[0].replace('<span class="runtime">', '').replace('</span>', '')            
  187.             sTitle = '[COLOR azure]'+sNumber+'[/COLOR] ' + aEntry[2]
  188.             sMovieTitle=re.sub('(\[.*\])','', sTitle)
  189.             sMovieTitle = re.sub(r'[^a-z -]', ' ', sMovieTitle)
  190.             sTitle2=re.sub('(.*)(\[.*\])','\\1 [COLOR azure]\\2[/COLOR]', sTitle)
  191.             sThumbnail = str(aEntry[0])
  192.  
  193.             #sCom = unicode(aEntry[3], 'utf-8')#converti en unicode
  194.             #sCom = unicodedata.normalize('NFD', sCom).encode('ascii', 'ignore').decode("unicode_escape")#vire accent et '\'
  195.             #sCom = unescape(sCom)
  196.            
  197.             oOutputParameterHandler = cOutputParameterHandler()
  198.             oOutputParameterHandler.addParameter('siteUrl', ('none'))
  199.             oOutputParameterHandler.addParameter('sMovieTitle', str(aEntry[2]))
  200.             oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0]))            
  201.             oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumbnail, '', oOutputParameterHandler)
  202.            
  203.         cConfig().finishDialog(dialog)
  204.  
  205.         sNextPage = __checkForNextPage(sHtmlContent)
  206.         if (sNextPage != False):
  207.             oOutputParameterHandler = cOutputParameterHandler()
  208.             oOutputParameterHandler.addParameter('siteUrl', sNextPage)
  209.             oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]' , oOutputParameterHandler)
  210.  
  211.     oGui.setEndOfDirectory()
  212.      
  213. def __checkForNextPage(sHtmlContent):
  214.     sPattern = '<a href="([^"]+)" class="lister-page-next next-page" ref-marker="adv_nxt">Next »</a>'
  215.  
  216.     oParser = cParser()
  217.     aResult = oParser.parse(sHtmlContent, sPattern)
  218.     if (aResult[0] == True):
  219.         return aResult[1][0]
  220.  
  221.     return False
  222.  
  223. def showHosters():
  224.  
  225.     oInputParameterHandler = cInputParameterHandler()
  226.     sUrl = oInputParameterHandler.getValue('siteUrl')
  227.     sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  228.     sThumbnail = oInputParameterHandler.getValue('sThumbnail')
  229.    
  230.     sExtraTitle = ''
  231.     #si c'est une serie
  232.     if sUrl != 'none':
  233.         sExtraTitle = sUrl.split('|')[1]
  234.         sMovieTitle = sUrl.split('|')[0]
  235.      
  236.     #nettoyage du nom pr la recherche
  237.     #print 'avant ' + sMovieTitle
  238.     sMovieTitle = unicode(sMovieTitle, 'utf-8')#converti en unicode pour aider aux convertions
  239.     sMovieTitle = unicodedata.normalize('NFD', sMovieTitle).encode('ascii', 'ignore').decode("unicode_escape")#vire accent et '\'
  240.     sMovieTitle = sMovieTitle.encode("utf-8").lower() #on repasse en utf-8
  241.    
  242.     sMovieTitle = re.sub('\(.+?\)',' ', sMovieTitle) #vire les tags entre parentheses
  243.    
  244.     #modif venom si le titre comporte un - il doit le chercher
  245.     sMovieTitle = re.sub(r'[^a-z -]', ' ', sMovieTitle) #vire les caracteres a la con qui peuvent trainer
  246.    
  247.     sMovieTitle = re.sub('( |^)(le|la|les|du|au|a|l)( |$)',' ', sMovieTitle) #vire les articles
  248.  
  249.     sMovieTitle = re.sub(' +',' ',sMovieTitle) #vire les espaces multiples et on laisse les espaces sans modifs car certains codent avec %20 d'autres avec +
  250.     #print 'apres ' + sMovieTitle
  251.  
  252.     dialog3 = xbmcgui.Dialog()
  253.     ret = dialog3.select('Recherche',['Vstream','zone_telechargement','film_streaming','kepliz','Movieshd'])
  254.  
  255.     if ret == 0:
  256.         VstreamSearch(sMovieTitle)
  257.     elif ret == 1:
  258.         zone_telechargementSearch(sMovieTitle)
  259.     elif ret == 2:
  260.         film_streamingSearch(sMovieTitle + sExtraTitle)
  261.     elif ret == 3:
  262.         keplizSearch(sMovieTitle + sExtraTitl)
  263.     elif ret == 4:
  264.         movieshdSearch(sMovieTitle + sExtraTitle)
  265.        
  266. def VstreamSearch(sMovieTitle):
  267.    
  268.     oGui = cGui()
  269.     oInputParameterHandler = cInputParameterHandler()
  270.     sUrl = oInputParameterHandler.getValue('siteUrl')
  271.    
  272.     #Type de recherche
  273.     sDisp = oInputParameterHandler.getValue('disp')
  274.  
  275.     if not(sDisp):
  276.         sDisp = 'search1'
  277.         if sUrl != 'none':
  278.             sDisp = 'search2'
  279.    
  280.     oHandler = cRechercheHandler()
  281.     oHandler.setText(sMovieTitle)
  282.     oHandler.setDisp(sDisp)
  283.     aPlugins = oHandler.getAvailablePlugins()
  284.                
  285.     oGui.setEndOfDirectory()        
  286.  
  287. def zone_telechargementSearch(sMovieTitle):
  288.     oGui = cGui()
  289.    
  290.     exec "from resources.sites import zone_telechargement_com as search"
  291.     sSearchText = oGui.showKeyBoard()
  292.     if (sSearchText != False):
  293.         sUrl = URL_SEARCH_MOVIES[0] + sSearchText +'&tab=all&orderby_by=popular&orderby_order=desc&displaychangeto=thumb'
  294.         showMovies(sUrl)
  295.         oGui.setEndOfDirectory()
  296.         return    
  297.  
  298. def film_streamingSearch(sMovieTitle):
  299.     oGui = cGui()
  300.    
  301.     exec "from resources.sites import film_streaming_co as search"
  302.     #sSearchText = oGui.showKeyBoard()
  303.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  304.  
  305.    # if (sSearchText != False):
  306.         #sSearchText = cUtil().urlEncode(sSearchText)    
  307.     sUrl = ('(http://www.film-streaming.co/' + sMovieTitle)
  308.     sUrl = URL_SEARCH[0] + sSearchText
  309.     resultSearch(sUrl)        
  310.     searchUrl = "search.php?movie=", ('resultSearch', sUrl)
  311.     exec "searchUrl"
  312.    
  313.     oGui.setEndOfDirectory()
  314.    
  315.  
  316.  
  317. def keplizSearch(sMovieTitle):
  318.     oGui = cGui()
  319.    
  320.     exec "from resources.sites import kepliz_com as search"
  321.     sSearchText = oGui.showKeyBoard()
  322.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  323.  
  324.     if (sSearchText != False):
  325.         sSearchText = cUtil().urlEncode(sSearchText)    
  326.         sUrl = ('(http://www.film-streaming.co/' + sMovieTitle)
  327.         searchUrl = "search.php?movie=", ('resultSearch', sUrl)
  328.     exec "searchUrl"
  329.    
  330.     oGui.setEndOfDirectory()
  331.  
  332.  
  333. def movieshdSearch(sMovieTitle):
  334.     oGui = cGui()
  335.    
  336.     exec "from resources.sites import movieshd.tv as search"
  337.     sSearchText = oGui.showKeyBoard()
  338.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  339.  
  340.     if (sSearchText != False):
  341.         sSearchText = cUtil().urlEncode(sSearchText)    
  342.         sUrl = ('(http://www.film-streaming.co/' + sMovieTitle)
  343.         searchUrl = "search.php?movie=", ('resultSearch', sUrl)
  344.     exec "searchUrl"
  345.    
  346.     oGui.setEndOfDirectory()
  347.            
  348. def addMoviedb(sId, sFunction, sLabel, sIcon, sThumbnail, fanart, oOutputParameterHandler = ''):
  349.    
  350.     #addMoviedb(oGui, SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumbnail, sFanart, oOutputParameterHandler)
  351.     oGui = cGui()
  352.     oGuiElement = cGuiElement()
  353.     oGuiElement.setSiteName(sId)
  354.     oGuiElement.setFunction(sFunction)
  355.     oGuiElement.setTitle(sLabel)
  356.     #oGuiElement.setIcon(sIcon)
  357.     oGuiElement.setMeta(0)
  358.     #oGuiElement.setThumbnail(sThumbnail)
  359.     #oGuiElement.setFanart(fanart)
  360.    
  361.     #cGui.addFolder(oGuiElement, oOutputParameterHandler)
  362.     oGui.addFolder(oGuiElement, oOutputParameterHandler, False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement