-
Notifications
You must be signed in to change notification settings - Fork 0
/
dev-notes.txt
192 lines (153 loc) · 12.1 KB
/
dev-notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
WebTV - DEVELOPER NOTES
==========================
- Videoteca en bases de datos sqlite pero no integrada en Kodi
- De cara a kodi, el play se hace desde findvideos y no desde play.
O sea, findvideos no muestra un listado, sino una ventana emergente para escoger el enlace a reproducir.
Lo devuelto por findvideos no necesita infoLabels, solamente server,url, y opcionalmente quality, language, age, other.
Los items de películas/episodios se consideran "playables".
- En la carpeta channels sólo hay los canales que scrapean alguna web.
Lo demás está en la carpeta modules (ej: search, mainmenu, downloads, tracking, ...)
- Acceso a los canales por pelis y/o series (los canales requieren mainlist_pelis, mainlist_series)
- Retocada la estructura básica del addon en default.py (+/- equivale al launcher) y platformtools
- channeltools y servertools retocados
- search y downloads retocados
- pequeños retoques en tmdb y tvdb
- dialog_find_and_set_infoLabels en tmdb para "desambiguar títulos" al guardarlos
- servers: solamente los free, pasando de premiums, debriders, etc
- canales: solamente si permiten acceso público, y pasando de opciones para usuarios registrados
- sin tratamiento especial para canales adultos (no hay canales porno pero puede haber alguna sección de adultos en algún canal)
- específico para Kodi >= 17
- No se usan ninguno de los diálogos con xml
- No se usan ficheros de idioma
- 3 niveles de log: Standard (sólo errores), Medio (errores+info), Debugger (errores+info+debug)
Usar info() para informar por dónde se pasa y algún mensaje de acciones realizadas.
Usar debug() para comprobaciones a nivel de developer como mostrar items, data, etc.
- Las descargas de pelis/series no tienen autodownload, y se fuerza seleccionar algún servidor.
- Todos los parámetros de configuración en un sólo fichero (incluyendo canales y servidores).
La gestión de valores propios de canales/servidores se hará en sus propios módulos si hace falta.
- Filtrado de enlaces por idioma a nivel general para todos los canales.
- Ordenación por orden web o calidad a nivel general para todos los canales.
- Autoplay a nivel general para todos los canales.
- Desactivación opcional de Tmdb para todos los canales.
- Reducidos los parámetros de los json de canales y servidores.
Añadidos searchable=True/False y searchable_types=[] con 'all','movie','tvshow' para indicar las búsquedas permitidas por el canal.
- Conversión servers de pelisalacarta/alfa a webtv, casi iguales solamente hay que tener en cuenta:
Substituir config.get_localized_string(...) por su string correspondiente
Lo que se importe de lib necesita from lib
No se usan thumbnails de servidores
json: reducidas opciones
En algunos casos se ofusca la resolución del server para que tarde más en masificarse y dure más tiempo.
No hay rutinas test_video_exists específicas pero desde get_video_url se puede devolver un string con el mensaje de error.
- Conversión canales de pelisalacarta/alfa a webtv:
Como hay que hacer algunos cambios, intentar dejarlos lo más simples y limpios posibles para facilitar hacer modificaciones.
Tiene que haber mainlist_pelis y/o mainlist_series a parte del mainlist.
Eliminadas referencias a autoplay, filtertools, thumbnails, newest,
Intentar ir clonando los items en lugar de crearlos nuevos, menos para findvideos que se generan de cero sin infolabels.
Eliminadas configuraciones concretas, las que pudiera haber deberían intentar ser parte de la configuración general.
En las funciones search, tener en cuenta search_type para buscar solamente películas, series o ambas a la vez, según permita el canal.
Generar el item.url para buscar en la propia rutina search para que funcione en las búsquedas globales que no lo pasan.
Tener los thumbnails de los canales en local para no depender de webs externas.
No usar fanart de canales (en algunos casos dificultan la lectura y no vale la pena).
- Funciones de videoteca con tracking y trackingtools.
- Se usan bases de datos sqlite para almacenar las pelis/series que se van guardando.
- Se pueden crear varias bases de datos (listas) para contener diferentes pelis/series, aunque solamente una está activa.
- La videoteca no se integra en Kodi y se controla íntegramente desde el addon.
La única excepción son las marcas de visto/no visto para pelis y episodios, que se usan las internas de Kodi.
- En la bd hay tablas para guardar:
- los infolabels (movies, shows, seasons, episodes)
- los enlaces de diferentes canales (channels_*)
- las preferencias de seguimiento de series (tracking_shows) para establecer cuando buscar nuevos episodios.
- Se usa el id de tmdb como clave para todas las tablas. Si no está allí, no se puede guardar!
- Una misma película/serie se puede agregar desde diferentes canales.
- Desde el menú contextual se accede a diferentes acciones que se pueden hacer según sea peli, serie, temporada, episodio.
- findvideos propio para módulo de tracking para ofrecer selección desde los diferentes canales guardados.
En platformtools se genera un item mínimo que es siempre igual para una peli (id) o episodio (id+season+episode) lo cual permite
controlar las marcas de visto/no visto de Kodi.
- Servicio de búsqueda de nuevos episodios configurable cada n horas o ejecutable manualmente.
DESARROLLO DE CANALES:
======================
- A parte del mainlist, hay que implementar mainlist_pelis y/o mainlist_series.
- Intentar que sean lo más simples y genéricos posibles.
- Arrastrar items con clone, menos en findvideos que hay que crear items nuevos sin infolabels.
- No usar thumbnails específicos para los menús, al hacer clone ya se arrastra el thumb del canal.
- Evitar items usados como etiquetas (sin action) y colores personalizados.
- Los patrones con .*? son prácticos pero hay que ser cauto con ellos e intentar delimitarlos.
- Minimizar los parámetros de configuración propios del canal. Si se necesitan, gestionarlos en el propio canal (ej: Yape)
- Llamar a tmdb.set_infoLabels(itemlist) en los listados para completar datos. (el usuario lo puede desactivar desde la configuración)
- Función search:
- Capturar excepción para no bloquear búsquedas globales
- Generar url de búsqueda dentro de la propia rutina (no depender de item.url, solamente de search_type)
- Tener en cuenta item.search_type si se puede buscar por pelis, series o ambas a la vez.
- Si se busca por ambas, diferenciar las series de las pelis en el listado, rellenando fmt_sufijo con 'movie' o 'tvshow'.
- Si hay listado por géneros, llamar generos a la función que muestra el listado de géneros. Ídem para años con anyos.
- Generar url de búsqueda dentro de la propia rutina (no depender de item.url, solamente de search_type)
- Tener en cuenta item.search_type si hay diferentes géneros para pelis y series.
- De momento no se hace nada concreto, pero es interesante tener unificada la manera de obtener los géneros/categorías de cada canal.
- Listados de películas, series
- Habría que poder resolver llamando a tmdb (título+año, título+thumbnail_imdb, ...). A las malas con año='-'
- No hacer doble llamada a tmdb en una misma función para querer obtener más datos, pq es automático si el usuario lo habilita en la configuración.
- Para series:
- mostrar listado con las diferentes temporadas
- mostrar los capítulos de una temporada concreta. (para que no haya listados enormes con series con muchas temporadas/capítulos)
- si una misma url devuelve un listado de todos los episodios de todas las temporadas, crear rutina tracking_all_episodes
- No formatear title con año, idiomas, calidades y colores pq se hace a nivel del addon.
Informar languages y qualities de los items siempre que se pueda (como string con valores separados por , si hay varios).
Usar fmt_sufijo para diferenciar pelis/series en listados mixtos (por búsquedas)
- Si el listado tiene demasiados items (+ de 30?) controlar una paginación interna (ej: canalpelis, inkapelis, ...)
- Función findvideos:
- No hacer ninguna llamada a tmdb ni obtener datos de la peli/serie, solamente rellenar los enlaces a vídeos.
- Siempre que la web lo permita intentar obtener language, quality, age (cuando se modificó) y other (otras notas, como descarga directa, MB, ...)
- El title de los enlaces no importa pq se sobrescribirá al formatear los enlaces si hay server, language, quality, etc.
- No verificar enlaces ya que se hace a nivel del addon y no de los canales
- No filtrar enlaces ya que se hace a nivel del addon y no de los canales
- Adaptar language para que sea ['Esp', 'Lat', 'VO', 'VOSE', 'VOS', 'Eng'].
Importante indicar 'Esp' y 'Lat' para filtrado en servertools. Lo que no sea Esp ni Lat se engloba como VO en las preferencias.
- Si hay "age" preferible que los enlaces estén ordenados por ese valor mostrando los más recientes primero (pq es más probable que funcionen).
Luego en el filtrado de servertools se reordenarán por idioma manteniendo el orden previo.
- Descartar enlaces de "descarga" ?
- Json del canal:
- Para categories de momento sólo se usa 'movie','tvshow'. TODO que hacer o qué otras categorías definir...
- Intentar escribir una pequeña descripción del canal en 'notes'
- Si un canal deja de funcionar y no se quiere mostrar, indicar "active": false
- Si un canal se quiere desactivado por defecto, indicar "status": -1
El status del canal se sobrescribirá con la configuración del usuario si la hay (-1:desactivado, 0:activo (default), 1:preferido)
- Rellenar searchable y search_types
- searchable : True/False indica si el canal tiene buscador
- search_types : Array con los diferentes tipos de búsqueda contemplados.
'all' : busca sin tener en cuenta si es película o serie
'movie' : limita la búsqueda a películas
'tvshow' : limita la búsqueda a series
- Si el canal solo tiene pelis indicar ['movie']
- Si el canal solo tiene series indicar ['tvshow']
- Si tiene ambos:
- ['all'] : si la búsqueda no diferencia pelis y series
- ['movie','tvshow'] : si se puede buscar sólo pelis o sólo series
- ['all','movie','tvshow'] : si se puede buscar sólo pelis, sólo series, o ambas a la vez.
- Canales que necesitan proxies: (ejemplos: seriespapaya, seriesdanko, gnula)
def configurar_proxies(item):
from core import proxytools
return proxytools.configurar_proxies_canal(item.channel, HOST)
En mainlist_pelis, mainlist_series la llamada para configurar los proxies:
plot = 'Es posible que para poder utilizar este canal necesites configurar algún proxy, ya que no es accesible desde algunos países/operadoras.'
plot += '[CR]Si desde un navegador web no te funciona el sitio seriespapaya.com necesitarás un proxy.'
itemlist.append(item.clone( title = 'Configurar proxies a usar ...', action = 'configurar_proxies', folder=False, plot=plot, text_color='red' ))
Y finalmente substituir las llamadas a httptools.downloadpage(...) por httptools.downloadpage_proxy(item.channel, ...)
CRITERIOS DE SELECCIÓN PARA WEBS/CANALES:
=========================================
- que la web sea estable y no tarde demasiado en responder.
- que no se necesiten recaptchas.
Puntos a favor:
- que en los listados de pelis esté el año.
- que en los listados de pelis esté el idioma y la calidad.
- que se pueda listar para un idioma concreto (Esp, Lat, VO).
- que se pueda listar a través de diferentes géneros, años, ...
- que los enlaces a los vídeos funcionen en su mayoría, o al menos que lo haga alguno de los primeros enlaces disponibles.
- que no haya muchas pelis que luego no tengan ningún enlace al acceder a ellas.
- que los vídeos tengan cierta calidad.
- que la información de la web sea correcta (que la calidad/idioma sea la que dicen, que los títulos sean identificables en tmdb, ...).
- que tenga material específico que cueste más encontrar en otros canales.
- que la web se actualize con cierta regularidad.
- que no se requiera registro de usuario.
- que se pueda acceder a las distintas temporadas de las series.
Puntos en contra:
- que haya enlaces distintos a la misma película. (por ejemplo urls diferentes según calidad/idioma como pasa en algunos canales de torrents)