예제 #1
0
    def LoadItem(self, item):
        self.getControl(301).setEnabled(False)
        self.getControl(302).setEnabled(False)
        self.getControl(303).setEnabled(False)
        self.getControl(400).setVisible(True)
        logger.info(
            "-----------------------------------------------------------------------"
        )
        logger.info("Item Recibido: " + item.tostring())
        logger.info(
            "-----------------------------------------------------------------------"
        )
        import time
        Start = time.time()
        try:
            itemlist = navigation.NextItem(item)
        except Exception as e:
            import traceback
            logger.error(traceback.format_exc())
            from core import scrapertools
            from core import guitools
            patron = 'File "' + os.path.join(
                config.get_runtime_path(), "pelisalacarta", "channels",
                "").replace("\\", "\\\\") + '([^.]+)\.py"'
            canal = scrapertools.find_single_match(traceback.format_exc(),
                                                   patron)
            if canal:
                guitools.Dialog_OK(
                    "Se ha producido un error en el canal " + canal,
                    "Esto puede ser devido a varias razones: \n - El servidor no está disponible, o no esta respondiendo.\n - Cambios en el diseño de la web.\n - Etc...\nComprueba el log para ver mas detalles del error."
                )
            else:
                guitools.Dialog_OK(
                    "Se ha producido un error en pelisalacarta",
                    "Comprueba el log para ver mas detalles del error.")
            itemlist = None
        if type(itemlist) == list:
            if not item == self.item:
                self.history.append({
                    "Item":
                    self.item,
                    "Position":
                    self.control_list.getSelectedPosition(),
                    "Itemlist":
                    self.itemlist,
                    "Time":
                    self.timeload
                })

            self.timeload = time.time() - Start
            self.itemlist = itemlist
            self.item = item
            self.AddItems()
            self.UpdateInfo()
        else:
            self.getControl(400).setVisible(False)
            self.control_list.setEnabled(True)
            self.UpdateInfo()
예제 #2
0
def download(item, VideoItem=None):
    from core import descargas
    item.title = guitools.Keyboard(item.title)
    if item.title:
        devuelve = descargas.download(item)
        if devuelve == 0:
            guitools.Dialog_OK("pelisalacarta", "Descargado con éxito")
        elif devuelve == -1:
            guitools.Dialog_OK("pelisalacarta", "Descarga cancelada")
        else:
            guitools.Dialog_OK("pelisalacarta", "Error en la descarga")
예제 #3
0
def add_again_to_downloads(item, VideoItem=None):
    from core import descargas
    descargas.mover_descarga_error_a_pendiente(item)
    guitools.Dialog_OK(config.get_localized_string(30101),
                       item.title + "\n" + config.get_localized_string(30107)
                       )  # 'Ha pasado de nuevo a la lista de descargas'
    guitools.Refresh()
예제 #4
0
def remove_from_error_downloads(item, VideoItem=None):
    from core import descargas
    descargas.delete_error_bookmark(item)
    guitools.Dialog_OK(
        config.get_localized_string(30101), item.title + "\n" +
        config.get_localized_string(30106))  # 'Se ha quitado de la lista'
    guitools.Refresh()
예제 #5
0
def downloadall(item):
    logger.info("[descargas.py] downloadall")

    if usingsamba(DOWNLOAD_LIST_PATH):
        ficheros = samba.get_files(DOWNLOAD_LIST_PATH)
    else:
        ficheros = os.listdir(DOWNLOAD_LIST_PATH)

    ficheros.sort()
    for fichero in ficheros:
        if fichero.endswith('.txt'):
            try:
                item = LeerDescarga(fichero, DOWNLOAD_LIST_PATH)
                dev = download(item)
                if dev == -1:
                    logger.info("[descargas.py] Descarga cancelada")
                    guitools.Dialog_OK("pelisalacarta", "Descargas canceladas")
                    break
                elif dev == -2:
                    logger.info("[descargas.py] ERROR EN DESCARGA DE " +
                                fichero)
                    BorrarDescarga(item, DOWNLOAD_LIST_PATH)
                    GuardarDescarga(item, ERROR_PATH)
                else:
                    BorrarDescarga(item, DOWNLOAD_LIST_PATH)
            except:
                logger.info("[descargas.py] ERROR EN DESCARGA DE " + fichero)
                import traceback
                logger.error(traceback.format_exc())
                GuardarDescarga(item, ERROR_PATH)
                BorrarDescarga(item, DOWNLOAD_LIST_PATH)

    return ""
예제 #6
0
def remove_from_downloads(item, VideoItem=None):
    from core import descargas
    # La categoría es el nombre del fichero en la lista de descargas
    descargas.BorrarDescarga(item)
    guitools.Dialog_OK(config.get_localized_string(30101),
                       item.title + "\n" + config.get_localized_string(30106)
                       )  # 'Se ha quitado de lista de descargas'
    guitools.Refresh()
예제 #7
0
def remove_from_favorites(item, VideoItem=None):
    from core import favoritos
    favoritos.BorrarFavorito(item)

    guitools.Dialog_OK(
        config.get_localized_string(30102), item.title + "\n" +
        config.get_localized_string(30105))  # 'Se ha quitado de favoritos'
    guitools.Refresh()
예제 #8
0
def add_to_downloads(item, VideoItem=None):
    from core import descargas
    item.title = guitools.Keyboard(item.title)
    if item.title:
        item.fulltitle = ""
        descargas.GuardarDescarga(item)
        guitools.Dialog_OK(config.get_localized_string(30101), item.title +
                           "\n" + config.get_localized_string(30109)
                           )  # 'se ha añadido a la lista de descargas'
예제 #9
0
def add_to_library(item, VideoItem=None):
    from core import library
    item.title = guitools.Keyboard(item.title)
    if item.title:
        library.Guardar(item)
        guitools.Dialog_OK(config.get_localized_string(30101), item.title +
                           "\n" + config.get_localized_string(30135)
                           )  # 'Se ha añadido a la Biblioteca'
        library.ActualizarBiblioteca(item)
예제 #10
0
def add_to_favorites(item, VideoItem=None):
    from core import favoritos
    item.title = guitools.Keyboard(item.title)
    if item.title:
        item.fulltitle = ""
        favoritos.GuardarFavorito(item)
        guitools.Dialog_OK(
            config.get_localized_string(30102), item.title + "\n" +
            config.get_localized_string(30108))  # 'se ha añadido a favoritos'
예제 #11
0
def Reset(item):
    itemlist=[]
    ConfigCanales = []
    if config.get_setting("canales_buscador"):
      ConfigCanales.extend(config.get_setting("canales_buscador").split("|"))
      IndexConfig = -1
      for x, Config in enumerate(ConfigCanales):
        ConfigCanales[x] = ConfigCanales[x].split(",")[0] + "," + ConfigCanales[x].split(",")[1] + "," +"0" + "," +"0"
      config.set_setting("canales_buscador",'|'.join(ConfigCanales))
    
    from core import guitools
    guitools.Dialog_OK("Pelisalacarta","Estadisticas reseteadas" )
예제 #12
0
def send_to_pyLoad(item, VideoItem=None):
    logger.info("Opcion seleccionada: Enviar a pyLoad")
    if item.show != "":
        package_name = item.show
    else:
        package_name = item.title
    from core import pyload_client
    pyload_client.download(url=VideoItem.url[0][1], package_name=package_name)
    if item.thumbnail:
        pyload_client.download(url=item.thumbnail, package_name=package_name)
    if item.subtitle:
        pyload_client.download(url=item.subtitle, package_name=package_name)
    guitools.Dialog_OK(config.get_localized_string(30101),
                       item.title + "\n" + "Se ha enviado a pyLoad")
예제 #13
0
def send_to_jdownloader(item, VideoItem=None):
    from core import scrapertools
    import urllib
    import base64
    User = config.get_setting("jdownloader_user")
    Password = config.get_setting("jdownloader_password")
    headers = []
    headers.append([
        "User-Agent",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20100101 Firefox/20.0"
    ])
    headers.append([
        "Accept",
        "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    ])
    headers.append(["Accept-Language", "es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3"])
    headers.append(["Accept-Encoding", "gzip, deflate"])
    headers.append(
        ["Authorization", "Basic " + base64.b64encode(User + ":" + Password)])
    headers.append(["Content-Type", "application/x-www-form-urlencoded"])
    url = config.get_setting("jdownloader") + "/link_adder.tmpl"
    Descargas = VideoItem.url[0][1]
    logger.info(Descargas)
    if item.thumbnail: Descargas = Descargas + "\n" + item.thumbnail
    if item.subtitle: Descargas = Descargas + "\n" + item.subtitle
    try:
        data = scrapertools.downloadpage(url,
                                         headers=headers,
                                         post="do=Add&addlinks=" +
                                         urllib.quote_plus(Descargas))
        guitools.Dialog_OK(config.get_localized_string(30101),
                           item.title + "\n" + "Se ha enviado a jDownloader")
    except:
        guitools.Dialog_OK(
            config.get_localized_string(30101),
            item.title + "\n" + "No se ha podido enviar a jDownloader")
예제 #14
0
def download_all_episodes(item):
    from servers import servertools
    from core import downloadtools
    from core import scrapertools

    # Esto es poco elegante...
    # Esta marca es porque el item tiene algo más aparte en el atributo "extra"
    if item.extra: action = item.extra
    if item.refered_action: action = item.refered_action
    if "###" in action:
        item.extra = action.split("###")[1]
        action = action.split("###")[0]

    #Importamos el canal
    channel = ImportarCanal(item.channel)

    #Ejecutamos la funcion
    exec "itemlist = channel." + action + "(item)"

    #Quitamos estos dos elementos de la lista (si los hay)
    for episodio in itemlist:
        if episodio.action == "add_serie_to_library" or episodio.action == "download_all_episodes":
            itemlist.remove(episodio)

    #Abrimos el dialogo
    pDialog = guitools.Dialog_Progress('pelisalacarta',
                                       'Descargando ' + item.show)

    for x, episodio in enumerate(itemlist):

        #Si se presiona cancelar, se cancela
        if pDialog.iscanceled():
            return
        #Extraemos la Temporada y el Episodio
        episodio.title = scrapertools.get_season_and_episode(episodio.title)

        #Actualizamos el progreso
        pDialog.Actualizar(((x) * 100) / len(itemlist),
                           'Descargando ' + item.show,
                           'Descargando episodio: ' + episodio.title)

        # Extrae los mirrors
        if hasattr(channel, 'findvideos'):
            mirrors_itemlist = channel.findvideos(episodio)
        else:
            mirrors_itemlist = findvideos(episodio, episodio.channel)

        descargado = False

        #Descarga el primer mirror que funcione
        for mirror_item in mirrors_itemlist:

            if hasattr(channel, 'play'):
                video_items = channel.play(mirror_item)
            else:
                video_items = [mirror_item]

            if len(video_items) > 0:
                video_item = video_items[0]

                # Comprueba que esté disponible
                video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing(
                    video_item.server,
                    video_item.url,
                    video_password="",
                    muestra_dialogo=False)

                # Lo descarga
                if puedes:

                    # El vídeo de más calidad es el último
                    devuelve = downloadtools.downloadbest(
                        video_urls,
                        item.show + " " + episodio.title + " [" +
                        video_item.server + "]",
                        continuar=False)
                    if devuelve == 0:
                        logger.info(
                            "[launcher.py] download_all_episodes - Archivo Descargado"
                        )
                        descargado = True
                        break
                    elif devuelve == -1:
                        pDialog.Cerrar()
                        logger.info(
                            "[launcher.py] download_all_episodes - Descarga abortada"
                        )
                        guitools.Dialog_OK("pelisalacarta",
                                           "La descarga ha sido cancelada")
                        return
                    else:
                        continue
    pDialog.Cerrar()
예제 #15
0
def MenuVideo(item):
    if item.server == "": item.server = "directo"
    default_action = config.get_setting("default_action")
    itemlist = []

    # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo
    from servers import servertools
    video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing(
        item.server, item.url, item.password, True)

    # Si puedes ver el vídeo, presenta las opciones
    if puedes:
        for video_url in video_urls:
            itemlist.append(
                Item(title=config.get_localized_string(30151) + " " +
                     video_url[0],
                     url=video_url,
                     action="play_video"))

        if item.server == "local":
            itemlist.append(
                Item(title=config.get_localized_string(30164),
                     url=video_urls,
                     action="delete"))

        if not item.server == "local":
            itemlist.append(
                Item(title=config.get_localized_string(30153),
                     url=video_urls,
                     action="download"))  #"Descargar"

        if item.channel == "favoritos":
            itemlist.append(
                Item(title=config.get_localized_string(30154),
                     url=video_urls,
                     action="remove_from_favorites"))  #"Quitar de favoritos"

        if not item.channel == "favoritos":
            itemlist.append(
                Item(title=config.get_localized_string(30155),
                     url=video_urls,
                     action="add_to_favorites"))  #"Añadir a favoritos"

        if not item.channel == "library":
            itemlist.append(
                Item(title=config.get_localized_string(30161),
                     url=video_urls,
                     action="add_to_library"))  #"Añadir a Biblioteca"

        if item.channel == "library":
            itemlist.append(
                Item(title="Quitar de la Biblioteca",
                     url=video_urls,
                     action="remove_from_library"))  #"Añadir a Biblioteca"

        if not item.channel == "descargas":
            itemlist.append(
                Item(
                    title=config.get_localized_string(30157),
                    url=video_urls,
                    action="add_to_downloads"))  #"Añadir a lista de descargas"

        if item.channel == "descargas" and item.category == "errores":
            itemlist.append(
                Item(title=config.get_localized_string(30159),
                     url=video_urls,
                     action="remove_from_error_downloads")
            )  #"Borrar descarga definitivamente"
            itemlist.append(
                Item(title=config.get_localized_string(30160),
                     url=video_urls,
                     action="add_again_to_downloads")
            )  #"Pasar de nuevo a lista de descargas"

        if item.channel == "descargas" and item.category == "pendientes":
            itemlist.append(
                Item(title=config.get_localized_string(30156),
                     url=video_urls,
                     action="remove_from_downloads")
            )  #"Quitar de lista de descargas"

        if config.get_setting("jdownloader_enabled") == "true":
            itemlist.append(
                Item(title=config.get_localized_string(30158),
                     url=video_urls,
                     action="send_to_jdownloader"))  #"Enviar a JDownloader"

        if config.get_setting("pyload_enabled") == "true":
            itemlist.append(
                Item(title=config.get_localized_string(30158).replace(
                    "jDownloader", "pyLoad"),
                     url=video_urls,
                     action="send_to_pyLoad"))  #"Enviar a pyLoad"

        if not item.channel in ["trailertools", "ecarteleratrailers"]:
            itemlist.append(
                Item(title=config.get_localized_string(30162),
                     url=video_urls,
                     action="search_trailer"))  # "Buscar Trailer"

    else:
        if item.server != "":
            guitools.Dialog_OK("No puedes ver ese vídeo porque...",
                               motivo.replace("<br/>", "\n") + "\n" + item.url)

        else:
            guitools.Dialog_OK(
                "No puedes ver ese vídeo porque...",
                "El servidor donde está alojado no está\nsoportado en pelisalacarta todavía\n"
                + url)

            if item.channel == "favoritos":
                itemlist.append(
                    Item(title=config.get_localized_string(30154),
                         url=video_urls,
                         action="remove_from_favorites")
                )  #"Quitar de favoritos"
            if item.channel == "library":
                itemlist.append(
                    Item(title="Quitar de la Biblioteca",
                         url=video_urls,
                         action="remove_from_library"))  #"Añadir a Biblioteca"

            if item.channel == "descargas" and item.category == "errores":
                itemlist.append(
                    Item(title=config.get_localized_string(30159),
                         url=video_urls,
                         action="remove_from_error_downloads")
                )  #"Borrar descarga definitivamente"
            if item.channel == "descargas" and not item.category == "errores":
                itemlist.append(
                    Item(title=config.get_localized_string(30156),
                         url=video_urls,
                         action="remove_from_downloads")
                )  #"Quitar de lista de descargas"

    return itemlist