From f2dd3998c8886f893318e3fc5709d8c9a9f66440 Mon Sep 17 00:00:00 2001 From: marc Date: Tue, 15 Oct 2024 02:22:22 +0200 Subject: [PATCH] [plugin.video.3cat]v1.0.0 --- .../.github/workflows/release.yml | 45 ++ .../LICENSE.txt | 0 plugin.video.3cat/README.md | 9 + .../addon.py | 14 +- .../addon.xml | 11 +- plugin.video.3cat/changelog.txt | 2 + .../resources/__init__.py | 0 plugin.video.3cat/resources/fanart.jpg | Bin 0 -> 62668 bytes plugin.video.3cat/resources/icon.png | Bin 0 -> 23405 bytes .../resource.language.ca_es/strings.po | 4 +- .../resource.language.de_de/strings.po | 4 +- .../resource.language.en_gb/strings.po | 4 +- .../resource.language.es_es/strings.po | 4 +- .../resource.language.nb_no/strings.po | 4 +- .../resources/lib/__init__.py | 0 .../resources/lib/tv3cat/DirAZemisio.py | 0 .../resources/lib/tv3cat/DirAZtots.py | 0 .../resources/lib/tv3cat/Home.py | 16 + .../resources/lib/tv3cat/Images.py | 0 .../resources/lib/tv3cat/Sections.py | 0 .../resources/lib/tv3cat/TV3Strings.py | 0 .../resources/lib/tv3cat/TV3cat.py | 373 ++++++++++ .../resources/lib/tv3cat/TestHtml.py | 31 + .../resources/lib/tv3cat/__init__.py | 0 plugin.video.3cat/resources/lib/ui/UI.py | 184 +++++ .../resources/lib/ui/__init__.py | 0 .../resources/lib/utils/Urls.py | 4 +- .../resources/lib/utils/Utils.py | 8 +- .../resources/lib/utils/__init__.py | 0 .../resources/lib/video/FolderVideo.py | 6 +- .../resources/lib/video/Video.py | 6 +- .../resources/lib/video/__init__.py | 0 .../resources/media/324_thumbnail.png | Bin .../resources/media/c33-super3_thumbnail.png | Bin .../resources/media/esports3_thumbnail.png | Bin .../resources/media/tv3_thumbnail.png | Bin plugin.video.tv3.cat/README.md | 9 - plugin.video.tv3.cat/changelog.txt | 91 --- plugin.video.tv3.cat/resources/fanart.jpg | Bin 114247 -> 0 bytes plugin.video.tv3.cat/resources/icon.png | Bin 31900 -> 0 bytes .../resources/lib/tv3cat/Home.py | 18 - .../resources/lib/tv3cat/TV3cat.py | 694 ------------------ plugin.video.tv3.cat/resources/lib/ui/UI.py | 247 ------- 43 files changed, 696 insertions(+), 1092 deletions(-) create mode 100644 plugin.video.3cat/.github/workflows/release.yml rename {plugin.video.tv3.cat => plugin.video.3cat}/LICENSE.txt (100%) create mode 100644 plugin.video.3cat/README.md rename {plugin.video.tv3.cat => plugin.video.3cat}/addon.py (67%) rename {plugin.video.tv3.cat => plugin.video.3cat}/addon.xml (79%) create mode 100644 plugin.video.3cat/changelog.txt rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/__init__.py (100%) create mode 100644 plugin.video.3cat/resources/fanart.jpg create mode 100644 plugin.video.3cat/resources/icon.png rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/language/resource.language.ca_es/strings.po (97%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/language/resource.language.de_de/strings.po (97%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/language/resource.language.en_gb/strings.po (97%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/language/resource.language.es_es/strings.po (97%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/language/resource.language.nb_no/strings.po (97%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/__init__.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/DirAZemisio.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/DirAZtots.py (100%) create mode 100644 plugin.video.3cat/resources/lib/tv3cat/Home.py rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/Images.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/Sections.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/TV3Strings.py (100%) create mode 100644 plugin.video.3cat/resources/lib/tv3cat/TV3cat.py create mode 100644 plugin.video.3cat/resources/lib/tv3cat/TestHtml.py rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/tv3cat/__init__.py (100%) create mode 100644 plugin.video.3cat/resources/lib/ui/UI.py rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/ui/__init__.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/utils/Urls.py (92%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/utils/Utils.py (89%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/utils/__init__.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/video/FolderVideo.py (57%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/video/Video.py (78%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/lib/video/__init__.py (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/media/324_thumbnail.png (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/media/c33-super3_thumbnail.png (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/media/esports3_thumbnail.png (100%) rename {plugin.video.tv3.cat => plugin.video.3cat}/resources/media/tv3_thumbnail.png (100%) delete mode 100644 plugin.video.tv3.cat/README.md delete mode 100644 plugin.video.tv3.cat/changelog.txt delete mode 100644 plugin.video.tv3.cat/resources/fanart.jpg delete mode 100644 plugin.video.tv3.cat/resources/icon.png delete mode 100644 plugin.video.tv3.cat/resources/lib/tv3cat/Home.py delete mode 100644 plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py delete mode 100644 plugin.video.tv3.cat/resources/lib/ui/UI.py diff --git a/plugin.video.3cat/.github/workflows/release.yml b/plugin.video.3cat/.github/workflows/release.yml new file mode 100644 index 0000000000..3dd9e7394f --- /dev/null +++ b/plugin.video.3cat/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Zip and Attach to Release + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Get repository name + id: repo-name + run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT + + - name: Get version number + id: version + uses: actions/github-script@v6 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const { owner, repo } = context.repo; + const release = await github.rest.repos.getRelease({ + owner, + repo, + release_id: context.payload.release.id + }); + return release.data.tag_name; + + - name: Create folder and zip content + run: | + mkdir ${{ steps.repo-name.outputs.REPO_NAME }} + rsync -av --exclude=${{ steps.repo-name.outputs.REPO_NAME }} . ${{ steps.repo-name.outputs.REPO_NAME }} + zip -r ${{ steps.repo-name.outputs.REPO_NAME }}-${{ steps.version.outputs.result }}.zip ${{ steps.repo-name.outputs.REPO_NAME }} + + - name: Upload release asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./${{ steps.repo-name.outputs.REPO_NAME }}-${{ steps.version.outputs.result }}.zip + asset_name: ${{ steps.repo-name.outputs.REPO_NAME }}-${{ steps.version.outputs.result }}.zip + asset_content_type: application/zip diff --git a/plugin.video.tv3.cat/LICENSE.txt b/plugin.video.3cat/LICENSE.txt similarity index 100% rename from plugin.video.tv3.cat/LICENSE.txt rename to plugin.video.3cat/LICENSE.txt diff --git a/plugin.video.3cat/README.md b/plugin.video.3cat/README.md new file mode 100644 index 0000000000..b678e7f0ac --- /dev/null +++ b/plugin.video.3cat/README.md @@ -0,0 +1,9 @@ +# plugin.video.3cat.cat +Kodi addon 3Cat. +Entertainment, news, sports, documentaries, etc from catalan television www.3cat.cat/3cat/ + +Complement per Kodi - XBMC. +Tota la programació de 3Cat. + + + diff --git a/plugin.video.tv3.cat/addon.py b/plugin.video.3cat/addon.py similarity index 67% rename from plugin.video.tv3.cat/addon.py rename to plugin.video.3cat/addon.py index d156731842..25d1167875 100644 --- a/plugin.video.tv3.cat/addon.py +++ b/plugin.video.3cat/addon.py @@ -1,22 +1,19 @@ -from __future__ import unicode_literals -from future import standard_library -standard_library.install_aliases() +import xbmc from builtins import str import sys import urllib.parse import xbmcplugin -import xbmc from resources.lib.ui.UI import UI +xbmc.log("plugin.video.3cat - addon.py") -xbmc.log("plugin.video.tv3.cat - addon.py") base_url = sys.argv[0] addon_handle = int(sys.argv[1]) xbmc.log(str(sys.argv[2][1:])) args = urllib.parse.parse_qs(sys.argv[2][1:]) -xbmc.log("plugin.video.tv3.cat - addon.py - args: ") +xbmc.log("plugin.video.3cat - addon.py - args: ") xbmc.log(str(args)) xbmcplugin.setContent(addon_handle, 'movies') @@ -24,10 +21,7 @@ mode = args.get('mode', None) url = args.get('url', ['']) - - ui = UI(base_url, addon_handle, args) - ui.run(mode, url) - + diff --git a/plugin.video.tv3.cat/addon.xml b/plugin.video.3cat/addon.xml similarity index 79% rename from plugin.video.tv3.cat/addon.xml rename to plugin.video.3cat/addon.xml index 921fabe89d..b74f30bf0d 100644 --- a/plugin.video.tv3.cat/addon.xml +++ b/plugin.video.3cat/addon.xml @@ -1,9 +1,10 @@ - + - - + + + video @@ -18,8 +19,8 @@ Toda la programación de TV3 a la carta.[CR]Las listas de los más vistos, destacados, programas ordenados de la A a la Z. [CR]Canales en directo: TV3cat, K33, Super3, 3/24, Esport3 ca GPL-2.0-or-later - https://github.com/jqandreu/plugin.video.tv3.cat - http://www.tv3.cat + https://github.com/mcr222/plugin.video.3cat + https://www.3cat.cat/3cat/ resources/icon.png resources/fanart.jpg diff --git a/plugin.video.3cat/changelog.txt b/plugin.video.3cat/changelog.txt new file mode 100644 index 0000000000..92bef9cd13 --- /dev/null +++ b/plugin.video.3cat/changelog.txt @@ -0,0 +1,2 @@ +v1.0.0 +- First version \ No newline at end of file diff --git a/plugin.video.tv3.cat/resources/__init__.py b/plugin.video.3cat/resources/__init__.py similarity index 100% rename from plugin.video.tv3.cat/resources/__init__.py rename to plugin.video.3cat/resources/__init__.py diff --git a/plugin.video.3cat/resources/fanart.jpg b/plugin.video.3cat/resources/fanart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14a1cb945b48dd0ffeb5a7e47bfc169acd6df1e2 GIT binary patch literal 62668 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%0A#mA}Gk=;sApt7o%Qbl3JFlQFsYuyvbE4)b9 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 0: + unique_temporades.add("Sense Temporada") + + for temporada in unique_temporades: + foldVideo = FolderVideo(temporada, str(programaId) + "_" + str(temporada), 'getlistvideos', '', '') + lFolderVideos.append(foldVideo) + + return lFolderVideos + + def extractImageIfAvailable(self, item, keyimatge): + # Extract image links if available + if 'imatges' in item and isinstance(item['imatges'], list): + for image in item['imatges']: + if 'text' in image and image['text'].startswith('http') \ + and image['rel_name'] == keyimatge: + return image['text'] + + # mode = getlistvideos + def getListVideos(self, url): + xbmc.log("plugin.video.3cat - get list videos " + str(url)) + (programaId, target_temporada) = url.split('_') + lVideos = [] + matching_items = [] + + for item in self.getProgramaData(programaId): + if item.get('temporades'): + # Only consider the first temporada + first_temporada = item['temporades'][0]['desc'] + if first_temporada == target_temporada: + matching_items.append(item) + elif target_temporada == "Sense Temporada": + matching_items.append(item) + + # Display results + if matching_items: + print(f"Items matching temporada '{target_temporada}':") + for item in matching_items: + img = self.extractImageIfAvailable(item, "KEYVIDEO") + video = Video(item['titol'], img, img, item.get('entradeta'), item['id'], item['durada']) + lVideos.append(video) + else: + print(f"No items found for temporada '{target_temporada}'") + + return lVideos + + + def getVideo(self, data): + linkvideo = None + media = data.get('media', {}) + + if type(media) is list and len(media) > 0: + media_dict = media[0] + linkvideo = media_dict.get('url', None) + else: + linkvideo = media.get('url', None) + + if linkvideo != None: + if type(linkvideo) is list and len(linkvideo) > 0: + linkvideo_item = linkvideo[0] + urlVideo = linkvideo_item.get('file', None) + + titol = data.get('informacio', {}).get('titol', None) + image = data.get('imatges', {}).get('url', None) + descripcio = data.get('informacio', {}).get('descripcio', None) + programa = data.get('informacio', {}).get('programa', None) + capitol = data.get('informacio', {}).get('capitol', None) + tematica = data.get('informacio', {}).get('tematica', {}).get('text', None) + data_emisio = data.get('informacio', {}).get('data_emissio', {}).get('text', None) + milisec = data.get('informacio', {}).get('durada', {}).get('milisegons', None) + durada = "" + + if milisec != None: + durada = milisec // 1000 + + + if descripcio == None: + descripcio = '' + else: + descripcio = descripcio.replace('
', '') + + header = "" + if programa != None: + if type(programa) is int or type(programa) is float: + programa = str(programa) + header = '[B]' + programa + '[/B]' + '[CR]' + + infolabels = {} + if data_emisio != None: + dt = data_emisio[0:10] + year = data_emisio[6:10] + infolabels['aired'] = dt + infolabels['year'] = year + header = header + dt + '[CR]' + + descripcio = header + descripcio + + if titol != None: + infolabels['title'] = titol + + + if capitol != None: + infolabels['episode'] = capitol + + + if descripcio != None: + infolabels['plot'] = descripcio + + if tematica != None: + infolabels['genre'] = tematica + + video = Video(titol, image, image, infolabels, urlVideo, durada ) + + return video + + else: + return None + + #mode = cercar + def search(self): + + keyboard = xbmc.Keyboard('', self.strs.get('cercar')) + keyboard.doModal() + if keyboard.isConfirmed() and keyboard.getText(): + search_string = keyboard.getText().replace(" ", "+") + url = "http://www.ccma.cat/tv3/alacarta/cercador/?items_pagina=15&profile=videos&text=" + search_string + + lVideos = self.getListVideos(url, True) + + return lVideos + diff --git a/plugin.video.3cat/resources/lib/tv3cat/TestHtml.py b/plugin.video.3cat/resources/lib/tv3cat/TestHtml.py new file mode 100644 index 0000000000..d967c193f5 --- /dev/null +++ b/plugin.video.3cat/resources/lib/tv3cat/TestHtml.py @@ -0,0 +1,31 @@ +import json + +from resources.lib.tv3cat.TV3cat import TV3cat +import urllib.request, urllib.parse, urllib.error +#un munt de testos de les diferents funcions usades + +tv3 = TV3cat("", "") +#tv3.listColeccions() +tv3.listProgrames("A") + +# temporades = tv3.getListTemporades('200164279') +# print(len(temporades)) +# for temp in temporades: +# print(temp.url) + +#capitols = tv3.getListVideos("200164279_17a Temporada") +#print(len(capitols)) +#for cap in capitols: +# print(cap.title + " " + cap.title + " " + str(cap.iconImage)) + +#videos = tv3.getListVideos("https://www.3cat.cat/3cat/bricoheroes/capitols/temporada/2/") +#print(len(videos)) +#print(videos[0]) +# videoId = 6176980 +# apiJsonUrl = "https://api-media.3cat.cat/pvideo/media.jsp?media=video&versio=vast&idint={}&profile=pc_3cat&format=dm".format( +# videoId) +# print(apiJsonUrl) +# with urllib.request.urlopen(apiJsonUrl) as response: +# data = response.read() +# json_data = json.loads(data) +# print(json_data['media']['url'][0]['file']) diff --git a/plugin.video.tv3.cat/resources/lib/tv3cat/__init__.py b/plugin.video.3cat/resources/lib/tv3cat/__init__.py similarity index 100% rename from plugin.video.tv3.cat/resources/lib/tv3cat/__init__.py rename to plugin.video.3cat/resources/lib/tv3cat/__init__.py diff --git a/plugin.video.3cat/resources/lib/ui/UI.py b/plugin.video.3cat/resources/lib/ui/UI.py new file mode 100644 index 0000000000..7681383b31 --- /dev/null +++ b/plugin.video.3cat/resources/lib/ui/UI.py @@ -0,0 +1,184 @@ +import json +from builtins import str +from builtins import object + +import urllib.request, urllib.parse, urllib.error + +from resources.lib.utils.Utils import buildUrl +from resources.lib.tv3cat.TV3cat import TV3cat +import xbmcaddon +import xbmcplugin +import xbmcgui +import xbmc +import xbmcvfs +import urllib.parse + +from resources.lib.video.Video import Video + +PROTOCOL = 'mpd' +DRM = 'com.widevine.alpha' +LICENSE_URL = 'https://cwip-shaka-proxy.appspot.com/no_auth' + + +class UI(object): + + def __init__(self, base_url, addon_handle, args): + xbmc.log("plugin.video.3cat classe UI - start init() ") + addon = xbmcaddon.Addon() + addon_path = xbmcvfs.translatePath(addon.getAddonInfo('path')) + self.tv3 = TV3cat(addon_path, addon) + self.base_url = base_url + self.addon_handle = addon_handle + self.args = args + self.mode = args.get('mode', None) + self.url = args.get('url', ['']) + xbmc.log("plugin.video.3cat classe UI - finish init()") + + + def run(self, mode, url): + xbmc.log("plugin.video.3cat classe UI - run() mode = " + str(mode) + ", url " + str(url)) + + if mode == None: + xbmc.log("plugin.video.3cat classe UI - mode = None") + lFolder = self.tv3.listHome() + + if len(lFolder) > 0: + self.listFolder(lFolder) + else: + xbmc.log("plugin.video.3cat - UI.run() Home - No existeixen elements") + + elif mode[0] == 'programes': + + lFolder = self.tv3.dirSections() + + if len(lFolder) > 0: + self.listFolder(lFolder) + else: + xbmc.log("plugin.video.3cat - UI.run() programes - No existeixen elements") + + elif mode[0] == 'sections': + + lFolder = self.tv3.programsSections(url[0]) + + if len(lFolder) > 0: + self.listFolder(lFolder) + else: + xbmc.log("plugin.video.3cat - UI.run() sections - No existeixen elements") + + elif mode[0] == 'directe': + + lVideos = self.tv3.listDirecte() + self.listVideos(lVideos) + + elif mode[0] == 'cercar': + + lVideos = self.tv3.search() + + if len(lVideos) > 0: + self.listVideos(lVideos) + else: + xbmc.log("plugin.video.3cat - UI.run() cercar - No s'ha trobat cap video") + + + elif mode[0] == 'getlistvideos': + lVideos = self.tv3.getListVideos(url[0]) + self.listVideos(lVideos) + + elif mode[0] == 'getProgrames': + xbmc.log("plugin.video.3cat - Programes") + lFolder = self.tv3.listProgrames(url[0]) + self.listFolder(lFolder) + + elif mode[0] == 'getTemporades': + xbmc.log("plugin.video.3cat - Temporades") + lFolder = self.tv3.getListTemporades(url[0]) + self.listFolder(lFolder) + + elif mode[0] == 'coleccions': + xbmc.log("plugin.video.3cat - Coleccions") + lFolder = self.tv3.listColeccions() + self.listFolder(lFolder) + + elif mode[0] == 'playVideo': + self.playVideo(url[0]) + + def listFolder(self, lFolderVideos): + xbmc.log("plugin.video.3cat classe UI - listFolder") + for folder in lFolderVideos: + + mode = folder.mode + name = folder.name + url = folder.url + iconImage = folder.iconImage + thumbImage = folder.thumbnailImage + + urlPlugin = buildUrl({'mode': mode, 'url': url}, self.base_url) + liz = xbmcgui.ListItem(name) + liz.setInfo(type="Video", infoLabels={"title": name}) + liz.setArt({'thumb': thumbImage, 'icon' : iconImage}) + + xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=urlPlugin, listitem=liz, isFolder=True) + xbmcplugin.endOfDirectory(self.addon_handle) + + def listVideos(self, lVideos): + xbmc.log("plugin.video.3cat - UI - listVideos - Numero videos: " + str(len(lVideos))) + + for video in lVideos: + # Create a list item with a text label + list_item = xbmcgui.ListItem(label=video.title) + # Set graphics (thumbnail, fanart, banner, poster, landscape etc.) for the list item. + # Here we use only poster for simplicity's sake. + # In a real-life plugin you may need to set multiple image types. + list_item.setArt({'poster': video.iconImage}) + list_item.setProperty('IsPlayable', 'true') + # Set additional info for the list item via InfoTag. + # 'mediatype' is needed for skin to display info for this ListItem correctly. + info_tag = list_item.getVideoInfoTag() + info_tag.setMediaType('movie') + info_tag.setTitle(video.title) + info_tag.setPlot(video.information) + # Set 'IsPlayable' property to 'true'. + + url = video.url + # Add the list item to a virtual Kodi folder. + # is_folder = False means that this item won't open any sub-list. + is_folder = False + # Add our item to the Kodi virtual folder listing. + xbmc.log("plugin.video.3cat - UI - directory item " + str(url)) + urlPlugin = buildUrl({'mode': 'playVideo', 'url': url}, self.base_url) + + xbmcplugin.addDirectoryItem(self.addon_handle, urlPlugin, list_item, is_folder) + # Add sort methods for the virtual folder items + xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) + xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_VIDEO_YEAR) + # Finish creating a virtual folder. + xbmcplugin.endOfDirectory(self.addon_handle) + + def playVideo(self,videoId): + xbmc.log("plugin.video.3cat -UI - playVideo " + str(videoId)) + + apiJsonUrl = "https://api-media.3cat.cat/pvideo/media.jsp?media=video&versio=vast&idint={}&profile=pc_3cat&format=dm".format( + videoId) + xbmc.log("plugin.video.3cat -UI - playVideo apijson url" + str(apiJsonUrl)) + streamMPDFile = "" + with urllib.request.urlopen(apiJsonUrl) as response: + data = response.read() + json_data = json.loads(data) + streamMPDFile = json_data['media']['url'][0]['file'] + + xbmc.log("plugin.video.3cat -UI - playVideo mpd file" + str(streamMPDFile)) + + from inputstreamhelper import Helper # pylint: disable=import-outside-toplevel + + is_helper = Helper(PROTOCOL, drm=DRM) + if is_helper.check_inputstream(): + play_item = xbmcgui.ListItem(path=streamMPDFile) + play_item.setProperty('inputstream', 'inputstream.adaptive') + play_item.setProperty('inputstream.adaptive.stream_headers', + 'User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36') + play_item.setProperty('inputstream.adaptive.manifest_update_parameter', 'full') + play_item.setProperty('inputstream.adaptive.manifest_update_interval', '10') + play_item.setProperty('inputstream.adaptive.manifest_type', PROTOCOL) + play_item.setProperty('inputstream.adaptive.license_type', DRM) + play_item.setProperty('inputstream.adaptive.license_key', LICENSE_URL + '||R{SSM}|') + xbmcplugin.setResolvedUrl(handle=self.addon_handle, succeeded=True, listitem=play_item) \ No newline at end of file diff --git a/plugin.video.tv3.cat/resources/lib/ui/__init__.py b/plugin.video.3cat/resources/lib/ui/__init__.py similarity index 100% rename from plugin.video.tv3.cat/resources/lib/ui/__init__.py rename to plugin.video.3cat/resources/lib/ui/__init__.py diff --git a/plugin.video.tv3.cat/resources/lib/utils/Urls.py b/plugin.video.3cat/resources/lib/utils/Urls.py similarity index 92% rename from plugin.video.tv3.cat/resources/lib/utils/Urls.py rename to plugin.video.3cat/resources/lib/utils/Urls.py index 5ea4d50327..9725a4eb6a 100644 --- a/plugin.video.tv3.cat/resources/lib/utils/Urls.py +++ b/plugin.video.3cat/resources/lib/utils/Urls.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -url_base = 'http://www.ccma.cat' +url_base = 'https://www.3cat.cat/3cat/' url_alacarta = 'http://www.ccma.cat/tv3/alacarta/' -url_coleccions = 'http://www.ccma.cat/tv3/alacarta/coleccions/' +url_coleccions = 'https://www.3cat.cat/3cat/tot-cataleg/tot/' url_mesvist = 'http://www.ccma.cat/tv3/alacarta/mes-vist/' url_datavideos = 'http://dinamics.ccma.cat/pvideo/media.jsp?media=video&version=0s&idint=' url_programes_emisio = 'http://www.ccma.cat/tv3/alacarta/programes' diff --git a/plugin.video.tv3.cat/resources/lib/utils/Utils.py b/plugin.video.3cat/resources/lib/utils/Utils.py similarity index 89% rename from plugin.video.tv3.cat/resources/lib/utils/Utils.py rename to plugin.video.3cat/resources/lib/utils/Utils.py index 360f243307..b9a5185da4 100644 --- a/plugin.video.tv3.cat/resources/lib/utils/Utils.py +++ b/plugin.video.3cat/resources/lib/utils/Utils.py @@ -1,8 +1,5 @@ -from future import standard_library -standard_library.install_aliases() from builtins import str import urllib.request, urllib.parse, urllib.error -import urllib.request, urllib.error, urllib.parse import json import xbmcgui import xbmc @@ -11,6 +8,11 @@ def buildUrl(query, base_url): return base_url + '?' + urllib.parse.urlencode(query) +def find_key_by_value(json_data, target_key): + for key, value in json_data.items(): + if key == target_key: + return key, value + return None, None def getHtml(url): try: diff --git a/plugin.video.tv3.cat/resources/lib/utils/__init__.py b/plugin.video.3cat/resources/lib/utils/__init__.py similarity index 100% rename from plugin.video.tv3.cat/resources/lib/utils/__init__.py rename to plugin.video.3cat/resources/lib/utils/__init__.py diff --git a/plugin.video.tv3.cat/resources/lib/video/FolderVideo.py b/plugin.video.3cat/resources/lib/video/FolderVideo.py similarity index 57% rename from plugin.video.tv3.cat/resources/lib/video/FolderVideo.py rename to plugin.video.3cat/resources/lib/video/FolderVideo.py index 519e58b04d..6a4c029e20 100644 --- a/plugin.video.tv3.cat/resources/lib/video/FolderVideo.py +++ b/plugin.video.3cat/resources/lib/video/FolderVideo.py @@ -1,11 +1,13 @@ from builtins import object +import xbmc + class FolderVideo(object): - def __init__(self, name, url, mode, iconImage, thumbnaiImage): + def __init__(self, name, url, mode, iconImage ="", thumbnaiImage=""): """ :rtype: object """ - + xbmc.log("plugin.video.3cat Creant folder video " + str(name) + ", " + str(url) + ", " + str(mode)) self.name = name self.url = url self.mode = mode diff --git a/plugin.video.tv3.cat/resources/lib/video/Video.py b/plugin.video.3cat/resources/lib/video/Video.py similarity index 78% rename from plugin.video.tv3.cat/resources/lib/video/Video.py rename to plugin.video.3cat/resources/lib/video/Video.py index 1708bf804a..9a5cb15a90 100644 --- a/plugin.video.tv3.cat/resources/lib/video/Video.py +++ b/plugin.video.3cat/resources/lib/video/Video.py @@ -1,8 +1,12 @@ from builtins import object + +import xbmc + + class Video(object): def __init__(self, title, iconImage, thumbnailImage, information, url, durada): - + xbmc.log("plugin.video.3cat - video " + str(title) + ", " + str(url)) self.title = title self.iconImage = iconImage self.thumbnailImage = thumbnailImage diff --git a/plugin.video.tv3.cat/resources/lib/video/__init__.py b/plugin.video.3cat/resources/lib/video/__init__.py similarity index 100% rename from plugin.video.tv3.cat/resources/lib/video/__init__.py rename to plugin.video.3cat/resources/lib/video/__init__.py diff --git a/plugin.video.tv3.cat/resources/media/324_thumbnail.png b/plugin.video.3cat/resources/media/324_thumbnail.png similarity index 100% rename from plugin.video.tv3.cat/resources/media/324_thumbnail.png rename to plugin.video.3cat/resources/media/324_thumbnail.png diff --git a/plugin.video.tv3.cat/resources/media/c33-super3_thumbnail.png b/plugin.video.3cat/resources/media/c33-super3_thumbnail.png similarity index 100% rename from plugin.video.tv3.cat/resources/media/c33-super3_thumbnail.png rename to plugin.video.3cat/resources/media/c33-super3_thumbnail.png diff --git a/plugin.video.tv3.cat/resources/media/esports3_thumbnail.png b/plugin.video.3cat/resources/media/esports3_thumbnail.png similarity index 100% rename from plugin.video.tv3.cat/resources/media/esports3_thumbnail.png rename to plugin.video.3cat/resources/media/esports3_thumbnail.png diff --git a/plugin.video.tv3.cat/resources/media/tv3_thumbnail.png b/plugin.video.3cat/resources/media/tv3_thumbnail.png similarity index 100% rename from plugin.video.tv3.cat/resources/media/tv3_thumbnail.png rename to plugin.video.3cat/resources/media/tv3_thumbnail.png diff --git a/plugin.video.tv3.cat/README.md b/plugin.video.tv3.cat/README.md deleted file mode 100644 index 9b73fb3a0c..0000000000 --- a/plugin.video.tv3.cat/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# plugin.video.tv3.cat -Kodi addon TV3cat. -Entertainment, news, sports, documentaries, etc from catalan television www.tv3.cat - -Complement per Kodi - XBMC. -Tota la programació de TV3 a la carta. Llistes dels programes Més vistos, Destacats, No t'ho perdis, etc. - - - diff --git a/plugin.video.tv3.cat/changelog.txt b/plugin.video.tv3.cat/changelog.txt deleted file mode 100644 index 058c70ca96..0000000000 --- a/plugin.video.tv3.cat/changelog.txt +++ /dev/null @@ -1,91 +0,0 @@ - -v1.4.9 -- Fixed server changes - -v1.4.8 -- Adapted to Kodi 19 -- Fixed errors - -v1.4.7 -- Fixed direct channels urls - -1.4.6 -- Fixed server changes - -1.4.5 -- Fixed server changes - -v1.4.4 -- Fixed error in Libreelec with import lib2to3 script. Deleted old_div - -v1.4.3 -- Code redesigned and added Python 2/3 compatibility - -v1.4.2 -- Fixed website changes. Changed live urls channels - -v1.4.1 -- Fixed website changes. Fixed errors in "Today featured" and "Colecctions" - -v1.4.0 -- Corregits canvis al website - --Fixed website changes - -v1.3.9 -- Canviada reproducció de videos a HD -- Afegida traducció en alemany gràcies a Connum - -- Changed videos playback to HD -- Added german translation thanks to Connum - -v1.3.8 -- Corregits canvis al website -- Fixed website changes - -v1.3.7 -- Afegides urls per l'emissió internacional dels canals en directe. Gràcies a jrdfrncs -- Afegida traducció del noruec. Gràcies a jrdfrncs -- Correcció d'errors - -- Added urls to international broadcast of live channels. Thanks to jrdfrncs -- Added norwegian translation. Thanks to jrdfrncs -- Fixed minor errors - -v1.3.6 -- Fixed website changes -- Improved efficiency in listing videos - -v1.3.5 -- Improved video info -- Updated python version -- Added new section Coleccions - -v1.3.4 -- Fixed website changes - -v1.3.3 -- Fixed website changes -- Added search function -- Added dependency on BeautifulSoup -- Minor improvements - -v1.3.2 -- Fixed website changes - -v1.3.1 -- Fixes due to website changes - -v1.3.0 -- Fixed minor errors - -v1.2.9 -- Fixed minor errors - -v1.2.8 -- Added info on live channels - -v1.2.7 -- Initial version - - diff --git a/plugin.video.tv3.cat/resources/fanart.jpg b/plugin.video.tv3.cat/resources/fanart.jpg deleted file mode 100644 index 15064988a76375939ff8ea1da0ca0072f19bce9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114247 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 diff --git a/plugin.video.tv3.cat/resources/lib/tv3cat/Home.py b/plugin.video.tv3.cat/resources/lib/tv3cat/Home.py deleted file mode 100644 index f999d00aa4..0000000000 --- a/plugin.video.tv3.cat/resources/lib/tv3cat/Home.py +++ /dev/null @@ -1,18 +0,0 @@ -from resources.lib.video.FolderVideo import FolderVideo -from resources.lib.utils.Urls import url_coleccions, url_mesvist - - - -def getList(strings): - - avuidestaquem = FolderVideo(strings.get('avuidestaquem'), "", "destaquem", "", "") - #noperdis = FolderVideo(strings.get('noperdis'), url_coleccions, "noperdis", "", "") - mesvist = FolderVideo(strings.get('mesvist'), url_mesvist, "mesvist", "", "") - coleccions = FolderVideo(strings.get('coleccions'), "", "coleccions", "", "") - programes = FolderVideo(strings.get('programes'), "", "programes", "", "") - directe = FolderVideo(strings.get('directe'), "", "directe", "", "") - cercar = FolderVideo(strings.get('cercar'), "", "cercar", "", "") - - list = [avuidestaquem, mesvist, coleccions, programes, directe, cercar] - - return list \ No newline at end of file diff --git a/plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py b/plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py deleted file mode 100644 index 54d38e97dd..0000000000 --- a/plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py +++ /dev/null @@ -1,694 +0,0 @@ -from __future__ import division - -from builtins import object -import re -import xbmc -import urllib.parse -from bs4 import BeautifulSoup - - -from resources.lib.tv3cat import DirAZemisio -from resources.lib.tv3cat import DirAZtots -from resources.lib.tv3cat import Home -from resources.lib.tv3cat.Images import Images -from resources.lib.tv3cat import Sections -from resources.lib.utils import Urls -from resources.lib.video.FolderVideo import FolderVideo -from resources.lib.video.Video import Video -from resources.lib.tv3cat.TV3Strings import TV3Strings -from resources.lib.utils.Utils import * - - -class TV3cat(object): - def __init__(self, addon_path, addon): - self.strs = TV3Strings(addon) - self.images = Images(addon_path) - self.addon_path = addon_path - - xbmc.log("plugin.video.tv3.cat classe TV3cat - init() ") - - # mode = None - def listHome(self): - xbmc.log("plugin.video.tv3.cat classe Tv3cat - listHome() ") - - return Home.getList(self.strs) - - # mode = destaquem - def listDestaquem(self): - xbmc.log("plugin.video.tv3.cat classe Tv3cat - listDestaquem() ") - html_destacats = getHtml(Urls.url_alacarta) - - lVideos = [] - - if html_destacats: - - soup = BeautifulSoup(html_destacats, "html.parser") - dest = None - - try: - - destacats = soup.findAll("article", {"class": re.compile("M-destacat")}) - - - destacats2 = soup.findAll("div", {"class": re.compile("swiper-slide")}) - - destacats.extend(destacats2) - - for c in destacats: - a = c.a["href"] - code = a[-8:-1] - - - html_data = getHtml(Urls.url_datavideos + code + '&profile=pc') - - html_data = html_data.decode("ISO-8859-1") - data = json.loads(html_data) - - if len(data) > 0: - video = self.getVideo(data) - lVideos.append(video) - - except AttributeError as e: - xbmc.log("Exception AtributeError Altres items: " + str(e)) - except KeyError as e: - xbmc.log("Exception KeyError Altres items: " + str(e)) - except Exception as e: - xbmc.log("Exception Item destacat: " + str(e)) - - xbmc.log("listDestaquem len: " + str(len(lVideos))) - - result = [None] * 2 - result[0] = lVideos - return result - - - # mode = noperdis - def listNoPerdis(self): - xbmc.log("--------------listNoPerdis----------") - - lVideos = [] - - link = getHtml(Urls.url_coleccions) - - if link: - - soup = BeautifulSoup(link, "html.parser") - - try: - links = soup.findAll("li", {"class": "sensePunt R-elementLlistat C-llistatVideo"}) - - if not links: - links = soup.findAll("li", {"class": "sensePunt R-elementLlistat C-llistatVideo "}) - - if not links: - links = soup.findAll("li", {"class": "sensePunt R-elementLlistat C-llistatVideo "}) - - for i in links: - a = i.a["href"] - code = a[-8:-1] - - link = getHtml(Urls.url_datavideos + code + '&profile=pc') - - link = link.decode("ISO-8859-1") - data = json.loads(link) - - if len(data) > 0: - video = self.getVideo(data) - lVideos.append(video) - - except AttributeError as e: - xbmc.log("Exception AtributeError NoPerdis: " + str(e)) - except KeyError as e: - xbmc.log("Exception KeyError NoPerdis: " + str(e)) - except Exception as e: - xbmc.log("Exception Item destacat: " + str(e)) - - result = [None] * 2 - result[0] = lVideos - return result - - - # mode = mesvist - def listMesVist(self): - xbmc.log("--------------listMesVist----------") - - lVideos = [] - - link = getHtml(Urls.url_mesvist) - - if link: - - soup = BeautifulSoup(link, "html.parser") - - try: - links = soup.findAll("li", {"class": re.compile("C-llistatVideo")}) - - for i in links: - a = i.a["href"] - code = a[-8:-1] - - link = getHtml(Urls.url_datavideos + code + '&profile=pc') - - link = link.decode("ISO-8859-1") - data = json.loads(link) - - - - if len(data) > 0: - video = self.getVideo(data) - lVideos.append(video) - - except AttributeError as e: - xbmc.log("Exception AtributeError listMesVist: " + str(e)) - except KeyError as e: - xbmc.log("Exception KeyError listMesVist: " + str(e)) - except Exception as e: - xbmc.log("Exception listMesVist: " + str(e)) - - result = [None] * 2 - result[0] = lVideos - return result - - - - # mode = coleccions - def listColeccions(self): - xbmc.log("--------------listColeccions----------") - - lFolderVideos = [] - - link = getHtml(Urls.url_coleccions) - - if link: - - soup = BeautifulSoup(link, "html.parser") - - try: - - colecc = soup.findAll("div", {"class": re.compile("M-destacat")}) - - - for el in colecc: - - url = el.a["href"] - url = Urls.url_base + url - t = el.div.h2.a.string - - titol = t.encode("utf-8") - - - img = el.figure.img["src"] - - - foldVideo = FolderVideo(titol,url, 'getlistvideos', img, img) - lFolderVideos.append(foldVideo) - - except AttributeError as e: - xbmc.log("Exception AtributeError listColeccions: " + str(e)) - except KeyError as e: - xbmc.log("Exception KeyError listColeccions: " + str(e)) - except Exception as e: - xbmc.log("Exception listColeccions: " + str(e)) - - - return lFolderVideos - - - # mode = programes - def dirSections(self): - - return Sections.getList(self.strs) - - # mode = dirAZemisio - def dirAZemisio(self): - - return DirAZemisio.getList() - - #mode = dirAZtots - def dirAZtots(self): - - return DirAZtots.getList() - - # mode = sections - def programsSections(self, url): - xbmc.log("-------------------------programsSections----------------------") - lFolderVideos = [] - - link = getHtml(Urls.url_programes_emisio + url) - - if link: - soup = BeautifulSoup(link) - - try: - # Grups programes de cada lletra - links = soup.findAll("ul", {"class": "R-abcProgrames"}) - - for i in links: - ls = i.findAll("li") - - for li in ls: - url = li.a["href"] - t = str(li.a.string) - titol = re.sub('^[\n\r\s]+', '', t) - - # test url - urlProg = Urls.url_base + url - if urlProg == Urls.urlApm or urlProg == Urls.urlZonaZaping: - url_final = urlProg + 'clips/' - - elif 'super3' in url: - if 'https:' not in url: - url_final = 'https:' + url - else: - url_final = url - - - else: - match = re.compile('(http://www.ccma.cat/tv3/alacarta/.+?/fitxa-programa/)(\d+/)').findall( - urlProg) - if len(match) != 0: - url1 = match[0][0] - urlcode = match[0][1] - - url_final = url1 + 'capitols/' + urlcode - else: - url_final = urlProg + 'capitols/' - - - foldVideo = FolderVideo(titol, url_final, 'getlistvideos', "", "") - lFolderVideos.append(foldVideo) - - except AttributeError as e: - xbmc.log("Exception AtributeError listSections: " + str(e)) - except KeyError as e: - xbmc.log("Exception KeyError listSections: " + str(e)) - except Exception as e: - xbmc.log("Exception listSections: " + str(e)) - - return lFolderVideos - - - # mode = directe - def listDirecte(self): - xbmc.log("-----------------listDirecte--------------------") - lVideos = [] - - data = getDataVideo(Urls.url_arafem) - - if data: - c = data.get('canal', None) - - if c: - - arafemtv3 = '' - arafem33 = '' - arafemesp3 = '' - arafem324 = '' - arafemtv3_sinop = '' - arafem33_sinop = '' - arafemesp3_sinop = '' - arafem324_sinop = '' - - i = 0 - while i < 5: - nameChannel = c[i].get('ara_fem', {}).get('codi_canal', None) - - if nameChannel == 'tv3': - arafemtv3 = c[i].get('ara_fem', {}).get('titol_programa', None) - arafemtv3_sinop = c[i].get('ara_fem', {}).get('sinopsi', None) - if nameChannel == 'cs3' or nameChannel == '33d': - arafem33 = c[i].get('ara_fem', {}).get('titol_programa', None) - arafem33_sinop = c[i].get('ara_fem', {}).get('sinopsi', None) - if nameChannel == 'esport3': - arafemesp3 = c[i].get('ara_fem', {}).get('titol_programa', None) - arafemesp3_sinop = c[i].get('ara_fem', {}).get('sinopsi', None) - if nameChannel == '324': - arafem324 = c[i].get('ara_fem', {}).get('titol_programa', None) - arafem324_sinop = c[i].get('ara_fem', {}).get('sinopsi', None) - - i = i + 1 - - infolabelstv3 = {} - infolabels324 = {} - infolabels33 = {} - infolabelsesp3 = {} - - if arafemtv3: - infolabelstv3['title'] = arafemtv3 - infotv3 = '[B]' + arafemtv3 + '[/B]' + '[CR]' - if arafemtv3_sinop: - if type(arafemtv3) is int or type(arafemtv3) is float: - arafemtv3 = str(arafemtv3) - infotv3 = infotv3 + arafemtv3_sinop - - infolabelstv3['plot'] = infotv3 - - if arafem33: - infolabels33['title'] = arafem33 - info33 = '[B]' + arafem33 + '[/B]' + '[CR]' - if arafem33_sinop: - if type(arafem33) is int or type(arafem33) is float: - arafem33 = str(arafem33) - info33 = info33 + arafem33_sinop - - infolabels33['plot'] = info33 - - if arafemesp3: - infolabelsesp3['title'] = arafemesp3 - infoesp3 = '[B]' + arafemesp3 + '[/B]' + '[CR]' - if arafemesp3_sinop: - if type(arafemesp3) is int or type(arafemesp3) is float: - arafemesp3 = str(arafemesp3) - infoesp3 = infoesp3 + arafemesp3_sinop - - infolabelsesp3['plot'] = infoesp3 - - if arafem324: - infolabels324['title'] = arafem324 - info324 = '[B]' + arafem324 + '[/B]' + '[CR]' - if arafem324_sinop: - if type(arafem324) is int or type(arafem324) is float: - arafem324 = str(arafem324) - info324 = info324 + arafem324_sinop - - infolabels324['plot'] = info324 - - tv3Directe = Video(self.strs.get('tv3'), self.images.thumb_tv3, self.images.thumb_tv3, infolabelstv3, Urls.url_directe_tv3, "") - c324Directe = Video(self.strs.get('canal324'), self.images.thumb_tv3, self.images.thumb_tv3, infolabels324, Urls.url_directe_324, "") - c33s3Directe = Video(self.strs.get('c33super3'), self.images.thumb_tv3, self.images.thumb_tv3, infolabels33, Urls.url_directe_c33s3, "") - sps3Directe = Video(self.strs.get('esport3'), self.images.thumb_tv3, self.images.thumb_tv3, infolabelsesp3, Urls.url_directe_esport3, "") - - tv3DirecteInt = Video(self.strs.get('tv3_int'), self.images.thumb_tv3, self.images.thumb_tv3, infolabelstv3, Urls.url_directe_tv3_int, "") - c324DirecteInt = Video(self.strs.get('canal324_int'), self.images.thumb_tv3, self.images.thumb_tv3, infolabels324, Urls.url_directe_324_int, "") - c33s3DirecteInt = Video(self.strs.get('c33super3_int'), self.images.thumb_tv3, self.images.thumb_tv3, infolabels33, Urls.url_directe_c33s3_int, "") - sps3DirecteInt = Video(self.strs.get('esport3_int'), self.images.thumb_tv3, self.images.thumb_tv3, infolabelsesp3, Urls.url_directe_esport3_int, "") - - lVideos = [tv3Directe, c33s3Directe, c324Directe, sps3Directe, tv3DirecteInt, c33s3DirecteInt, c324DirecteInt, sps3DirecteInt] - - result = [None] * 2 - result[0] = lVideos - return result - - - # mode = progAZ - def programesAZ(self, paramUrl, letters): - xbmc.log("--------------------programesAZ------------------") - letters = urllib.parse.unquote(letters) - lFolderVideos = [] - url = "" - - if paramUrl == "emisio": - url = Urls.url_programes_emisio - else: - url = Urls.url_programes_tots - - html = getHtml(url) - - - if html: - - soup = BeautifulSoup(html.decode('utf-8', 'ignore'), "html.parser") - - elements = soup.findAll("ul", {"class": "R-abcProgrames"}) - - li = None - - - if len(elements) > 0: - - if letters == "#A-C": - - li = elements[0:4] - - elif letters == "D-E": - - li = elements[4:6] - - elif letters == "F-I": - - li = elements[6:10] - - elif letters == "J-L": - - li = elements[10:13] - - elif letters == "M-P": - - li = elements[13:17] - - elif letters == "Q-S": - - li = elements[17:20] - - elif letters == "T-V": - - li = elements[20:23] - - elif letters == "X-Z": - - li = elements[23:] - - if li != None and len(li) > 0: - - for l in li: - - links = l.findAll("li") - - if len(links) > 0: - - for i in links: - #xbmc.log("progsAZ - li: " + str(i).encode('utf-8')) - - url = i.a["href"] - titol = i.a.string.strip().encode("utf-8") - - # test url - urlProg = Urls.url_base + url - if urlProg == Urls.urlApm or urlProg == Urls.urlZonaZaping: - url_final = urlProg + 'clips/' - - elif 'super3' in url: - if 'https:' not in url: - url_final = 'https:' + url - else: - url_final = url - - else: - match = re.compile( - '(http://www.ccma.cat/tv3/alacarta/.+?/fitxa-programa/)(\d+/)').findall(urlProg) - if len(match) != 0: - url1 = match[0][0] - urlcode = match[0][1] - - url_final = url1 + 'capitols/' + urlcode - else: - url_final = urlProg + 'capitols/' - - - folderVideo = FolderVideo(titol, url_final, 'getlistvideos', "", "") - lFolderVideos.append(folderVideo) - #xbmc.log("progsAZ - Titol: " + titol) - #xbmc.log("progsAZ - url: " + url_final) - - - return lFolderVideos - - # mode = getlistvideos - def getListVideos(self, url, cercar): - xbmc.log("---------------getListVideos------------------------------") - result = [None] * 2 - lVideos = [] - - xbmc.log('getListVideos--Url listvideos: ' + url) - - link = getHtml(url) - - if link: - - soup = BeautifulSoup(link.decode('utf-8', 'ignore'), "html.parser") - - links = None - try: - links = soup.findAll("div", {"class": "F-itemContenidorIntern C-destacatVideo"}) - - if not links: - links = soup.findAll("li", {"class": "F-llistat-item"}) - - # Coleccions - if not links: - links = soup.findAll("div", {"class": re.compile("M-destacat")}) - - # Zona Zapping - if not links: - links = soup.findAll("article", {"class": "M-destacat C-destacatVideo T-alacartaTema C-3linies "}) - - # Super 3 - if not links: - - links = soup.findAll("div", - {"class": "M-destacat super3 T-video ombres-laterals"}) - links2 = soup.findAll("div", - {"class": "M-destacat super3 noGapAfter T-video ombres-laterals"}) - links = links + links2 - - # Super 3 - if not links: - links = soup.findAll("article", - {"class": "M-destacat super3 noGapAfter T-video ombres-laterals"}) - - - except AttributeError as e: - xbmc.log("getListVideos--getLinks--Exception AtributeError listVideos: " + str(e)) - except KeyError as e: - xbmc.log("getListVideos--getLinks--Exception KeyError listVideos: " + str(e)) - except Exception as e: - xbmc.log("getListVideos--getLinks--Exception listVideos: " + str(e)) - - if links: - - for l in links: - - try: - - urlvideo = l.a["href"] - - code = urlvideo.split('/')[-1] - - if len(code) == 0: - code = urlvideo.split('/')[-2] - - - html_data = getHtml(Urls.url_datavideos + code + '&profile=pc') - - html_data = html_data.decode("ISO-8859-1") - data = json.loads(html_data) - - if len(data) > 0: - video = self.getVideo(data) - lVideos.append(video) - - - - - except AttributeError as e: - xbmc.log("getListVideos--bucle addVideo--Exception AtributeError: " + str(e)) - - except KeyError as e: - xbmc.log("getListVideos--bucle addVideo--Exception KeyError: " + str(e)) - - except Exception as e: - xbmc.log("getListVideos--bucle addVideo--Exception: " + str(e)) - - result[0] = lVideos - - ############################################################################### - - # Pagination - ht = rb'

P\xc3\xa0gina (\d+) de (\d+)

' - - match = re.compile(ht).findall(link) - if len(match) != 0: - actualPage = int(match[0][0]) - totalPages = int(match[0][1]) - - if actualPage < totalPages: - ntPage = str(actualPage + 1) - nextPage = '&pagina=' + ntPage - if cercar: - if actualPage == 1: - url_next = url + nextPage - else: - url_next = re.sub('&pagina=[\d]+', nextPage, url) - else: - url_next = url + '?text=&profile=&items_pagina=15' + nextPage - foldNext = FolderVideo(self.strs.get('seguent'), url_next, "getlistvideos", "","") - foldNext.hasNextPage = True - result[1] = foldNext - - return result - - - def getVideo(self, data): - linkvideo = None - media = data.get('media', {}) - - if type(media) is list and len(media) > 0: - media_dict = media[0] - linkvideo = media_dict.get('url', None) - else: - linkvideo = media.get('url', None) - - if linkvideo != None: - if type(linkvideo) is list and len(linkvideo) > 0: - linkvideo_item = linkvideo[0] - urlVideo = linkvideo_item.get('file', None) - - titol = data.get('informacio', {}).get('titol', None) - image = data.get('imatges', {}).get('url', None) - descripcio = data.get('informacio', {}).get('descripcio', None) - programa = data.get('informacio', {}).get('programa', None) - capitol = data.get('informacio', {}).get('capitol', None) - tematica = data.get('informacio', {}).get('tematica', {}).get('text', None) - data_emisio = data.get('informacio', {}).get('data_emissio', {}).get('text', None) - milisec = data.get('informacio', {}).get('durada', {}).get('milisegons', None) - durada = "" - - if milisec != None: - durada = milisec // 1000 - - - if descripcio == None: - descripcio = '' - else: - descripcio = descripcio.replace('
', '') - - header = "" - if programa != None: - if type(programa) is int or type(programa) is float: - programa = str(programa) - header = '[B]' + programa + '[/B]' + '[CR]' - - infolabels = {} - if data_emisio != None: - dt = data_emisio[0:10] - year = data_emisio[6:10] - infolabels['aired'] = dt - infolabels['year'] = year - header = header + dt + '[CR]' - - descripcio = header + descripcio - - if titol != None: - infolabels['title'] = titol - - - if capitol != None: - infolabels['episode'] = capitol - - - if descripcio != None: - infolabels['plot'] = descripcio - - if tematica != None: - infolabels['genre'] = tematica - - video = Video(titol, image, image, infolabels, urlVideo, durada ) - - return video - - else: - return None - - #mode = cercar - def search(self): - - keyboard = xbmc.Keyboard('', self.strs.get('cercar')) - keyboard.doModal() - if keyboard.isConfirmed() and keyboard.getText(): - search_string = keyboard.getText().replace(" ", "+") - url = "http://www.ccma.cat/tv3/alacarta/cercador/?items_pagina=15&profile=videos&text=" + search_string - - lVideos = self.getListVideos(url, True) - - return lVideos - diff --git a/plugin.video.tv3.cat/resources/lib/ui/UI.py b/plugin.video.tv3.cat/resources/lib/ui/UI.py deleted file mode 100644 index f5782d77a6..0000000000 --- a/plugin.video.tv3.cat/resources/lib/ui/UI.py +++ /dev/null @@ -1,247 +0,0 @@ -from builtins import str -from builtins import object -from resources.lib.utils.Utils import buildUrl -from resources.lib.tv3cat.TV3cat import TV3cat -import xbmcaddon -import xbmcplugin -import xbmcgui -import xbmc -import xbmcvfs -import urllib.parse - - -class UI(object): - - def __init__(self, base_url, addon_handle, args): - addon = xbmcaddon.Addon() - addon_path = xbmcvfs.translatePath(addon.getAddonInfo('path')) - self.tv3 = TV3cat(addon_path, addon) - self.base_url = base_url - self.addon_handle = addon_handle - self.args = args - self.mode = args.get('mode', None) - self.url = args.get('url', ['']) - self.name = args.get('name', None) - xbmc.log("plugin.video.tv3.cat classe UI - init() ") - - - def run(self, mode, url): - xbmc.log("plugin.video.tv3.cat classe UI - run() mode = " + str(mode)) - - - if mode == None: - xbmc.log("plugin.video.tv3.cat classe UI - mode = None") - lFolder = self.tv3.listHome() - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() Home - No existeixen elements") - - elif mode[0] == 'destaquem': - xbmc.log("plugin.video.tv3.cat classe UI - mode = destaquem") - lVideos = self.tv3.listDestaquem() - - if len(lVideos) > 0: - self.listVideos(lVideos) - else: - xbmc.log("UI.run() destaquem - No existeixen videos") - - - elif mode[0] == 'noperdis': - - lVideos = self.tv3.listNoPerdis() - - if len(lVideos) > 0: - self.listVideos(lVideos) - else: - xbmc.log("UI.run() noperdis - No existeixen videos") - - elif mode[0] == 'mesvist': - - lVideos = self.tv3.listMesVist() - - if len(lVideos) > 0: - self.listVideos(lVideos) - else: - xbmc.log("UI.run() mesvist - No existeixen videos") - - elif mode[0] == 'programes': - - lFolder = self.tv3.dirSections() - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() programes - No existeixen elements") - - elif mode[0] == 'sections': - - lFolder = self.tv3.programsSections(url[0]) - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() sections - No existeixen elements") - - elif mode[0] == 'dirAZemisio': - - lFolder = self.tv3.dirAZemisio() - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() dirAZemisio - No existeixen elements") - - elif mode[0] == 'dirAZtots': - - lFolder = self.tv3.dirAZtots() - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() dirAZtots - No existeixen elements") - - elif mode[0] == 'progAZ': - letters = self.name[0] - lFolder = self.tv3.programesAZ(url[0], letters) - - if len(lFolder) > 0: - self.listFolder(lFolder) - else: - xbmc.log("UI.run() progAZ - No existeixen elements") - - elif mode[0] == 'directe': - - lVideos = self.tv3.listDirecte() - self.listVideos(lVideos) - - elif mode[0] == 'cercar': - - lVideos = self.tv3.search() - - if len(lVideos) > 0: - self.listVideos(lVideos) - else: - xbmc.log("UI.run() cercar - No s'ha trobat cap video") - - - elif mode[0] == 'getlistvideos': - - lVideos = self.tv3.getListVideos(url[0], None) - self.listVideos(lVideos) - - elif mode[0] == 'coleccions': - - lFolder = self.tv3.listColeccions() - self.listFolder(lFolder) - - elif mode[0] == 'playVideo': - - self.playVideo(url[0]) - - def listFolder(self, lFolderVideos): - xbmc.log("plugin.video.tv3.cat classe UI - listFolder") - for folder in lFolderVideos: - - mode = folder.mode - name = folder.name - nameQuoted = urllib.parse.quote(name) - url = folder.url - iconImage = folder.iconImage - thumbImage = folder.thumbnailImage - - urlPlugin = buildUrl({'mode': mode, 'name': nameQuoted, 'url': url}, self.base_url) - liz = xbmcgui.ListItem(name) - liz.setInfo(type="Video", infoLabels={"title": name}) - liz.setArt({'thumb': thumbImage, 'icon' : iconImage}) - - xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=urlPlugin, listitem=liz, isFolder=True) - xbmcplugin.endOfDirectory(self.addon_handle) - - def listVideos(self, lVideos): - - xbmc.log("--------List videos ----------") - last = lVideos[1] - listVideos = lVideos[0] - if not listVideos: - xbmc.log("UI - listVideos - Numero videos: 0") - else: - xbmc.log("UI - listVideos - Numero videos: " + str(len(listVideos))) - - - - for video in listVideos: - if video: - urlVideo = video.url - xbmc.log("UI - listVideos - urlVideo: " + urlVideo) - iconImage = video.iconImage - thumbImage = video.thumbnailImage - durada = video.durada - titol = video.title - - urlPlugin = buildUrl({'mode':'playVideo','name':"",'url':urlVideo}, self.base_url) - - liz = xbmcgui.ListItem(titol) - - infolabels = video.information - - liz.setInfo('video', infolabels) - liz.setArt({'thumb': thumbImage, 'icon': "DefaultVideo.png"}) - liz.addStreamInfo('video', {'duration': durada}) - liz.setProperty('isPlayable', 'true') - xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=urlPlugin, listitem=liz) - - if last: - mode = last.mode - name = last.name - url = last.url - #xbmc.log("UI - listVideos - urlNext: " + url) - iconImage = last.iconImage - thumbImage = last.thumbnailImage - - urlPlugin = buildUrl({'mode': mode, 'name': '', 'url': url}, self.base_url) - liz = xbmcgui.ListItem(name) - liz.setInfo(type="Video", infoLabels={"title": name}) - liz.setArt({'thumb': thumbImage, 'icon': iconImage}) - - xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=urlPlugin, listitem=liz, isFolder=True) - - xbmcplugin.endOfDirectory(self.addon_handle) - - def playVideo(self,url): - code = url[-8:-1] - xbmc.log("UI - playVideo") - - - # html_data = getHtml(url_datavideos + code + '&profile=pc') - # - # if html_data: - # - # html_data = html_data.decode("ISO-8859-1") - # data = json.loads(html_data) - # - # urlvideo = None - # - # if len(data) > 0: - # - # media = data.get('media', {}) - # - # if type(media) is list and len(media) > 0: - # media_dict = media[0] - # urlvideo = media_dict.get('url', None) - # else: - # urlvideo = media.get('url', None) - # - # if urlvideo: - # if type(urlvideo) is list and len(urlvideo) > 0: - # urlvideo_item = urlvideo[0] - # video = urlvideo_item.get('file', None) - # - # else: - # video = url - # - # xbmc.log("Play video - url: " + video) - - item = xbmcgui.ListItem(path=url) - xbmcplugin.setResolvedUrl(self.addon_handle, True, item) \ No newline at end of file