mino60

Untitled

Oct 14th, 2016
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.98 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Venom.mino60.TmpName
  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?title_type=feature,tv_movie&num_votes=1000,&production_status=released&languages=fr|1&sort=moviemeter,asc&count=50&start=1', 'showMovies')
  41.  
  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.  
  133.     oGui.setEndOfDirectory()
  134.  
  135.  
  136. def showMovies(sSearch = ''):
  137.     oGui = cGui()
  138.    
  139.     if sSearch:
  140.         sUrl = sSearch
  141.     else:
  142.         oInputParameterHandler = cInputParameterHandler()
  143.         sUrl = oInputParameterHandler.getValue('siteUrl')
  144.         oRequestHandler = cRequestHandler(sUrl)
  145.         oRequestHandler.addHeaderEntry('Accept-Language','fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
  146.         sHtmlContent = oRequestHandler.request()
  147.         #oRequestHandler = cRequestHandler(sUrl)
  148.         #sHtmlContent = oRequestHandler.request()
  149.         #sHtmlContent = sHtmlContent.replace('<span class="runtime">', '').replace('</span>
  150.          
  151.     #fh = open('c:\\test.txt', "w")
  152.     #fh.write(sHtmlContent)
  153.     #fh.close()
  154.     #sPattern = 'class="lister-item.*?<img\salt="(.*?)".*?loadlate="(.*?\.jpg)".*?class="lister-item-index.*?>(.*?)\.</span>'
  155.     #sPattern = 'class="lister-item-index.*?>(.*?)\.</span>.*?class="lister-item.*?<img\salt="(.*?)".*?loadlate="(.*?\.jpg)".*?class="lister-item-year.*?>\((\d+)\)</span.*?title="Users rated this (.*?\/10)'
  156.     sPattern = 'class="lister-item.*?<img\salt="(.*?)".*?loadlate="(.*?\.jpg)".*?class="lister-item-index.*?>(.*?)\.</span>.*?class="lister-item-year.*?>\((\d+)\)</span.*?title="Users rated this (.*?\/10)'
  157.     #sPattern = '<span class="lister-item-index unbold text-primary">([^<]+)<\/span> *<a href="([^"]+)">([^<]+)<\/a>.+?src="([^"]+)"'  
  158.     oParser = cParser()
  159.     aResult = oParser.parse(sHtmlContent, sPattern)
  160.    
  161.     if (aResult[0] == True):
  162.         total = len(aResult[1])
  163.         dialog = cConfig().createDialog(SITE_NAME)
  164.         for aEntry in aResult[1]:
  165.             cConfig().updateDialog(dialog, total)
  166.             if dialog.iscanceled():
  167.                 break
  168.                
  169.             sTitle = unicode(aEntry[2], 'utf-8')#converti en unicode
  170.             sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore')#vire accent
  171.             sTitle = unescape(str(aEntry[2]))
  172.             #sTitle = sTitle.encode( "utf-8")
  173.             sNumber = aEntry[0].replace('<span class="lister-item-index>', '').replace('</span>', '')
  174.             #sRuntime = aEntry[0].replace('<span class="runtime">', '').replace('</span>', '')            
  175.             sTitle = '[COLOR yellow]'+sNumber+'[/COLOR] ' + aEntry[2]
  176.             sMovieTitle=re.sub('(\[.*\])','', sTitle)
  177.             sMovieTitle = re.sub(r'[^a-z -]', ' ', sMovieTitle)
  178.             sTitle2=re.sub('(.*)(\[.*\])','\\1 [COLOR yellow]\\2[/COLOR]', sTitle)
  179.            
  180.  
  181.             #sCom = unicode(aEntry[3], 'utf-8')#converti en unicode
  182.             #sCom = unicodedata.normalize('NFD', sCom).encode('ascii', 'ignore').decode("unicode_escape")#vire accent et '\'
  183.             #sCom = unescape(sCom)
  184.            
  185.             oOutputParameterHandler = cOutputParameterHandler()
  186.             oOutputParameterHandler.addParameter('siteUrl', ('none'))
  187.             oOutputParameterHandler.addParameter('sMovieTitle', str(aEntry[2]))
  188.             oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[1]))            
  189.             oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', aEntry[1], '', oOutputParameterHandler)
  190.            
  191.         cConfig().finishDialog(dialog)
  192.  
  193.         sNextPage = __checkForNextPage(sHtmlContent)
  194.         if (sNextPage != False):
  195.             oOutputParameterHandler = cOutputParameterHandler()
  196.             oOutputParameterHandler.addParameter('siteUrl', sNextPage)
  197.             oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]' , oOutputParameterHandler)
  198.  
  199.     oGui.setEndOfDirectory()
  200.        
  201.      
  202. def __checkForNextPage(sHtmlContent):
  203.     sPattern = '<a href="([^<>"]+?)">Next&nbsp;»<\/a>'
  204.     #sPattern = '<a href="(.*?)" class="lister-page-next next-page" ref-marker="adv_nxt">(.*?)<\/a>'
  205.     oParser = cParser()
  206.     aResult = oParser.parse(sHtmlContent, sPattern)
  207.     if (aResult[0] == True):
  208.         return aResult[1][0]
  209.  
  210.     return False
  211.  
  212. def showHosters():
  213.  
  214.     oInputParameterHandler = cInputParameterHandler()
  215.     sUrl = oInputParameterHandler.getValue('siteUrl')
  216.     sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  217.     sThumbnail = oInputParameterHandler.getValue('sThumbnail')
  218.    
  219.     sExtraTitle = ''
  220.     #si c'est une serie
  221.     if sUrl != 'none':
  222.         sExtraTitle = sUrl.split('|')[1]
  223.         sMovieTitle = sUrl.split('|')[0]
  224.      
  225.     #nettoyage du nom pr la recherche
  226.     #print 'avant ' + sMovieTitle
  227.     sMovieTitle = unicode(sMovieTitle, 'utf-8')#converti en unicode pour aider aux convertions
  228.     sMovieTitle = unicodedata.normalize('NFD', sMovieTitle).encode('ascii', 'ignore').decode("unicode_escape")#vire accent et '\'
  229.     sMovieTitle = sMovieTitle.encode("utf-8").lower() #on repasse en utf-8
  230.    
  231.     sMovieTitle = re.sub('\(.+?\)',' ', sMovieTitle) #vire les tags entre parentheses
  232.    
  233.     #modif venom si le titre comporte un - il doit le chercher
  234.     sMovieTitle = re.sub(r'[^a-z -]', ' ', sMovieTitle) #vire les caracteres a la con qui peuvent trainer
  235.    
  236.     sMovieTitle = re.sub('( |^)(le|la|les|du|au|a|l)( |$)',' ', sMovieTitle) #vire les articles
  237.  
  238.     sMovieTitle = re.sub(' +',' ',sMovieTitle) #vire les espaces multiples et on laisse les espaces sans modifs car certains codent avec %20 d'autres avec +
  239.     #print 'apres ' + sMovieTitle
  240.  
  241.     dialog3 = xbmcgui.Dialog()
  242.     ret = dialog3.select('Recherche',['Vstream','zone_telechargement','film_streaming','kepliz','Movieshd'])
  243.  
  244.     if ret == 0:
  245.         VstreamSearch(sMovieTitle)
  246.     elif ret == 1:
  247.         zone_telechargementSearch(sMovieTitle)
  248.     elif ret == 2:
  249.         film_streamingSearch(sMovieTitle)
  250.     elif ret == 3:
  251.         keplizSearch(sMovieTitle)
  252.     elif ret == 4:
  253.         movieshdSearch(sMovieTitle)
  254.        
  255. def VstreamSearch(sMovieTitle):
  256.    
  257.     oGui = cGui()
  258.     oInputParameterHandler = cInputParameterHandler()
  259.     sUrl = oInputParameterHandler.getValue('siteUrl')
  260.    
  261.     #Type de recherche
  262.     sDisp = oInputParameterHandler.getValue('disp')
  263.  
  264.     if not(sDisp):
  265.         sDisp = 'search1'
  266.         if sUrl != 'none':
  267.             sDisp = 'search2'
  268.    
  269.     oHandler = cRechercheHandler()
  270.     oHandler.setText(sMovieTitle)
  271.     oHandler.setDisp(sDisp)
  272.     aPlugins = oHandler.getAvailablePlugins()
  273.                
  274.     oGui.setEndOfDirectory()        
  275.  
  276. def zone_telechargementSearch(sMovieTitle):
  277.     oGui = cGui()
  278.    
  279.     exec "from resources.sites import zone_telechargement_com as search"
  280.     #sSearchText = oGui.showKeyBoard()
  281.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  282.  
  283.     #if (sSearchText != False):
  284.        # sSearchText = cUtil().urlEncode(sSearchText)    
  285.        # sUrl = ('http://www.zone-telechargement.com/films-gratuit.html?q=' + sMovieTitle)
  286.         #searchUrl = "search.php?movie=", ('resultSearch', sUrl)
  287.  
  288.     sUrl = 'http://www.zone-telechargement.com/films-gratuit.html?q=%s&tab=all&orderby_by=popular&orderby_order=desc&displaychangeto=thumb' + sMovieTitle
  289.     xbmc.log(str(sUrl))
  290.     searchUrl = "search.%s('%s')" % ('showMovies', sUrl)
  291.     exec searchUrl
  292.    
  293.     oGui.setEndOfDirectory()  
  294.  
  295.  
  296. def film_streamingSearch(sMovieTitle):
  297.     oGui = cGui()
  298.    
  299.     exec "from resources.sites import film_streaming_co as search"
  300.     #sSearchText = oGui.showKeyBoard()
  301.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  302.  
  303.    # if (sSearchText != False):
  304.         #sSearchText = cUtil().urlEncode(sSearchText)    
  305.     sUrl = 'http://www.film-streaming.co/search.php?s=' + sMovieTitle
  306.     xbmc.log(str(sUrl))
  307.     searchUrl = "search.%s('%s')" % ('showMovies', sUrl)
  308.     exec searchUrl
  309.    
  310.     oGui.setEndOfDirectory()  
  311.  
  312.  
  313. def keplizSearch(sMovieTitle):
  314.     oGui = cGui()
  315.    
  316.     exec "from resources.sites import kepliz_com as search"
  317.     sUrl = URL_MAIN + '/index.php?ordering=&searchphrase=all&Itemid=1&option=com_search&searchword=' + sMovieTitle  
  318.     #sUrl = 'http://www.kepliz_com/index.php?ordering=&searchphrase=all&Itemid=1&option=com_search&searchword=' + sMovieTitle
  319.     xbmc.log(str(sUrl))
  320.     searchUrl = "search.%s('%s')" % ('showMovies', sUrl)
  321.     exec searchUrl
  322.    
  323.     oGui.setEndOfDirectory()
  324.  
  325.  
  326. def movieshdSearch(sMovieTitle):
  327.     oGui = cGui()
  328.    
  329.     exec "from resources.sites import movieshd_tv as search"
  330.     sSearchText = oGui.showKeyBoard()
  331.     #title = (_("Enter search criteria")), text = searchTitle, is_dialog=True)
  332.  
  333.     if (sSearchText != False):
  334.         sSearchText = cUtil().urlEncode(sSearchText)    
  335.         sUrl = ('(http://www.film-streaming.co/' + sMovieTitle)
  336.         searchUrl = "search.php?movie=", ('resultSearch', sUrl)
  337.     exec "searchUrl"
  338.    
  339.     oGui.setEndOfDirectory()
  340.            
  341. def addMoviedb(sId, sFunction, sLabel, sIcon, sThumbnail, fanart, oOutputParameterHandler = ''):
  342.    
  343.     #addMoviedb(oGui, SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumbnail, sFanart, oOutputParameterHandler)
  344.     oGui = cGui()
  345.     oGuiElement = cGuiElement()
  346.     oGuiElement.setSiteName(sId)
  347.     oGuiElement.setFunction(sFunction)
  348.     oGuiElement.setTitle(sLabel)
  349.     #oGuiElement.setIcon(sIcon)
  350.     oGuiElement.setMeta(0)
  351.     #oGuiElement.setThumbnail(sThumbnail)
  352.     #oGuiElement.setFanart(fanart)
  353.    
  354.     #cGui.addFolder(oGuiElement, oOutputParameterHandler)
  355.     oGui.addFolder(oGuiElement, oOutputParameterHandler, False)
Advertisement
Add Comment
Please, Sign In to add comment