def bbcode_kodi2html(text):
    if config.get_platform().startswith(
            "plex") or config.get_platform().startswith("mediaserver"):
        import re
        text = re.sub(r'\[COLOR\s([^\]]+)\]', r'<span style="color: \1">',
                      text)
        text = text.replace('[/COLOR]', '</span>')
        text = text.replace('[CR]', '<br>')
        text = re.sub(r'\[([^\]]+)\]', r'<\1>', text)
        text = text.replace('"color: white"', '"color: auto"')

    return text
示例#2
0
def verify_Kodi_video_DB():
    logger.info()
    import random
    
    platform = {}
    path = ''
    db_files = []
    
    try:
        path = filetools.join("special://masterprofile/", "Database")
        if filetools.exists(path):
            platform = config.get_platform(full_version=True)
            if platform and platform.get('video_db', ''):
                db_files = filetools.walk(path)
                if filetools.exists(filetools.join(path, platform['video_db'])):
                    for root, folders, files in db_files:
                        for file in files:
                            if platform['video_db'] not in file:
                                if file.startswith('MyVideos'):
                                    randnum = str(random.randrange(1, 999999))
                                    filetools.rename(filetools.join(path, file), 'OLD_' + randnum +'_' + file)
                                    logger.error('BD obsoleta: ' + file)
                    
                else:
                    logger.error('Video_DB: ' + str(platform['video_db']) + ' para versión Kodi ' + str(platform['num_version']) + ' NO EXISTE. Analizar carpeta: ' + str(db_files))
            else:
                logger.error('Estructura de get_platform(full_version=True) incorrecta')
        else:
            logger.error('Path a Userdata/Database (' + path + ') no encontrado')
        
    except:
        logger.error('Platform: ' + str(platform) + ' / Path: ' + str(path) + ' / Files: ' + str(db_files))
        logger.error(traceback.format_exc())
        
    return
示例#3
0
def call_unrar(rar_control):
    logger.info(rar_control['status'])

    item = Item().fromurl(rar_control['item'])
    mediaurl = rar_control['mediaurl']
    rar_files = rar_control['rar_files']
    torr_client = rar_control['torr_client']
    password = rar_control['password']
    size = rar_control['size']

    # Creamos el listitem
    xlistitem = xbmcgui.ListItem(path=item.url)

    if config.get_platform(True)['num_version'] >= 16.0:
        xlistitem.setArt({
            'icon': item.thumbnail,
            'thumb': item.thumbnail,
            'poster': item.thumbnail,
            'fanart': item.thumbnail
        })
    else:
        xlistitem.setIconImage(item.thumbnail)
        xlistitem.setThumbnailImage(item.thumbnail)
        xlistitem.setProperty('fanart_image', item.thumbnail)

    if config.get_setting("player_mode"):
        xlistitem.setProperty('IsPlayable', 'true')

    platformtools.set_infolabels(xlistitem, item)

    return platformtools.rar_control_mng(item, xlistitem, mediaurl, rar_files, \
                    torr_client, password, size, rar_control)
示例#4
0
def setting_channel(item):
    if config.get_platform(
            True
    )['num_version'] >= 17.0:  # A partir de Kodi 16 se puede usar multiselect, y de 17 con preselect
        return setting_channel_new(item)
    else:
        return setting_channel_old(item)
示例#5
0
def auth_trakt():
    item = Item()
    folder = (config.get_platform() == "plex")
    item.folder = folder
    # Autentificación de cuenta Trakt
    headers = {'Content-Type': 'application/json', 'trakt-api-key': client_id, 'trakt-api-version': '2'}
    try:
        post = {'client_id': client_id}
        post = jsontools.dump(post)
        # Se solicita url y código de verificación para conceder permiso a la app
        url = "http://api-v2launch.trakt.tv/oauth/device/code"
        data = httptools.downloadpage(url, post=post, headers=headers, replace_headers=True).data
        data = jsontools.load(data)
        item.verify_url = data["verification_url"]
        item.user_code = data["user_code"]
        item.device_code = data["device_code"]
        item.intervalo = data["interval"]
        if not item.folder:
            token_trakt(item)

        else:
            itemlist = []
            title = "Accede a esta página: %s" % item.verify_url
            itemlist.append(item.clone(title=title, action=""))
            title = "Ingresa este código y acepta: %s" % item.user_code
            itemlist.append(item.clone(title=title, action=""))
            title = "Una vez hecho, pulsa aquí!"
            itemlist.append(item.clone(title=title, action="token_trakt"))
            return itemlist
    except:
        import traceback
        logger.error(traceback.format_exc())
示例#6
0
    def check_addon_monitor():
        logger.info()

        # Obtiene el íntervalo entre actualizaciones y si se quieren mensajes
        try:
            timer = int(
                config.get_setting('addon_update_timer')
            )  # Intervalo entre actualizaciones, en Ajustes de Alfa
            if timer <= 0:
                return  # 0.  No se quieren actualizaciones
            verbose = config.get_setting('addon_update_message')
        except:
            timer = 12  # Por defecto cada 12 horas
            verbose = False  # Por defecto, sin mensajes
        timer = timer * 3600  # Lo pasamos a segundos

        if config.get_platform(
                True)['num_version'] >= 14:  # Si es Kodi, lanzamos el monitor
            import xbmc
            monitor = xbmc.Monitor()
        else:  # Lanzamos solo una actualización y salimos
            check_addon_updates(verbose)  # Lanza la actualización
            return

        while not monitor.abortRequested(
        ):  # Loop infinito hasta cancelar Kodi

            check_addon_updates(verbose)  # Lanza la actualización

            if monitor.waitForAbort(
                    timer
            ):  # Espera el tiempo programado o hasta que cancele Kodi
                break  # Cancelación de Kodi, salimos

        return
示例#7
0
文件: updater.py 项目: jswxjj/addon
    def check_addon_monitor():
        logger.info()
        
        # Obtiene el íntervalo entre actualizaciones y si se quieren mensajes
        try:
            timer = int(config.get_setting('addon_update_timer'))       # Intervalo entre actualizaciones, en Ajustes de Alfa
            if timer <= 0:
                if base64.b64decode(config.get_setting('proxy_dev')).decode('utf-8') == 'user':
                    config.set_setting('addon_update_timer', 12)        # Si es usuario se fuerza a 12 horas
                    timer = 12
                else:
                    return                                              # 0.  No se quieren actualizaciones
            verbose = config.get_setting('addon_update_message')
        except:
            logger.error(traceback.format_exc())
            timer = 12                                                  # Por defecto cada 12 horas
            verbose = False                                             # Por defecto, sin mensajes
        timer = timer * 3600                                            # Lo pasamos a segundos

        if config.get_platform(True)['num_version'] >= 14:              # Si es Kodi, lanzamos el monitor
            monitor = xbmc.Monitor()
        else:                                                           # Lanzamos solo una actualización y salimos
            check_addon_updates(verbose)                                # Lanza la actualización
            return
            
        while not monitor.abortRequested():                             # Loop infinito hasta cancelar Kodi

            check_addon_updates(verbose)                                # Lanza la actualización
            
            if monitor.waitForAbort(timer):                             # Espera el tiempo programado o hasta que cancele Kodi
                break                                                   # Cancelación de Kodi, salimos
                
        check_update_to_others(verbose=False, app=False)                # Actualizamos otros add-ons antes de irnos, para el siguiente inicio
        return
示例#8
0
def plugins_get_latest_packages():
    logger.info()

    parameters = {
        "plugin": config.PLUGIN_NAME,
        "platform": config.get_platform()
    }
    return remote_call("plugins/get_latest_packages.php", parameters)
示例#9
0
文件: kbagi.py 项目: yonvima/addon
def seguir(item):
    logger.info()
    data = httptools.downloadpage(item.url, item.post)
    message = "Colección seguida"
    if "Dejar" in item.title:
        message = "La colección ya no se sigue"
    if data.sucess and config.get_platform() != "plex":
        platformtools.dialog_notification("Acción correcta", message)
示例#10
0
def editar_enlace_thumbnail(item):
    logger.info()
    alfav = AlfavoritesData()

    if not alfav.user_favorites[item.i_perfil]: return False
    if not alfav.user_favorites[item.i_perfil]['items'][item.i_enlace]: return False

    it = Item().fromurl(alfav.user_favorites[item.i_perfil]['items'][item.i_enlace])
    
    # A partir de Kodi 17 se puede usar xbmcgui.Dialog().select con thumbnails (ListItem & useDetails=True)
    is_kodi17 = (config.get_platform(True)['num_version'] >= 17.0)
    if is_kodi17:
        import xbmcgui

    # Diálogo para escoger thumbnail (el del canal o iconos predefinidos)
    opciones = []
    ids = []
    try:
        from core import channeltools
        channel_parameters = channeltools.get_channel_parameters(it.channel)
        if channel_parameters['thumbnail'] != '':
            nombre = 'Canal %s' % it.channel
            if is_kodi17:
                it_thumb = xbmcgui.ListItem(nombre)
                it_thumb.setArt({ 'thumb': channel_parameters['thumbnail'] })
                opciones.append(it_thumb)
            else:
                opciones.append(nombre)
            ids.append(channel_parameters['thumbnail'])
    except:
        pass
    
    resource_path = os.path.join(config.get_runtime_path(), 'resources', 'media', 'themes', 'default')
    for f in sorted(os.listdir(resource_path)):
        if f.startswith('thumb_') and not f.startswith('thumb_intervenido') and f != 'thumb_back.png':
            nombre = f.replace('thumb_', '').replace('_', ' ').replace('.png', '')
            if is_kodi17:
                it_thumb = xbmcgui.ListItem(nombre)
                it_thumb.setArt({ 'thumb': os.path.join(resource_path, f) })
                opciones.append(it_thumb)
            else:
                opciones.append(nombre)
            ids.append(os.path.join(resource_path, f))

    if is_kodi17:
        ret = xbmcgui.Dialog().select('Seleccionar thumbnail:', opciones, useDetails=True)
    else:
        ret = platformtools.dialog_select('Seleccionar thumbnail:', opciones)

    if ret == -1: return False # pedido cancel

    it.thumbnail = ids[ret]

    alfav.user_favorites[item.i_perfil]['items'][item.i_enlace] = it.tourl()
    alfav.save()

    platformtools.itemlist_refresh()
    return True
示例#11
0
def editar_enlace_thumbnail(item):
    logger.debug()
    alfav = KodfavouritesData()

    if not alfav.user_favorites[item.i_perfil]: return False
    if not alfav.user_favorites[item.i_perfil]['items'][item.i_enlace]: return False

    it = Item().fromurl(alfav.user_favorites[item.i_perfil]['items'][item.i_enlace])

    # Starting with Kodi 17, you can use xbmcgui.Dialog (). Select with thumbnails (ListItem & useDetails = True)
    is_kodi17 = (config.get_platform(True)['num_version'] >= 17.0)
    if is_kodi17:
        import xbmcgui

    # Dialog to choose thumbnail (the channel or predefined icons)
    opciones = []
    ids = []
    try:
        from core import channeltools
        channel_parameters = channeltools.get_channel_parameters(it.channel)
        if channel_parameters['thumbnail'] != '':
            nombre = 'Canal %s' % it.channel
            if is_kodi17:
                it_thumb = xbmcgui.ListItem(nombre)
                it_thumb.setArt({ 'thumb': channel_parameters['thumbnail'] })
                opciones.append(it_thumb)
            else:
                opciones.append(nombre)
            ids.append(channel_parameters['thumbnail'])
    except:
        pass

    resource_path = os.path.join(config.get_runtime_path(), 'resources', 'media', 'themes', 'default')
    for f in sorted(os.listdir(resource_path)):
        if f.startswith('thumb_') and not f.startswith('thumb_intervenido') and f != 'thumb_back.png':
            nombre = f.replace('thumb_', '').replace('_', ' ').replace('.png', '')
            if is_kodi17:
                it_thumb = xbmcgui.ListItem(nombre)
                it_thumb.setArt({ 'thumb': os.path.join(resource_path, f) })
                opciones.append(it_thumb)
            else:
                opciones.append(nombre)
            ids.append(os.path.join(resource_path, f))

    if is_kodi17:
        ret = xbmcgui.Dialog().select(config.get_localized_string(70554), opciones, useDetails=True)
    else:
        ret = platformtools.dialog_select(config.get_localized_string(70554), opciones)

    if ret == -1: return False # order cancel

    it.thumbnail = ids[ret]

    alfav.user_favorites[item.i_perfil]['items'][item.i_enlace] = it.tourl()
    alfav.save()

    platformtools.itemlist_refresh()
    return True
示例#12
0
文件: infoplus.py 项目: Muzic98/addon
 def onInit(self):
     #### Compatibility with Kodi 18 ####
     if config.get_platform(True)['num_version'] < 18:
         self.setCoordinateResolution(2)
     self.getControl(FANART).setImage(trailers[0].getProperty('fanart'))
     self.getControl(NUMBER).setText(trailers[0].getProperty('position'))
     self.getControl(TRAILERS).addItems(trailers)
     self.setFocusId(TRAILERS)
     getFocus(self)
示例#13
0
def init_version(json_data):

    try:
        ret = False
        if json_data.get('init_version'): return ret

        categoria = config.get_system_platform()

        kodi = config.get_platform(full_version=True)
        kodi = ',k%s' % str(kodi.get('num_version')).split('.')[0]

        assistant = ''
        if categoria == 'android':
            assistant = config.get_setting('assistant_binary', default=False)
            if assistant and assistant != True:
                assistant = ',%s' % assistant
            elif assistant == True:
                assistant = ''
                from core import servertools
                torrent_json = servertools.get_server_json('torrent').get(
                    'clients', [])
                for client_block in torrent_json:
                    for client, value in list(client_block.items()):
                        if client != 'id': continue
                        if xbmc.getCondVisibility('System.HasAddon("%s")' %
                                                  value):
                            assistant = ',AstOT'
                            if 'elementum' in value:
                                assistant = ',AstEL'
                                break
                    if assistant:
                        break
            else:
                assistant = ''
                if filetools.exists(
                        filetools.join(ADDON_USERDATA_PATH,
                                       'alfa-mobile-assistant.version')):
                    version = filetools.read(
                        filetools.join(
                            ADDON_USERDATA_PATH,
                            'alfa-mobile-assistant.version')).split('.')
                    if len(version) == 3:
                        assistant = ',Ast%s' % version[1]

        try:
            if not PY3: from lib import alfaresolver
            else: from lib import alfaresolver_py3 as alfaresolver
            threading.Thread(target=alfaresolver.frequency_count, args=(Item(), \
                        [ADDON_VERSION, categoria + kodi + assistant])).start()
            ret = True
        except:
            logger.error(traceback.format_exc())

    except:
        logger.error(traceback.format_exc())

    return ret
示例#14
0
文件: rapidvideo.py 项目: zapan/addon
def test_video_exists(page_url):
    logger.info("(page_url='%s')" % page_url)
    response = httptools.downloadpage(page_url)
    if response.code == 404:
        return False, config.get_localized_string(70449) % "RapidVideo"
    if not response.data or "urlopen error [Errno 1]" in str(response.code):
        if config.is_xbmc():
            return False, config.get_localized_string(70302) % "RapidVideo"
        elif config.get_platform() == "plex":
            return False, config.get_localized_string(70303) % "RapidVideo"
        elif config.get_platform() == "mediaserver":
            return False, config.get_localized_string(70304) % "RapidVideo"
    if "Object not found" in response.data:
        return False, config.get_localized_string(70449) % "RapidVideo"
    if response.code == 500:
        return False, config.get_localized_string(70524) % "RapidVideo"

    return True, ""
示例#15
0
def editar_enlace_thumbnail(item):
    logger.debug()
    alfav = KodfavouritesData()

    if not alfav.user_favorites[item.i_perfil]: return False
    if not alfav.user_favorites[item.i_perfil]['items'][item.i_enlace]:
        return False

    it = Item().fromurl(
        alfav.user_favorites[item.i_perfil]['items'][item.i_enlace])

    # Starting with Kodi 17, you can use xbmcgui.Dialog (). Select with thumbnails (ListItem & useDetails = True)
    is_kodi17 = (config.get_platform(True)['num_version'] >= 17.0)
    if is_kodi17:
        import xbmcgui

    # Dialog to choose thumbnail (the channel or predefined icons)
    opciones = []
    ids = []
    # try:
    #     from core import channeltools
    #     channel_parameters = channeltools.get_channel_parameters(it.channel)
    #     if channel_parameters['thumbnail'] != '':
    #         nombre = 'Channel %s' % it.channel
    #         if is_kodi17:
    #             it_thumb = xbmcgui.ListItem(nombre)
    #             it_thumb.setArt({ 'thumb': channel_parameters['thumbnail'] })
    #             opciones.append(it_thumb)
    #         else:
    #             opciones.append(nombre)
    #         ids.append(channel_parameters['thumbnail'])
    # except:
    #     pass

    resource_path = 'https://api.github.com/repos/kodiondemand/media/git/trees/b36040432b9be120f04e986277fd34f09dcdb4db'
    for f in sorted(requests.get(resource_path).json().get('tree', []),
                    key=lambda p: p.get('path')):
        nombre = f['path'].replace('thumb_', '').replace('.png', '')
        it_thumb = xbmcgui.ListItem(nombre)
        it_thumb.setArt({'thumb': support.thumb(nombre)})
        opciones.append(it_thumb)
        ids.append(support.thumb(nombre))

    ret = xbmcgui.Dialog().select(config.get_localized_string(70554),
                                  opciones,
                                  useDetails=True)

    if ret == -1: return False  # order cancel

    it.thumbnail = ids[ret]

    alfav.user_favorites[item.i_perfil]['items'][item.i_enlace] = it.tourl()
    alfav.save()

    platformtools.itemlist_refresh()
    return True
示例#16
0
    def check_addon_monitor():
        logger.info()

        # Obtiene el íntervalo entre actualizaciones y si se quieren mensajes
        try:
            timer = int(
                config.get_setting('addon_update_timer')
            )  # Intervalo entre actualizaciones, en Ajustes de Alfa
            if timer <= 0:
                try:
                    user_type = base64.b64decode(
                        config.get_setting('proxy_dev')).decode('utf-8')
                except:
                    user_type = 'user'
                if user_type == 'user':
                    config.set_setting(
                        'addon_update_timer',
                        12)  # Si es usuario se fuerza a 12 horas
                    timer = 12
                else:
                    return  # 0.  No se quieren actualizaciones
            verbose = config.get_setting('addon_update_message')
        except:
            logger.error(traceback.format_exc())
            timer = 12  # Por defecto cada 12 horas
            verbose = False  # Por defecto, sin mensajes
        timer = timer * 3600  # Lo pasamos a segundos

        if config.get_platform(
                True)['num_version'] >= 14:  # Si es Kodi, lanzamos el monitor
            monitor = xbmc.Monitor()
        else:  # Lanzamos solo una actualización y salimos
            check_addon_updates(verbose)  # Lanza la actualización
            return

        while not monitor.abortRequested(
        ):  # Loop infinito hasta cancelar Kodi

            check_addon_updates(verbose)  # Lanza la actualización

            if monitor.waitForAbort(
                    timer
            ):  # Espera el tiempo programado o hasta que cancele Kodi
                break  # Cancelación de Kodi, salimos

        check_update_to_others(
            verbose=False, app=False
        )  # Actualizamos otros add-ons antes de irnos, para el siguiente inicio
        #Borra el .zip de instalación de Alfa de la carpeta Packages, por si está corrupto, y que así se pueda descargar de nuevo
        version = 'plugin.video.alfa-%s.zip' % config.get_addon_version(
            with_fix=False, from_xml=True)
        packages_path = os.path.join(config.translatePath('special://home'),
                                     'addons', 'packages', version)
        if os.path.exists(packages_path):
            os.remove(packages_path)
        return
示例#17
0
def access():
    """
    Returns whether or not filtertools can be used
    """
    allow = False

    if config.is_xbmc() or config.get_platform() == "mediaserver":
        allow = True

    return allow
示例#18
0
def access():
    """
    Devuelve si se puede usar o no filtertools
    """
    allow = False

    if config.is_xbmc() or config.get_platform() == "mediaserver":
        allow = True

    return allow
示例#19
0
def extract_videos(video_id):


    url = 'https://www.youtube.com/get_video_info?video_id=%s&eurl=https://youtube.googleapis.com/v/%s&ssl_stream=1' % \
          (video_id, video_id)
    data = httptools.downloadpage(url).data

    video_urls = []
    params = dict(urlparse.parse_qsl(data))

    if params.get('hlsvp'):
        video_urls.append(["(LIVE .m3u8) [youtube]", params['hlsvp']])
        return video_urls

    if config.is_xbmc():
        import xbmc
        xbmc_version = config.get_platform(True)['num_version']
        if xbmc_version >= 17 and xbmc.getCondVisibility('System.HasAddon(inputstream.adaptive)') \
                and params.get('dashmpd'):
            if params.get('use_cipher_signature', '') != 'True':
                video_urls.append(
                    ['mpd  HD [youtube]', params['dashmpd'], 0, '', True])

    youtube_page_data = httptools.downloadpage(
        "https://www.youtube.com/watch?v=%s" % video_id).data

    params = extract_flashvars(youtube_page_data)

    if params.get('player_response'):
        params = json.load(params.get('player_response'))
        data_flashvars = params["streamingData"]
        for s_data in data_flashvars:
            if s_data in ["adaptiveFormats", "formats"]:
                for opt in data_flashvars[s_data]:
                    opt = dict(opt)
                    if "audioQuality" not in opt:
                        continue
                    if "cipher" in opt:
                        signature = get_signature(youtube_page_data)
                        cipher = dict(
                            urlparse.parse_qsl(urllib.unquote(opt["cipher"])))
                        url = re.search('url=(.*)', opt["cipher"]).group(1)
                        s = cipher.get('s')
                        url = "%s&sig=%s" % (urllib.unquote(url), signature(
                            [s]))
                        video_urls.append(
                            ["%s" % itag_list.get(opt["itag"], "audio"), url])
                    elif opt["itag"] in itag_list:
                        video_urls.append([
                            "%s" % itag_list.get(opt["itag"], "video"),
                            opt["url"]
                        ])

    return video_urls
示例#20
0
def test_video_exists(page_url):
    logger.info("(page_url='%s')" % page_url)
    try:
        response = httptools.downloadpage(page_url)
    except:
        pass

    if not response.data or "urlopen error [Errno 1]" in str(response.code):
        from platformcode import config
        if config.is_xbmc():
            return False, "[Rapidvideo] Este conector solo funciona a partir de Kodi 17"
        elif config.get_platform() == "plex":
            return False, "[Rapidvideo] Este conector no funciona con tu versión de Plex, intenta actualizarla"
        elif config.get_platform() == "mediaserver":
            return False, "[Rapidvideo] Este conector requiere actualizar python a la versión 2.7.9 o superior"

    if "Object not found" in response.data:
        return False, "[Rapidvideo] El archivo no existe o ha sido borrado"

    return True, ""
示例#21
0
    def onInit(self):
        self.MENU = self.getControl(1)
        self.SUBMENU = self.getControl(2)
        #### Compatibility with Kodi 18 ####
        if config.get_platform(True)['num_version'] < 18:
            self.setCoordinateResolution(2)

        itemlist = self.menulist(channelselector.getmainlist())

        self.MENU.addItems(itemlist)
        self.setFocusId(1)
        self.submenu()
示例#22
0
def execute_sql(sql):
    logger.debug()
    file_db = ""
    records = None

    # We look for the archive of the video database according to the version of kodi
    video_db = config.get_platform(True)['video_db']
    if video_db:
        file_db = os.path.join(
            xbmc.translatePath("special://userdata/Database"), video_db)

    # alternative method to locate the database
    if not file_db or not os.path.exists(file_db):
        file_db = ""
        for f in os.path.listdir(
                xbmc.translatePath("special://userdata/Database")):
            path_f = os.path.join(
                xbmc.translatePath("special://userdata/Database"), f)

            if os.path.pathoos.pathols.isfile(path_f) and f.lower().startswith(
                    'myvideos') and f.lower().endswith('.db'):
                file_db = path_f
                break

    if file_db:
        logger.debug("DB file: %s" % file_db)
        conn = None
        try:
            import sqlite3
            conn = sqlite3.connect(file_db)
            cursor = conn.cursor()

            logger.debug("Running sql: %s" % sql)
            cursor.execute(sql)
            conn.commit()

            records = cursor.fetchall()
            if sql.lower().startswith("select"):
                if len(records) == 1 and records[0][0] is None:
                    records = []

            conn.close()
            logger.debug("Query executed. Records: %s" % len(records))

        except:
            logger.error("Error executing sql query")
            if conn:
                conn.close()

    else:
        logger.debug("Database not found")

    return records
示例#23
0
def test_video_exists(page_url):
    logger.info("(page_url='%s')" % page_url)
    try:
        response = httptools.downloadpage(page_url)
    except:
        pass

    if not response.data or "urlopen error [Errno 1]" in str(response.code):
        from platformcode import config
        if config.is_xbmc():
            return False, "[Rapidvideo] Questo connettore funziona solo con versioni le versioni 17 di Kodi"
        elif config.get_platform() == "plex":
            return False, "[Rapidvideo] Questo connettore non funziona con la tua versione Plex installata"
        elif config.get_platform() == "mediaserver":
            return False, "[Rapidvideo] Questo connettore richiede la versione di Python 2.7.9 o successive"

    if "Object not found" in response.data:
        return False, "[Rapidvideo] Il file non esiste oppure e stato cancellato"
    if response.code == 500:
        return False, "[Rapidvideo] Problemi temporanei nel server"

    return True, ""
def test_video_exists(page_url):
    logger.info("(page_url='%s')" % page_url)
    try:
        response = httptools.downloadpage(page_url)
    except:
        pass

    if not response.data or "urlopen error [Errno 1]" in str(response.code):
        from platformcode import config
        if config.is_xbmc():
            return False, "[Rapidvideo] Questo connettore funziona solo con versione di Kodi 17 o successive"
        elif config.get_platform() == "plex":
            return False, "[Rapidvideo] Questo connettore non funziona con la tua versione di Plex, aggiornamento versione richiesto"
        elif config.get_platform() == "mediaserver":
            return False, "[Rapidvideo] Questo connettore richiede un aggiornamento di python alla versione 2.7.9 o superiore"

    if "Object not found" in response.data:
        return False, "[Rapidvideo] File inesistente o e stato cancellato"
    if response.code == 500:
        return False, "[Rapidvideo] Server error, riprova in seguito"

    return True, ""
示例#25
0
    def onInit(self):
        if config.get_platform(True)['num_version'] < 18:
            self.setCoordinateResolution(2)
        with futures.ThreadPoolExecutor() as executor:
            for i, result in enumerate(self.results):
                logger.debug(result)
                if ('seriesName' in result and result['seriesName']) or ('name' in result and result['name']) or ('title' in result and result['title']):
                    self.items += [executor.submit(self.make_items, i, result).result()]
        self.items.sort(key=lambda it: int(it.getProperty('position')))

        self.getControl(SELECT).addItems(self.items)
        self.getControl(BACKGROUND).setImage(self.items[0].getProperty('fanart'))
        self.getControl(LOADING).setVisible(False)
        self.setFocusId(SELECT)
示例#26
0
    def onInit(self):
        #### Compatibilidad con Kodi 18 ####
        if config.get_platform(True)['num_version'] < 18:
            self.setCoordinateResolution(2)

        for menuentry in MAIN_MENU.keys():
            item = xbmcgui.ListItem(MAIN_MENU[menuentry]["label"])
            item.setProperty("thumb", str(MAIN_MENU[menuentry]["icon"]))
            item.setProperty("identifier", str(menuentry))
            item.setProperty("order", str(MAIN_MENU[menuentry]["order"]))
            self.items.append(item)

        self.items.sort(key=lambda it: it.getProperty("order"))
        self.getControl(32500).addItems(self.items)
        self.setFocusId(32500)
示例#27
0
文件: infoplus.py 项目: Muzic98/addon
    def __init__(self, *args, **kwargs):
        self.tmdb = kwargs.get("tmdb", {})
        self.imdb = kwargs.get("imdb", {})
        self.mal = kwargs.get("mal", {})
        self.fanartv = kwargs.get("fanartv", {})

        self.image_list = []

        for key, value in self.tmdb.items():
            for detail in value: self.image_list.append('https://image.tmdb.org/t/p/original' + detail["file_path"])
        for image in self.imdb: self.image_list.append(image["src"])
        for image, title in self.mal: self.image_list.append(image)
        for key, value in self.fanartv.items():
            for image in value: self.image_list.append(image["url"])

        #### Kodi 18 Compatibility ####
        if config.get_platform(True)['num_version'] < 18: self.setCoordinateResolution(2)
        log
        self.background = xbmcgui.ControlImage(0, 0, 1280, 720, imagepath('white'), colorDiffuse='FF232323')
        self.addControl(self.background)
        main_image = self.image_list[0] if self.image_list else ''
        self.main_image = xbmcgui.ControlImage(0, 0, 1280, 720, main_image, 2)
        self.addControl(self.main_image)

        if self.image_list:
            self.counter = xbmcgui.ControlTextBox(1180, 640, 60, 40, 'font13')
            self.addControl(self.counter)
            self.counter.setText('%s/%s' % (1,len(self.image_list)))
        else:
            self.text = xbmcgui.ControlLabel(0, 0, 1280, 720, 'NESSUNA IMMAGINE', 'font13', alignment=2|4)
            self.addControl(self.text)

        self.close_btn = xbmcgui.ControlButton(0, 0, 1280, 720, '' ,'', '')
        self.addControl(self.close_btn)

        if len(self.image_list) > 1:
            # BUTTON LEFT
            self.btn_left = xbmcgui.ControlButton(0, 330, 60, 60, '', imagepath('previous_focus'), imagepath('previous_nofocus'))
            self.addControl(self.btn_left)
            self.btn_left.setAnimations([('WindowOpen', 'effect=slide start=-60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=-60,0 delay=100 time=200')])

            # BUTTON RIGHT
            self.btn_right = xbmcgui.ControlButton(1220, 330, 60, 60, '', imagepath('next_focus'), imagepath('next_nofocus'))
            self.addControl(self.btn_right)
            self.btn_right.setAnimations([('WindowOpen', 'effect=slide start=60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=60,0 delay=100 time=200')])

            self.count = 0
示例#28
0
    def onInit(self):
        #### Compatibility with Kodi 18 ####
        if config.get_platform(True)['num_version'] < 18:
            self.setCoordinateResolution(2)

        for menuentry in menu:
            if not menuentry.channel: menuentry.channel = prevchannel
            item = xbmcgui.ListItem(menuentry.title)
            if not submenu and menuentry.channel in ['news', 'channelselector', 'search', 'videolibrary']:
                item.setProperty('sub', 'Controls/spinUp-Focus.png')
            if menuentry.title != 'Redirect':
                for key , value in json.loads(menuentry.tojson()).items():
                    item.setProperty(key, str(value))
                item.setProperty('run', menuentry.tojson())
                self.items.append(item)

        self.getControl(32500).addItems(self.items)
        self.setFocusId(32500)
示例#29
0
 def onInit(self):
     #### Compatibility with Kodi 18 ####
     if config.get_platform(True)['num_version'] < 18:
         self.setCoordinateResolution(2)
     if Info.getProperty('id'): self.items = get_movies(Info)
     else: self.items = get_recomendations(Info)
     self.cast, self.actors = get_cast(Info)
     self.getControl(LOADING).setVisible(False)
     self.getControl(RECOMANDED).addItems(self.items)
     self.getControl(FANART).setImage(Info.getProperty('fanart'))
     self.getControl(ACTORS).addItems(self.actors)
     if self.cast:
         self.getControl(CAST).setVisible(True)
         self.getControl(CAST).addItems(self.cast)
     else:
         self.getControl(CAST).setVisible(False)
     if Info.getProperty('rating'):
         self.getControl(RATING).setText(str(Info.getProperty('rating')))
     getFocus(self)
示例#30
0
def marcar(item):
    logger.info()

    if "Capítulo" in item.title:
        url = "%s/data.php?mode=capitulo_visto&apikey=%s&sid=%s&c_id=%s" % (
            host, apikey, sid, item.epi_id)
        message = item.title.replace("no", "marcado como").replace(
            "ya", "cambiado a no").replace(" ¿Cambiar?", "")
    elif "temporada" in item.title.lower():
        type_marcado = "1"
        if "como vista" in item.title:
            message = "Temporada %s marcada como vista" % item.season
        else:
            type_marcado = "2"
            message = "Temporada %s marcada como no vista" % item.season
        url = "%s/data.php?mode=temporada_vista&apikey=%s&sid=%s&ficha=%s&t_id=%s&type=%s" \
              % (host, apikey, sid, item.ficha, item.season, type_marcado)
    else:
        message = item.title.replace("Marcar ", "Marcada ").replace(
            "Seguir serie", "Serie en seguimiento")
        if "favorita" in item.title:
            url = "%s/data.php?mode=marcar_ficha&apikey=%s&sid=%s&ficha=%s&tipo=%s" \
                  % (host, apikey, sid, item.ficha, "3")
        elif "pendiente" in item.title:
            url = "%s/data.php?mode=marcar_ficha&apikey=%s&sid=%s&ficha=%s&tipo=%s" \
                  % (host, apikey, sid, item.ficha, "2")
        elif "vista" in item.title:
            url = "%s/data.php?mode=marcar_ficha&apikey=%s&sid=%s&ficha=%s&tipo=%s" \
                  % (host, apikey, sid, item.ficha, "4")
        elif "Seguir" in item.title:
            url = "%s/data.php?mode=marcar_ficha&apikey=%s&sid=%s&ficha=%s&tipo=%s" \
                  % (host, apikey, sid, item.ficha, "2")
            data = httptools.downloadpage(url)
            url = "%s/data.php?mode=marcar_ficha&apikey=%s&sid=%s&ficha=%s&tipo=%s" \
                  % (host, apikey, sid, item.ficha, "1")

    data = httptools.downloadpage(url)
    if data.sucess and config.get_platform(
    ) != "plex" and item.action != "play":
        from platformcode import platformtools
        platformtools.dialog_notification("Acción correcta", message)