LoginSignup
2
1

More than 3 years have passed since last update.

Pythonista3でYouTube動画の歌詞表示アプリ作ってみた!

Posted at

1.はじめに

私は音楽を聞く際にYouTube Musicを使っているのですが、このアプリを使う上で非常に不満に思っていることが一つありました。

今回はその不満点を解消した話をまとめたいと思います。

何が不満だったかというと主要の音楽再生アプリには今や当たり前のように実装されている歌詞表示がYouTube Musicではまともに機能しないのです。(機能の実装は2020年2月にされた模様)

参考:YouTube Musicアプリが歌詞表示に対応

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.ショートカット編

IMG_0239.PNG
IMG_0240.PNG
IMG_0241.PNG

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者から見たらぐちゃぐちゃなコードになってしまっているので今後は作成するだけでなく、綺麗なコードをかけるように心がけたいところです!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1