Avaloniaを使ってYoutube再生リストを編集できるデスクトップアプリを作ってみた
概要
個人で開発したYoutubeの再生リストを編集できるアプリを開発しました。
一区切りつき、自分なりに勉強できたと感じたため、ここまでにやったことを記事として整理したものになります。
このアプリでは、以下の機能を持っています。
- 再生リストを追加・削除できます。
- 再生リストに動画を追加・削除できます。
- 再生リストの動画を他の再生リストに移動できます。
- 公開されている再生リストの動画を一括で自身の再生リストに追加できます。
- チャンネルを検索して、そのチャンネルの動画を追加、または再生リストの動画を自身の再生リストに追加できます。
以下は、一部の動作をキャプチャしたものになります。
利用した技術
- Avalonia
- デスクトップアプリを作成するためのWPFに近いフレームワークです。マルチプラットフォームで動作します。(ただ、自分のビルド環境がWindowsなので、実際に動くのはWindowsのみだと思います。)
- Google.Apis
- 認証し、実際にYouTubeから情報を取得しているライブラリです。今回自分が利用したのは、YouTubeから情報取得している箇所のみですが、他にもさまざまなAPIがGoogleから提供されているため、見てみると楽しいかもしれません。
作成したコードは(ダーティですが)、以下から確認できます。
https://github.com/niimima/youtube-desktop-app
利用するために
少しハードルが高いです。動かしてみたいな、と思った方は以下のURLからRelease.zipをダウンロードし、以下の手順を実施してください。
https://github.com/niimima/youtube-desktop-app/releases
- もし、.NET5ランタイムがない場合は、以下URLの".NETデスクトップ ランタイム"を自身の環境に合わせて以下からインストールしてください。
https://dotnet.microsoft.com/ja-jp/download/dotnet/5.0 - 個人でOAuthクライアントIDを作っていただく必要があります。以下のサイトの手順を参考に実施してください。UIが変わっている場合もあるため注意してください。
(アプリケーションとして公開するには、Googleにアプリケーションを登録しなければならず少しハードルが高かったため手間がかかってしまっています)
https://iceagegeneration.com/blog/2020/06/01/auth-youtube-data-api/ - 上記で取得したOAuthクライアントIDをReleaseフォルダの"loocal.settings.json"の、"client_id"と"client_secret"の値に置き換えてください。
振り返り
- 一番やりたかったのは[後で見る]に入れた動画を整理することだったが、APIがなく、断念した
- 再生リストの移動や動画のプレビューなどもしたいな、と思ったがそれもまだやれてない
- ページングがAPIの口として提供されているが、それも未実装(50件までしか取れない…)
- Avaloniaを初めて触ったので、ベストプラクティスが分からない。その結果、コードビハインドに処理を直書きしてしまっている(MVVMになってない)
…などなど、課題を挙げると沢山ありますが、個人的にAvaloniaを少し触れられ、かつそのついでにある程度アプリっぽいものができたため満足しています。
また新しい技術としてMAUIに触れてみたいな、と思っているのでここで作ったものをベースにし、上記の課題を少しでも解消できたらなと思っています。
これからもモノづくりを楽しんでいこうと思います。
Author And Source
この問題について(Avaloniaを使ってYoutube再生リストを編集できるデスクトップアプリを作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/mngreen/items/6fce04091a2ed32ad8cb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .