From 653841d791f27e10ae10ff6ec3dd373b8ce60d9f Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Tue, 26 Jun 2018 09:55:17 -0500 Subject: [PATCH 01/21] scrapertools: fix temporadas especiales --- plugin.video.alfa/core/scrapertools.py | 88 ++------------------------ 1 file changed, 4 insertions(+), 84 deletions(-) diff --git a/plugin.video.alfa/core/scrapertools.py b/plugin.video.alfa/core/scrapertools.py index faa20dde..e93ee8cd 100755 --- a/plugin.video.alfa/core/scrapertools.py +++ b/plugin.video.alfa/core/scrapertools.py @@ -22,28 +22,12 @@ def cachePage(url, post=None, headers=None, modoCache=None, timeout=None): def downloadpage(url, post=None, headers=None, follow_redirects=True, timeout=None, header_to_get=None): response = httptools.downloadpage(url, post=post, headers=headers, follow_redirects=follow_redirects, timeout=timeout) - if header_to_get: return response.headers.get(header_to_get) else: return response.data -# def downloadpageWithResult(url, post=None, headers=None, follow_redirects=True, timeout=None, header_to_get=None): -# response = httptools.downloadpage(url, post=post, headers=headers, follow_redirects=follow_redirects, -# timeout=timeout) -# -# if header_to_get: -# return response.headers.get(header_to_get) -# else: -# return response.data, response.code - - -# def downloadpageWithoutCookies(url): -# response = httptools.downloadpage(url, cookies=False) -# return response.data - - def downloadpageGzip(url): response = httptools.downloadpage(url, add_referer=True) return response.data @@ -60,23 +44,12 @@ def get_header_from_response(url, header_to_get="", post=None, headers=None): return response.headers.get(header_to_get) -# def get_headers_from_response(url, post=None, headers=None): -# response = httptools.downloadpage(url, post=post, headers=headers, only_headers=True) -# return response.headers.items() - - def read_body_and_headers(url, post=None, headers=None, follow_redirects=False, timeout=None): response = httptools.downloadpage(url, post=post, headers=headers, follow_redirects=follow_redirects, timeout=timeout) return response.data, response.headers -# def anti_cloudflare(url, host="", headers=None, post=None, location=False): -# # anti_cloudfare ya integrado en httptools por defecto -# response = httptools.downloadpage(url, post=post, headers=headers) -# return response.data - - def printMatches(matches): i = 0 for match in matches: @@ -130,17 +103,6 @@ def unescape(text): else: # named entity try: - ''' - if text[1:-1] == "amp": - text = "&amp;" - elif text[1:-1] == "gt": - text = "&gt;" - elif text[1:-1] == "lt": - text = "&lt;" - else: - print text[1:-1] - text = unichr(htmlentitydefs.name2codepoint[text[1:-1]]).encode("utf-8") - ''' import htmlentitydefs text = unichr(htmlentitydefs.name2codepoint[text[1:-1]]).encode("utf-8") except KeyError: @@ -385,27 +347,6 @@ def remove_show_from_title(title, show): return title -# def getRandom(str): -# return get_md5(str) - - -# def unseo(cadena): -# if cadena.upper().startswith("VER GRATIS LA PELICULA "): -# cadena = cadena[23:] -# elif cadena.upper().startswith("VER GRATIS PELICULA "): -# cadena = cadena[20:] -# elif cadena.upper().startswith("VER ONLINE LA PELICULA "): -# cadena = cadena[23:] -# elif cadena.upper().startswith("VER GRATIS "): -# cadena = cadena[11:] -# elif cadena.upper().startswith("VER ONLINE "): -# cadena = cadena[11:] -# elif cadena.upper().startswith("DESCARGA DIRECTA "): -# cadena = cadena[17:] -# return cadena - - -# scrapertools.get_filename_from_url(media_url)[-4:] def get_filename_from_url(url): import urlparse parsed_url = urlparse.urlparse(url) @@ -465,7 +406,10 @@ def get_season_and_episode(title): try: matches = re.compile(patron, re.I).search(title) if matches: - filename = matches.group(1).lstrip('0') + "x" + matches.group(2).zfill(2) + if len(matches.group(1)) == 1: + filename = matches.group(1) + "x" + matches.group(2).zfill(2) + else: + filename = matches.group(1).lstrip('0') + "x" + matches.group(2).zfill(2) break except: pass @@ -473,27 +417,3 @@ def get_season_and_episode(title): logger.info("'" + title + "' -> '" + filename + "'") return filename - - -# def get_sha1(cadena): -# try: -# import hashlib -# devuelve = hashlib.sha1(cadena).hexdigest() -# except: -# import sha -# import binascii -# devuelve = binascii.hexlify(sha.new(cadena).digest()) -# -# return devuelve - - -# def get_md5(cadena): -# try: -# import hashlib -# devuelve = hashlib.md5(cadena).hexdigest() -# except: -# import md5 -# import binascii -# devuelve = binascii.hexlify(md5.new(cadena).digest()) -# -# return devuelve From f1176365bf87b1bfe76597bc6ff775257436af90 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Tue, 26 Jun 2018 09:57:51 -0500 Subject: [PATCH 02/21] hdfull: fix temp --- plugin.video.alfa/channels/hdfull.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugin.video.alfa/channels/hdfull.py b/plugin.video.alfa/channels/hdfull.py index 10982992..f02dff6f 100644 --- a/plugin.video.alfa/channels/hdfull.py +++ b/plugin.video.alfa/channels/hdfull.py @@ -413,9 +413,6 @@ def episodios(item): patron = "
  • [^<]+
  • " matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl in matches: - if "temporada-0" in scrapedurl: - continue - ## Episodios data = agrupa_datos(httptools.downloadpage(scrapedurl).data) sid = scrapertools.get_match(data, "") + unpacked = jsunpack.unpack(packed) video_urls = [] - videos = scrapertools.find_multiple_matches(data, 'file:"([^"]+).*?label:"([^"]+)') + videos = scrapertools.find_multiple_matches(unpacked, 'file:"([^"]+).*?label:"([^"]+)') for video, label in videos: video_urls.append([label + " [clipwatching]", video]) logger.info("Url: %s" %videos) diff --git a/plugin.video.alfa/servers/cloudvideo.json b/plugin.video.alfa/servers/cloudvideo.json new file mode 100644 index 00000000..bdb34dfb --- /dev/null +++ b/plugin.video.alfa/servers/cloudvideo.json @@ -0,0 +1,42 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "https://cloudvideo.tv/embed-([a-z0-9]+).html", + "url": "https://cloudvideo.tv/embed-\\1.html" + } + ] + }, + "free": true, + "id": "cloudvideo", + "name": "cloudvideo", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "Incluir en lista negra", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "Incluir en lista de favoritos", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "https://cloudvideo.tv/static/img/logo5.png" +} diff --git a/plugin.video.alfa/servers/cloudvideo.py b/plugin.video.alfa/servers/cloudvideo.py new file mode 100644 index 00000000..5ce34553 --- /dev/null +++ b/plugin.video.alfa/servers/cloudvideo.py @@ -0,0 +1,43 @@ +# Conector Cloudvideo By Alfa development Group +# -------------------------------------------------------- + +import re +from core import httptools +from core import scrapertools +from lib import jsunpack +from platformcode import logger + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + + data = httptools.downloadpage(page_url) + + if data.code == 404: + return False, "[Cloud] El archivo no existe o ha sido borrado" + + return True, "" + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + + video_urls = [] + data = httptools.downloadpage(page_url).data + data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(.*?)") + dec_data = jsunpack.unpack(enc_data) + sources = scrapertools.find_single_match(dec_data, "sources:\[(.*?)]") + patron = "{file:(.*?)}" + matches = re.compile(patron, re.DOTALL).findall(sources) + scrapertools.printMatches(matches) + for url in matches: + quality = 'm3u8' + video_url = url + if 'label' in url: + url = url.split(',') + video_url = url[0] + quality = url[1].replace('label:','') + video_urls.append(['cloudvideo [%s]' % quality, video_url]) + + return video_urls \ No newline at end of file diff --git a/plugin.video.alfa/servers/filevideo.json b/plugin.video.alfa/servers/filevideo.json new file mode 100644 index 00000000..9098f191 --- /dev/null +++ b/plugin.video.alfa/servers/filevideo.json @@ -0,0 +1,42 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "https://www.filevideo.net/embed-(?:embed-|)([A-z0-9]+)", + "url": "http://filevideo.net/embed-\\1.html" + } + ] + }, + "free": true, + "id": "filevideo", + "name": "filevideo", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "Incluir en lista negra", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "Incluir en lista de favoritos", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "https://s15.postimg.cc/b7jj9dbbf/filevideo.png" +} \ No newline at end of file diff --git a/plugin.video.alfa/servers/filevideo.py b/plugin.video.alfa/servers/filevideo.py new file mode 100644 index 00000000..c456b5ff --- /dev/null +++ b/plugin.video.alfa/servers/filevideo.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +from core import httptools +from core import scrapertools +from lib import jsunpack +from platformcode import logger + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + + data = httptools.downloadpage(page_url).data + + if "Not Found" in data or "File was deleted" in data: + return False, "[Filevideo] El fichero no existe o ha sido borrado" + + return True, "" + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + + data = httptools.downloadpage(page_url).data + enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(eval.*?)\s*") + dec_data = jsunpack.unpack(enc_data) + + video_urls = [] + media_urls = scrapertools.find_multiple_matches(dec_data, '\{file\s*:\s*"([^"]+)",label\s*:\s*"([^"]+)"\}') + for media_url, label in media_urls: + ext = scrapertools.get_filename_from_url(media_url)[-4:] + video_urls.append(["%s %sp [filevideo]" % (ext, label), media_url]) + + video_urls.reverse() + m3u8 = scrapertools.find_single_match(dec_data, '\{file\:"(.*?.m3u8)"\}') + if m3u8: + title = video_urls[-1][0].split(" ", 1)[1] + video_urls.insert(0, [".m3u8 %s" % title, m3u8]) + + for video_url in video_urls: + logger.info("%s - %s" % (video_url[0], video_url[1])) + + return video_urls diff --git a/plugin.video.alfa/servers/upvid.json b/plugin.video.alfa/servers/upvid.json new file mode 100644 index 00000000..058fae74 --- /dev/null +++ b/plugin.video.alfa/servers/upvid.json @@ -0,0 +1,42 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "https://upvid.co/embed-([a-z0-9]+).html", + "url": "https://upvid.co/embed-\\1.html" + } + ] + }, + "free": true, + "id": "upvid", + "name": "upvid", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "Incluir en lista negra", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "Incluir en lista de favoritos", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "https://s15.postimg.cc/gz0tee0gb/zt_Oi_E6_S-_400x400.jpg" +} diff --git a/plugin.video.alfa/servers/upvid.py b/plugin.video.alfa/servers/upvid.py new file mode 100644 index 00000000..c8686f81 --- /dev/null +++ b/plugin.video.alfa/servers/upvid.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +# -------------------------------------------------------- +# Conector UpVID By Alfa development Group +# -------------------------------------------------------- + +import re +import urllib +from core import httptools +from core import scrapertools +from platformcode import logger + +import sys, os +import re, base64 +from lib.aadecode import decode as aadecode + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + + data = httptools.downloadpage(page_url) + + if data.code == 404: + return False, "[upvid] El archivo no existe o ha sido borrado" + + return True, "" + + +def get_video_url(page_url, premium = False, user = "", password = "", video_password = ""): + logger.info("url=" + page_url) + + video_urls = [] + headers = {'referer': page_url} + + for i in range(0, 3): + data = httptools.downloadpage(page_url, headers=headers).data + data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + if '\s*゚ω゚(.*?)', data, flags=re.DOTALL)[0] + text_decode = aadecode(code) + funcion, clave = re.findall("func\.innerHTML = (\w*)\('([^']*)', ", text_decode, flags=re.DOTALL)[0] + + # decodificar javascript en campos html hidden + # -------------------------------------------- + oculto = re.findall('|\s{2,}', "", data) + logger.debug(data) + patron = "src=([^ ]+) type='.*?/(.*?)'" + matches = re.compile(patron, re.DOTALL).findall(data) + + for url, type in matches: + video_urls.append(['vidzella %s' % type, url]) + + return video_urls diff --git a/plugin.video.alfa/servers/vivo.json b/plugin.video.alfa/servers/vivo.json new file mode 100644 index 00000000..3b308512 --- /dev/null +++ b/plugin.video.alfa/servers/vivo.json @@ -0,0 +1,42 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "https://vivo.sx/([a-zA-Z0-9]+)", + "url": "https://vivo.sx/\\1" + } + ] + }, + "free": true, + "id": "vivo", + "name": "vivo", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "Incluir en lista negra", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "Incluir en lista de favoritos", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "https://s15.postimg.cc/oiyhtpdqj/vivo.png" +} \ No newline at end of file diff --git a/plugin.video.alfa/servers/vivo.py b/plugin.video.alfa/servers/vivo.py new file mode 100644 index 00000000..587926fb --- /dev/null +++ b/plugin.video.alfa/servers/vivo.py @@ -0,0 +1,39 @@ +# Conector Vivo By Alfa development Group +# -------------------------------------------------------- + +import re +import base64 +from core import httptools +from core import scrapertools +from platformcode import logger + + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + + data = httptools.downloadpage(page_url) + + if data.code == 404: + return False, "[Vivo] El archivo no existe o ha sido borrado" + + return True, "" + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + + video_urls = [] + data = httptools.downloadpage(page_url).data + data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + + enc_data = scrapertools.find_single_match(data, "Core.InitializeStream \('(.*?)'\)") + logger.debug(enc_data) + dec_data = base64.b64decode(enc_data) + + logger.debug(dec_data) + + for url in eval(dec_data): + video_urls.append(['vivo', url]) + + return video_urls diff --git a/plugin.video.alfa/servers/watchvideo.json b/plugin.video.alfa/servers/watchvideo.json index 4ade5b32..60ff614a 100755 --- a/plugin.video.alfa/servers/watchvideo.json +++ b/plugin.video.alfa/servers/watchvideo.json @@ -6,6 +6,10 @@ { "pattern": "watchvideo.us/(?:embed-|)([A-z0-9]+)", "url": "http://watchvideo.us/embed-\\1.html" + }, + { + "pattern": "watchvideo17.us/(?:embed-|)([A-z0-9]+)", + "url": "http://watchvideo.us/embed-\\1.html" } ] }, diff --git a/plugin.video.alfa/servers/watchvideo.py b/plugin.video.alfa/servers/watchvideo.py index 8f426bd3..879fe6eb 100755 --- a/plugin.video.alfa/servers/watchvideo.py +++ b/plugin.video.alfa/servers/watchvideo.py @@ -2,6 +2,7 @@ from core import httptools from core import scrapertools +from lib import jsunpack from platformcode import logger @@ -20,15 +21,17 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.info("url=" + page_url) data = httptools.downloadpage(page_url).data + enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(eval.*?)\s*") + dec_data = jsunpack.unpack(enc_data) video_urls = [] - media_urls = scrapertools.find_multiple_matches(data, '\{file\s*:\s*"([^"]+)",label\s*:\s*"([^"]+)"\}') + media_urls = scrapertools.find_multiple_matches(dec_data, '\{file\s*:\s*"([^"]+)",label\s*:\s*"([^"]+)"\}') for media_url, label in media_urls: ext = scrapertools.get_filename_from_url(media_url)[-4:] video_urls.append(["%s %sp [watchvideo]" % (ext, label), media_url]) video_urls.reverse() - m3u8 = scrapertools.find_single_match(data, '\{file\:"(.*?.m3u8)"\}') + m3u8 = scrapertools.find_single_match(dec_data, '\{file\:"(.*?.m3u8)"\}') if m3u8: title = video_urls[-1][0].split(" ", 1)[1] video_urls.insert(0, [".m3u8 %s" % title, m3u8]) From 966410f15aa2b794cf939b5552d5ed2fd38291cf Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 27 Jun 2018 14:44:56 -0500 Subject: [PATCH 17/21] =?UTF-8?q?fix=20marcaci=C3=B3n=20videoteca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/videolibrary_service.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin.video.alfa/videolibrary_service.py b/plugin.video.alfa/videolibrary_service.py index 1252fd80..2d578d31 100644 --- a/plugin.video.alfa/videolibrary_service.py +++ b/plugin.video.alfa/videolibrary_service.py @@ -13,11 +13,14 @@ from core import filetools from core import videolibrarytools from platformcode import config, logger from platformcode import platformtools +from channels import videolibrary def update(path, p_dialog, i, t, serie, overwrite): logger.info("Actualizando " + path) insertados_total = 0 + #logger.debug(serie) + head_nfo, it = videolibrarytools.read_nfo(path + '/tvshow.nfo') # logger.debug("%s: %s" %(serie.contentSerieName,str(list_canales) )) for channel, url in serie.library_urls.items(): @@ -35,6 +38,7 @@ def update(path, p_dialog, i, t, serie, overwrite): pathchannels = filetools.join(config.get_runtime_path(), "channels", serie.channel + '.py') logger.info("Cargando canal: " + pathchannels + " " + serie.channel) + logger.debug(serie) if serie.library_filter_show: serie.show = serie.library_filter_show.get(channel, serie.contentSerieName) @@ -46,10 +50,16 @@ def update(path, p_dialog, i, t, serie, overwrite): if int(overwrite) == 3: # Sobrescribir todos los archivos (tvshow.nfo, 1x01.nfo, 1x01 [canal].json, 1x01.strm, etc...) insertados, sobreescritos, fallidos = videolibrarytools.save_tvshow(serie, itemlist) + serie= videolibrary.check_season_playcount(serie, serie.contentSeason) + if filetools.write(path + '/tvshow.nfo', head_nfo + it.tojson()): + serie.infoLabels['playcount'] = serie.playcount else: insertados, sobreescritos, fallidos = videolibrarytools.save_episodes(path, itemlist, serie, silent=True, overwrite=overwrite) + it = videolibrary.check_season_playcount(it, it.contentSeason) + if filetools.write(path + '/tvshow.nfo', head_nfo + it.tojson()): + serie.infoLabels['playcount'] = serie.playcount insertados_total += insertados except Exception, ex: From ddf1c220b7cb6f5ed173a76a280e6c3d787bb0f5 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 27 Jun 2018 14:48:21 -0500 Subject: [PATCH 18/21] =?UTF-8?q?fix=20marcaci=C3=B3n=20videoteca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/platformcode/xbmc_videolibrary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/platformcode/xbmc_videolibrary.py b/plugin.video.alfa/platformcode/xbmc_videolibrary.py index 38358fdb..fab5352a 100755 --- a/plugin.video.alfa/platformcode/xbmc_videolibrary.py +++ b/plugin.video.alfa/platformcode/xbmc_videolibrary.py @@ -52,7 +52,7 @@ def mark_auto_as_watched(item): item.playcount = 1 sync_with_trakt = True from channels import videolibrary - videolibrary.mark_content_as_watched(item) + videolibrary.mark_content_as_watched2(item) break time.sleep(30) From 98175e49752ac95850c8b3ee217859ef3503854e Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 27 Jun 2018 14:49:56 -0500 Subject: [PATCH 19/21] =?UTF-8?q?fix=20marcaci=C3=B3n=20videoteca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/channels/videolibrary.py | 67 ++++++++++++++++++++-- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/channels/videolibrary.py b/plugin.video.alfa/channels/videolibrary.py index b37528cc..0946f92c 100644 --- a/plugin.video.alfa/channels/videolibrary.py +++ b/plugin.video.alfa/channels/videolibrary.py @@ -494,9 +494,62 @@ def update_tvshow(item): p_dialog.close() +def mark_content_as_watched2(item): + logger.info() + # logger.debug("item:\n" + item.tostring('\n')) + + if filetools.exists(item.nfo): + head_nfo, it = videolibrarytools.read_nfo(item.nfo) + #logger.debug(it) + + if item.contentType == 'movie': + name_file = os.path.splitext(os.path.basename(item.nfo))[0] + + if name_file != 'tvshow' : + it.library_playcounts.update({name_file: item.playcount}) + + if item.contentType == 'episode' or item.contentType == 'list' or name_file == 'tvshow': + # elif item.contentType == 'episode': + name_file = os.path.splitext(os.path.basename(item.strm_path))[0] + num_season = name_file [0] + item.__setattr__('contentType', 'episode') + item.__setattr__('contentSeason', num_season) + #logger.debug(name_file) + + else: + name_file = item.contentTitle + # logger.debug(name_file) + + if not hasattr(it, 'library_playcounts'): + it.library_playcounts = {} + it.library_playcounts.update({name_file: item.playcount}) + + # se comprueba que si todos los episodios de una temporada están marcados, se marque tb la temporada + if item.contentType != 'movie': + it = check_season_playcount(it, item.contentSeason) + #logger.debug(it) + + # Guardamos los cambios en item.nfo + if filetools.write(item.nfo, head_nfo + it.tojson()): + item.infoLabels['playcount'] = item.playcount + logger.debug(item.playcount) + + # if item.contentType == 'episodesss': + # Actualizar toda la serie + #new_item = item.clone(contentSeason=-1) + #mark_season_as_watched(new_item) + + if config.is_xbmc(): + from platformcode import xbmc_videolibrary + xbmc_videolibrary.mark_content_as_watched_on_kodi(item , item.playcount) + # logger.debug(item) + + platformtools.itemlist_refresh() + + def mark_content_as_watched(item): logger.info() - # logger.debug("item:\n" + item.tostring('\n')) + logger.debug("item:\n" + item.tostring('\n')) if filetools.exists(item.nfo): head_nfo, it = videolibrarytools.read_nfo(item.nfo) @@ -520,10 +573,11 @@ def mark_content_as_watched(item): if filetools.write(item.nfo, head_nfo + it.tojson()): item.infoLabels['playcount'] = item.playcount - if item.contentType == 'tvshow': + if item.contentType == 'tvshow' and item.type != 'episode' : # Actualizar toda la serie new_item = item.clone(contentSeason=-1) mark_season_as_watched(new_item) + if config.is_xbmc(): #and item.contentType == 'episode': from platformcode import xbmc_videolibrary xbmc_videolibrary.mark_content_as_watched_on_kodi(item, item.playcount) @@ -555,7 +609,7 @@ def mark_season_as_watched(item): season, episode = season_episode.split("x") if int(item.contentSeason) == -1 or int(season) == int(item.contentSeason): - name_file = os.path.splitext(os.path.basename(f))[0] + name_file = os.path.splitext(os.path.basename(i))[0] it.library_playcounts[name_file] = item.playcount episodios_marcados += 1 @@ -685,16 +739,19 @@ def check_season_playcount(item, season): def check_tvshow_playcount(item, season): logger.info() + # logger.debug(item) if season: temporadas_serie = 0 temporadas_vistas_serie = 0 for key, value in item.library_playcounts.iteritems(): - if key == ("season %s" % season): + #if key.startswith("season %s" % season): + if key.startswith("season" ): temporadas_serie += 1 if value > 0: temporadas_vistas_serie += 1 + #logger.debug(temporadas_serie) - if temporadas_serie == temporadas_vistas_serie: + if temporadas_serie == temporadas_vistas_serie: item.library_playcounts.update({item.title: 1}) else: item.library_playcounts.update({item.title: 0}) From 0750c99df4033623e2c073afb6d380fac46a97d9 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 27 Jun 2018 15:00:09 -0500 Subject: [PATCH 20/21] news: fix para mediaserver --- plugin.video.alfa/channels/news.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/plugin.video.alfa/channels/news.py b/plugin.video.alfa/channels/news.py index 27d198ee..8f36a2a9 100644 --- a/plugin.video.alfa/channels/news.py +++ b/plugin.video.alfa/channels/news.py @@ -16,7 +16,7 @@ from core.item import Item from platformcode import config, logger from platformcode import platformtools from core import jsontools -from channels import side_menu + THUMBNAILS = {'0': 'posters', '1': 'banners', '2': 'squares'} @@ -245,13 +245,15 @@ def novedades(item): list_canales, any_active = get_channels_list() - if mode=='silent' and any_active and len(list_canales[item.extra]) > 0: - side_menu.set_menu_settings(item) - aux_list=[] - for canal in list_canales[item.extra]: - if len(aux_list)<2: - aux_list.append(canal) - list_canales[item.extra]=aux_list + if config.is_xbmc(): + from channels import side_menu + if mode=='silent' and any_active and len(list_canales[item.extra]) > 0: + side_menu.set_menu_settings(item) + aux_list=[] + for canal in list_canales[item.extra]: + if len(aux_list)<2: + aux_list.append(canal) + list_canales[item.extra]=aux_list if mode == 'set_cache': list_canales[item.extra] = list_canales[item.extra][2:] From 5cf89dd58a0ae039407d4eb037ed896064ef9d57 Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 27 Jun 2018 16:15:10 -0500 Subject: [PATCH 21/21] v2.5.21 --- plugin.video.alfa/addon.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index fe136a21..f9207650 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -22,12 +22,14 @@ » grantorrent » descargas2020 » torrentlocura » torrentrapid » tumejortorrent » tvsinpagar - » mispelisyseries » kbagi - » animemovil » pelismagnet - » pelisultra » seriesdanko - » seriespapaya » seriesverde - » ultrapeliculas » wikiseries - ¤ arreglos internos + » mispelisyseries » playview + » clipwatching » cloudvideo + » filevideo » upvid + » vidzella » vivo + » watchvideo » vshare + ¤ arreglos internos y actualizado la versión mediaserver + + ¤ Agradecimientos a @alaquepasa y @Pixo506 por colaborar con ésta versión. Navega con Kodi por páginas web para ver sus videos de manera fácil.