<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Loupedeck live | 背景</title>
	<atom:link href="https://moonpeta.com/tag/loupedeck-live/feed/" rel="self" type="application/rss+xml" />
	<link>https://moonpeta.com</link>
	<description></description>
	<lastBuildDate>Wed, 02 Aug 2023 11:00:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://moonpeta.com/wp-content/uploads/2023/10/cropped-wraith_logo_ribon_pink-32x32.png</url>
	<title>Loupedeck live | 背景</title>
	<link>https://moonpeta.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Loupedeck liveでYouTube musicを使いこなす！</title>
		<link>https://moonpeta.com/tips/youtubemusic_loupedeck/</link>
					<comments>https://moonpeta.com/tips/youtubemusic_loupedeck/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Wed, 28 Jun 2023 02:13:28 +0000</pubDate>
				<category><![CDATA[python]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Loupedeck live]]></category>
		<category><![CDATA[YouTube Music]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=2805</guid>

					<description><![CDATA[　Loupedeck live買いました！　whooooooo!! 　ところで私は普段、音楽を聞くときYouTube musicを使っています。YouTube Musicってブラウザから操作するのめちゃくちゃめんどくさい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　Loupedeck live買いました！　whooooooo!!</p>



<figure class="wp-block-image size-large is-resized"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-12.png"><img fetchpriority="high" decoding="async" src="https://moonpeta.com/wp-content/uploads/2023/06/image-12-1024x673.png" alt="" class="wp-image-2876" width="840" height="552" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-12-1024x673.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-12-300x197.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-12-768x505.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-12-1536x1009.png 1536w, https://moonpeta.com/wp-content/uploads/2023/06/image-12-2048x1345.png 2048w" sizes="(max-width: 840px) 100vw, 840px" /></a><figcaption class="wp-element-caption">kakkoii</figcaption></figure>



<p>　ところで私は普段、音楽を聞くときYouTube musicを使っています。YouTube Musicってブラウザから操作するのめちゃくちゃめんどくさいですよね。<br>　今回YouTube musicライフを快適にするために、Loupedeck liveを使ってYouTube musicの操作を行えるようにしたので紹介します。<br>　OSはwindows 11です。</p>



<p>　以下で紹介する情報の中には古いバージョン特有のものもあるかと思うので、最新情報を確認するのがいいと思います。</p>







<h3 class="wp-block-heading"><span id="toc1">この記事の内容でできるようになること</span></h3>



<ul class="wp-block-list">
<li>基本的な再生、停止、スキップ、シャッフル、ループの切り替えなど</li>



<li>10秒スキップ、10秒バック</li>



<li>特定の曲をワンプッシュで再生</li>



<li>特定のプレイリストの曲をワンプッシュで再生</li>



<li>特定のプレイリストをランダムにワンプッシュで再生</li>
</ul>



<h3 class="wp-block-heading"><span id="toc2">YouTube Music Desktop Appをインストール</span></h3>



<p>　まずYouTube Music Desktop Appをインストールしましょう。ブラウザのYouTube Musicを使うよりこれを入れたほうが色々できるようになります。<br>　以下のリンクにアクセス</p>



<p> <a rel="noopener" target="_blank" href="https://github.com/ytmdesktop/ytmdesktop" data-type="URL" data-id="https://github.com/ytmdesktop/ytmdesktop">https://github.com/ytmdesktop/ytmdesktop<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>　Available forというところのBinariesを押す。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image.png"><img decoding="async" src="https://moonpeta.com/wp-content/uploads/2023/06/image-1024x477.png" alt="" class="wp-image-2809" width="840" height="391" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-1024x477.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-300x140.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-768x358.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image.png 1262w" sizes="(max-width: 840px) 100vw, 840px" /></a></figure>



<p>　インストールしたいバージョンのインストーラーをAssetsからダウンロードする。記事公開時点での安定版はv1.13.0でした。再生やスキップなどの基本的な機能はこれで問題ないですが、<strong>特定の曲や特定のプレイリストをLoupedeckから再生したい場合</strong>は、プレリリース版のv1.14.2をインストールする必要がありました。</p>



<figure class="wp-block-image size-large"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-1.png"><img decoding="async" width="1024" height="513" src="https://moonpeta.com/wp-content/uploads/2023/06/image-1-1024x513.png" alt="" class="wp-image-2810" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-1-1024x513.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-1-300x150.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-1-768x385.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-1-1536x769.png 1536w, https://moonpeta.com/wp-content/uploads/2023/06/image-1.png 2005w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>　あとは適当にインストールする。<br>　インストールが終わったらログインとかは適当にやり、設定画面を開く</p>



<figure class="wp-block-image size-large"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-2.png"><img loading="lazy" decoding="async" width="1024" height="424" src="https://moonpeta.com/wp-content/uploads/2023/06/image-2-1024x424.png" alt="" class="wp-image-2811" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-2-1024x424.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-2-300x124.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-2-768x318.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-2.png 1100w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>　連携のリモコンサーバーをONにする。</p>



<p>　これでYouTube Music Desktop Appの導入は完了です。</p>



<h3 class="wp-block-heading"><span id="toc3">Loupedeckにプラグイン導入</span></h3>



<p>　Loupedeckのアプリを開き、Marketplaceを開きます。そしてyoutubeと入力して、プラグインからYoutube Music Desktopというのをインストールします。</p>



<figure class="wp-block-image size-large"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-3.png"><img loading="lazy" decoding="async" width="1024" height="641" src="https://moonpeta.com/wp-content/uploads/2023/06/image-3-1024x641.png" alt="" class="wp-image-2812" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-3-1024x641.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-3-300x188.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-3-768x481.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-3.png 1417w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-4.png"><img loading="lazy" decoding="async" width="992" height="633" src="https://moonpeta.com/wp-content/uploads/2023/06/image-4.png" alt="" class="wp-image-2813" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-4.png 992w, https://moonpeta.com/wp-content/uploads/2023/06/image-4-300x191.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-4-768x490.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></a></figure>



<p>　ステータスが準備完了になってればOKです。準備完了にならない場合はYouTube Music Desktop Appがインストールされていること、設定の確認、再起動などしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc4">この段階でできること</span></h3>



<p>　あとは別のプラグインなどと同じく、Loupedeckのボタンやつまみに割り当てれば使えるようになります。<br>具体的にできることが知りたい場合は以下を参照。</p>



<p> <a rel="noopener" target="_blank" href="https://help.xeroxdev.de/en/loupedeck/ytmd/home">https://help.xeroxdev.de/en/loupedeck/ytmd/home<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>　一応最低限のことはこれでできるようになるんですが、特定の曲を再生したり特定のプレイリストを再生したりといったことはできないんですよね。ちょっと機能は少なめ。spotifyとかはLoupedeckの公式対応だから、それと比べるとちょっと劣るかも（使ったことないけど）。</p>



<h3 class="wp-block-heading"><span id="toc5">10秒スキップ、10秒バックしたい</span></h3>



<p>　YouTube Music Desktop AppのAPIでは10秒スキップ、10秒バックができます。ただしプラグインだとなんでか10秒スキップ、10秒バックができないんですよね。これは初音ミクの消失を聞くときに高確率で欲しくなる機能なので欲しいです。<br>　そんなわけで、APIを直接呼び出してできるようにしました。例えば10秒バックは以下のようなコードを適当な場所に配置して</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import requests
import json

requests.post(&#39;http://localhost:9863/query&#39;, data=json.dumps({&quot;command&quot;:&quot;player-rewind&quot;}))</code></pre></div>



<p>　Loupedeckの「実行」を選んで以下のように書けばOKです。pythonのあとに||が必要なことに注意。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>python|| &lt;ファイルへの絶対パス&gt;</code></pre></div>



<p>　プラグインにもとからある機能と比べると若干レスポンスが悪くはなりますが、まあしょうがないです。私はつまみにアサインしました。余分に回せばたくさんスキップしたり戻ったりすることもできます。実行時にウィンドウが表示されるのが嫌な場合はpythonをpythonwに書き換えるといいと思います。<br>　プラグインでサポートされていないけどYouTube Music Desktop AppのAPIでサポートされていることは同じように実行できると思います。</p>



<h3 class="wp-block-heading"><span id="toc6">特定の曲、特定のプレイリストを再生するボタンを作る</span></h3>



<p>　ボタン一発で特定のプレイリストの再生を開始する、というやつを作りたいです。</p>



<p>　YouTube Music Desktop AppはURIでコントロールすることができます。具体的には以下の画像参照(上で貼ったgithubリンクのwikiにある)。</p>



<figure class="wp-block-image size-large"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-5.png"><img loading="lazy" decoding="async" width="1024" height="709" src="https://moonpeta.com/wp-content/uploads/2023/06/image-5-1024x709.png" alt="" class="wp-image-2816" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-5-1024x709.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-5-300x208.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-5-768x532.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-5.png 1386w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>　ここで &lt;Video_Id&gt;や&lt;Playlist_Id&gt;はyoutube musicをブラウザで開いたときURLに出てくるやつです。<br>　例えばURLがこんな感じなら</p>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-8.png"><img loading="lazy" decoding="async" width="882" height="56" src="https://moonpeta.com/wp-content/uploads/2023/06/image-8.png" alt="" class="wp-image-2819" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-8.png 882w, https://moonpeta.com/wp-content/uploads/2023/06/image-8-300x19.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-8-768x49.png 768w" sizes="(max-width: 882px) 100vw, 882px" /></a></figure>



<p>　<strong>bj4nuPCRDxg</strong> がVideo_Idで、<strong>PL_0A0t0-Y0ANo9NZV4LRSUzIus8JkmHEK</strong> がPlaylist_Idになります。つまりこの曲を再生したいなら「ytmd://play/bj4nuPCRDxg」、この曲をこのプレイリストで再生したいなら「ytmd://play/bj4nuPCRDxg/PL_0A0t0-Y0ANo9NZV4LRSUzIus8JkmHEK」にブラウザからアクセスすればできます。<br>　Loupedeckで実行するには、「ウェブページ」を選んでURIを入れて実行するようにすればいいです。<br>　ちなみにv1.13.0ではURIで実行することができなかったので、これをやりたい場合はv1.14.2をインストールする必要があります。</p>



<h3 class="wp-block-heading"><span id="toc7">プレイリストの曲をランダムに再生する</span></h3>



<p>　上記の方法ではプレイリストを再生するときに特定の曲も指定しなければならず、必ず同じ曲から再生されることになってしまいます。この記事公開時点ではランダムな曲からプレイリストを再生する方法はありませんでした。<br>　ランダムな曲からプレイリストの再生を開始する一番簡単な方法はマクロでやることだと思います。つまり「固定された曲からプレイリスト再生」-&gt;「シャッフル」-&gt;「次の曲に行く」というマクロを組めばいいです。ただやってみた感じ個人的になんか微妙だったので、ちゃんとランダムな曲から再生するやつを作りました。 以下の公開します。ただ<strong>将来アプリが更新されたら機能追加される可能性も高いので、真似する前にYouTube Music Desktop Appの更新情報を確認することを推奨します。</strong></p>



<p>　プレイリストからランダムに曲を再生するコードです。ただしこの例ではvideo_ids_in_playlist.jsonに予めplaylist idとプレイリスト内のすべての曲のvideo idのリストが格納されているものとします。コマンドライン引数で与えられたプレイリストの名前をkeyにplaylist idとvideo idのリストを取ってきて、ランダムに再生を開始しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import sys
import os
import json
import random
import webbrowser

#ディレクトリは適当に設定してね
with open(os.path.dirname(sys.argv[0]) + &#39;/json/video_ids_in_playlist.json&#39;, &#39;r&#39;) as f:
	data = json.load(f)

playlist_id = data[sys.argv[1]][0]
now_video_id = data[sys.argv[1]][1][random.randrange(len(data[sys.argv[1]][1]))]

uri = f&quot;ytmd://play/{now_video_id}/{playlist_id}&quot;
webbrowser.open(uri)
</code></pre></div>



<p>　ランダムに再生開始の曲が決定され、そのあとはプレイリストを順番に再生していきます。もしランダムに再生したい場合はLoupedeckのマクロでシャッフルを入れるか、コード内でシャッフルを入れるかすればできます。</p>



<p>　あとは以下の感じでやる。</p>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2023/06/スクリーンショット-2023-06-27-170637.png"><img loading="lazy" decoding="async" width="836" height="570" src="https://moonpeta.com/wp-content/uploads/2023/06/スクリーンショット-2023-06-27-170637.png" alt="" class="wp-image-2830" srcset="https://moonpeta.com/wp-content/uploads/2023/06/スクリーンショット-2023-06-27-170637.png 836w, https://moonpeta.com/wp-content/uploads/2023/06/スクリーンショット-2023-06-27-170637-300x205.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/スクリーンショット-2023-06-27-170637-768x524.png 768w" sizes="(max-width: 836px) 100vw, 836px" /></a></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>python|| &lt;ファイルの絶対パス&gt; playlist_name</code></pre></div>



<p>　jsonファイルのkeyになるplaylist_nameを指定する必要があります。</p>



<h4 class="wp-block-heading"><span id="toc8">プレイリスト情報の更新</span></h4>



<p>　上記の方法でランダムにシャッフルすることができるんですが、予めプレイリストに含まれる曲のvideo idのリストを持っておく必要があります。記事更新時点ではYouTube Music Desktop Appの機能を使ってvideo idのリストを取得することはできませんでした。もちろん手動で作成することはできますが、曲数が多いとかなりめんどくさく、かつプレイリストに曲を追加したら更新しないといけません（しなくてもその曲からスタートする確率が0になるだけなので、大した問題でもないが）。<br>　そこでYouTube Data APIを使ってあるプレイリストに含まれている曲のvideo idリストを取得するプログラムを作りました。以下のコードを動かすには予めYouTube Data APIの設定を行いAPI keyを取得しておく必要があるので注意してください。YouTube Data APIの設定とかは別のサイトとか参照。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>from apiclient.discovery import build
import os
import sys
import json

# 更新対象のプレイリストIDのリスト。これはブラウザでYoutube musicにアクセスしてリンクから確認してね。
playlist_ids = {&quot;プレイリストの名前1&quot;: &quot;playlist_id1&quot;, &quot;プレイリストの名前2&quot;, &quot;playlist_id2&quot;, ...}

def get_video_id_in_playlist(youtube, playlist_id) -&gt; list:
	video_id_list = []

	playlistitems_list_request = youtube.playlistItems().list(playlistId=playlist_id, part=&quot;snippet&quot;, maxResults=50)

	while playlistitems_list_request:
		playlistitems_list_response = playlistitems_list_request.execute()

		for playlist_item in playlistitems_list_response[&quot;items&quot;]:
			video_id_list.append(playlist_item[&quot;snippet&quot;][&quot;resourceId&quot;][&quot;videoId&quot;])

		playlistitems_list_request = youtube.playlistItems().list_next(
			playlistitems_list_request, playlistitems_list_response)

	return video_id_list


def main():

	API_KEY = &quot;&lt;あなたのAPIキー&gt;&quot;

	youtube = build(&#39;youtube&#39;, &#39;v3&#39;, developerKey=API_KEY)

	result = {}
	for key, playlist_id in playlist_ids.items():
		r = [playlist_id]
		r.append(get_video_id_in_playlist(youtube, playlist_id))
		result[key] = r

　#ディレクトリは適当に設定してね
	with open(os.path.dirname(sys.argv[0]) + &#39;/json/video_ids_in_playlist.json&#39;, &#39;w&#39;) as f:
		json.dump(result, f)


if __name__ == &quot;__main__&quot;:
	main()</code></pre></div>



<p>　上記のプログラムを実行する際、対象のプレイリストが公開あるいは限定公開になっていることが必要なので注意してください。これで生成したファイルが、ひとつ上に書いたプレイリストのランダム再生に使うファイルになっています。<br>　このプログラムもLoupedeckに登録することで、ワンプッシュで実行できるようにしました。曲を追加したときとかに1回ポチってやればOKです。</p>



<h3 class="wp-block-heading"><span id="toc9">まとめ。</span></h3>



<figure class="wp-block-image size-large"><a href="https://moonpeta.com/wp-content/uploads/2023/06/image-13.png"><img loading="lazy" decoding="async" width="1024" height="417" src="https://moonpeta.com/wp-content/uploads/2023/06/image-13-1024x417.png" alt="" class="wp-image-2915" srcset="https://moonpeta.com/wp-content/uploads/2023/06/image-13-1024x417.png 1024w, https://moonpeta.com/wp-content/uploads/2023/06/image-13-300x122.png 300w, https://moonpeta.com/wp-content/uploads/2023/06/image-13-768x313.png 768w, https://moonpeta.com/wp-content/uploads/2023/06/image-13.png 1493w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>　最終的にこんな感じになりました！　右の縦3列はプレイリスト再生用、また追加予定。画面を開かなくてもYouTube Musicの操作ができるというのはものすごく便利です！　最強！</p>



<p>　あとはライブラリの画面に一発アクセスできるようになれれば超便利そうなんですが、できるのか不明です。更新求む！</p>



<h3 class="wp-block-heading"><span id="toc10">本日の作業用BGM</span></h3>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Love Words IV" width="1256" height="942" src="https://www.youtube.com/embed/PYFgPuVfrzs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/youtubemusic_loupedeck/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
