見出し画像

YouTubeの動画タイトル取得方法修正中(あと一息〜)

こんにちは。サイボウズ株式会社 開発本部 People Experienceチーム コネクト支援チームの貴島(@jnkykn)です。サイボウズのエンジニアのポータルサイトCybozu Techを、開発者の酒井(@sakay_y)さんと一緒に運営管理しています。前から気になっていた「ダンダダン」を、とうとう見始めてしまいました。星子さん推しです。よろしくお願いします。先週の記事で、YouTubeの動画タイトル取得については優先度を下げて対応中と書きましたが、昨日いろいろ進捗がありました。

スライド自動更新機能にGitHub Slidesを追加

金曜日に、「GitHub Slidesは掲載できますか?」とご相談を受け、ちょこっと調べてみたら、Docswellなどのスライド共有サービスと同様に、メタ情報からタイトルやサムネイル画像が取得できることがわかったので、対応しました。手動実行用のジェネレーターではテスト成功したので、来週job実行のテストができればOKです。

スライド掲載用yamlファイルのジェネレーターを実行して、スライド情報が取得できた画面
スライドのタイトルとサムネイル画像URLが自動取得できた

動画掲載用の動画タイトル取得方法の修正

組織リソースでYouTube Data APIを使う

さて、動画掲載の自動実行で動画のタイトルを、YoouTube APIを使うように修正するため、チーム用のGoogle Cloud組織リソースのアカウント申請をして、請求アカウントとセットで作成してもらうことができました。早速、プロジェクト追加、YouTube Data APIの利用許可、動画タイトル取得に使うAPIキー(YouTube Data API限定)を作成しました。

ジェネレーターの修正とテスト

動画掲載のjobを修正する前に、手動掲載用のジェネレーターの動画タイトル取得方法を修正してテストすることにしました。YouTube Data APIを使用するためのクラスを追加して、動画のIDをパラメータに、タイトルを返すメソッドを作成しました。このメソッドを使ってタイトルが取得できればOKです。手元の環境変数にAPIキーを定義して、ジェネレーターを実行してみました。無事に、動画タイトルの取得に成功したので、今回作成したAPIキーを使って、動画のタイトルを取得できることが確認できました。

ジェネレーターの動画タイトル取得をYouTube Data APIを使う方法に修正して、正しく動画タイトルが取得できた。
ジェネレータの実行

動画自動更新用GitHub Actions jobのYouTube Data API対応

続いて、動画自動掲載のタイトル取得方法をYouTube Data APIを使用する方法に修正していきます。作成したAPIキーを、GitHubのActions用のSecretに追加しました。これを、jobで使います。

      - name: Run main.ts
        env: 
          REPO_TOKEN: ${{ secrets.SAKAI_PERSONAL_ACCESS_TOKEN }}
          VIDEO_UPLOAD_APP_TOKEN: ${{ secrets.VIDEO_UPLOAD_APP_TOKEN }}
          YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_DATA_API }}

実行してみたところ、googleapiが無いって言われました。

TSError: x Unable to compile Typescript(googleapiが無い)
Action実行時のエラー

動画更新用のjob実行環境のパッケージ管理に、googleapiを追加していなかったので、追加。

video-upload-job % npm install googleapi

更新された、packeage.jsonとpackage-lock.jsonをpushしました。
packegeの依存関係の整合が取れていなという、エラーが。(package-lock.jsonに記述が足りていない?)💦

npm error code EUSAGE
npm error
npm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
npm error
npm error Missing: base64-js@1.5.1 from lock file
npm error Missing: ecdsa-sig-formatter@1.0.11 from lock file
npm error Missing: gaxios@6.7.1 from lock file
npm error Missing: gcp-metadata@6.1.0 from lock file
npm error Missing: gtoken@7.1.0 from lock file
npm error Missing: https-proxy-agent@7.0.5 from lock file
npm error Invalid: lock file's node-fetch@2.6.7 does not satisfy node-fetch@2.7.0
npm error Missing: uuid@9.0.1 from lock file
npm error Missing: json-bigint@1.0.0 from lock file
npm error Missing: url-template@2.0.8 from lock file
npm error Missing: jws@4.0.0 from lock file
npm error Missing: bignumber.js@9.1.2 from lock file
npm error Missing: jwa@2.0.0 from lock file
npm error Missing: buffer-equal-constant-time@1.0.1 from lock file
npm error Missing: agent-base@7.1.1 from lock file
npm error
npm error Clean install a project
npm error
npm error Usage:
npm error npm ci
npm error
npm error Options:
npm error [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]
npm error [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
npm error [--include <prod|dev|optional|peer> [--include <prod|dev|optional|peer> ...]]
npm error [--strict-peer-deps] [--foreground-scripts] [--ignore-scripts] [--no-audit]
npm error [--no-bin-links] [--no-fund] [--dry-run]
npm error [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
npm error [-ws|--workspaces] [--include-workspace-root] [--install-links]
npm error
npm error aliases: clean-install, ic, install-clean, isntall-clean
npm error
npm error Run "npm help ci" for more info

世の中簡単じゃなかたー
Slackにエラーが飛びまくるので、actionの実行を止めました。

GitHub Actionsの動画自動更新jobを無効化した画面
動画自動更新を無効化

ここまで試していて、ふと気がついたのですが、手動更新用のジェネレーターはそのままにしておいて、最初からjobを修正して手元で実行してみればよかったんですよね。久しぶりにjobを修正したので、手順を忘れていました。残念。とまぁ、つまづきながらも、YouTube Data APIの実行確認ができたので、ヨシ!💪GitHub Slidesっていうスライド共有方法があるのを知れたのも、良かったです。今まで知らなかったスライド共有方法なので、気になります👀Transcriptとか、PDFダウンロードとかできるのかしら?こちらも、来週調べたいと思います。


いいなと思ったら応援しよう!