El 9 de mayo de 2016, 21:29, Manuel <malvare...@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@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/