edgi-govdata-archiving / edgi-hubot-halpy

Heroku-backed chatbot-friend who lives in EDGI Slack
https://edgi-hubot.herokuapp.com/
3 stars 0 forks source link

Add chatbot command to upload zoom recordings to youtube #26

Closed patcon closed 6 years ago

patcon commented 7 years ago

Add command to upload recorded videos from zoom to youtube. This seems like more autonomy than auto-uploading every night.

alice: @halpy zoom youtube upload
halpy: Queuing all recorded videos to upload to EDGI's YouTube account as unlisted videos.
       When complete, videos will be added to this unlisted playlist:
       https://www.youtube.com/playlist?list=PLtsP3g9LafVv78TIa42xr591-4CfKMYQO

Once this is done, would be nice to perhaps add other commands if people want more control:

  1. ability to list existing zoom recordings
  2. ability to upload specific recording instead of all

Blocked by https://github.com/edgi-govdata-archiving/overview/issues/149, which will provide an API for running existing script that I manually run.

To Do

patcon commented 7 years ago

Confirmed that this would work via a webhook that I set up for the test jenkins instance I was experimenting with. So jenkins instance aside, the chatbot script itself will be very small once this issue moves along: https://github.com/edgi-govdata-archiving/overview/issues/149

patcon commented 7 years ago

OK, so here is the current flow:

bob: let's start a meeting
alice: good call
alice: @halpy zoom me rec now Our meeting
halpy: alice started a recorded zoom session: https://edgi-video-call-landing-page.herokuapp.com/https://zoom.us/j/555555555

when the meeting ends

alice: that was a great meeting that we just finished right now!
alice: @halpy zoom youtube upload
halpy: Ok, sure thing! I've just kicked off upload of Zoom videos to YouTube. If any videos are uploaded, I'll drop a message in #meeting_announcements on EDGI Slack when it's done!

Alice goes to check #meeting_announcements and sees this:

halpy: A user initiated upload of Zoom videos to YouTube, but at least one video was still processing. Please wait 5 minutes and try again.

If she waits 5 minutes and tries again, she'll see this in #meeting_announcements instead:

halpy: New meeting video(s) have been uploaded! https://www.youtube.com/playlist?list=PLtsP3g9LafVv78TIa42xr591-4CfKMYQO

Notes:

Mr0grog commented 7 years ago

I think I’m missing the scenario where we would want this to require manual intervention. Why isn’t this just a quarter-hourly/hourly/daily script that runs automatically?

patcon commented 6 years ago

Yeesh... You're right @Mr0grog... I suppose I was thinking cron nightly, and then thinking manual for sooner, but very little reason not to run every 15 minutes... except maybe giving people a chance to "fix" something that was accidentally said, before putting it on youtube...

But I think every 15 minutes would be fine, given that the playlist in unlisted anyhow

@dcwalk thoughts?

Mr0grog commented 6 years ago

Oh, did not consider the case where something needs to be bleeped or cut out. Whatever is appropriate.

dcwalk commented 6 years ago

We (I've done some manual cutting 2-3 times total (basically a completely unrelated convo before/after, once someone elses completely unreated convo).

I don't think it has ever been a huge concern, and could be handled post hoc, so running quite frequently isn't an issue in my mind!

Sorry, the last few weeks kind of destroyed my notifications, only now wading back through.

dcwalk commented 6 years ago

In terms of the flow, I would just imagine halpy talking to themselves a bunch: halpy: I've just kicked off upload of Zoom videos to YouTube. If any videos are uploaded, I'll drop a message in #meeting_announcements on EDGI Slack when it's done!

patcon commented 6 years ago

Ok, going to close this and open another for just the simple little router endpoint that will help halpy notify :)

patcon commented 6 years ago

We're now running this on circleci, which is building nightly.

We could create a small script to rerun the most recent build for a project, using these endpoints: