Si no conoces Plex, échale un ojo: http://www.plexapp.com, además de las aplicaciones para Windows y Mac (gratuitas) tienen unos excelentes clientes (baratillos) para iOS y Android que, en sus versiones "premium" (plexpass) tienen una funcionalidad interesante, llamada PlexSync.
Resumidamente, plexsync premite sincronizar automáticamente ciertos contenidos en nuestros dispositivos móviles para, por ejemplo, llevar siempre los episodios que no hemos visto de nuestra serie favorita en el tablet o el móvil.
Como Plex almacena el catálogo de contenidos en una base de datos (SQLite 3) podemos montarnos un plexsync casero con un poco de SQL... le pongo muchos comentarios para que se entienda:
--
-- solo me interesa la ruta del fichero, para llegar a ella
-- tengo que enlazar las tablas
-- METADATA_ITEMS, MEDIA_ITEMS y MEDIA_PARTS
-- METADATA_ITEMS es la tabla principal, por asi decirlo
select distinct P.file
from METADATA_ITEMS I
--
-- tengo varias secciones (musica, peliculas en ingles, etc...)
-- y no me interesan todas, asi que enlazo la tabla LIBRARY_SECTIONS
-- para poder filtrar
inner join LIBRARY_SECTIONS L
on I.library_section_id = L.id
--
-- la tabla METADATA_ITEM_SETTINGS me interesa porque es ahí
-- donde plex almacena si has visto o no el item
left outer join METADATA_ITEM_SETTINGS S
on I.guid = S.guid
--
-- ahora vienen las dos tablas que necesito para llegar al
-- nombre del fichero
inner join MEDIA_ITEMS M
on I.id = M.metadata_item_id
inner join MEDIA_PARTS P
on M.id = P.media_item_id
--
-- los episodios de una serie se agrupan en temporadas (el
-- item "padre") y, a su vez, en series (el "abuelo")
left outer join METADATA_ITEMS IPadre
on I.parent_id = IPadre.id
left outer join METADATA_ITEMS IAbuelo
on IPadre.parent_id = IAbuelo.id
where
--
-- los "no vistos":
( S.view_count = 0 or S.view_count is null)
--
-- las secciones que me interesan:
and L.name in
("01 Series",
"02 Peliculas",
"03 TVShows")
--
-- y, ahora viene lo chulo: me interesan los 3 siguientes episodios
-- de cada serie, así que para cada fila que me devuelve la query
-- compruebo si el episodio es uno de los tres primeros que me devuelve
-- esta subquery. no es muy eficiente, pero tampoco es que tenga prisa...
and (
IPadre.[index]*100 + I.[index] in
(
select IPadre2.[index] * 100 + I2.[index]
from METADATA_ITEMS I2
inner join LIBRARY_SECTIONS L2
on I2.library_section_id = L2.id
left outer join METADATA_ITEMS IPadre2
on I2.parent_id = IPadre2.id
left outer join METADATA_ITEMS IAbuelo2
on IPadre2.parent_id = IAbuelo2.id
where IAbuelo.id = IAbuelo2.id
and ( S2.view_count = 0 or S2.view_count is null)
order by 1
limit 3
)
or
--
-- las peliculas no tienen abuelo
IAbuelo.id is null
)
Esta query devuelve una lista con las rutas de los ficheros que me interesa tener copiados en, digamos, un pen drive que me llevo por ahí. Sólo falta automatizar la copia:
Metemos la query en un fichero (query.sql) al que le metemos, al principio, estas dos líneas adicionales:
.headers OFF
.output ficheros.txt
y, al final, esta:
.quit
para que cuando ejecutemos la query el sqlite3 no nos devuelva el nombre de la columna y para que el resultado lo guarde en un ficherito llamado "ficheros.txt".
Finalmente, un pequeño script, y listo:
# query para obtener los ficheros ondeck
# - la query esta en query.sql
# - deja los resultados en "ficheros.txt"
# ruta de la b.d. de Plex Media Server
RUTABD="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db"
# ejecucion de la query en sqlite
cat query.sql | sqlite3 "$RUTABD"
# copiamos los ficheros al disco usb, asegurandonos de modificar fecha
while read unfichero; do
sinextension=${unfichero%.*}
# echo $sinextension
nombrefichero=$(basename "$unfichero")
# echo $nombrefichero
cp -u "$sinextension".* /media/usb0/series
touch "/media/usb0/series/${nombrefichero%.*}".*
done < "ficheros.txt"
# borramos ficheros viejos
find /media/usb0/series/* -mtime +1 -exec rm {} \;
2013-08-29
2013-08-15
2013-08-14
2013-08-10
National Geographic III
Hoy ha aparecido un nuevo habitante del jardín. Estaba asomando la cabeza y tuve que hacerle una foto. Que menos.
2013-06-02
2013-05-18
2013-05-05
2013-04-30
Un par de LEDs para la Raspberry pi
Me lo apunto para ponérselo a la mía:
TNET Raspberry Pi Site: Project 001 - Use Breadboard for first time - COMPLETED
TNET Raspberry Pi Site: Project 001 - Use Breadboard for first time - COMPLETED
2013-04-10
2013-02-27
2013-02-16
2013-02-01
2013-01-09
spectrum plus terminado
El Spectrum plus ya tiene nueva membrana de teclado:
además ahora tiene una pequeña mejora en la salida de vídeo, la hemos amplificado un poco:
el esquema es este (sacado de wiki.speccy.org y de octocom.es, al parecer el original es de Sami Vehmaa, gracias a los tres):
Ya enchufadito con su flamante Spectranet (by Winston):
¡Todas las teclas funcionan! demostración:
Un pequeño vídeo de la spectranet en acción:
además ahora tiene una pequeña mejora en la salida de vídeo, la hemos amplificado un poco:
el esquema es este (sacado de wiki.speccy.org y de octocom.es, al parecer el original es de Sami Vehmaa, gracias a los tres):
Ya enchufadito con su flamante Spectranet (by Winston):
¡Todas las teclas funcionan! demostración:
Un pequeño vídeo de la spectranet en acción:
2013-01-03
Restaurando el Spectrum+ (parte 1)
Lo primero es, lógicamente, darle un bañito en el lavavajillas, le ha sentado estupendamente:
Lamentablemente este spectrum+ (como casi todos) tiene mal la membrana, así que no hay más remedio que comprarle una nueva. De momento esto queda pendiente para cuando llegue la nueva membrana.
Hoy en día estar sintonizando el spectrum en la tele es un rollo, vamos a eliminar el modulador RF como en el otro:
Quitamos tapita...
y enchufamos directamente la señal de vídeo que entra por la izquierda:
Lamentablemente este spectrum+ (como casi todos) tiene mal la membrana, así que no hay más remedio que comprarle una nueva. De momento esto queda pendiente para cuando llegue la nueva membrana.
Hoy en día estar sintonizando el spectrum en la tele es un rollo, vamos a eliminar el modulador RF como en el otro:
Quitamos tapita...
y enchufamos directamente la señal de vídeo que entra por la izquierda:
comprobamos que la señal es buena:
de hecho, incluso mejor que la del otro Spectrum:
sólo falta cambiar la membrana del teclado! Con suerte eso será la semana que viene!
2012-12-25
2012-12-03
2012-11-25
2012-09-28
Favi Smart Stick convierte cualquier televisor con HDMI en una Smart TV con Android - Gizmodo ES - The gadgets weblog
Favi Smart Stick convierte cualquier televisor con HDMI en una Smart TV con Android - Gizmodo ES - The gadgets weblog
Más sencillo que la Raspberry Pi, casi igual de barato...
Más sencillo que la Raspberry Pi, casi igual de barato...
2012-09-23
El juego de la semana - Borderlands 2
Hala, ya salió el Borderlands 2. Mola sobre todo para jugar cooperativamente. Sí, esta sección se llama el juego de la semana y no es semanal, pero no le vamos a llamar "el juego de cuando sale un juego nuevo que mola" no?
2012-09-05
Suscribirse a:
Entradas (Atom)





















