この記事は、はてなダイアリーに書いた内容の改稿版です。
※はてなダイアリー(ブログ)は、コードが書きづらすぎると思います。はてな記法モードだったら、もっとマシだったんだっけ?昔すぎてもう忘れた
コマンドラインでencodeURLComponentする方法は、こちらの記事を参考にさせてもらいました。
https://qiita.com/ko1nksm/items/bab121dc5aa0bca2de78#url-%E3%81%AE%E7%B5%84%E3%81%BF%E7%AB%8B%E3%81%A6%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E8%A1%8C%E3%81%86
要件
-
ungive/media-controlというのを入れる必要があります。- これは何かというと、MacOS自体のなうぷれプロバイダーを扱うコマンドです。他のやつは動かなかったので、これが必要です。
- iPhoneとかでコントロールセンターに出てくる再生コントロールとたぶん同じやつ。
- READMEにはM1に対応してるって書いてあるけど、M1のbrewで入れると動作しなかったので、
/usr/local/bin/brewで導入してください。arch -arm64 brewだと動かないです。
-
jq、awkが入ってること。
-
MacOSのopenコマンドが使えること。
- URLを渡してブラウザーを開けるopenコマンドがあれば、Macじゃなくてもたぶんいいと思います。いや、その前にmedia-controlがMacOS専用だろ。
-
/bin/bashがあること。
コード(shellscript)
nowplaying.sh
Misskey.ioの /share?text= に渡す形式になっています。
ちょっといじればTwitter(X)ほかに対応できます。
#!/bin/bash
X86_ROSETTA_BINARY=/usr/local/bin/media-control
# Check if required commands exist
[ ! -f "$X86_ROSETTA_BINARY" ] && echo "Error: $X86_ROSETTA_BINARY not found. Install media-control via Homebrew with Rosetta 2." && exit 1
command -v jq &> /dev/null || { echo "Error: jq is not installed."; exit 1; }
command -v awk &> /dev/null || { echo "Error: awk is not installed."; exit 1; }
command -v open &> /dev/null || { echo "Error: 'open' command of MacOS not found."; exit 1; }
# output example: 地03:封じられた妖怪 ~ Lost Place,上海アリス幻樂団,東方地霊殿
NOWPLAYING_CSV=$($X86_ROSETTA_BINARY get | jq -r '[.title,.artist,.album]|join(",")' | awk -F',' '{ print "なうぷれ: " $1 "\nArtist: " $2 "\nAlbum: " $3 }')
open $(jq --arg t "$NOWPLAYING_CSV" -nr '@uri "https://misskey.io/share?text=\($t)"')
exit 0