Advertisement
Patoche2025

Untitled

Dec 29th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.75 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Venom.
  3. from resources.lib.gui.hoster import cHosterGui #systeme de recherche pour l'hote
  4. from resources.lib.handler.hosterHandler import cHosterHandler #systeme de recherche pour l'hote
  5. from resources.lib.gui.gui import cGui #systeme d'affichage pour xbmc
  6. from resources.lib.gui.guiElement import cGuiElement #systeme d'affichage pour xbmc
  7. from resources.lib.handler.inputParameterHandler import cInputParameterHandler #entree des parametres
  8. from resources.lib.handler.outputParameterHandler import cOutputParameterHandler #sortie 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 #outils pouvant etre utiles
  13.  
  14. #Si vous créez une source et la deposez dans le dossier "sites" elle sera directement visible sous xbmc
  15.  
  16. SITE_IDENTIFIER = 'sokrostream_biz' #identifant (nom de votre fichier) remplacez les espaces et les . par _ AUCUN CARACTERE SPECIAL
  17. SITE_NAME = 'Sokrostream.biz' # nom que xbmc affiche
  18. SITE_DESC = 'Film en Streaming HD' #description courte de votre source
  19.  
  20. URL_MAIN = 'http://sokrostream.biz' # url de votre source
  21.  
  22. #definis les url pour les catégories principale, ceci est automatique, si la definition est présente elle seras affichee.
  23. URL_SEARCH = ('http://sokrostream.biz?s=', 'showMovies')
  24. FUNCTION_SEARCH = 'showMovies'
  25.  
  26. MOVIE_NEWS = ('http://sokrostream.biz/categories/films, 'showMovies') # films nouveautés
  27. MOVIE_MOVIE = ('http://sokrostream.biz/categories/films', 'showMovies') # films vrac
  28. MOVIE_COMMENTS = (http://sokrostream.biz/les-films-les-plus-commentes-2, 'showMovies') # films + commentés
  29. MOVIE_NOTES = ('http://sokrostream.biz/films-les-mieux-notes-2', 'showMovies') # films mieux notés
  30. MOVIE_GENRES = (True, 'showGenre')
  31.  
  32. SERIE_NEWS = ('http://sokrostream.biz/categories/series-streaming', 'showSeries') # serie nouveautés
  33. SERIE_SERIES = ('http://sokrostream.biz/categories/series-streaming', 'showSeries') # serie vrac
  34. SERIE_GENRE = (True, 'showGenre')
  35.  
  36.  
  37. def load(): #fonction chargee automatiquement par l'addon l'index de votre navigation.
  38. oGui = cGui() #ouvre l'affichage
  39.  
  40. oOutputParameterHandler = cOutputParameterHandler() #apelle la function pour sortir un parametre
  41. oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') # sortie du parametres siteUrl n'oubliez pas la Majuscule
  42. oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler)
  43. #Ajoute lien dossier (identifant, function a attendre, nom, icon, parametre de sortie)
  44. #Puisque nous ne voulons pas atteindre une url on peut mettre ce qu'on veut dans le parametre siteUrl
  45.  
  46. oOutputParameterHandler = cOutputParameterHandler()
  47. oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0])
  48. oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films Nouveautés', 'news.png', oOutputParameterHandler)
  49. #ici la function showMovies a besoin d'une url ici le racourci MOVIE_NEWS
  50.  
  51. oOutputParameterHandler = cOutputParameterHandler()
  52. oOutputParameterHandler.addParameter('siteUrl', MOVIE_GENRES[0])
  53. oGui.addDir(SITE_IDENTIFIER, MOVIE_GENRES[1], 'Films Genre', 'genres.png', oOutputParameterHandler)
  54. #showGenre n'a pas besoin d'une url pour cette methode
  55.  
  56. oOutputParameterHandler = cOutputParameterHandler()
  57. oOutputParameterHandler.addParameter('siteUrl', SERIE_SERIES[0])
  58. oGui.addDir(SITE_IDENTIFIER, SERIE_SERIES[1], 'Series', 'series.png', oOutputParameterHandler)
  59.  
  60. oGui.setEndOfDirectory() #ferme l'affichage
  61.  
  62. def showSearch(): #function de recherche
  63. oGui = cGui()
  64.  
  65. sSearchText = oGui.showKeyBoard() #apelle le clavier xbmx
  66. if (sSearchText != False):
  67. sUrl = URL_SEARCH[0] + sSearchText #modifi l'url de recherche
  68. showMovies(sUrl) #apelle la function qui pouras lire la page de resultats
  69. oGui.setEndOfDirectory()
  70. return
  71.  
  72.  
  73. def showGenre(): #affiche les genres
  74. oGui = cGui()
  75.  
  76. #juste a entrer les caterories et les liens qui vont bien
  77. liste = []
  78. liste.append( ['Action','http://sokrostream.biz/genre/action'] )
  79. liste.append( ['Animation','http://sokrostream.biz/genre/animation'] )
  80. liste.append( ['Aventure','http://sokrostream.biz/genre/aventure'] )
  81. liste.append( ['Biographique','http://sokrostream.biz/genre/biopic'] )
  82. liste.append( ['Comedie','http://sokrostream.biz/genre/comedie'] )
  83. liste.append( ['Drame','http://sokrostream.biz/genre/drame'] )
  84. liste.append( ['Epouvante-Horreur','http://sokrostream.biz/genre/epouvante-horreur'] )
  85. liste.append( ['Espionnage','http://sokrostream.biz/genre/espionnage'] )
  86. liste.append( ['Fantastique','http://sokrostream.biz/genre/fantastique'] )
  87. liste.append( ['Famille','http://sokrostream.biz/genre/famille'] )
  88. liste.append( ['Guerre','http://sokrostream.biz/genre/guerre'] )
  89. liste.append( ['Historique','http://sokrostream.biz/genre/historique'] )
  90. liste.append( ['Medical','http://sokrostream.biz/genre/medical'] )
  91. liste.append( ['Polcicier','http://sokrostream.biz/genre/policier'] )
  92. liste.append( ['Romance','http://sokrostream.biz/genre/romance'] )
  93. liste.append( ['Science-Fiction','http://sokrostream.biz/genre/science-fiction'] )
  94. liste.append( ['Thriller','http://sokrostream.biz/genre/thriller'] )
  95. liste.append( ['Western','http://sokrostream.biz/genre/western'] )
  96.  
  97. for sTitle,sUrl in liste:#boucle
  98.  
  99. oOutputParameterHandler = cOutputParameterHandler()
  100. oOutputParameterHandler.addParameter('siteUrl', sUrl)#sortie de l'url en parametre
  101. oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler)
  102. #ajouter un dossier vers la function showMovies avec le titre de chaque categorie.
  103.  
  104. oGui.setEndOfDirectory()
  105.  
  106.  
  107. def showMovies(sSearch = ''):
  108. oGui = cGui() #ouvre l'affichage
  109. if sSearch:#si une url et envoyer directement grace a la function showSearch
  110. sUrl = sSearch
  111. else:
  112. oInputParameterHandler = cInputParameterHandler()
  113. sUrl = oInputParameterHandler.getValue('siteUrl') # recupere l'url sortie en parametre
  114.  
  115. oRequestHandler = cRequestHandler(sUrl) # envoye une requete a l'url
  116. sHtmlContent = oRequestHandler.request() #requete aussi
  117.  
  118. sHtmlContent = sHtmlContent.replace('<span class="likeThis">', '').replace('</span>','')
  119. #la function replace et pratique pour supprimer un code du resultat
  120.  
  121. sPattern = 'class="movie movie-block"><img src="([^<]+)" alt=".+?" title="([^<]+)"/>.+?<h2 onclick="window.location.href=\'([^<]+)\'">.+?<div style="color:#F29000">.+?<div.+?>(.+?)</div>'
  122. #pour faire simple recherche ce bout de code dans le code source de l'url
  123. #- ([^<]+) je veut cette partie de code mais y a une suite
  124. #- .+? je ne veut pas cette partis et peux importe ceux qu'elle contient
  125. #- (.+?) je veut cette partis et c'est la fin
  126.  
  127. oParser = cParser()
  128. aResult = oParser.parse(sHtmlContent, sPattern)
  129. # le plus simple et de faire un print aResult
  130. # dans le fichier log d'xbmc vous pourez voir un array de ce que recupere le script
  131. # et modifier sPattern si besoin
  132. print aResult #Commenter ou supprimer cette ligne une foix fini
  133.  
  134. if (aResult[0] == True):
  135. total = len(aResult[1])
  136. #dialog barre de progression
  137. dialog = cConfig().createDialog(SITE_NAME)
  138.  
  139. for aEntry in aResult[1]:
  140. cConfig().updateDialog(dialog, total) #dialog update
  141.  
  142. #L'array affiche vos info dans l'orde de sPattern en commencant a 0
  143. sTitle = aEntry[1]
  144. oOutputParameterHandler = cOutputParameterHandler()
  145. oOutputParameterHandler.addParameter('siteUrl', str(aEntry[2])) #sortie de l'url
  146. oOutputParameterHandler.addParameter('sMovieTitle', str(aEntry[1])) #sortie du titre
  147. oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) #sortie du poster
  148.  
  149. if '/series' in sUrl:
  150. oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sTitle,'', aEntry[0], aEntry[3], oOutputParameterHandler)
  151. #addTV pour sortir les series tv (identifiant, function, titre, icon, poster, description, sortie parametre)
  152. else:
  153. oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', aEntry[0], aEntry[3], oOutputParameterHandler)
  154. #addMovies pour sortir les films (identifiant, function, titre, icon, poster, description, sortie parametre)
  155.  
  156. #il existe aussis addMisc(identifiant, function, titre, icon, poster, description, sortie parametre)
  157. #la difference et pour les metadonner serie, films ou sans
  158.  
  159. cConfig().finishDialog(dialog)# fin du dialog
  160.  
  161. sNextPage = __checkForNextPage(sHtmlContent)#cherche la page suivante
  162. if (sNextPage != False):
  163. oOutputParameterHandler = cOutputParameterHandler()
  164. oOutputParameterHandler.addParameter('siteUrl', sNextPage)
  165. oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler)
  166. #Ajoute une entree pour le lien Next | pas de addMisc pas de poster et de description inutile donc
  167.  
  168. if not sSearch:
  169. oGui.setEndOfDirectory() #ferme l'affichage
  170.  
  171.  
  172. def __checkForNextPage(sHtmlContent): #cherche la page suivante
  173. oParser = cParser()
  174. sPattern = '<div class="navigation".+? <span.+? <a href="(.+?)">'
  175. aResult = oParser.parse(sHtmlContent, sPattern)
  176. print aResult #affiche le result dans le log
  177. if (aResult[0] == True):
  178. return aResult[1][0]
  179.  
  180. return False
  181.  
  182.  
  183. def showHosters():# recherche et affiche les hotes
  184. oGui = cGui() #ouvre l'affichage
  185. oInputParameterHandler = cInputParameterHandler() #apelle l'entree de paramettre
  186. sUrl = oInputParameterHandler.getValue('siteUrl') # apelle siteUrl
  187. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') #apelle le titre
  188. sThumbnail = oInputParameterHandler.getValue('sThumbnail') # apelle le poster
  189.  
  190. oRequestHandler = cRequestHandler(sUrl) #requete sur l'url
  191. sHtmlContent = oRequestHandler.request(); #requete sur l'url
  192. sHtmlContent = sHtmlContent.replace('<iframe src="//www.facebook.com/','').replace('<iframe src=\'http://creative.rev2pub.com','')
  193. #supprimer a l'aide de replace toute les entrer qui corresponde a votre recherche mais ne doivent pas etre pris en compte
  194.  
  195. oParser = cParser()
  196. sPattern = '<iframe.+?src="(.+?)"'
  197. #ici nous cherchont toute les sources iframe
  198. aResult = oParser.parse(sHtmlContent, sPattern)
  199. #penser a faire un print aResult pour verifier
  200.  
  201. #si un lien ne s'affiche pas peux etre que l'hote n'est pas supporte par l'addon
  202. if (aResult[0] == True):
  203. for aEntry in aResult[1]:
  204.  
  205. sHosterUrl = str(aEntry)
  206. oHoster = cHosterGui().checkHoster(sHosterUrl) #recherche l'hote dans l'addon
  207. if (oHoster != False):
  208. oHoster.setDisplayName(sMovieTitle) #nom affiche
  209. oHoster.setFileName(sMovieTitle) # idem
  210. cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail)
  211. #affiche le lien (oGui, oHoster, url du lien, poster)
  212.  
  213. oGui.setEndOfDirectory() #fin
  214.  
  215. def seriesHosters(): #cherche les episode de series
  216. oGui = cGui()
  217. oInputParameterHandler = cInputParameterHandler()
  218. sUrl = oInputParameterHandler.getValue('siteUrl')
  219. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  220. sThumbnail = oInputParameterHandler.getValue('sThumbnail')
  221.  
  222. oRequestHandler = cRequestHandler(sUrl)
  223. sHtmlContent = oRequestHandler.request();
  224. sHtmlContent = sHtmlContent.replace('<iframe src="//www.facebook.com/','').replace('<iframe src=\'http://creative.rev2pub.com','')
  225.  
  226. sPattern = '<dd><a href="([^<]+)" class="zoombox.+?" title="(.+?)"><button class="btn">.+?</button></a></dd>'
  227. oParser = cParser()
  228. aResult = oParser.parse(sHtmlContent, sPattern)
  229. if (aResult[0] == True):
  230. for aEntry in aResult[1]:
  231.  
  232. sHosterUrl = str(aEntry[0])
  233. oHoster = cHosterGui().checkHoster(sHosterUrl)
  234. if (oHoster != False):
  235. oHoster.setDisplayName(aEntry[1])
  236. oHoster.setFileName(aEntry[1])
  237. cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail)
  238.  
  239. oGui.setEndOfDirectory()
  240.  
  241. #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