<?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>tips | 背景</title>
	<atom:link href="https://moonpeta.com/category/tips/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>tips | 背景</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>
		<item>
		<title>異なるpandas.DataFrameをsubplotで同時にplotする</title>
		<link>https://moonpeta.com/tips/pandassubplot/</link>
					<comments>https://moonpeta.com/tips/pandassubplot/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Tue, 12 Jul 2022 09:45:12 +0000</pubDate>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[subplot]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=1828</guid>

					<description><![CDATA[　異なるpandas.DataFrameオブジェクトをdf.plot()で同時にplotする方法です。　結論から言うとdf.plot()の引数axを設定すればいいです。]]></description>
										<content:encoded><![CDATA[
<p>　異なるpandas.DataFrameオブジェクトをdf.plot()で同時にplotする方法です。<br>　結論から言うとdf.plot()の引数axを設定すればいいです。</p>



<script src="https://gist.github.com/flora495/31dc67eb3b532dabb969bc59a631d2b2.js"></script>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/pandassubplot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Graphvizで木をplotするときのrootの決め方</title>
		<link>https://moonpeta.com/tips/graphviztips1/</link>
					<comments>https://moonpeta.com/tips/graphviztips1/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Wed, 23 Feb 2022 10:49:27 +0000</pubDate>
				<category><![CDATA[python]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Graphviz]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=1528</guid>

					<description><![CDATA[　edgeを作るときにedge(root,other)という順番で入れる必要がある。 　root以外のnodeについても、rootからみて上にある方がuで下にある方がdならG.edge(u,d)という順番でいれるとうまく [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　edgeを作るときにedge(root,other)という順番で入れる必要がある。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>#0がroot
G=graphviz.Graph(format=&#39;png&#39;)
G.edge(&#39;0&#39;,&#39;1&#39;)
G.edge(&#39;0&#39;,&#39;2&#39;)
G.edge(&#39;1&#39;,&#39;3&#39;)
G.edge(&#39;1&#39;,&#39;4&#39;)
G.view()</code></pre></div>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2022/02/Graph1.png"><img loading="lazy" decoding="async" width="227" height="251" src="https://moonpeta.com/wp-content/uploads/2022/02/Graph1.png" alt="" class="wp-image-1531"/></a></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>#同じ木で1がroot
G=graphviz.Graph(format=&#39;png&#39;)
G.edge(&#39;1&#39;,&#39;0&#39;)
G.edge(&#39;0&#39;,&#39;2&#39;)
G.edge(&#39;1&#39;,&#39;3&#39;)
G.edge(&#39;1&#39;,&#39;4&#39;)
G.view()</code></pre></div>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2022/02/Graph2.png"><img loading="lazy" decoding="async" width="275" height="251" src="https://moonpeta.com/wp-content/uploads/2022/02/Graph2.png" alt="" class="wp-image-1530"/></a></figure>



<p>　root以外のnodeについても、rootからみて上にある方がuで下にある方がdならG.edge(u,d)という順番でいれるとうまくplotされる。rootから深さ優先探索（もしくは幅優先探索）しながらplotしていくときれいになる。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/graphviztips1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>visual studio 2019でautopep8を使えるようにする</title>
		<link>https://moonpeta.com/tips/20211112/</link>
					<comments>https://moonpeta.com/tips/20211112/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Fri, 12 Nov 2021 00:43:10 +0000</pubDate>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[autopep8]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[visual studio 2019]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=1360</guid>

					<description><![CDATA[　まずpipでautopep8をインストールしておいてください。 　ツール→外部ツールから以下の画面を表示します。 タイトル：任意コマンド：autopep8.exeへのフルパス引数：&#8211;in-place &#8 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　まずpipでautopep8をインストールしておいてください。</p>



<p>　ツール→外部ツールから以下の画面を表示します。</p>



<figure class="wp-block-image size-full"><a href="https://moonpeta.com/wp-content/uploads/2021/11/スクリーンショット-2021-11-12-093536.jpg"><img loading="lazy" decoding="async" width="517" height="593" src="https://moonpeta.com/wp-content/uploads/2021/11/スクリーンショット-2021-11-12-093536.jpg" alt="" class="wp-image-1361" srcset="https://moonpeta.com/wp-content/uploads/2021/11/スクリーンショット-2021-11-12-093536.jpg 517w, https://moonpeta.com/wp-content/uploads/2021/11/スクリーンショット-2021-11-12-093536-262x300.jpg 262w" sizes="(max-width: 517px) 100vw, 517px" /></a></figure>



<p>タイトル：任意<br>コマンド：autopep8.exeへのフルパス<br>引数：&#8211;in-place &#8211;aggressive &#8211;aggressive $(ItemPath)</p>



<p>　とします。引数は好みで変えてもいいです。</p>



<p>　あとはツール→autopep8を選択すれば実行されます。必要であればショートカットを設定するといいと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/20211112/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>iTunesのプレイリストをcloudplayerに移動させる方法</title>
		<link>https://moonpeta.com/tips/post-562/</link>
					<comments>https://moonpeta.com/tips/post-562/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Tue, 14 Jul 2020 08:53:54 +0000</pubDate>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[cloud player]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[音楽]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=562</guid>

					<description><![CDATA[　私はiTunesからcloudplayer+google drive体勢に完全に乗り換えると前回の記事でいいましたが、そのときにめんどうなのがプレイリストを移すという作業です。今回このうまいやりかたを見つけたのでここに [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="310" src="https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-1.jpg" alt="" class="wp-image-563" srcset="https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-1.jpg 800w, https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-1-300x116.jpg 300w, https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-1-768x298.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>　私はiTunesからcloudplayer+google drive体勢に完全に乗り換えると前回の記事でいいましたが、そのときにめんどうなのがプレイリストを移すという作業です。今回このうまいやりかたを見つけたのでここに残しておきたいと思います。</p>



<p>　ちなみに以下のサイトを参考にしました。</p>





<a rel="noopener" target="_blank" href="https://www.doubletwist.com/help/question/playlists-in-cloudplayer/" title="Help: Playlists in CloudPlayer" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.doubletwist.com%2Fhelp%2Fquestion%2Fplaylists-in-cloudplayer%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Help: Playlists in CloudPlayer</div><div class="blogcard-snippet external-blogcard-snippet">Playlists in CloudPlayer</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.doubletwist.com/help/question/playlists-in-cloudplayer/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.doubletwist.com</div></div></div></div></a>




<h3 class="wp-block-heading"><span id="toc1">iTunesからプレイリストをcloudplayerに移動する方法</span></h3>



<p>　cloud playerは.m3uのプレイリストをインポートする機能を備えています。なのでiTunesのプレイリストを移行させるのは簡単です。</p>



<h4 class="wp-block-heading"><span id="toc2">iTunesのプレイリストをexportする。</span></h4>



<p>　iTunesを開いて、ファイル→ライブラリ→プレイリストを書き出す。<br>　を選択すればプレイリストをexportできます。このとき拡張子は.m3uで保存してください。</p>



<h4 class="wp-block-heading"><span id="toc3">cloudplayerでプレイリストをimportする。</span></h4>



<p>　上でexportした.m3uファイルを<span style="text-decoration: underline;">google driveにアップロード</span>します。<br>　アップロードしたあとに、cloudplayerのplaylistの画面でimport playlistを選択すれば自動的にプレイリストがimportされます。importできなかったらしばらく待ってください。</p>



<p>　以上でプレイリストをimportすることができるはずです。簡単ですね。</p>



<h3 class="wp-block-heading"><span id="toc4">cloud playerに対する不満</span></h3>



<p>1．スマートプレイリストという機能がない。<br>2.　プレイリストをフォルダで管理できない。<br>3.　曲の再生画面や曲の選択画面でアルバム名が表示されない。<br>4.　google homeに対応してない。</p>



<p>　もし解決するほうほうが見つかったら報告します。<br>　特にスマートプレイリストはデフォルトで入っているものはあるので、自分でも作る方法があるような気はします。何か知っている人がいたら教えてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/post-562/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>cloud playerのススメ</title>
		<link>https://moonpeta.com/tips/cloudplayernosusume/</link>
					<comments>https://moonpeta.com/tips/cloudplayernosusume/#respond</comments>
		
		<dc:creator><![CDATA[フローラ]]></dc:creator>
		<pubDate>Sun, 12 Jul 2020 15:02:48 +0000</pubDate>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[cloud player]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[音楽]]></category>
		<guid isPermaLink="false">https://www.fruity-floral.com/?p=510</guid>

					<description><![CDATA[　私には昔から悩みがありまして、それが「莫大な音楽のデータをどうやって管理するか」という問題です。所有している音楽のデータは容量が大きくなればなるほど扱うのが大変になります。特に持ち歩いたりするとなるとめんどうになります [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="310" src="https://moonpeta.com/wp-content/uploads/2020/07/dance_family2.jpg" alt="" class="wp-image-552" srcset="https://moonpeta.com/wp-content/uploads/2020/07/dance_family2.jpg 800w, https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-300x116.jpg 300w, https://moonpeta.com/wp-content/uploads/2020/07/dance_family2-768x298.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>　私には昔から悩みがありまして、それが「莫大な音楽のデータをどうやって管理するか」という問題です。所有している音楽のデータは容量が大きくなればなるほど扱うのが大変になります。特に持ち歩いたりするとなるとめんどうになりますね。<br>　大量の音楽を持っている人は同じような悩みを抱えている人も多いと思います。<br>　今回はこの問題に対して一つの解答を見つけることができたので、ここに書いておきたいと思います。<br>　ちなみにandroidでの方法なので、iphoneの人はできるか知りません。</p>







<h2 class="wp-block-heading"><span id="toc1">大量の音楽データをどうやって管理すればいいのかという話</span></h2>



<h3 class="wp-block-heading"><span id="toc2">困ったこと</span></h3>



<p>　音楽の管理の仕方には色々あると思いますが、私の場合はiTunesを使って昔から音楽を管理しています。そして出先で音楽を聞くときにはipod classicを使っていました。私が現在所有している曲数はだいたい3万曲くらいで、容量が300GBちょっとくらいありました（基本ALACで管理しているので容量がでかい）。このくらい容量が多いと色々と問題が発生してしまいます。</p>



<ol class="wp-block-list"><li>　全曲持ち歩くのが難しい。</li><li>　曲が消えるのが怖い。</li></ol>



<p>1．　まず、全曲持ち歩くのが困難であるという問題があります。私はiPod classicを10年くらいずっと使っています。iPod classicはHDDを積んでいて容量が160GBとDAPの中ではかなり大きい方だと思うんですが、それでも私の場合は全曲持ち歩くことができません。なので私の場合は全曲のうちプレイリストだけをiPodにうつして聞くようにしています。しかしこれだと、出先で急にこの曲が聞きたいってなったときにその曲が入ってないなどという困難にたまーに直面します。これがすごく嫌でした<br>　とはいえ最近は容量が多いDAPも多く、例えばSDカードが2枚刺さるやつであれば、128＊2GB＋内蔵容量などとすれば300GBくらいならいけるかもしれません。でもこれからも音楽は増えるので、少し心もとないです。<br>　というか私のラップトップは容量が128GBしかないので、そもそもラップトップだとiTunesで管理することすらできてませんでした。</p>



<p>2．　個人的にこれが一番怖いです。持ってる曲が消えてしまう可能性がある。私の場合は複数のHDDに定期的に音楽をバックアップしていましたが、それでも家が燃えたり地震がきたりしたら一発アウトです。この地震大国日本でHDDに音楽を保存して安心した気になっているなんて愚かすぎますね。<br>　私にとって音楽はかなり大切で、消えたら死んでしまいます。<br>　常日頃から音楽のデータが消えるかも知れないということ（死ぬかも知れないということ）を恐れながら生きるというのは精神衛生上よくありません。この問題は解決したいとずっと思っていました。</p>



<p>　私は最近ようやく、このふたつの大問題を同時に解決する方法を見つけたので、それを紹介したいと思います。</p>



<p>　それがgoogle driveとcloud player(androidのapp)を組み合わせる方法です。<br>　つまり所有している曲をすべてクラウド上(google drive)に置いて、それをcloud playerというクラウドに置いてある曲を再生することができるアプリで再生するという方法です。</p>



<h3 class="wp-block-heading"><span id="toc3">google driveとcloud playerを組み合わせると？</span></h3>



<ol class="wp-block-list"><li>容量がでかい。</li><li>端末の容量を気にせずに全曲もち歩ける。</li><li>曲が消えるのを恐れなくていい。</li></ol>



<p>1．　クラウドストレージの容量が許されるならいくらでも曲を所有できます。<br>　この方法であれば、容量はgoogle driveの容量になるので、google driveをアップデートできるところまでならいくらでもいけます。私は現在google oneの2TBプランに契約しているので、十分です。</p>



<p>2．　クラウドで管理することになるので、端末に曲を入れておく必要がありません。wifi環境がある場所であれば、端末に保存しているのと同じように音楽を聞くことができます。</p>



<p>3．　クラウドを提供している企業を信じる限り、曲が消えるのを恐れる必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc4">クラウドストレージの選び方</span></h3>



<p>　クラウドストレージにも色々な種類があります、例えばgoogleが提供する「google drive」、microsoftの「onedrive」とか、appleの「iCloud」とか。どれを選ぶかというのは好みだと思いますが、個人的にはgoogle driveがおすすめです。理由は安いからです。他のクラウドストレージはだいたい1TB 1万円くらいですが、google driveは2TBで約1万円くらいになってます（2020年7月現在）。また私はgoogle photoとかも使っているので、google driveを選びました。<br>　ただし、他のサービスにもいいところはあります。例えばone driveはwindowsとの相性がかなりいいです（私はgoogle driveとは別にwindows用にone driveの100GBも契約しています）。apple製品をメインに使う人であれば、iCloudがよかったりすると思います。<br>　ただし、後で紹介するCloud playerというアプリはgoogle drive、onedrive、dropboxのみ対応しているらしいです。icloud使って曲を再生できるアプリがあるのかは知りません。</p>



<p>　どのサービスを使うかを選んだら、後は曲をアップロードしましょう。ただしこれには莫大な時間がかかりますね。私は研究室のPCを使ってアップロードしたんですが、300GBの音楽を全部あげるのに2週間位かかった気がします。<br>　ただし、一度あげてしまえば（googleを信じる限り）データが飛ぶことは心配しなくてもいいです。すさまじい安心感。</p>



<h4 class="wp-block-heading"><span id="toc5">著作権について</span></h4>



<p> クラウドストレージに自分の音楽を全部アップロードするわけですが、そこで気になるのが「音楽をクラウドにアップロードするのは違法ではないのか？」ということです。<br>　結論から言うと大丈夫みたいです。</p>



<p>　ソース↓</p>



<p><a rel="noopener" target="_blank" href="https://www8.cao.go.jp/kisei-kaikaku/kaigi/meeting/2013/wg3/toushi/150309/item3.pdf">https://www8.cao.go.jp/kisei-kaikaku/kaigi/meeting/2013/wg3/toushi/150309/item3.pdf<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>　他人が閲覧できない場所に自分がアップロードして、自分だけがアクセスするならば法律上問題はなしとなっています（プライベート・ユーザーアップロード型という分類）。もちろん共有したりしたらアウトです。</p>



<h3 class="wp-block-heading"><span id="toc6">cloud player</span></h3>



<p>　google drive上で直接音楽を選んで再生するのは明らかにめんどうなので、cloud上においてある曲を再生することができるアプリを使います。</p>



<p>　私が使っているのはgoogle playにある「CloudPlayer&#x2122; Platinum cloud music player」というものです。↓</p>




<a rel="noopener" target="_blank" href="https://play.google.com/store/apps/details?id=com.doubleTwist.cloudPlayerPro&#038;hl=ja" title="CloudPlayer™ Platinum - Google Play のアプリ" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://moonpeta.com/wp-content/uploads/cocoon-resources/blog-card-cache/aeea01e8591bca59f82193b4857ad11b." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">CloudPlayer™ Platinum - Google Play のアプリ</div><div class="blogcard-snippet external-blogcard-snippet">Revolutionary music player with Dropbox/OneDrive/Drive &amp; offline support.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://play.google.com/store/apps/details?id=com.doubleTwist.cloudPlayerPro&#038;hl=ja" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">play.google.com</div></div></div></div></a>



<p>　これはプレミアム版で、無料版もあります。無料版は広告があったり機能が少なかったりしますが普通に使えました。このアプリの素晴らしいところは、googleのアカウントを認識させれば自動的にgoogle drive上の音楽ファイルを読み込んでリスト化してくれることです。かなり楽です。<br>　私の場合はもともとITunesで音楽を管理していたので、iTunesのフォルダをそのままgoogle driveのアップロードしましたが、それでちゃんと認識してくれます。<br>　ALACにも対応しています。<br>　一度読み込んでしまえば、アプリを消したりしない限りは再読み込みなどは必要ありません。<br>　自動的に作成されたリストの中から適当に曲を選べば、その曲をストリーミング再生することができます。もちろんストリーミング再生なので、端末の容量を圧迫することはありません。ストリーミング再生は非常にスムーズで、WI-FIが使える環境にいれば、ほとんど端末に入っている曲を再生するのと同じように聞くことができます。<br>　また、通信量が気になる場合は、聞きたい曲だけローカルに保持しておくこともできます。</p>



<p> cloudの音楽を再生できるアプリ自体は他にもたくさんあると思うので(しらんけど)、好みで選べばいいと思います。</p>



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



<p>　現状ではgoogle driveとcloud playerの組み合わせにかなり満足しています。私はたぶんiTunes and iPod体勢から完全に乗り換えると思います。<br>　cloudplayerの不満点としては曲の再生画面とかリストでアルバム名が表示されなかったり、google homeに対応していなかったり（chromecastには対応しているらしい、またgoogle homeのスピーカーにワイヤレスで曲を飛ばす事自体はできる）がありますが、他のメリットに比べれば我慢可能です。<br>　ただgoogle homeに対応するとQoL爆上がりが予想されるので、これから対応してくれることを期待しています。</p>



<p>　総評としてかなりおすすめです。音楽の管理の仕方で困っている人はぜひ参考にしてみてください。</p>



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



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="大人気パレード・ミラギフを特別席からお見せしちゃう！【ハローキティチャンネル緊急企画④　ミラクルギフトパレード】" width="1256" height="707"  data-youtube="eyJ0aXRsZSI6Ilx1NTkyN1x1NGViYVx1NmMxN1x1MzBkMVx1MzBlY1x1MzBmY1x1MzBjOVx1MzBmYlx1MzBkZlx1MzBlOVx1MzBhZVx1MzBkNVx1MzA5Mlx1NzI3OVx1NTIyNVx1NWUyZFx1MzA0Ylx1MzA4OVx1MzA0YVx1ODk4Ylx1MzA1Ylx1MzA1N1x1MzA2MVx1MzA4M1x1MzA0Nlx1ZmYwMVx1MzAxMFx1MzBjZlx1MzBlZFx1MzBmY1x1MzBhZFx1MzBjNlx1MzBhM1x1MzBjMVx1MzBlM1x1MzBmM1x1MzBjZFx1MzBlYlx1N2RjYVx1NjAyNVx1NGYwMVx1NzUzYlx1MjQ2M1x1MzAwMFx1MzBkZlx1MzBlOVx1MzBhZlx1MzBlYlx1MzBhZVx1MzBkNVx1MzBjOFx1MzBkMVx1MzBlY1x1MzBmY1x1MzBjOVx1MzAxMSIsInZpZGVvX2lkIjoidmJ0TmpNUXBxQkUifQ==" src="https://www.youtube.com/embed/vbtNjMQpqBE?start=1571&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>　ミラクルギフトパレードが恋しい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://moonpeta.com/tips/cloudplayernosusume/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
