Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.43 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Venom.
  3. from resources.lib.gui.hoster import cHosterGui
  4. from resources.lib.gui.gui import cGui
  5. from resources.lib.handler.inputParameterHandler import cInputParameterHandler
  6. from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
  7. from resources.lib.handler.requestHandler import cRequestHandler
  8. from resources.lib.config import cConfig
  9. from resources.lib.parser import cParser
  10. from resources.lib.util import cUtil
  11. import xbmcgui
  12. import re
  13.  
  14. SITE_IDENTIFIER = 'full_stream_org'
  15. SITE_NAME = 'Full-Stream'
  16. SITE_DESC = 'Films, Séries & Animés en Streaming HD'
  17.  
  18. URL_MAIN = 'http://full-stream.su/'
  19. UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0'
  20.  
  21. MOVIE_NEWS = (URL_MAIN, 'showMovies')
  22. MOVIE_NOTES = (URL_MAIN + 'movie/rating/', 'showMovies')
  23. MOVIE_VIEWS = (URL_MAIN + 'movie/news_read/', 'showMovies')
  24. MOVIE_COMMENTS = (URL_MAIN + 'movie/comm_num/', 'showMovies')
  25. MOVIE_GENRES = (True, 'showGenres')
  26. MOVIE_HD = (URL_MAIN + 'quality/Haute-qualité/', 'showMovies')
  27.  
  28. SERIE_NEWS = (URL_MAIN + 'seriestv/', 'showMovies')
  29. SERIE_VFS = (URL_MAIN + 'seriestv/vf/', 'showMovies')
  30. SERIE_VOSTFRS = (URL_MAIN + 'seriestv/vostfr/', 'showMovies')
  31.  
  32. URL_SEARCH = (URL_MAIN + 'index.php?do=search&subaction=search&search_start=0&full_search=0&result_from=1&titleonly=3&story=', 'showMovies')
  33. URL_SEARCH_MOVIES = (URL_MAIN + 'index.php?do=search&subaction=search&search_start=0&full_search=0&result_from=1&titleonly=3&story=', 'showMovies')
  34. URL_SEARCH_SERIES = (URL_MAIN + 'index.php?do=search&subaction=search&search_start=0&full_search=0&result_from=1&titleonly=3&story=', 'showMovies')
  35. FUNCTION_SEARCH = 'showMovies'
  36.  
  37. def load():
  38. oGui = cGui()
  39.  
  40. oOutputParameterHandler = cOutputParameterHandler()
  41. oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
  42. oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler)
  43.  
  44. oOutputParameterHandler = cOutputParameterHandler()
  45. oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0])
  46. oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films (Derniers ajouts)', 'films_news.png', oOutputParameterHandler)
  47.  
  48. oOutputParameterHandler = cOutputParameterHandler()
  49. oOutputParameterHandler.addParameter('siteUrl', MOVIE_GENRES[0])
  50. oGui.addDir(SITE_IDENTIFIER, MOVIE_GENRES[1], 'Films (Genres)', 'films_genres.png', oOutputParameterHandler)
  51.  
  52. oOutputParameterHandler = cOutputParameterHandler()
  53. oOutputParameterHandler.addParameter('siteUrl', MOVIE_NOTES[0])
  54. oGui.addDir(SITE_IDENTIFIER, MOVIE_NOTES[1], 'Films (Les plus Notés)', 'films_notes.png', oOutputParameterHandler)
  55.  
  56. oOutputParameterHandler = cOutputParameterHandler()
  57. oOutputParameterHandler.addParameter('siteUrl', MOVIE_VIEWS[0])
  58. oGui.addDir(SITE_IDENTIFIER, MOVIE_VIEWS[1], 'Films (Les plus Vus)', 'films_views.png', oOutputParameterHandler)
  59.  
  60. oOutputParameterHandler = cOutputParameterHandler()
  61. oOutputParameterHandler.addParameter('siteUrl', MOVIE_COMMENTS[0])
  62. oGui.addDir(SITE_IDENTIFIER, MOVIE_COMMENTS[1], 'Films (Les plus Commentés)', 'films_comments.png', oOutputParameterHandler)
  63.  
  64. oOutputParameterHandler = cOutputParameterHandler()
  65. oOutputParameterHandler.addParameter('siteUrl', SERIE_NEWS[0])
  66. oGui.addDir(SITE_IDENTIFIER, SERIE_NEWS[1], 'Séries (Derniers ajouts)', 'series_news.png', oOutputParameterHandler)
  67.  
  68. oOutputParameterHandler = cOutputParameterHandler()
  69. oOutputParameterHandler.addParameter('siteUrl', SERIE_VFS[0])
  70. oGui.addDir(SITE_IDENTIFIER, SERIE_VFS[1], 'Séries (VF)', 'series_vf.png', oOutputParameterHandler)
  71.  
  72. oOutputParameterHandler = cOutputParameterHandler()
  73. oOutputParameterHandler.addParameter('siteUrl', SERIE_VOSTFRS[0])
  74. oGui.addDir(SITE_IDENTIFIER, SERIE_VOSTFRS[1], 'Séries (VOSTFR)', 'series_vostfr.png', oOutputParameterHandler)
  75.  
  76. oGui.setEndOfDirectory()
  77.  
  78. def showSearch():
  79. oGui = cGui()
  80.  
  81. sSearchText = oGui.showKeyBoard()
  82. if (sSearchText != False):
  83. sUrl = URL_SEARCH[0] + sSearchText
  84. showMovies(sUrl)
  85. oGui.setEndOfDirectory()
  86. return
  87.  
  88. def showGenres():
  89. oGui = cGui()
  90.  
  91. liste = []
  92. liste.append( ['Action',URL_MAIN + 'film-action/'] )
  93. liste.append( ['Aventure',URL_MAIN + 'film-aventure/'] )
  94. liste.append( ['Animation',URL_MAIN + 'film-animation/'] )
  95. liste.append( ['Arts Martiaux',URL_MAIN + 'film-arts-martiaux/'] )
  96. liste.append( ['Biographie',URL_MAIN + 'film-biographie/'] )
  97. liste.append( ['Box-office',URL_MAIN + 'film-box-office/'] )
  98. liste.append( ['Comédie',URL_MAIN + 'film-comedie/'] )
  99. liste.append( ['Comédie Dramatique',URL_MAIN + 'film-comedie-dramatique/'] )
  100. liste.append( ['Dramatique',URL_MAIN + 'film-dramatique/'] )
  101. liste.append( ['Documentaire',URL_MAIN + 'film-documentaire/'] )
  102. liste.append( ['Familial',URL_MAIN + 'film-familial/'] )
  103. liste.append( ['Fantastique',URL_MAIN + 'fantastique/'] )
  104. liste.append( ['Espionnage',URL_MAIN + 'film-espionnage'] )
  105. liste.append( ['Historique',URL_MAIN + 'film-historique/'] )
  106. liste.append( ['Horreur',URL_MAIN + 'film-horreur/'] )
  107. liste.append( ['Musique',URL_MAIN + 'film-musical/'] )
  108. liste.append( ['Policier',URL_MAIN + 'film-policier/'] )
  109. liste.append( ['Romance',URL_MAIN + 'film-romance/'] )
  110. liste.append( ['Science-Fiction',URL_MAIN + 'film-science-fiction/'] )
  111. liste.append( ['Sport',URL_MAIN + 'film-sport/'] )
  112. liste.append( ['Thriller',URL_MAIN + 'film-thriller/'] )
  113. liste.append( ['Western',URL_MAIN + 'film-western/'] )
  114. liste.append( ['En VOSTFR',URL_MAIN + 'xfsearch/VOSTFR/'] )
  115.  
  116. for sTitle,sUrl in liste:
  117.  
  118. oOutputParameterHandler = cOutputParameterHandler()
  119. oOutputParameterHandler.addParameter('siteUrl', sUrl)
  120. oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler)
  121.  
  122. oGui.setEndOfDirectory()
  123.  
  124.  
  125. def showMovies(sSearch = ''):
  126. oGui = cGui()
  127. oInputParameterHandler = cInputParameterHandler()
  128.  
  129. dlenewssortby = False
  130. sType = ''
  131.  
  132. if sSearch:
  133. sUrl = sSearch
  134.  
  135. #partie en test
  136. oInputParameterHandler = cInputParameterHandler()
  137. sType = oInputParameterHandler.getValue('type')
  138.  
  139. else:
  140. sUrl = oInputParameterHandler.getValue('siteUrl')
  141.  
  142. # sPattern = 'fullstreaming">.*?<img src="(.+?)".+?<h3.+?><a href="(.+?)">(.+?)<\/a>.+?(?:<a href=".quality.+?">(.+?)<\/a>.+?)*<span style="font-family:.+?>(.+?)<\/span>'
  143. sPattern = 'fullstreaming".*?img src="(.+?)".+?href="(.+?)">(.+?)<\/a>.*?(?:Version</strong> :([^<]+)<hr/>.*?)*style="font-family:.*?>(.+?)<\/span>'
  144. #recuperation des tris
  145.  
  146. # les plus noter dlenewssortby=rating&dledirection=desc&set_new_sort=dle_sort_cat&set_direction_sort=dle_direction_cat
  147. # les plus vue dlenewssortby=news_read&dledirection=desc&set_new_sort=dle_sort_cat&set_direction_sort=dle_direction_cat
  148. #les plus commenter dlenewssortby=comm_num&dledirection=desc&set_new_sort=dle_sort_main&set_direction_sort=dle_direction_main
  149.  
  150. if ("rating" in sUrl or "news_read" in sUrl or "comm_num" in sUrl):
  151.  
  152. oRequestHandler = cRequestHandler(URL_MAIN + 'movie')
  153. oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
  154.  
  155. oRequestHandler.addParameters('dledirection', 'desc')
  156. oRequestHandler.addParameters('set_new_sort', 'dle_sort_cat')
  157. oRequestHandler.addParameters('set_direction_sort', 'dle_direction_cat')
  158.  
  159. if ("rating" in sUrl):
  160. dlenewssortby = "rating"
  161. elif ("news_read" in sUrl):
  162. dlenewssortby = "news_read"
  163. elif ("comm_num" in sUrl):
  164. dlenewssortby = "comm_num"
  165.  
  166. oRequestHandler.addParameters('dlenewssortby', dlenewssortby)
  167.  
  168. else :
  169. oRequestHandler = cRequestHandler(sUrl)
  170.  
  171. if sType:
  172. if sType == "film":
  173. oRequestHandler.addParameters('catlist[]', '43')
  174. if sType == "serie":
  175. oRequestHandler.addParameters('catlist[]', '2')
  176. if sType == "anime":
  177. oRequestHandler.addParameters('catlist[]', '36')
  178.  
  179. if oInputParameterHandler.getValue('dlenewssortby'):
  180.  
  181. dlenewssortby = oInputParameterHandler.getValue('dlenewssortby')
  182. oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
  183. oRequestHandler.addParameters('dlenewssortby', dlenewssortby)
  184. oRequestHandler.addParameters('dledirection', 'desc')
  185. oRequestHandler.addParameters('set_new_sort', 'dle_sort_cat')
  186. oRequestHandler.addParameters('set_direction_sort', 'dle_direction_cat')
  187.  
  188. sHtmlContent = oRequestHandler.request()
  189. #cConfig().log(sHtmlContent)
  190. oParser = cParser()
  191. aResult = oParser.parse(sHtmlContent, sPattern)
  192.  
  193. if (aResult[0] == False):
  194. oGui.addText(SITE_IDENTIFIER)
  195.  
  196. if (aResult[0] == True):
  197. total = len(aResult[1])
  198. dialog = cConfig().createDialog(SITE_NAME)
  199. for aEntry in aResult[1]:
  200. cConfig().updateDialog(dialog, total)
  201. if dialog.iscanceled():
  202. break
  203.  
  204. sThumb = str(aEntry[0])#.replace('/IMG/full-stream.php?src=', '')
  205. if sThumb.startswith('/'):
  206. sThumb = URL_MAIN[:-1] + sThumb
  207. # sThumb = sThumb.split('&')[0]
  208.  
  209. sDesc = aEntry[4]
  210. sQual = str(aEntry[3]).replace('Haute-qualité', 'HQ').replace(' ', '')
  211. sTitle = str(aEntry[2])
  212. sDisplayTitle = sTitle
  213. if (aEntry[3]):
  214. sDisplayTitle = sTitle + ' (' + sQual + ')'
  215.  
  216. #Si recherche et trop de resultat, on nettoye
  217. if sSearch and total > 2:
  218. if cUtil().CheckOccurence(sUrl.replace(URL_SEARCH[0], ''), aEntry[2]) == 0:
  219. continue
  220.  
  221. oOutputParameterHandler = cOutputParameterHandler()
  222. oOutputParameterHandler.addParameter('siteUrl', str(aEntry[1]))
  223. oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
  224. oOutputParameterHandler.addParameter('sThumb', sThumb)
  225.  
  226. if '/seriestv/' in sUrl or 'saison' in sTitle or re.match('.+?saison [0-9]+', sTitle, re.IGNORECASE):
  227. oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
  228. else:
  229. oGui.addMovie(SITE_IDENTIFIER, 'showLink', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
  230.  
  231. cConfig().finishDialog(dialog)
  232.  
  233. sNextPage = __checkForNextPage(sHtmlContent)
  234. if (sNextPage != False):
  235. oOutputParameterHandler = cOutputParameterHandler()
  236. oOutputParameterHandler.addParameter('siteUrl', sNextPage)
  237. oOutputParameterHandler.addParameter('dlenewssortby', dlenewssortby)
  238. oGui.addNext(SITE_IDENTIFIER, 'showNext', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler)
  239.  
  240. if not sSearch:
  241. oGui.setEndOfDirectory()
  242.  
  243. def __checkForNextPage(sHtmlContent):
  244. sPattern = '<link rel="next" href="(.+?)">'
  245. oParser = cParser()
  246. aResult = oParser.parse(sHtmlContent, sPattern)
  247. if (aResult[0] == True):
  248. return aResult[1][0]
  249.  
  250. return False
  251.  
  252. def showLink():
  253. oGui = cGui()
  254. oInputParameterHandler = cInputParameterHandler()
  255. sUrl = oInputParameterHandler.getValue('siteUrl')
  256. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  257. sThumb = oInputParameterHandler.getValue('sThumb')
  258.  
  259. oRequestHandler = cRequestHandler(sUrl)
  260. sHtmlContent = oRequestHandler.request()
  261.  
  262.  
  263. sPattern = '<div class=".+?tab"><i class="fa fa-play-circle-o"><\/i>(.+?)<\/div>|<a href="([^"]+)" title=".+?" target=".+?layer" class="fstab"><i class="fa fa-youtube-play"></i>(.+?)</a>'
  264.  
  265. oParser = cParser()
  266. aResult = oParser.parse(sHtmlContent, sPattern)
  267.  
  268. if (aResult[0] == True):
  269. total = len(aResult[1])
  270. dialog = cConfig().createDialog(SITE_NAME)
  271. for aEntry in aResult[1]:
  272. cConfig().updateDialog(dialog, total)
  273. if dialog.iscanceled():
  274. break
  275.  
  276. if (aEntry[0]):
  277. oGui.addText(SITE_IDENTIFIER, '[COLOR red]' + str(aEntry[0]) + '[/COLOR]')
  278.  
  279. else:
  280. sUrl2 = URL_MAIN[:-1]+aEntry[1]
  281. sTitle = '%s [%s]' % (sMovieTitle, aEntry[2])
  282.  
  283. oOutputParameterHandler = cOutputParameterHandler()
  284. oOutputParameterHandler.addParameter('siteUrl', sUrl2)
  285. oOutputParameterHandler.addParameter('referer', sUrl)
  286. oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
  287. oOutputParameterHandler.addParameter('sThumb', sThumb)
  288. oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb,'', oOutputParameterHandler)
  289.  
  290. cConfig().finishDialog(dialog)
  291.  
  292. oGui.setEndOfDirectory()
  293.  
  294. def showHosters():
  295. oGui = cGui()
  296. oInputParameterHandler = cInputParameterHandler()
  297. sUrl = oInputParameterHandler.getValue('siteUrl')
  298. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  299. sThumb = oInputParameterHandler.getValue('sThumb')
  300. sRef = oInputParameterHandler.getValue('referer')
  301.  
  302. oParser = cParser()
  303.  
  304. oRequest = cRequestHandler(sUrl)
  305. oRequest.addHeaderEntry('User-Agent', UA)
  306. oRequest.addHeaderEntry('Referer', sRef)
  307. sHtmlContent = oRequest.request()
  308.  
  309.  
  310. sPattern ='; eval\(unescape(.+?);</script>'
  311. aResult = oParser.parse(sHtmlContent, sPattern)
  312. if (aResult[0] == True):
  313. sHtmlContent = cUtil().unescape(aResult[1][0])
  314. sPattern = 'video-container.+?"(http.+?)"'
  315. aResult = oParser.parse(sHtmlContent, sPattern)
  316. if (aResult[0] == True):
  317. sHosterUrl = aResult[1][0]
  318.  
  319.  
  320. oHoster = cHosterGui().checkHoster(sHosterUrl)
  321. if (oHoster != False):
  322. sDisplayTitle = cUtil().DecoTitle(sMovieTitle)
  323. oHoster.setDisplayName(sDisplayTitle)
  324. oHoster.setFileName(sMovieTitle)
  325. cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)
  326.  
  327. oGui.setEndOfDirectory()
  328.  
  329. def showLinkSerie():
  330. oGui = cGui()
  331. oInputParameterHandler = cInputParameterHandler()
  332. sUrl = oInputParameterHandler.getValue('siteUrl')
  333. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  334. sThumb = oInputParameterHandler.getValue('sThumb')
  335. sReftitle = oInputParameterHandler.getValue('reftitle')
  336.  
  337.  
  338. oParser = cParser()
  339. oRequestHandler = cRequestHandler(sUrl)
  340. sHtmlContent = oRequestHandler.request()
  341.  
  342. sPattern ='<div id="'+sReftitle+'" class="fullsfeature">(.+?)/a></ul>'
  343. aResult1 = oParser.parse(sHtmlContent, sPattern)
  344.  
  345. sPattern = '<a href="([^"]+)" target=".+?layer" class="fsctab".+?</span>(.+?)<'
  346.  
  347. aResult = oParser.parse(aResult1[1], sPattern)
  348.  
  349. if (aResult[0] == True):
  350. total = len(aResult[1])
  351. dialog = cConfig().createDialog(SITE_NAME)
  352. for aEntry in aResult[1]:
  353. cConfig().updateDialog(dialog, total)
  354. if dialog.iscanceled():
  355. break
  356.  
  357. sUrl2 = URL_MAIN[:-1]+aEntry[0]
  358. sHost = re.sub('Ep:\d+','',aEntry[1])
  359. sTitle = '%s [%s]' % (sMovieTitle, sHost)
  360.  
  361. oOutputParameterHandler = cOutputParameterHandler()
  362. oOutputParameterHandler.addParameter('siteUrl', sUrl2)
  363. oOutputParameterHandler.addParameter('referer', sUrl)
  364. oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
  365. oOutputParameterHandler.addParameter('sThumb', sThumb)
  366. oGui.addTV(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb,'', oOutputParameterHandler)
  367.  
  368. cConfig().finishDialog(dialog)
  369.  
  370. oGui.setEndOfDirectory()
  371.  
  372. def showEpisode():
  373. oGui = cGui()
  374. oInputParameterHandler = cInputParameterHandler()
  375. sUrl = oInputParameterHandler.getValue('siteUrl')
  376. sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
  377. sThumb = oInputParameterHandler.getValue('sThumb')
  378.  
  379. oRequestHandler = cRequestHandler(sUrl)
  380. sHtmlContent = oRequestHandler.request()
  381. oParser = cParser()
  382.  
  383. sPattern = '<div class=".+?tab"><i class="fa fa-play-circle-o"></i>(.+?)<\/div>|title="([^"]+)" data-rel="([^"]+)"'
  384.  
  385. aResult = re.findall(sPattern,sHtmlContent)
  386.  
  387. if (aResult):
  388. total = len(aResult)
  389. dialog = cConfig().createDialog(SITE_NAME)
  390. for aEntry in aResult:
  391. cConfig().updateDialog(dialog, total)
  392. if dialog.iscanceled():
  393. break
  394.  
  395. if (aEntry[0]):
  396. oGui.addText(SITE_IDENTIFIER, '[COLOR red]' + str(aEntry[0]) + '[/COLOR]')
  397. else:
  398.  
  399. sTitle = '%s %s' % (sMovieTitle.replace('VOSTFR','').replace('VF','').replace('VOST',''), aEntry[1])
  400.  
  401. oOutputParameterHandler = cOutputParameterHandler()
  402. oOutputParameterHandler.addParameter('siteUrl', sUrl)
  403. oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
  404. oOutputParameterHandler.addParameter('sThumb', sThumb)
  405. oOutputParameterHandler.addParameter('reftitle', aEntry[2])
  406. oGui.addTV(SITE_IDENTIFIER, 'showLinkSerie', sTitle, '', sThumb,'', oOutputParameterHandler)
  407.  
  408. cConfig().finishDialog(dialog)
  409.  
  410. oGui.setEndOfDirectory()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement