{"id":19478411,"url":"https://github.com/ash-exp/zoom-backup","last_synced_at":"2025-04-25T14:33:01.415Z","repository":{"id":46664982,"uuid":"361952909","full_name":"Ash-exp/zoom-backup","owner":"Ash-exp","description":"🔄 A completely automated model to backup your zoom cloud video recordings along with their transcript files (optional) to  your vimeo account arranged in folders and finally delete the files from zoom cloud(optional). Also includes a script for downloading the recording files to your local system. Zoom Vimeo backup","archived":false,"fork":false,"pushed_at":"2022-02-25T16:35:02.000Z","size":252,"stargazers_count":10,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T23:11:23.369Z","etag":null,"topics":["automation","backup-script","hacktoberfest","hacktoberfest2021","integration","vimeo","vimeo-api","vimeo-uploader","vimeo-video","zoom","zoom-accounts","zoom-api","zoom-automation","zoom-cloud","zoom-lectures-recordings"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ash-exp.png","metadata":{"files":{"readme":"README.es-Mx.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-27T02:15:23.000Z","updated_at":"2023-06-30T11:54:11.000Z","dependencies_parsed_at":"2022-08-03T06:15:24.640Z","dependency_job_id":null,"html_url":"https://github.com/Ash-exp/zoom-backup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ash-exp%2Fzoom-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ash-exp%2Fzoom-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ash-exp%2Fzoom-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ash-exp%2Fzoom-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ash-exp","download_url":"https://codeload.github.com/Ash-exp/zoom-backup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250834280,"owners_count":21494942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","backup-script","hacktoberfest","hacktoberfest2021","integration","vimeo","vimeo-api","vimeo-uploader","vimeo-video","zoom","zoom-accounts","zoom-api","zoom-automation","zoom-cloud","zoom-lectures-recordings"],"created_at":"2024-11-10T19:49:45.097Z","updated_at":"2025-04-25T14:33:00.694Z","avatar_url":"https://github.com/Ash-exp.png","language":"Python","readme":"# Scripts para respaldo de archivos Zoom en Local y Vimeo\n\nEstos scripts han sido creados para descargar archivos de un conjunto de cuentas de Zoom en una computadora local, subirlos a Vimeo desde zoom y finalmente eliminarlos de Zoom. Los archivos incluídos en el repositorio son:\n\n* **config.json**: Archivo de configuración\n* **utils.py**: Archivo de utilería\n* **vimeo_uploader.py**: Sube archivos a Vimeo desde Zoom\n* **zoom_files_downloader.py**: Descarga archivos desde Zoom\n* **zoom_files_delete.py**: Elimina archivos en Zoom\n\nTodos estos Scripts en python se ejecutan de forma individual, excepto utils.py, y la sintaxis de ejecución es similar para todos.\n\n## Pre-requisitos\n* python 3.x\n* wget (se puede instalar con: `pip wget`)\n* Cuenta Pro de Zoom\n* Cuenta Pro de Vimeo\n* Aplicación Zoom\n* Aplicación Vimeo\n* Los videos en Zoom deben poder descargarse.\n\n### config.json\nEs necesario especificar la siguiente información en este archivo:\n* **Zoom access token**\n* **Vimeo access token**\n* **Vimeo User Id**\n* **Vimeo Preset Id**\n\n### Obteniendo el Token JWT de Zoom\nPara obtener el Access Token de Zoom, es necesario crear una aplicación JWT en Zoom market place (https://marketplace.zoom.us/). En este link se encuentran los pasos  para crear una aplicación Jwt (https://marketplace.zoom.us/docs/guides/build/jwt-app).\nUna vez que se ha creado la aplicación, es necesario copiar el Token JWT en el archivo config.json.\n\n### Obteniendo el Token de Vimeo\nPara obtener el Token de Vimeo, es necesario crear una aplicación en Vimeo (https://developer.vimeo.com/apps), después de esto, es necesario generar el Access token desde la misma página. En este link se encuentra información más detallada para hacer esto: https://developer.vimeo.com/api/guides/start.\nUna vez que se ha obtenido el Access Token de Vimeo, es necesario copiarlo en el archivo config.json.\n\n### Obteniendo el User Id de Vimeo\nEs posible obtener el User Id de Vimeo desde el perfil de la cuenta y copiando la última parte de Url, después de **user**. Por ejemplo, en el perfil con link https://vimeo.com/user123456789, el userId es 123456789.\nUna vez obtenido el User Id, es necesario copiarlo en el archivos config.json\n\n### Obteniendo el Vimeo\nEs necesario crear un Preset en Vimeo, ya que el script vimeo_uploader, después de subir los videos a Vimeo, les asigna una configuración predefinida.\nPara esto, después de crear el preset, es necesario copiarlo desde la url y pegarlo en el archivo config.json. Por ejemplo, si la url del preset es https://vimeo.com/settings/videos/embed_presets/987654321, el preset id es 987654321.\n\n## Descargando archivos de Zoom: zoom_files_downloader\nEste script obtiene el Id de todas las cuentas Zoom, posteriormente, utiliza estos Ids para obtener todas las grabaciones de cada una de las cuentas y descargarlos en la computadora local de forma desatendida.\nAl igual que todos los demás, este script, puede ejecutarse en dos modos: utilizando un archivo de entrada y utilizando un rango de fechas.\nEs necesario instalar el paquete wget de python para ejecutar correctamente este script:\n\n`pip wget`\n\n### Utilizando un archivo de entrada\n![Download files using an input file](diagrams/download_files.jpg?raw=true \"Download files using an input file\")\n\n`python zoom_files_downloader.py --inputfile inputfile.csv  --outputfile outputfile.csv`\n\nCon este modo, es necesario un archivo CSV de entrada. Los registros para este archivo están definidos en utils.CSV_HEADER. Es muy difícil generar este archivo, así que es recomendable utilizar este modo únicamente después de haberlo obtenido por haber ejecutado algun script con modalidad de un rango de fechas.\n\nEs decir, es posible subir los videos a Vimeo utilizando un rango de fechas, y, con el reporte generado por este script, es posible descargarlos a la computadora local, utilizando este reporte como archivo de entrada.\n\n### Utilizando un rango de fechas\n![Download files using an input file](diagrams/download_zoom.jpg?raw=true \"Download files using an input file\")\n\n`python zoom_files_downloader.py --daterange YYYY-mm-dd YYYY-mm-dd  --outputfile outputfile.csv`\n\nCon esta modalidad, es posible descargar los archivos de un conjunto de cuentas Zoom utilizando fechas de inicio y fin. Por ejemplo:\n\n`python zoom_files_downloader.py --daterange 2020-01-01 2020-05-03  --outputfile outputfile.csv`\n\n## Subir archivos a Vimeo desde Zoom: vimeo_uploader\nEste script sube los videos de Zoom a Vimeo, además los organiza en carpetas (nombradas igual que la reunión) y les asigna una configuración (preset) predefinida en Vimeo, previamente configurada.\n\n### Utilizando un archivo de entrada\n![Upload files using an input file](diagrams/upload_files.jpg?raw=true \"Upload videos using an input file\")\n\n`python vimeo_uploader.py --inputfile inputfile.csv  --outputfile outputfile.csv`\n\nEn esta modalidad, es necesario un archivo de entrada; antes de subir los archivos, el script revisa que estos videos no existan ya en vimeo, entonces, se suben todos los archivos que no se han subido. Una vez que los videos se han subido a Vimeo, y que la transcripción de cada uno de estos ha comenzado, cada uno se mueve a su carpeta correspondiente (si esta no existe, se crea), y se le asigna el preset previamente configurado.\nFinalmente, se genera un reporte con el estado del script, que puede usarse para volver a ejecutar el mismo script y, en caso de que algún video no se haya subido, o no se haya terminado de mover su carpeta o no se haya asignado un preset definido, se intenta terminar el proceso.\n\n### Utilizando un rango de fechas\n![Upload files using date range](diagrams/upload_zoom.jpg?raw=true \"Upload videos using an input file\")\n\n`python zoom_files_downloader.py --daterange YYYY-mm-dd YYYY-mm-dd  --outputfile outputfile.csv`\n\nEs posible subir los videos en un rango de fechas desde Zoom a Vimeo. Por ejemplo:\n\n`python vimeo_uploader.py --daterange 2020-01-01 2020-05-03  --outputfile outputfile.csv`\n\n## Delete files from Zoom: zoom_files_delete\nEste script permite mover los archivos de Zoom hacia la papelera de reciclaje implementada por Zoom.\nEste archivo puede ser generado con los scripts vimeo_uploader.py o zoom_files_downloader.py, así una vez que estos scripts se han ejecutado satisfactoriamente, es posible eliminarlos de la cuenta de Zoom.\n\n### Using file input mode\n![Delete files using an input file](diagrams/delete_files.jpg?raw=true \"Delete files using an input file\")\n\n`python zoom_files_delete.py --inputfile inputfile.csv  --outputfile outputfile.csv`\n\nCon esta modalidad, este script recibe un archivo de entrada, mueve cada uno de los archivos especificados en este, a la papelera de reciclaje de Zoom.\n\n### Using date range mode\n![Delete files using date range](diagrams/delete_zoom.jpg?raw=true \"Delete files using an input file\")\n\n`python zoom_files_delete.py --daterange YYYY-mm-dd YYYY-mm-dd  --outputfile outputfile.csv`\n\nEn esta modalidad, los archivos de reuniones en un rango de fechas son movidos a la papelera de reciclaje de Zoom.\n\n`python vimeo_uploader.py --daterange 2020-01-01 2020-05-03  --outputfile outputfile.csv`\n\n##Links de documentación oficial\n* https://marketplace.zoom.us/docs/guides\n* https://marketplace.zoom.us/docs/api-reference/introduction\n* https://marketplace.zoom.us/docs/api-reference/zoom-api/users/users\n* https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetings\n* https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingdelete\n* https://developer.vimeo.com/api/guides/start\n* https://developer.vimeo.com/api/reference/folders\n* https://developer.vimeo.com/api/reference/videos#uploads\n* https://developer.vimeo.com/api/reference/embed-presets\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fash-exp%2Fzoom-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fash-exp%2Fzoom-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fash-exp%2Fzoom-backup/lists"}