Advertisement
Guest User

dpstream_net_Serie.py

a guest
Mar 16th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 18.67 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Venom.
  3. from resources.lib.gui.hoster import cHosterGui #system de recherche pour l'hote
  4. from resources.lib.handler.hosterHandler import cHosterHandler #system de recherche pour l'hote
  5. from resources.lib.gui.gui import cGui #system d'affichage pour xbmc
  6. from resources.lib.gui.guiElement import cGuiElement #system d'affichage pour xbmc
  7. from resources.lib.handler.inputParameterHandler import cInputParameterHandler #entrer des parametres
  8. from resources.lib.handler.outputParameterHandler import cOutputParameterHandler #sortis des parametres
  9. from resources.lib.handler.requestHandler import cRequestHandler #requete url
  10. from resources.lib.config import cConfig #config
  11. from resources.lib.parser import cParser #recherche de code
  12. from resources.lib.util import cUtil
  13. import urllib2,urllib,re
  14. from t0mm0.common.net import Net
  15. import unicodedata
  16.  
  17. #Si vous créer une source et la déposer dans le dossier sites elle seras directement visible sous xbmc
  18.  
  19. SITE_IDENTIFIER = 'dpstream_net_Serie' #identifant nom de votre fichier remplacer les espaces et les . par _ aucun caractere speciale
  20. SITE_NAME = 'DPStream NET (Serie)' # nom que xbmc affiche
  21. SITE_DESC = 'Series en streaming' #description courte de votre source
  22.  
  23. URL_MAIN = 'http://www.dpstream.net/' # url de votre source
  24.  
  25. #definis les url pour les catégories principale ceci et automatique si la deffition et présente elle seras afficher.
  26.  
  27. SERIE_SERIES = ('http://www.dpstream.net/liste-series-en-streaming.html/', 'showSeries')
  28. ANIM_ANIMS = ('http://www.dpstream.net/liste-mangas-en-streaming.html/', 'showSeries')
  29. SERIE_VFS = ('ABCDEF', 'showSeriesAlpha')
  30.  
  31. URL_SEARCH = ('', 'showSeries')
  32. FUNCTION_SEARCH = 'showSeries'
  33.  
  34.  
  35. def load(): #function charger automatiquement par l'addon l'index de votre navigation.
  36.     oGui = cGui() #ouvre l'affichage
  37.  
  38.     oOutputParameterHandler = cOutputParameterHandler() #apelle la function pour sortir un parametre
  39.     oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') # sortis du parametres siteUrl oublier pas la Majuscule
  40.     oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler)
  41.    
  42.     #Ajoute lien dossier (identifant, function a attendre, nom, icon, parametre de sortis)
  43.     #Puisque nous ne voulont pas atteindre une url on peux mettre ceux qu'on veut dans le parametre siteUrl
  44.    
  45.     oOutputParameterHandler = cOutputParameterHandler()
  46.     oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0])
  47.     oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'films nouveautés', 'news.png', oOutputParameterHandler)
  48.    
  49.     oOutputParameterHandler = cOutputParameterHandler()
  50.     oOutputParameterHandler.addParameter('siteUrl', ANIM_ANIMS[0])
  51.     oGui.addDir(SITE_IDENTIFIER, ANIM_ANIMS[1], 'animes nouveautés', 'animes.png', oOutputParameterHandler)
  52.    
  53.     oOutputParameterHandler = cOutputParameterHandler()
  54.     oOutputParameterHandler.addParameter('siteUrl', SERIE_SERIES[0])
  55.     oGui.addDir(SITE_IDENTIFIER, SERIE_SERIES[1], 'serie nouveautés', 'series.png', oOutputParameterHandler)
  56.    
  57.     oOutputParameterHandler = cOutputParameterHandler()
  58.     oOutputParameterHandler.addParameter('siteUrl', SERIE_VFS[0])
  59.     oGui.addDir(SITE_IDENTIFIER, SERIE_VFS[1], 'Séries VF', 'series.png', oOutputParameterHandler)
  60.            
  61.     oGui.setEndOfDirectory() #ferme l'affichage
  62.  
  63. def showSearch():
  64.     oGui = cGui()
  65.  
  66.     sSearchText = oGui.showKeyBoard()
  67.     if (sSearchText != False):
  68.             showSeries(str(sSearchText))
  69.             oGui.setEndOfDirectory()
  70.             return  
  71.    
  72.    
  73. def showGenre(): #affiche les genres
  74.     oGui = cGui()
  75.  
  76.     #juste a entrer c'est caterorie et les lien qui vont bien
  77.     liste = []
  78.     liste.append( ['Action','http://full-streaming.org/action/'] )
  79.     liste.append( ['Animation','http://full-streaming.org/animation/'] )
  80.     liste.append( ['Arts Martiaux','http://full-streaming.org/arts-martiaux/'] )
  81.     liste.append( ['Aventure','http://full-streaming.org/aventure/'] )
  82.     liste.append( ['Biopic','http://full-streaming.org/biopic/'] )
  83.     liste.append( ['Comedie','http://full-streaming.org/comedie/'] )
  84.     liste.append( ['Comedie Dramatique','http://full-streaming.org/comedie-dramatique/'] )
  85.     liste.append( ['Comedie Musicale','http://full-streaming.org/comedie-musicale/'] )
  86.     liste.append( ['Documentaire','http://full-streaming.org/documentaire/'] )
  87.     liste.append( ['Drame','http://full-streaming.org/drame/'] )
  88.     liste.append( ['Epouvante Horreur','http://full-streaming.org/epouvante-horreur/'] )
  89.     liste.append( ['Erotique','http://full-streaming.org/erotique'] )
  90.     liste.append( ['Espionnage','http://full-streaming.org/espionnage/'] )
  91.     liste.append( ['Famille','http://full-streaming.org/famille/'] )
  92.     liste.append( ['Fantastique','http://full-streaming.org/fantastique/'] )  
  93.     liste.append( ['Guerre','http://full-streaming.org/guerre/'] )
  94.     liste.append( ['Historique','http://full-streaming.org/historique/'] )
  95.     liste.append( ['Musical','http://full-streaming.org/musical/'] )
  96.     liste.append( ['Policier','http://full-streaming.org/policier/'] )
  97.     liste.append( ['Peplum','http://full-streaming.org/peplum/'] )
  98.     liste.append( ['Romance','http://full-streaming.org/romance/'] )
  99.     liste.append( ['Science Fiction','http://full-streaming.org/science-fiction/'] )
  100.     liste.append( ['Spectacle','http://full-streaming.org/spectacle/'] )
  101.     liste.append( ['Thriller','http://full-streaming.org/thriller/'] )
  102.     liste.append( ['Western','http://full-streaming.org/western/'] )
  103.     liste.append( ['Divers','http://full-streaming.org/divers/'] )
  104.                
  105.     for sTitle,sUrl in liste:#boucle
  106.        
  107.         oOutputParameterHandler = cOutputParameterHandler()
  108.         oOutputParameterHandler.addParameter('siteUrl', sUrl)#sortis de l'url en parametre
  109.         oGui.addDir(SITE_IDENTIFIER, 'showSeries', sTitle, 'genres.png', oOutputParameterHandler)
  110.         #ajouter un dossier vers la function showMovies avec le titre de chaque categorie.
  111.        
  112.     oGui.setEndOfDirectory()
  113.  
  114. def showSeriesAlpha(sLettre = ''):
  115.     oGui = cGui()
  116.     oInputParameterHandler = cInputParameterHandler()
  117.     sUrl = oInputParameterHandler.getValue('siteUrl')
  118.     sTitle = oInputParameterHandler.getValue('sMovieTitle')
  119.    
  120.     dialog = cConfig().createDialog(SITE_NAME)
  121.    
  122.     if 'ABCDEF' in sUrl:
  123.         for i in range(0,27) :
  124.             cConfig().updateDialog(dialog, 27)
  125.             if dialog.iscanceled():
  126.                 break
  127.            
  128.             sTitle = chr(64+i)
  129.             if sTitle == '@':
  130.                 sTitle = '[0-9]'
  131.                
  132.             oOutputParameterHandler = cOutputParameterHandler()
  133.             oOutputParameterHandler.addParameter('siteUrl', sTitle)
  134.             oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
  135.             oGui.addTV(SITE_IDENTIFIER, 'showSeriesAlpha','[COLOR teal] Lettre [COLOR red]'+ sTitle +'[/COLOR][/COLOR]','', '', '', oOutputParameterHandler)
  136.     else:
  137.         sLettre = sUrl
  138.         sUrl = 'http://www.dpstream.net/liste-series-en-streaming.html'
  139.  
  140.         oRequestHandler = cRequestHandler(sUrl)
  141.         sHtmlContent = oRequestHandler.request();
  142.  
  143.         sPattern = '<a class="b" href="([^<]+)">(' + str(sLettre) + '.+?)<.a>'
  144.  
  145.         oParser = cParser()
  146.         aResult = oParser.parse(sHtmlContent, sPattern)
  147.         print aResult
  148.        
  149.         if (aResult[0] == True):
  150.             total = len(aResult[1])
  151.             dialog = cConfig().createDialog(SITE_NAME)
  152.        
  153.             for aEntry in aResult[1]:
  154.                 cConfig().updateDialog(dialog, total)
  155.                 if dialog.iscanceled():
  156.                     break
  157.                    
  158.                 sTitle = aEntry[1]
  159.                
  160.                 #Unicode convertion
  161.                 sTitle = unicode(sTitle,'iso-8859-1')
  162.                 sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore')
  163.  
  164.                 oOutputParameterHandler = cOutputParameterHandler()
  165.                 oOutputParameterHandler.addParameter('siteUrl', str(URL_MAIN)+  str(aEntry[0]) )
  166.                 oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
  167.                 oGui.addTV(SITE_IDENTIFIER, 'seriesHosters',sTitle,'', '', '', oOutputParameterHandler)
  168.    
  169.        
  170.     cConfig().finishDialog(dialog)
  171.    
  172.     oGui.setEndOfDirectory()
  173.    
  174. def showSeries(sSearch = ''):
  175.     oGui = cGui() #ouvre l'affichage
  176.    
  177.     if sSearch:#si une url et envoyer directement garce a la function showSearch
  178.  
  179.       #net = Net('','','',True)
  180.       #net.set_user_agent('Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; yie9)')
  181.       #response = net.http_POST('http://www.dpstream.net/liste-series-en-streaming.html',{'recherchem2': '1999'},False)
  182.       #reponse  = net.http_GET('https://www.google.fr/?hl=fr&gws_rd=cr,ssl&ei=jiuyiuyiiuity')
  183.       #html = reponse.content
  184.       print 'debut'
  185.       print sSearch
  186.       query_args = { 'recherchem': str(sSearch) }
  187.       data = urllib.urlencode(query_args)
  188.       headers = {'User-Agent' : 'Mozilla 5.10'}
  189.       url = 'http://www.dpstream.net/liste-series-en-streaming.html'
  190.       request = urllib2.Request(url,data,headers)
  191.       fh = open('c:\\test.txt', "w")
  192.      
  193.       try:
  194.           reponse = urllib2.urlopen(request)
  195.       except URLError, e:
  196.           print e.read()
  197.           print e.reason
  198.      
  199.       html = reponse.read()
  200.      
  201.       print '**************************************'
  202.       print "The Headers are: ", reponse.info()
  203.       print "This gets the code: ", reponse.code
  204.       fh.write(html)
  205.       fh.close()
  206.       print '**************************************'
  207.      
  208.       sHtmlContent = html
  209.  
  210.     else:
  211.         oInputParameterHandler = cInputParameterHandler()
  212.         sUrl = oInputParameterHandler.getValue('siteUrl') # recupere l'url sortis en parametre
  213.    
  214.         oRequestHandler = cRequestHandler(sUrl) # envoye une requete a l'url
  215.         sHtmlContent = oRequestHandler.request(); #requete aussi    
  216.  
  217.     sPattern = '<h1 style="text-align:left;">\n*<a class="t" href="([^<]+)" id=".+?">(.+?)<.a>\n*<.h1>'
  218.    
  219.     oParser = cParser()
  220.     aResult = oParser.parse(sHtmlContent, sPattern)
  221.     print aResult
  222.    
  223.     if (aResult[0] == True):
  224.         total = len(aResult[1])
  225.         dialog = cConfig().createDialog(SITE_NAME)
  226.        
  227.         for aEntry in aResult[1]:
  228.             cConfig().updateDialog(dialog, total) #dialog
  229.             if dialog.iscanceled():
  230.                 break
  231.            
  232.             sTitle = aEntry[1]
  233.            
  234.             #not found better way
  235.             sTitle = unicode(sTitle, errors='replace')
  236.             sTitle = sTitle.encode('ascii', 'ignore').decode('ascii')
  237.            
  238.             oOutputParameterHandler = cOutputParameterHandler()
  239.             oOutputParameterHandler.addParameter('siteUrl', str(URL_MAIN)+str(aEntry[0]))
  240.             oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle))
  241.             #oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) #sortis du poster
  242.  
  243.             oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sTitle,'', '', '', oOutputParameterHandler)
  244.             #addTV pour sortir les serie tv (identifiant, function, titre, icon, poster, description, sortis parametre)
  245.  
  246.         cConfig().finishDialog(dialog)
  247.            
  248.         sNextPage = __checkForNextPage(sHtmlContent)#cherche la page suivante
  249.         sNextPage = str(URL_MAIN)+sNextPage
  250.         #print sNextPage
  251.         if (sNextPage != False):
  252.             oOutputParameterHandler = cOutputParameterHandler()
  253.             oOutputParameterHandler.addParameter('siteUrl', sNextPage)
  254.             oGui.addDir(SITE_IDENTIFIER, 'showSeries', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler)
  255.             #Ajoute une entrer pour le lien Next | pas de addMisc pas de poster et de description inutile donc
  256.  
  257.     if not sSearch:
  258.         oGui.setEndOfDirectory() #ferme l'affichage
  259.    
  260. def __checkForNextPage(sHtmlContent): #cherche la page suivante
  261.     sPattern = 'GetId\(.pageplus1.\).href = .(.+?).;'
  262.     # .+? je ne veut pas cette partis et peux importe ceux qu'elle contient
  263.     #- (.+?) je veut cette partis et c'est la fin
  264.     oParser = cParser()
  265.     aResult = oParser.parse(sHtmlContent, sPattern)
  266.     print aResult #affiche le result dans le log naviguer un peux sur votre source pour voir si tous ce passe bien
  267.     if (aResult[0] == True):
  268.         return aResult[1][0]
  269.  
  270.     return False
  271.  
  272. def showListHosters():
  273.     oGui = cGui() #ouvre l'affichage
  274.  
  275.     oInputParameterHandler = cInputParameterHandler()
  276.     sUrl = oInputParameterHandler.getValue('siteUrl') # recupere l'url sortis en parametre
  277.     print str(sUrl)
  278.     oRequestHandler = cRequestHandler(sUrl) # envoye une requete a l'url
  279.     sHtmlContent = oRequestHandler.request(); #requete aussi
  280.    
  281.     sPattern = 'alt="icone lecteur ([^<]+)".+?<.td>(.|\s)?<td><a class="b" href="([^<]+)">(.+?)<.a><.td>'
  282.  
  283.     oParser = cParser()
  284.     aResult = oParser.parse(sHtmlContent, sPattern)
  285.  
  286.     print aResult
  287.     if (aResult[0] == True):
  288.         total = len(aResult[1]) #dialog
  289.         dialog = cConfig().createDialog(SITE_NAME) #dialog
  290.         for aEntry in aResult[1]:
  291.             cConfig().updateDialog(dialog, total) #dialog
  292.             if dialog.iscanceled():
  293.                 break
  294.             #L'array affiche vos info dans l'orde de sPattern en commencant a 0
  295.             sTitle = aEntry[3]
  296.            
  297.             #not found better way
  298.             sTitle = unicode(sTitle, errors='replace')
  299.             sTitle = sTitle.encode('ascii', 'ignore').decode('ascii')
  300.             #sTitle = '[COLOR teal][' + str(aEntry[0]) + '][/COLOR] ' + str(sTitle)
  301.            
  302.             oOutputParameterHandler = cOutputParameterHandler()
  303.             oOutputParameterHandler.addParameter('siteUrl', str(URL_MAIN)+str(aEntry[2]))
  304.             oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle))
  305.  
  306.             oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sTitle,'', '', '', oOutputParameterHandler)
  307.             #addTV pour sortir les serie tv (identifiant, function, titre, icon, poster, description, sortis parametre)
  308.                
  309.             #il existe aussis addMisc(identifiant, function, titre, icon, poster, description, sortis parametre)
  310.             #la difference et pour les metadonner serie, films ou sans
  311.         cConfig().finishDialog(dialog)#dialog
  312.            
  313.         oGui.setEndOfDirectory() #ferme l'affichage
  314.        
  315.        
  316. def showListHostersSerie():# recherche et affiche les hotes
  317.     oGui = cGui() #ouvre l'affichage
  318.     oInputParameterHandler = cInputParameterHandler() #apelle l'entre de paramettre
  319.     sUrl = oInputParameterHandler.getValue('siteUrl')  # apelle siteUrl
  320.     sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') #apelle le titre
  321.     sThumbnail = oInputParameterHandler.getValue('sThumbnail') # apelle le poster
  322.     #http://www.dpstream.net/serie-263-cosmos-1999-saison-1-episode-01-FR.html
  323.     sPattern = 'http:..www.dpstream.net.serie-([^<]+?)-.+?saison-([^<]+)-episode-([^<]+)-(.+?).html'
  324.     oParser = cParser()
  325.     resultat = oParser.parse(sUrl, sPattern)
  326.  
  327.     resultat = resultat[1][0]
  328.     print sMovieTitle
  329.  
  330.     sUrl = "http://www.dpstream.net/fichiers/includes/inc_afficher_serie/changer_episode.php?changer_episod=1&id_serie=" + str(resultat[0]) + '&saison=' + str(resultat[1]) + "&episode=" + str(resultat[2]) + "&version=" + str(resultat[3])
  331.     print sUrl
  332.    
  333.     oRequestHandler = cRequestHandler(sUrl) # envoye une requete a l'url
  334.     sHtmlContent = oRequestHandler.request(); #requete aussi
  335.    
  336.     sPattern = '(<iframe.+?src="|<embed src=")([^<]+)(" width|<.embed>)'
  337.  
  338.     oParser = cParser()
  339.     aResult = oParser.parse(sHtmlContent, sPattern)
  340.  
  341.     print aResult
  342.     if (aResult[0] == True):
  343.         for aEntry in aResult[1]:
  344.  
  345.             sTitle = sMovieTitle
  346.             sUrl = aEntry[1]
  347.  
  348.             sHosterUrl = str(sUrl)
  349.  
  350.             oHoster = cHosterGui().checkHoster(sHosterUrl) #recherche l'hote dans l'addon
  351.             if (oHoster != False):
  352.                 oHoster.setDisplayName(sMovieTitle) #nom affiche
  353.                 oHoster.setFileName(sMovieTitle) # idem
  354.                 cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail)
  355.                 #affiche le lien (oGui, oHoster, url du lien, poster)
  356.            
  357.         oGui.setEndOfDirectory() #ferme l'affichage
  358.    
  359.  
  360. def seriesHosters(): #cherche les episode de series
  361.     oGui = cGui()
  362.     oInputParameterHandler = cInputParameterHandler()
  363.     sUrl = oInputParameterHandler.getValue('siteUrl')
  364.     sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  365.     sThumbnail = oInputParameterHandler.getValue('sThumbnail')
  366.    
  367.     oRequestHandler = cRequestHandler(sUrl)
  368.     sHtmlContent = oRequestHandler.request();
  369.     #sHtmlContent = sHtmlContent.replace('<iframe src="//www.facebook.com/','').replace('<iframe src=\'http://creative.rev2pub.com','')
  370.    
  371.     print sUrl
  372.    
  373.     sPattern = '<h3 ? style="border-bottom:none;padding-bottom:0;" class=".+?">([^<]+)<.h3>|<a class="b" ?id="([^<]+)" href="(.+?)"(>Episode| onclick)'
  374.     oParser = cParser()
  375.     aResult = oParser.parse(sHtmlContent, sPattern)
  376.    
  377.     #sPattern2 = 'img src="([^<]+)" style=".+?"'
  378.     #aResult2 = oParser.parse(sHtmlContent, sPattern)
  379.    
  380.     if (aResult[0] == True):
  381.         total = len(aResult[1])
  382.         dialog = cConfig().createDialog(SITE_NAME)
  383.         for aEntry in aResult[1]:
  384.             cConfig().updateDialog(dialog, total)
  385.             if dialog.iscanceled():
  386.                 break
  387.            
  388.             if aEntry[0]:
  389.                 oOutputParameterHandler = cOutputParameterHandler()
  390.                 oOutputParameterHandler.addParameter('siteUrl', str(sUrl))
  391.                 oOutputParameterHandler.addParameter('sMovieTitle', str(sMovieTitle))
  392.                 oGui.addDir(SITE_IDENTIFIER, 'seriesHosters', '[COLOR red]'+str(aEntry[0])+'[/COLOR]', 'films.png', oOutputParameterHandler)
  393.             else:
  394.                 sMovieTitle2 = sMovieTitle + ' - ' + aEntry[1]
  395.                 print sMovieTitle2
  396.                 oOutputParameterHandler = cOutputParameterHandler()
  397.                 oOutputParameterHandler.addParameter('siteUrl', str(URL_MAIN)+str(aEntry[2]))
  398.                 oOutputParameterHandler.addParameter('sMovieTitle', str(sMovieTitle2))
  399.                 #oOutputParameterHandler.addParameter('sThumbnail', str(aResult2[1][]))
  400.                 oGui.addTV(SITE_IDENTIFIER, 'showListHostersSerie', sMovieTitle2, 'films.png','', '', oOutputParameterHandler)
  401.      
  402.                
  403.     oGui.setEndOfDirectory()
  404.    
  405. #Voila c'est un peux brouillon mais ça devrais aider un peux, n'esiter a poser vos question et meme a partager vos source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement