1.はじめに
私は音楽を聞く際にYouTube Musicを使っているのですが、このアプリを使う上で非常に不満に思っていることが一つありました。
今回はその不満点を解消した話をまとめたいと思います。
何が不満だったかというと主要の音楽再生アプリには今や当たり前のように実装されている歌詞表示がYouTube Musicではまともに機能しないのです。(機能の実装は2020年2月にされた模様)
2月に実装された機能ということなので3ヶ月たった今はどうなのかという感じですが、私がよく聞く曲に関して一向に歌詞が追加される気配はなく歌詞表示ができた試しが一度もありません・・・orz
待っていても改善される気配がないということもあり、歌詞表示アプリくらいなら自分でも作れるかも?と思いチャレンジしてみました!!
2.環境
- 使用した端末:iPad mini 5、iPhone 11
- アプリ:Pythonista3 (v3.3)
- アプリ:ショートカット
- 対応しているサイト:YouTube
ios端末上手軽にアプリを作成できるpythonista3を使用して作成しました。またYoutubeアプリとPythonista3の連携にショートカットアプリを使用しています。
冒頭ではYouTube Musicを主に使っていると書きましたが歌詞表示ができないとわかってからはめっきり使わなくなり普通のYoutubeのみ使っているため対応させたサイトはYouTubeのみです。
3.制作物
動画のタイトルから検索できなかったときの処理
https://twitter.com/tkfm1991/status/1266963028748070913
4.プログラム
プログラムの流れ
①YouTubeアプリの共有機能を使ってショートカットアプリに動画URLを渡す
【ショートカットアプリ】
②URLをPythonistaに渡せるように加工(注1)
③PythonistaにURLを渡して起動
【Pythonista】
④②で加工した動画URLを元の形に整形
⑤動画URLのWebページをスクレイピングして動画タイトルを取得
⑥動画タイトル + '歌詞' のキーワードでGoogle検索して歌詞サイトを抽出
⑦UIに描画
⑧歌詞サイトを選択、表示
[再検索処理]
- 動画タイトルが長すぎて歌詞サイトがヒットしない場合は再検索処理を実施
動画タイトルが長い場合は" "(半角スペース)で分割してユーザに候補のキーワードを提示して検索
4-1.Pythonista編
コードはすべてGitHubに公開してますので以下を参照下さい。
https://github.com/tkfm1991/Lyrics_Search
本来ならクラス分け等をしてコードを整理すべきなのでしょうが、技術が伴わずそこまでできていません・・・
4-2.ショートカット編
Pythonistaを引数付きで実行する際には以下の形式にする必要があるためその変換処理を行っています
pythonista3://MyScript?action=run&args=foo%20bar
→ 引数を2つ設定したい場合(foo と bar)は "%20"で挟む
公式Document: The Pythonista URL Scheme
[注1]
躓いたポイントとしてはYouTubeの動画形式は以下のようになっていますがショートカットアプリからPythonistaを起動しようとしてもうまく行かないということがありました。
https://www.youtube.com/watch?v=TanZP7g13sk
→原因を調べてみたところ引数に"="が入っているとうまく行かないようです。
そこでショートカットアプリ内で"="を"%20"に変換して2つの引数としてPythonistaに渡してPythonファイル内で2つの引数を"="で連結するという面倒な処理を挟んでいます。
6.おわりに
Pythonista3を使うことで初学者の私でもアイディアを手軽にアプリ化することができたのでPythonを初めたてで何かしらのアプリを作ってみたいとう人にはおすすめのアプリケーションだと思いました。
ただ、文中にも残したようにクラス分けができておらず第3者から見たらぐちゃぐちゃなコードになってしまっているので今後は作成するだけでなく、綺麗なコードをかけるように心がけたいところです!