Advertisement
ovichan

Swap tracks

Oct 3rd, 2022
1,140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.48 KB | Source Code | 0 0
  1. import os
  2. from os import path
  3. import subprocess
  4. import glob
  5.  
  6.  
  7. # Definición de rutas por defecto de ejecutables y directorio de trabajo
  8. mkvmerge = r"C:\Program Files\MKVToolNix\mkvmerge.exe"
  9. ruta_archivos = r"C:\Users\Ovichan\Desktop\Serie\\" # os.path.split(__file__)[0]
  10.  
  11. # Funcion para extraer el número del episodio. Devuelve la primera aparición de un numero
  12. def extraer_numero(cadena):
  13.  
  14.     words = cadena.split(" ")
  15.  
  16.     for token in words:
  17.         if token[0].isdigit():
  18.             # print(token)
  19.             return token
  20.  
  21.     return None
  22.  
  23. # Definimos la función para sustituir la pista del archivo matroska
  24. def sustituir_pista(source, dest, pista, pos):
  25.  
  26.   # Configuramos los parámetros de ejecución de mkvmerge
  27.   mkvmerge_args = [
  28.     mkvmerge,
  29.     "--output",
  30.     ruta_archivos+dest,
  31.     "--audio-tracks",
  32.     "!"+pos,
  33.     "(",
  34.     ruta_archivos+source,
  35.     ")",
  36.     "--language",
  37.     "0:es",
  38.     "--forced-track",
  39.     "0:yes",
  40.     "--track-name",
  41.     "0:Español 2.0 [DVD]",
  42.     "(",
  43.     ruta_archivos+pista,
  44.     ")",
  45.     "--track-order",
  46.     "0:0,1:0,0:2"
  47.   ]
  48.  
  49.   # Invocamos la ejecución de mkvmerge con sus opciones
  50.   subprocess.run(mkvmerge_args)
  51.  
  52.  
  53. def main():
  54.   # Creamos un directorio
  55.   try:
  56.     os.mkdir(ruta_archivos+"Hechos")
  57.   except FileExistsError as e:
  58.     # print("Ya existe el directorio " + e.filename)
  59.     pass
  60.  
  61.   # Recorremos el directorio y sustituimos las pistas
  62.   archivos = os.listdir(ruta_archivos)
  63.  
  64.   for archivo in archivos:
  65.       # tokens = str(archivo).split(".",2)
  66.       nombre, extension = path.splitext(archivo)
  67.       # print(f"{nombre}: {extension}")
  68.  
  69.       if extension == ".mkv":
  70.         # Obtenemos el numero del nombre
  71.         numero = extraer_numero(nombre)
  72.  
  73.         # Buscamos el audio con el número coincidente
  74.         pista_nueva = glob.glob(ruta_archivos+"/*" + numero + "*[*].flac")
  75.  
  76.         # Si no existen coincidencias salimos del programa
  77.         if len(pista_nueva) == 0:
  78.  
  79.           print("No se ha encontrado ningún archivo para sustituir.")
  80.           exit()
  81.  
  82.         # Recuperamos la ruta y el nombre de la pista
  83.         ruta, pista_nombre = os.path.split(pista_nueva[0])
  84.  
  85.         # Procedemos a la sustitución de la pista
  86.         sustituir_pista(archivo, nombre+"_mod"+extension, pista_nombre,"1")
  87.  
  88.         # Movemos el archivo original a una carpeta
  89.         os.rename(ruta_archivos+archivo, ruta_archivos+"Hechos\\"+archivo)
  90.  
  91. if __name__ == "__main__":
  92.   main()
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement