Página 6 de 7

Re: Canal Biblioteca y duda

Publicado: 31 May 2016, 11:01
por super_berny
Lo primero q debemos de aclara es q es lo queremos:
  • En sistemas kodi ¿queremos q la libreria y el canal biblioteca sean equivalentes, compatibles, complementarios o independientes? La propuesta de SeiTan es equivalente. Puedes entrar por la libreria o por el canal y en ambos sitios podras hacer lo mismo.
  • Vamos a guardar la url del listado de servidores de un capitulo/pelicula (como hasta ahora)? o ¿vamos a guardar todos los enlaces a los videos (como proponia Jesus)?
  • En este ultimo caso ¿como gestionamos los enlaces (añadir, eliminar, verificar, etc..)?
  • ¿Queremos guardar la misma serie en varios canales? En la propuesta de SeiTan se da soporte a esto q antes no estaba contemplado.
  • ¿Queremos tener los strm en varios origenes (incluyendo directorios remotos en smb)? Con la nueva estructura de ficheros esto es posible (faltaria implementarlo a la hora de guardar en la libreria).
  • ¿que plataformas no Kodi van a contar con biblioteca? En principio habiamos pensado en mediaserver y plex.
Una vez aclarados estos puntos podemos hablar de como hacerlo.
robalo escribió:Ahora mismo tengo los strm de las series con la estructura librarypath/series/serie/canal/episodios y como a todo hijo de vecino se duplica, triplica,...

La idea es usar la estructura normal, librarypath/series/serie/episodios y en los episodios (strms) añadir una línea por canal.

Para que eso funcione se tiene añadir un paso previo a la ventana de los servidores para que nos muestre los canales si hay más de uno, seleccionamos y accedemos a la ventana de siempre. Esto es lo mejor para BD de kodi ya que almacena datos para las distintas rutas y escrapea también para las distintas rutas.
A mi tampoco acaba de convencerme el ver el capitulo repetido en la libreria de kodi (doy por hecho q en todo lo q dices estas pensando en la libreria de kodi y no en el canal ¿no?). Habia probado añadir una linea por canal en el correspondiente strm, pero tampoco me convence. En primer lugar se comporta como una playlist y para acceder al listado de servidores de la segunda linea he de cancelar el cuadro de seleccion de la primera linea (algo un poco confuso), ademas no se q pasara cuando termine de reproducir un video de la primera lista ¿vuelve a salir el segundo cuadro? No lo se, no lo he probado.
Añadir y eliminar canales se complica un poco mas. Y por ultimo, no podriamos tener la misma serie en dos canales en dos origenes distintos (si, se q es un caso un poco especial, pero posible).

Ahora bien, tu "paso previo" me ha hecho pensar (mal vicio tengo :lol: ):
  • Olvidaros de lo q ahora mismo tengais en la biblioteca, lo q os propongo no va a ser compatible. Por lo q habra q idear un metodo de conversion.
  • Para el scraper no importa en contenido de los strm sino el nombre del fichero y el de la carpeta q lo contiene. Asi q podriamos guardar en el un item con un campo q identifique la serie (la key del series.json), temporada y capitulo.
  • Al guardar una serie solo se crearia una carpeta, independientemente del numero de canales (como antes, asi no veriamos capitulos repetidos en la libreria) Si la serie ya existia se salta este paso.
  • Al guardar un capitulo se comprueba si existe el strm correspondiente y en caso contrario se crea.
  • Al guardar se añade en el serie.json una entrada para el capitulo sino existe y dentro de esta una por cada canal con la url correspondiente al listado de servidores.
  • Modificamos la funcion play_from_library para q busque en serie.json cuantas entradas (canales) tiene el capitulo buscado: si solo hay uno mostrar el listado de enlaces (channel.findvideos) y si hay varios canales podemos mostrar un cuadro para seleccionar el canal o ejecutar findvideos de todos los q haya y mostrar el listado de enlaces obtenido
¿q os parece este nuevo enfoque?

Re: Canal Biblioteca y duda

Publicado: 01 Jun 2016, 08:39
por SeiTaN
Agradezco tu esfuerzo por agrupar las ideas, yo de momento no puedo aportar nada, a excepción de lo que queda pendiente, a mi me parece bien tsl como está.

Re: Canal Biblioteca y duda

Publicado: 08 Jun 2016, 19:07
por super_berny
¿Finalmente como va a quedar esto?
Jesus: ¿ya has tomado alguna decision? ¿estas trabajando en ello?

Re: Canal Biblioteca y duda

Publicado: 01 Jul 2016, 18:36
por jesus
Disculpad la ausencia, a veces el resto de temas me saturan y los pocos ratos que he podido sacar necesitaba dedicarlos a estabilizar un poco tvalacarta.

En lo sucesivo espero que no os detenga mi opinión para avanzar en un tema, para mí lo que decidáis está bien (vuestro ritmo es mucho mayor que el mío) y si no estoy de acuerdo con algo concreto lo sabréis enseguida. Mientras mejore lo que hay, como es el caso, cualquier aportación es bien recibida :)

Si lo que queréis es mi opinión sobre estos puntos, vamos al lío:
super_berny escribió:En sistemas kodi ¿queremos q la libreria y el canal biblioteca sean equivalentes, compatibles, complementarios o independientes? La propuesta de SeiTan es equivalente. Puedes entrar por la libreria o por el canal y en ambos sitios podras hacer lo mismo.
Sin pedir el comodín del diccionario para asegurarme de que entiendo las diferencias, yo voto por "independientes".

Es decir, hay una cosa que es la "biblioteca" donde se almacenan las series y las pelis, con toda la información para poder mostrarla, y en paralelo se añaden las cosas a la biblioteca de Kodi para el que lo prefiera así.

Un .json gordo, o una base de datos sqlite con la información de pelis y series, sería suficiente para que en cualquier plataforma tengamos una biblioteca completa. Y en Kodi creamos unos ficheros .STRM que apunten a esa base de datos.
super_berny escribió:Vamos a guardar la url del listado de servidores de un capitulo/pelicula (como hasta ahora)? o ¿vamos a guardar todos los enlaces a los videos (como proponia Jesus)?
Aquí está claro que yo opino que sí :)

Si un canal cierra, cambia, deja de funcionar temporalmente, etc... me gusta saber que mantengo mis enlaces.
super_berny escribió:En este ultimo caso ¿como gestionamos los enlaces (añadir, eliminar, verificar, etc..)?
Yo no gestionaría nada, como mucho puedes dar opción a "actualizar" los enlaces comprobando en el canal si hay cosas nuevas y a quitar los que veas que no funcionan.

Pero que sea el usuario el que lo pida, o los canales acusarán un elevado número de llamadas si todo el mundo verifica todos los días cada uno de los episodios de sus series.
super_berny escribió:¿Queremos guardar la misma serie en varios canales? En la propuesta de SeiTan se da soporte a esto q antes no estaba contemplado.
La pregunta es ambigua :)

Quiero tener una única serie, independientemente de en qué canales esté. Sí.

Pero también es cierto que tendré que saber de qué canales sale esa información, más que nada para poder añadir nuevos canales o incluso quitar alguno.

Muchos enlaces serán los mismos en todos los canales, y yo creo que lo que necesita un usuario es ver el episodio 1x05 y que le salgan todas las opciones posibles.
super_berny escribió:¿Queremos tener los strm en varios origenes (incluyendo directorios remotos en smb)? Con la nueva estructura de ficheros esto es posible (faltaria implementarlo a la hora de guardar en la libreria).
A la mayoría de usuarios esto les dará igual (y ocupan poco espacio), pero los más organizados seguro que quieren tener una biblioteca compartida. SMB es una buena opción.
super_berny escribió:¿que plataformas no Kodi van a contar con biblioteca? En principio habiamos pensado en mediaserver y plex.
Todas... aunque ahora mismo no hay más que kodi, mediaserver y plex :)

Pero resolviendo para estas, y evitando el kodi-centrismo, cuando vengan nuevas ya iremos adaptando.
super_berny escribió:
  • Olvidaros de lo q ahora mismo tengais en la biblioteca, lo q os propongo no va a ser compatible. Por lo q habra q idear un metodo de conversion.
  • Para el scraper no importa en contenido de los strm sino el nombre del fichero y el de la carpeta q lo contiene. Asi q podriamos guardar en el un item con un campo q identifique la serie (la key del series.json), temporada y capitulo.
  • Al guardar una serie solo se crearia una carpeta, independientemente del numero de canales (como antes, asi no veriamos capitulos repetidos en la libreria) Si la serie ya existia se salta este paso.
  • Al guardar un capitulo se comprueba si existe el strm correspondiente y en caso contrario se crea.
  • Al guardar se añade en el serie.json una entrada para el capitulo sino existe y dentro de esta una por cada canal con la url correspondiente al listado de servidores.
  • Modificamos la funcion play_from_library para q busque en serie.json cuantas entradas (canales) tiene el capitulo buscado: si solo hay uno mostrar el listado de enlaces (channel.findvideos) y si hay varios canales podemos mostrar un cuadro para seleccionar el canal o ejecutar findvideos de todos los q haya y mostrar el listado de enlaces obtenido
¿q os parece este nuevo enfoque?
Si te entiendo bien, eso se parece MUCHO lo que yo tengo en mente que debería ser.

Lo que manda es el json, y los STRM solo son un atajo para que Kodi nos diga lo que quiere reproducir y nosotros podamos obtenerlo usando el json como referencia. Enlaces que tenemos archivados, de qué canales salen, comprobación de si hay nuevos enlaces en cada canal, nuevos episodios, etc.

Y pensando en la migración, yo iría al series.xml y utilizaría la información que hay para recomponerlo todo:

Código: Seleccionar todo

Ame-iro Cocoa Rainy Color e Youkoso!,http://animeflv.net/anime/ame-iro-cocoa-rainy-color-e-youkoso.html,animeflv
Aquarion Logos,http://animeflv.net/anime/aquarion-logos.html,animeflv
Recorremos una por una cada serie de cada canal, generamos de nuevo los STRM y si hay algo lo renombramos a .bak o algo así para que no se pierda.

Re: Canal Biblioteca y duda

Publicado: 01 Jul 2016, 20:40
por SeiTaN
Jesús escribió:Y pensando en la migración, yo iría al series.xml y utilizaría la información que hay para recomponerlo todo:

Código: Seleccionar todo
Ame-iro Cocoa Rainy Color e Youkoso!,http://animeflv.net/anime/ame-iro-cocoa ... l,animeflv
Aquarion Logos,http://animeflv.net/anime/aquarion-logos.html,animeflv


Recorremos una por una cada serie de cada canal, generamos de nuevo los STRM y si hay algo lo renombramos a .bak o algo así para que no se pierda.
Esto ya se hace con el método library.convert_xml_to_json()

Se recorre el fichero generando todo al nuevo formato, se renombra la antigua biblioteca a "SERIES_OLD" al igual que el fichero "series.xml", no se borra nada :geek:

Re: Canal Biblioteca y duda

Publicado: 01 Jul 2016, 22:29
por robalo
Mi visión de la biblioteca multiplaforma es otra y bastante simple.
Mi mini proyecto se basa en no usar la biblioteca de kodi y usar toda la información que entrega el canal.
Mis strms almacena todo el item del canal y para ver el contenido de la biblioteca tengo, de momento y aún muy guarroen tengourl.py

Código: Seleccionar todo

def series_xml(item):
    itemlist = []

    import libsmb

    f = libsmb.get_file_handle_for_reading("series.xml", config.get_library_path())
    series = f.read().split('\n')[:-1]
    f.close();

    for serie in series:
        c = serie.split(',')
        itemlist.append(
            item.clone(
                title = c[0] + " (" + c[2] + ")",
                action = "series_strm",
                serie = c[0],
                url = c[1],
                canal = c[2]
            )
        )
    return itemlist

def series_strm(item):
    itemlist = []

    import libsmb

    series_path = os.path.join(config.get_library_path(), 'SERIES' )
    episodios_path = os.path.join(series_path, item.serie, item.canal)

    episodios = libsmb.get_files(episodios_path)
    for episodio in episodios:
        e = episodio.split(".")
        if e[1] == "strm":
            f = libsmb.get_file_handle_for_reading(episodio, episodios_path)
            episodio = f.read().replace("plugin://plugin.video.pelisalacarta/?","")
            f.close();
            itemlist.append(
                eval(
                    'item.clone(%s)' % get_item(episodio)
                )
            )
    return itemlist

def get_item(_args):
    for attr in _args.split('&'):
        if not "=" in attr: attr+= '='
        k, v = attr.split('=')
        v = urllib.unquote( v.replace('%0d','%20').replace('%0a','%20').replace('%09','%20').replace('%22','%5c%22') )
        try: _item+= "%s=%s, " % ( k, eval( v.capitalize() ) )
        except: _item+= '%s="%s", ' % (k, v)
    return _item.replace("+"," ").replace("play_from_library","findvideos")
Con los canales seriesblanco y hdfull me funciona bien pero es evidente que sólo es una idea en proceso.

Sé que es una guarrada y personalizada a como tengo el tinglao montao pero si queremos leer se podrá ver que realmente no se necesita escribir mucho para crear una librería independiente a kodi usando lo que ya tenemos.

Re: Canal Biblioteca y duda

Publicado: 01 Jul 2016, 22:38
por SeiTaN
Lo de guardar la info en los strm es una buena idea, creo que ya lo comentó divadres, habría que obtener la información del scrapper al generar los strm o sino se quiere, poner una opción que se marque y cuando se actualicen los strm se añada.

Respecto a que la biblioteca sea independiente está claro que debe ser el camino a seguir, y ya dependiendo de la plataforma será más o menos complicado mostrarlo.

Re: Canal Biblioteca y duda

Publicado: 02 Jul 2016, 11:22
por robalo
Lo anterior funciona en la última versión de plex con pelisalacarta 4.0.9 del blog al menos en hdfull, no a la perfección :), sólo se tiene que perfilar la base. Lo que podrá variar es la cantidad de información que quiera ver cada uno y si esa información la ofrece el canal o no.

Para testear en plex lo tengo de momento con la misma base para ver el comportamiento con los distintos canales
aa_test_strm.py

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - Plugin
# Canal aa_test_strm Testing
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urllib
import os

from core import config
from core import logger
from core.item import Item

__channel__ = "aa_test_strm"
__category__ = "*"
__type__ = "generic"
__title__ = "AA Test strm"
__language__ = "ES"

def isGeneric():
    return True

def mainlist(item):
    logger.info("[aa_test_strm.py] mainlist")

    itemlist = []
    itemlist.append( Item(channel=__channel__, action="series_xml", title="strms"))

    return itemlist

def series_xml(item):
    logger.info("[aa_test_strm.py] series_xml")
    itemlist = []

    f = open(os.path.join(config.get_data_path(),"series.xml"))
    series = f.read().split('\n')[:-1]
    f.close();

    for serie in series:
        c = serie.split(',')
        itemlist.append(
            item.clone(
                title = c[0] + " (" + c[2] + ")",
                action = "series_strm",
                serie = c[0],
                url = c[1],
                canal = c[2]
            )
        )
    return sorted( itemlist, key=lambda Item: Item.title )

def series_strm(item):
    logger.info("[aa_test_strm.py] series_strm")
    itemlist = []

    series_path = os.path.join(config.get_data_path(), 'SERIES' )
    episodios_path = os.path.join(series_path, item.serie, item.canal)
    episodios = os.listdir(episodios_path)

    for episodio in episodios:
        e = episodio.split(".")
        if e[1] == "strm":
            f = open(os.path.join(episodios_path,episodio))
            episodio = f.read().replace("plugin://plugin.video.pelisalacarta/?","")
            f.close();
            itemlist.append(
                eval(
                    'item.clone(%s)' % get_item(episodio)
                )
            )
    return sorted( itemlist, key=lambda Item: Item.title )

def get_item(_args):
    _item = ""
    for attr in _args.split('&'):
        if not "=" in attr: attr+= '='
        k, v = attr.split('=')
        v = urllib.unquote( v.replace('%0d','%20').replace('%0a','%20').replace('%09','%20').replace('%22','%5c%22') )
        try: _item+= "%s=%s, " % ( k, eval( v.capitalize() ) )
        except: _item+= '%s="%s", ' % (k, v)
    return _item.replace("+"," ").replace("play_from_library","findvideos")
aa_test_strm.xml

Código: Seleccionar todo

<channel>
	<id>aa_test_strm</id>
	<name>AA Test strm</name>
	<language>es</language>
	<update_url></update_url>
	<active>true</active>
	<include_in_global_search>false</include_in_global_search>
	<version>2016070201</version>
	<adult>false</adult>
	<date>02/07/2016</date>
	<changes>Testing</changes>
	<fanart></fanart>
	<thumbnail></thumbnail>
	<categories>
		<category>all</category>
	</categories>
</channel>
* series.xml y strms cuelgan del raiz de get_data_path(); SERIES/serie/canal/strms

Re: Canal Biblioteca y duda

Publicado: 02 Jul 2016, 11:45
por super_berny
jesus escribió:Disculpad la ausencia, a veces el resto de temas me saturan y los pocos ratos que he podido sacar necesitaba dedicarlos a estabilizar un poco tvalacarta.
Hombre!!! Para lo q te pagamos ya haces demasiado :lol: :lol: :lol:
¿Me estas tentando con tvalacarta? Mira q como le meta mano igual te la desmonto!!! :D

No voy a repetir los argumento q ya expuse aqui y aqui para no ser pesado, pero me mantengo en mi opinion d q guardar los enlaces a los videos es un error y es dificil de gestionar (entiendo q gestionar y actualizar son sinonimos).
Ante esta disyuntiva he decidido dejar esta parte del desarrollo para otros q crean mas en ese enfoque. Si finalmente parte de mi trabajo os sirve: adelante, es todo vuestro.

Yo voy a ver si puedo reordenar tmdb q la tengo hecha unos zorros :lol: :lol: :lol:

Re: Canal Biblioteca y duda

Publicado: 02 Jul 2016, 12:02
por SeiTaN
robalo es tan conciso que no le hace falta más, felicidades ;)

Para lo que hay ahora en develop, habría que preguntar a divadres como lleva lo suyo de media-server, e intentar seguir la misma línea.

Ahora en las carpetas de las series hay más ficheros aparte del strm, los nfo para el caso que se use kodi y no haga especificar que serie es desde el propio kodi(si es una serie rara), y lo que había pensado divadres era un json con toda la información de esa serie (infolabels para cosas como director, actores y tal, episodios reproducidos, etc), de modo que la parte de la biblioteca es independiente de lo de kodi.

superberny ya que te pones con el scrapper, haz el de thetvdb y filmaffinity :twisted: