[Python-es] Renombrar subtítulos según archivos de video.

lasizoillo lasizoillo en gmail.com
Lun Mayo 9 15:46:42 EDT 2016


El 9 de mayo de 2016, 21:29, Manuel <malvarez99 en gmail.com> escribió:

> Hola amigos.
>
> Llevo desde hace un tiempo queriendo un script que al chequear un
> directorio y ver que hay archivos de video y de subtítulos,
> si los 4 o 5 primeros caracteres coinciden entre ellos, me renombre los
> subtítulos acorde al nombre del video.
>
>
Hay librerias con algoritmos mejores para calcular como de parecidas son
dos cadenas. Por ejemplo:
https://pypi.python.org/pypi/Distance/0.1.3
https://pypi.python.org/pypi/NearDuplicatesDetection/0.2.0

Si no te valen las librerías, puedes tirar de los conceptos de los que
hablan para investigar más sobre el tema.

Otro enfoque de cosas parecidas a lo que necesitas es tener conocimiento
del dominio del problema. Basicamente tirar de thetvdb o imdb para tratar
de cuadrar a qué serie se refieren:
https://pypi.python.org/pypi/series-renamer/1.0.0

A partir de estas ideas y jugando un poco podrías inventarte tu propio
algoritmo. Por ejemplo, así sin pensarlo mucho:
- Extraes tokens de los nombres partiendo por simbolos de puntuación y
espacios
- Generas un par de vectores donde cada dimensión es un token y el valor
las apariciones en cada fichero
- Calculas la distancia entre ambos vectores y según un threshold lo
consideras igual o diferente.

Mucho ánimo, que la cosa tiene para aprender muchas cosillas y divertirse.
Pero ten cuidado no te apasiones mucho que no tendrás tiempo para ver
series ;-)

Un saludo,

Javi


> Videos:
> House.Of.Cards.4x01.mp4
> Elementary S04E16 HDTV x264-LOL EZTV.mkv
>
> Subtítulos:
> Elementary 4x16 - Hounded (Español).srt
> House of Cards (2013) 4x01 - Chapter 40 (Español).srt
>
> El código que os adjunto, me renombra la primera coincidencia que
> encuentra, pero se para ahí y no continua.
> Os agradecería cualquier comentario y/o ayuda.
>
> Un saludo.
> Manuel.
>
>
> #!/usr/local/bin/python3.5
>
>
>
> import os
>
> import os.path
>
>
>
> archivos = os.listdir(os.getcwd())
>
> lista_videos = []
>
> lista_subtitulos = []
>
>
>
> for archivo in archivos:
>
>     if archivo.endswith('mkv') or archivo.endswith('mp4'):
>
>         lista_videos.append(archivo)
>
>     elif archivo.endswith('srt'):
>
>         lista_subtitulos.append(archivo)
>
>
>
> for video in lista_videos:
>
>     for subtitulo in lista_subtitulos:
>
>         for i in range(0,len(lista_videos)):
>
>
>
>             if subtitulo[i][0:4] == video[i][0:4]:
>
>                 subtitulo_final = video[0:-4] + '.srt'
>
>                 os.rename(subtitulo, subtitulo_final)
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160509/8e3830f4/attachment.html>


Más información sobre la lista de distribución Python-es