Cómo sincronizar WMC con una Windows Tablet

Gracias a @DFox por crear este script y las instrucciones

Un script simple y un proceso para mantener automáticamente sincronizados los programas de TV grabados por mi Media Center, los archivos convertidos por MCE Buddy y los que tengo en mi Surface RT, incluyendo cuándo los he visto en mi Surface.

Hay dos archivos necesarios que puedes descargar desde aquí:

  1. PurgeWatchedTV.vbs
  2. Sync TV.xml

El script y el proceso son simples, pero he decidido describir todos los detalles a continuación.

En resumen, en el dispositivo de destino necesitas importar la tarea programada de Windows “Sync TV” y el script “PurgeWatchedTV”. Exporté esta tarea Sync TV. Avísame cómo puedo enviarte estos dos archivos de texto.

Flujo de trabajo de alto nivel:
Tengo mi computadora Media Center (nombre de PC es “MediaCenter”) grabando TV en la ubicación “Recorded TV”. MCE Buddy convierte estos archivos (a mp4 en mi caso) en una carpeta llamada “Converted TV” en esa misma PC. En mi Surface RT, cada vez que inicio sesión copia el delta de archivos de Converted TV a la carpeta de la tarjeta SD “TV” y elimina cualquiera que haya sido removido de Converted TV. Cuando estoy fuera de casa y después de haber visto un programa en mi Surface, muevo ese archivo a una carpeta llamada “Watched TV” en la SD. Cuando regreso a casa e inicio sesión en mi Surface, elimina los archivos de Watched TV, Converted TV y Recorded TV con la tarea programada Sync TV y el script “PurgeWatchedTV”.

Requisitos previos:

  1. El renombrado de archivos de MCE Buddy debe incluir " ;" y luego el nombre de archivo original. Creo que el script también asume que no hay archivos en la raíz; es decir, necesita tener subcarpetas para los nombres de programa y Películas. Por ejemplo, el mío es: %ismovie%<Movies\%showname% ;%originalfilename%,%showname%\S%season%##E%episode%## - %airyear%_%airmonth%_%airday% - %episodename% ;%originalfilename%>
  2. MCE Buddy configurado para mantener los archivos sincronizados.
  3. Homegroup.
  4. Recursos compartidos configurados para Homegroup en la PC anfitriona para Recorded TV y Converted TV. En mi caso \\MediaCenter\Recorded TV y \\MediaCenter\Converted TV.
  5. Una carpeta en la tableta/portátil que contenga la carpeta para los archivos de TV, el archivo de script y una subcarpeta dedicada llamada “Watched TV”. En mi caso tengo D:\TV y luego D:\TV\Watched TV y D:\TV\TV.
  6. Tarea programada llamada “Sync TV” configurada en la tableta/portátil.

Detalles de la tarea programada “Sync TV”:

  1. Ejecuta el script PurgeWatchedTV. Este script elimina cualquier archivo en el recurso compartido Converted TV que exista en la carpeta local D:\Watched TV, junto con cualquier carpeta vacía. Luego elimina el archivo .wtv original correspondiente en el recurso compartido Recorded TV.

  2. Ejecuta el comando robocopy mirror entre \\MediaCenter\Converted TV y D:\TV\TV.

  3. El script PurgeWatchedTV también elimina cualquier archivo huérfano entre Recorded TV y Watched TV. A veces esto me sucedía si por casualidad elimino un programa en mi Media Center mientras el archivo se está convirtiendo. En ese caso MCE Buddy no elimina automáticamente el archivo convertido. Este script verificará si existe en Converted TV pero no en Recorded TV y lo eliminará de Recorded TV.

  4. La tarea programada está configurada para ejecutarse solo cuando está en la red doméstica. Si esto no se configura, cada vez que te conectes a una red mientras estás fuera intentará ejecutar Sync TV. El problema sería que el comando robocopy intentará reintentar por su cuenta y nunca se agotará. Quiero que se comporte así en mi red doméstica, pero no ejecutarse en absoluto mientras estoy fuera. Afortunadamente, esto es una configuración dentro de las Tareas Programadas de Windows.

Los parámetros:

  1. El nombre de PC y recurso compartido del Media Center. Si son diferentes a los que tengo arriba, necesitarás modificar el script PurgeWatchedTV con tus rutas de recurso compartido, así como la ruta en el comando robocopy en la tarea Sync TV.
  2. El formato de archivo de TV convertido. Si no es mp4 entonces necesitarás modificar la variable FileExtension de PurgeWatchedTV.
  3. La ruta de almacenamiento local del dispositivo de destino. Si es diferente, nuevamente modifica el comando robocopy y PurgeWatchedTV.
  4. Especifica el tipo de SO en la tarea Sync TV durante la importación. No estoy seguro de si esto hace una diferencia, pero es una buena práctica en cualquier caso.
  5. El nombre de usuario que ejecuta la tarea en Sync TV. Cuando importes la tarea necesitas especificar el nombre de usuario en la primera pantalla. Deberías ser tú, asumiendo que tienes derechos de administrador en tu propio dispositivo.
  6. El nombre de tu red doméstica en la tarea Sync TV. Al importar la tarea, bajo condiciones especifica el nombre de la red doméstica a la que conectas tu dispositivo. En mi caso mi red doméstica es la misma que mi WiFi.

Problemas conocidos:

  1. La tarea Sync TV se ejecuta solo al iniciar sesión. No hay problema para mí porque cada noche apago mi Surface. Podrías personalizar o agregar otras tareas programadas, como ejecutar en un horario especificado o al despertar, pero no lo he probado. También ten en cuenta las otras limitaciones potenciales a continuación con otros tipos de tareas.
  2. La red necesita estar completamente inicializada. Debido a que la Tarea Programada está especificada para ejecutarse solo en una red particular por diseño, el dispositivo necesita estar completamente conectado a esa red. El problema surge cuando mi Surface se inicia y tarda un segundo en conectarse al WiFi. Si el proceso de inicio de sesión ocurre antes de la conexión, entonces Sync TV no se ejecuta. Tengo que ingresar un pin para iniciar sesión (política de Exchange), así que esto no es un problema para mí porque para cuando desbloqueo e ingreso mi pin ya se ha conectado al WiFi. Hay configuraciones en Windows que puedes requerir una conexión de red antes de iniciar sesión. He configurado esto exitosamente usando políticas de grupo en un dominio corporativo, pero no pude lograr que esto funcione con políticas locales en mi Surface. No solucioné demasiado porque mi configuración funciona bien, pero podrías investigar esto si tienes inicio de sesión automático o tienes la tarea programada en un horario.
  3. Obviamente durante el proceso de copia necesita una conexión de red persistente. Sin embargo, no parece que Windows RT considere la copia del símbolo del sistema como activa y eventualmente la red se duerme. Esto interrumpe el robocopy y simplemente se queda ahí esperando que la red regrese. Esa es la otra razón por la que tengo la tarea para ejecutarse al iniciar sesión porque generalmente es cuando planeo usarlo, dándole suficiente tiempo para terminar las copias. Esta es también la razón por la que con la configuración predeterminada una Tarea Programada en un horario especificado probablemente no funcione porque la red no estará activa. Probablemente podrías configurar la red para que permanezca activa, pero entonces tendrías un impacto en el rendimiento de la batería. También podrías probablemente complicarte y hacer que la tarea programada despierte la red, ejecute la tarea, luego la vuelva a dormir si estaba dormida antes del trabajo, pero nuevamente no me he molestado porque no es necesario para mi uso.
  4. Solo he probado esto en Windows RT pero debería funcionar en Windows 7 y 8.
  5. Ver y administrar estos archivos de video no funciona bien usando la aplicación Video de Windows 8: no está organizada en carpetas, trunca los nombres de archivo y no puedes administrar los archivos para moverlos a la carpeta Watched TV. Y verlos usando el Explorador de Windows del Escritorio es un poco torpe (en RT 8.0). Por lo tanto, uso esta aplicación “My Explorer”, y configuro un favorito a la carpeta D:\TV\TV:
    Microsoft Store - Download apps, games & more for your Windows PC
  6. Literalmente escribí este script usando Notepad en la pantalla táctil de mi Surface, así que no me molesté con mucho manejo de excepciones y no está muy optimizado, pero dado que se ejecuta en la LAN local el script se ejecuta lo suficientemente rápido aparte de la copia real.