2013-11-19

Actualizar Microserver a la ultima version de Ubuntu


No tuve muchos problemas. Así de memoria:

 - Para actualizar (a una ubuntu que no es LTS), las instrucciones están aquí: https://help.ubuntu.com/community/QuantalUpgrades
 - Luego ya te va diciendo él solito que hay versiones posteriores, y que tienes que ejecutar "do-release-upgrade"
 - al actualizar él solito quita el plex de /etc/apt/sources.lst, con lo que se desinstala (de todas formas, no está actualizado... fue volver a bajar el .deb y volverlo a instalar, no se perdió la configuración ni nada), a ver si lo arreglan algún día 
 - me encontré con este problema: http://askubuntu.com/questions/202027/unable-to-configure-a-service-to-run-at-startup-with-update-rc-d (hay un pequeño bug en la configuración del transmission, y no arranca automáticamente al reiniciar, pero es fácil de corregir)
 - tenía conectada una unidad de red (configurada en el /etc/fstab) y dejó de funcionar, pero creo que el problema es bastante específico de la airport extreme actuando como servidor samba, lo arreglé poniendo sec=ntlm en los parametros

Eso es todo. Ahora estoy con el ubuntu 13.10, que incluye transmission-daemon 2.82 (que es lo que yo quería). Sickbeard, subliminal, etc... ni se enteraron


2013-09-28

2013-08-29

Sacarle más partido a Plex con un poco de SQL

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-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-05-18

Este año nueva estrategia para los tomates

Como el año pasado les faltó algo de sol, este año vamos a probar algo diferente...

2013-05-05

2 LEDs para la Raspberry pi

Ya está hecho. Ahora no puedo controlar el xbmc con el mando de la tele. Qué frágil es este chisme.

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:


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:

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

Solo hay 10 tipos de personas...

...los que saben binario y los que no... Gracias Papa Noel!!!