es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se obtiene el nombre de un archivo mp4 al usar urllib?

El archivo link.txt contiene enlaces a los que estoy haciendo un bucle. Los enlaces llevan a páginas que tienen archivos mp4. Estoy descargando estos. Funciona bien excepto que no puedo obtener el nombre original del mp4.

Salida actual para el archivo mp4:

videoname.mp4

Salida deseada para el archivo mp4:

V14728_full_h264_1500.mp4

Mi código:

one = open("link.txt", "r")
for two in one.readlines():
    driver.get(two)
    sleep(2)
    vid = driver.find_element(By.TAG_NAME, "video")
    src = vid.get_attribute("src")
    driver.get(src)
    sleep(2)
    url = driver.current_url
    print(url)
    urllib.request.urlretrieve(url, 'videoname.mp4') # NECESITO CORREGIR AQUÍ

HTML de la página:

<html>
   <head>
      <meta name="viewport" content="width=device-width">
      <input type="hidden" id="_w_tusk">
      <script type="text/javascript" src="chrome-extension://dbjbempljhcmhlfpfacalomonjpalpko/scripts/inspector.js">
      </script><script src="chrome-extension://mooikfkahbdckldjjndioackbalphokd/assets/prompt.js"></script>
   </head>
   <body class="vsc-initialized" style="">
      <div class="vsc-controller">
      </div><video controls="" autoplay="" name="media">
         <source src="https://download2.[REDACTED].com/7eefd14b306c441ba17f2bd72e371586/61cfc9a7/stream/V14728/V14728_vids/V14728_full_h264_1500.mp4" type="video/mp4">
      </video><span id="copylAddress" style="display: inline-block; position: absolute; left: -9999em;">
      </span>
   </body>
</html>

Captura de pantalla del HTML: Imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada para el archivo mp4, puedes extraer el nombre de archivo de la URL y usarlo como nombre de archivo para el video guardado. Aquí tienes un fragmento de código actualizado:

    import os
    
    one = open("link.txt", "r")
    for two in one.readlines():
        driver.get(two)
        sleep(2)
        vid = driver.find_element(By.TAG_NAME, "video")
        src = vid.get_attribute("src")
        driver.get(src)
        sleep(2)
        url = driver.current_url
        nombre_archivo = os.path.basename(url)
        urllib.request.urlretrieve(url, nombre_archivo)
    

    Aquí, estamos utilizando la función os.path.basename() para extraer el nombre de archivo de la URL y luego usarlo como nombre de archivo para guardar el video utilizando urlretrieve(). Con este cambio, los nombres de archivo guardados ahora deberían tener el formato V14728_full_h264_1500.mp4.

Comments are closed.