astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/sites/iptv_gratuit.py

252 lines
10 KiB
Python

# -*- coding: utf-8 -*-
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
import re
from resources.lib.gui.gui import cGui
from resources.lib.handler.inputParameterHandler import cInputParameterHandler
from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
from resources.lib.parser import cParser
from resources.sites.freebox import getHtml, showWeb, play__
from resources.lib.comaddon import progress, VSlog
SITE_IDENTIFIER = 'iptv_gratuit'
SITE_NAME = 'IptvGratuit'
SITE_DESC = 'Regarder la télévision'
URL_MAIN = 'https://iptvgratuit.com/'
IPTV_WORLD = URL_MAIN + 'iptv-world/'
IPTV_FRANCE = URL_MAIN + 'france/'
IPTV_AFRIQUE = URL_MAIN + 'iptv-afrique/'
IPTV_ALLEMAGNE = URL_MAIN + 'iptv-allemagne/'
IPTV_ANGLETERRE = URL_MAIN + 'iptv-uk/'
IPTV_ARABIC = URL_MAIN + 'iptv-arabic/'
# IPTV_AUTRICHE = URL_MAIN + 'iptv-autriche/'
IPTV_BELGIQUE = URL_MAIN + 'iptv-belgique/'
IPTV_BRESIL = URL_MAIN + 'iptv-bresil/'
IPTV_CANADA = URL_MAIN + 'iptv-canada/'
IPTV_CHINE = URL_MAIN + 'iptv-chine/'
IPTV_ESPAGNE = URL_MAIN + 'iptv-espagne/'
IPTV_HOLLANDE = URL_MAIN + 'iptv-hollande/'
IPTV_ITALIE = URL_MAIN + 'iptv-italie/'
IPTV_PORTUGAL = URL_MAIN + 'iptv-portugal/'
IPTV_SUISSE = URL_MAIN + 'iptv-suisse/'
IPTV_RUSSIE = URL_MAIN + 'iptv-russie/'
IPTV_TURK = URL_MAIN + 'iptv-turk/'
IPTV_USA = URL_MAIN + 'iptv-usa/'
IPTV_SPORT = URL_MAIN + 'iptv-sport/'
IPTV_VOD = URL_MAIN + 'iptv-vod/'
def load():
oGui = cGui()
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', URL_MAIN)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'Dernieres listes', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_WORLD)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'Dernieres listes mondial', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_FRANCE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes France', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_AFRIQUE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Afrique', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_ALLEMAGNE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Allemande', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_ANGLETERRE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Anglaise', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_ARABIC)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Arabe', 'tv.png', oOutputParameterHandler)
# oOutputParameterHandler = cOutputParameterHandler()
# oOutputParameterHandler.addParameter('siteUrl', IPTV_AUTRICHE)
# oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Autriche', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_BELGIQUE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Belgique', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_BRESIL)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Brésil', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_CANADA)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Canada', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_CHINE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Chine', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_ESPAGNE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Espagne', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_HOLLANDE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Hollande', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_ITALIE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Italie', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_PORTUGAL)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Portugal', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_SUISSE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Suisse', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_SUISSE)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Russie', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_TURK)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes Turque', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_USA)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes USA', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_SPORT)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes SPORT', 'tv.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', IPTV_VOD)
oGui.addDir(SITE_IDENTIFIER, 'showDailyList', 'listes VOD', 'tv.png', oOutputParameterHandler)
oGui.setEndOfDirectory()
def showDailyList():
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sUrl = oInputParameterHandler.getValue('siteUrl')
oParser = cParser()
sHtmlContent = getHtml(sUrl)
sPattern = '<h2 class="entry-title"><a href="(.+?)" rel="bookmark">(.+?)</a>'
aResult = oParser.parse(sHtmlContent, sPattern)
if (aResult[0] == True):
total = len(aResult[1])
progress_ = progress().VScreate(SITE_NAME)
for aEntry in aResult[1]:
progress_.VSupdate(progress_, total)
if progress_.iscanceled():
break
sUrl2 = aEntry[0]
sTitle = aEntry[1]
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
oGui.addDir(SITE_IDENTIFIER, 'showAllPlaylist', sTitle, 'listes.png', oOutputParameterHandler)
progress_.VSclose(progress_)
sNextPage = __checkForNextPage(sHtmlContent)
if (sNextPage != False):
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', sNextPage)
number = re.search('pages/([0-9]+)', sNextPage).group(1)
oGui.addNext(SITE_IDENTIFIER, 'showDailyList', '[COLOR teal]Page ' + number + ' >>>[/COLOR]', oOutputParameterHandler)
oGui.setEndOfDirectory()
def __checkForNextPage(sHtmlContent):
oParser = cParser()
sPattern = 'class="next page-numbers" href="(.+?)"'
aResult = oParser.parse(sHtmlContent, sPattern)
if (aResult[0] == True):
return aResult[1][0]
return False
def showAllPlaylist(): # On recupere les differentes playlist si il y en a
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sUrl = oInputParameterHandler.getValue('siteUrl')
sTitle = oInputParameterHandler.getValue('sMovieTitle')
oParser = cParser()
sHtmlContent = getHtml(sUrl)
sPattern = '<a class="more-link" title="(.+?)".+?href="(.+?)"'
aResult = oParser.parse(sHtmlContent, sPattern)
if (aResult[0] == True):
sTitletest = ''
total = len(aResult[1])
progress_ = progress().VScreate(SITE_NAME)
for aEntry in aResult[1]:
progress_.VSupdate(progress_, total)
if progress_.iscanceled():
break
sTitle = aEntry[0]
sUrl2 = aEntry[1]
if (sTitle == sTitletest):
continue
else:
sTitletest = sTitle
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, '', oOutputParameterHandler)
progress_.VSclose(progress_)
oGui.setEndOfDirectory()
def showAllPlaylist2(): # On recupere les differentes playlist si il y en a
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sUrl = oInputParameterHandler.getValue('siteUrl')
sTitle = oInputParameterHandler.getValue('sMovieTitle')
sHtmlContent = getHtml(sUrl)
sUrl2 = getDownloadLink(sHtmlContent)
for url in sUrl2:
if 'download' in url:
VSlog('Redirect')
url = getRealLink(url)
oGui.addText(SITE_IDENTIFIER, url)
else:
oGui.addText(SITE_IDENTIFIER, 'rien')
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', sUrl)
oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, '', oOutputParameterHandler)
oGui.setEndOfDirectory()