Incruste por lotes archivos de video en archivos html (¿con Automator?)

¿Se puede hacer lo siguiente con Automator o cualquier otra herramienta/script en macOS?

  • Tengo varios archivos de video con varios nombres de archivo (siempre .mp4).
  • Todos los archivos de video deben estar incrustados en documentos HTML separados.
  • Los documentos HTML deben tener el mismo nombre de archivo que el archivo de video.
  • Ambos archivos deben colocarse juntos en un archivo zip.
  • El archivo zip debe tener el mismo nombre que el video y el archivo HTML.

Entonces, si tengo el archivo video-to-html.mp4, me gustaría terminar con un archivo zip que contenga dos archivos:

video-to-html/video-to-html.html
video-to-html/video-to-html.mp4

El contenido del archivo HTML se vería así:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Lorem ipsum</title>
</head>
<body>
<video autoplay controls>
<source src="video-to-html.mp4" type="video/mp4">
</video>
</body>
</html>

No soy desarrollador, así que no entiendo mucho de codificación.

Tengo curiosidad por saber por qué querrías/necesitarías hacer eso.
Todos los días necesito subir una cantidad de archivos de video a un sistema de revisión y aprobación. El sistema no permite cargar archivos de video, a menos que estén incrustados en un documento HTML.
:/ extraño que no solo tome el archivo de video. — Definitivamente es posible automatizar, pero dejaré que las personas más inteligentes respondan.

Respuestas (1)

Puede lograr esto fácilmente con un breve script de shell:

#!/bin/bash

for v do
    base=${v%%.mp4}
    cat >>"${base}.html" <<EOF
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Lorem ipsum</title>
</head>
<body>
<video autoplay controls>
<source src="$v" type="video/mp4">
</video>
</body>
</html>
EOF

    rm -f "${base}.zip"
    zip "${base}.zip" "${base}.html" "$v"
done

Guárdelo como un script de shell en un lugar conveniente, abra Terminal, ejecútelo chmod +x name-of-scripty ejecútelo como./name-of-script *.mp4

@GeneratorSchj Mi error, elimine todos los caracteres de espacio iniciales en la parte HTML (hasta e inclusive delante de EOF)
¡Lo tengo funcionando! Gracias :) ¿Sería posible que el script hiciera todo el proceso automáticamente con solo hacer doble clic en el archivo ejecutable? Entonces no tendría que ingresar a la Terminal en absoluto :)
@GeneratorSchj Puede definir una acción de carpeta o usar Hazel (preferido). Sin embargo, es probable que la pregunta haya surgido antes en AD, así que antes de hacer una nueva pregunta, use la función de búsqueda :-)
patrix, tengo curiosidad... ¿Por qué prefieres a Hazel? Lo hago porque Folder Actions nunca funcionó de manera confiable para mí. También un poco más fácil de manejar. De vez en cuando veo gente que recomienda Folder Actions y solo pienso en cómo casi nunca funcionó. —— @GeneratorSchj, hay una acción para activar un script de shell en Automator, por lo que sería una forma de activarlo a través de un acceso directo o una aplicación...
@joonas Hazel es mucho más confiable y versátil para esas cosas
¡Impresionante! Obtuve esto trabajando con Automator como un programa usando el código a continuación. Ahora puedo simplemente arrastrar y soltar .mp4archivos en el icono del programa. ¡Gracias!for filename do base=${filename%%.mp4} cat >>"${base}-HTML-Wrap.html" <<EOF <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Lorem ipsum</title> </head> <body> <video autoplay controls loop> <source src= "${base##*/}.mp4" type="video/mp4"> </video> </body> </html> EOF zip -j "${base}-HTML-Wrap.zip" "${base}-HTML-Wrap.html" "$filename" rm -f "${base}-HTML-Wrap.html" done