2014-08-15

Plex: Bajar subtítulos de los episodios "on deck"


El script con el que me bajo los subtítulos de los episodios "on deck" es este (yo lo llamo "subtitulosOnDeck.sh"):


# 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 queryFicherosOnDeckSubs.sql | sqlite3 "$RUTABD" 


# me bajo los subtitulos de todos los ficheros de la lista
while read unfichero; do

  # borro los subtitulos que haya...
  sinextension=${unfichero%.*}
  rm "$sinextension"*srt 

  subliminal -l en es -- "$unfichero"

done < "ficherosondecksubs.txt"


Explicación: la primera línea mete en la variable "RUTABD" la ruta de la b.d. de plex, que no es más que un fichero. Como es tan complicada la meto en una variable porque si no luego el comando no hay quien lo entienda.

La segunda línea ejecuta la query, que está en el fichero "queryFicherosOnDeckSubs.sql" enchufándosela al "sqlite3", que es el motor de base de datos que usa plex. La query genera un fichero que se llama "ficherosondecksubs.txt". Luego para cada línea de ese fichero, ejecuta "subliminal".

En la query aparecen las secciones que se tienen en cuenta en la línea 19. Si quieres que las tenga en cuenta todas, pues bastaría con eliminar las líneas 18 y 19. Si quieres tener en cuenta más secciones, basta con separarlas por comas, por ejemplo ("03 TVShows", "01 Series", "02 Peliculas")

Los dos ficheros, a continuación:




.headers OFF
.output ficherosondecksubs.txt
select distinct P.file --, IAbuelo.title as serie, IPadre.[index] as temporada, I.[index] as episodio
from METADATA_ITEMS I
inner join LIBRARY_SECTIONS L
on I.library_section_id = L.id
left outer join METADATA_ITEM_SETTINGS S
on I.guid = S.guid
inner join MEDIA_ITEMS M
on I.id = M.metadata_item_id
inner join MEDIA_PARTS P
on M.id = P.media_item_id
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 ( S.view_count = 0 or S.view_count is null)
and L.name in
("03 TVShows")
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_ITEM_SETTINGS S2
on I2.guid = S2.guid
inner join MEDIA_ITEMS M2
on I2.id = M2.metadata_item_id
inner join MEDIA_PARTS P2
on M2.id = P2.media_item_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 1
)
or
IAbuelo.id is null
)
;
.quit
# 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 queryFicherosOnDeckSubs.sql | sqlite3 "$RUTABD"
# me bajo los subtitulos de todos los ficheros de la lista
while read unfichero; do
# borro los subtitulos que haya...
sinextension=${unfichero%.*}
rm "$sinextension"*srt
subliminal -l en es -- "$unfichero"
done < "ficherosondecksubs.txt"

2014-05-10

Popcorn Time

Para ver pelis en inglés.... muy bueno:

Popcorn Time - Download