{"id":13501743,"url":"https://github.com/Welltory/Zoom2Youtube","last_synced_at":"2025-03-29T09:31:17.479Z","repository":{"id":51249328,"uuid":"99539142","full_name":"Welltory/Zoom2Youtube","owner":"Welltory","description":"Transfer video recordings from the Zoom to YouTube","archived":false,"fork":false,"pushed_at":"2023-05-22T21:34:26.000Z","size":70,"stargazers_count":79,"open_issues_count":6,"forks_count":19,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-10-31T20:41:01.234Z","etag":null,"topics":["downloader","notification","slack","uploader","youtube","zoom"],"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/Welltory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-07T05:16:02.000Z","updated_at":"2024-05-22T00:26:21.000Z","dependencies_parsed_at":"2024-10-31T20:32:35.018Z","dependency_job_id":"8c5ce8f0-f3fa-44f6-ae8d-8bd0dbf43060","html_url":"https://github.com/Welltory/Zoom2Youtube","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/Welltory%2FZoom2Youtube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Welltory%2FZoom2Youtube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Welltory%2FZoom2Youtube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Welltory%2FZoom2Youtube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Welltory","download_url":"https://codeload.github.com/Welltory/Zoom2Youtube/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246167220,"owners_count":20734380,"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":["downloader","notification","slack","uploader","youtube","zoom"],"created_at":"2024-07-31T22:01:48.481Z","updated_at":"2025-03-29T09:31:17.456Z","avatar_url":"https://github.com/Welltory.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![Zoom2youtube showcase](http://i.imgur.com/snCLd13.gif)\n\n↓↓↓\n\n![Zoom2youtube slack notifications](http://i.imgur.com/2nxeNBG.png)\n\n# Zoom2Youtube is a utility for transferring video recordings from the Zoom.us to YouTube\n\nAt [Welltory](https://welltory.com), we hold and record 3-4 virtual meetings every day. The easiest way is to record meetings in [zoom.us](https://zoom.us), then upload them to YouTube where they can be accessed by anyone, from any device: phones, Chromecast, etc. We’ve automated video transfers from Zoom to YouTube, added notifications, and now every recording is automatically dropped into a Slack channel. We use privacy settings (**unlisted**) on YouTube to make sure people who aren’t on the team don’t have access to our meetings.\n\nThe project is written in Python and launched in Docker. This simplifies the project’s initial deployment.\n\n# About\n\nDisclaimer: The utility is supplied \"AS IS\" without any warranties.\n\nYou can reach us at github@welltory.com\n\n# Features\n\n- Automatically download a new Zoom video\n- Upload the video to YouTube (privacy settings: unlisted)\n- Drop a link to the YouTube video into a Slack channel\n- Filter settings: will not upload videos under 15 minutes long to prevent uploads of accidental recordings\n\n\nQuick Start Guide\n=========\n\nStep 1 - Set up Docker\n------------------------\n\nInstall Docker and Docker-Compose\n\n1. Docker installation instructions: https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce\n2. Docker-compose installation instructions: https://docs.docker.com/compose/install/#alternative-install-options\n\nThen create a Docker image. To do this, enter the command:\n\n```\n    $ make build\n```\n\n\nStep 2 - set up Zoom\n----------------------\n\nYou need to create a `.env` file in the root directory of the project, specifying the keys listed below:\n\n    ZOOM_API_KEY\n    ZOOM_API_SECRET\n    ZOOM_EMAIL\n\nTo get the keys, follow these steps:\n1. Follow the link: https://marketplace.zoom.us/docs/guides/build/jwt-app\n2. Create JWT app\n3. Enter the `API Key` in `ZOOM_API_KEY`, `API Secret` in `ZOOM_API_SECRET`\n\n\nStep 3 - Set up Youtube\n-------------------------\n\nAdd the following keys to the `.env` file\n\n    GOOGLE_REFRESH_TOKEN\n    GOOGLE_CLIENT_ID\n    GOOGLE_CLIENT_SECRET\n\nTo get the keys, follow these steps:\n1. Go to the developer console: https://console.developers.google.com/cloud-resource-manager\n2. Create a new project and go to the new project\n3. Follow the link: https://console.developers.google.com/apis/api/youtube.googleapis.com/overview\n4. Turn on `YouTube Data API v3`\n5. Follow the link: https://console.developers.google.com/apis/credentials\n6. create OAuth client credentials.\n7. Select Other types or `Other` (depends on localization), create\n8. Enter `Client ID` in `GOOGLE_CLIENT_ID` and `Client Secret` in `GOOGLE_CLIENT_SECRET`\n\nTo get the `GOOGLE_REFRESH_TOKEN` follow these steps:\n\n1. Follow the link: [https://accounts.google.com/o/oauth2/auth?client_id=\u003cGOOGLE_CLIENT_ID\u003e\u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026scope=https://www.googleapis.com/auth/youtube.upload\u0026access_type=offline\u0026response_type=code](https://accounts.google.com/o/oauth2/auth?client_id=\u003cMY_CLIENT_ID\u003e\u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026scope=https://www.googleapis.com/auth/youtube.upload\u0026access_type=offline\u0026response_type=code), **replacing** `\u003cGOOGLE_CLIENT_ID\u003e` with the `GOOGLE_CLIENT_ID`, you got from the previous step\n2. Select the Google account you need access for\n3. Get access\n4. Enter the token in the .env file, in the `.env` in the `GOOGLE_CODE` field\n5. Run the script in docker container\n```\n    $ docker-compose run app bash\n    $ python3.6 src/get_google_refresh_token.py`\n```\n6. Enter the refresh token in the `.env` file, in the `GOOGLE_REFRESH_TOKEN` field\n\n\nStep 4 - Set up Slack\n-----------------------\n\nAdd the following keys to the `.env` file\n\n    SLACK_CHANNEL\n    SLACK_TOKEN\n\n1. Enter the recipients (separated with commas) in `SLACK_CHANNEL`, for example `SLACK_CHANNEL=#my_cannel,@my_user`\n2. Enter the slack token in `SLACK_TOKEN`\n\n\nStep 5 - Check keys\n-----------------------\n\nTo make sure all the keys were entered into the `.env` file, run the script in docker container\n```\n    $ docker-compose run app bash\n    $ python3.6 src/check_env.py\n```\n\n\nStep 6 - Run the app\n-------------------------\n\nLaunch the container:\n```\n    $ make up\n```\n\n\nAnother way to run the app, through virtualenv\n------------------------------------------------------------------------\n\n1. Create a virtual environment\n```\n    $ virtualenv venv -p /usr/bin/python3 --no-site-package\n```\n2. Activate virtual environment\n```\n    $ source venv/bin/activate\n```\n3. Establish requirements\n```\n    $ pip install -r requirements.txt\n```\n4. Copy cron config\n```\n    $ sudo cp cron/crontab /etc/cron.d/zoom2youtube-cron\n```\n5. Restart cron\n```\n    $  sudo service cron restart\n```\n\nSample .env file\n-----------------\n\n```\nZOOM_API_KEY=AAAAAAAAAAAAAAA\nZOOM_API_SECRET=BBBBBBBBBBBB\nZOOM_EMAIL=test@test.com\n\nGOOGLE_CLIENT_ID=AAAAAAAAAAAAAA.apps.googleusercontent.com\nGOOGLE_CLIENT_SECRET=BBBBBBBBBBBBBb\nGOOGLE_REFRESH_TOKEN=CCCCCCCCCCCC\nGOOGLE_CODE=DDDDDDDDDDDDDD\n\nSLACK_CHANNEL=@user\nSLACK_TOKEN=AAAAAAAAAAAAA\n\n```\n\n```\n// Extra/optional configs\nZOOM_FROM_DAY_DELTA=7\nZOOM_PAGE_SIZE=10\n```\n\nLicense\n-------\n\n[The MIT License (MIT)](https://en.wikipedia.org/wiki/MIT_License)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWelltory%2FZoom2Youtube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWelltory%2FZoom2Youtube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWelltory%2FZoom2Youtube/lists"}