📚

Powershell で NowPlaying する

2023/12/29に公開

NowPlaying とは

Windows の iTunes で再生中の曲を #NowPlaying ハッシュタグをつけてツイートするやつです。

なうぷれ というツールがあり、私も長い間使っていましたが、もはや現代では動作しません。作者の方お疲れ様でした。

PowerShell で実装

NowPlaying を PowerShell で実装している方がいたので ( Windows版iTunesで再生中の楽曲を#NowPlayingをつけてツイートするページを開く cmd版,WSH(JScript)版,Powershell版 ) アートワークも取得するようにしてみました。

$track = (New-Object -C "iTunes.Application").CurrentTrack
$artwork = $track.Artwork.Item(1)
$ext = switch ($artwork.Format)
{
  1 { "jpg" }
  2 { "png" }
  3 { "bmp" }
}
$artwork.SaveArtworkToFile( -join([System.Environment]::GetFolderPath("Desktop"), "\\artwork.", $ext) )
$track | % { start ("https://twitter.com/intent/tweet?text=" + [System.Uri]::EscapeDataString("$($_.Name) - $($_.Artist) (Album: $($_.Album)) #NowPlaying")) }

Twitter API の Web Intents を使っていますが Web Intents には画像をツイートする機能はありません。 アートワークの画像ファイルがデスクトップに保存されるので、それをツイート画面にドラッグドロップしてくだち。 (まじめに(?) Twitter API だけで画像もツイートさせると token などが必要なので大変です)

PSSecurityException 対策

Windows のポリシーによっては以下のように PowerShell の実行を制限している可能性があります。

C:\Users\rin>PowerShell C:\Users\rin\Desktop\nowplaying.ps1
C:\Users\rin\Desktop\nowplaying.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\rin\Des
ktop\nowplaying.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/f
wlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ C:\Users\rin\Desktop\nowplaying.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

C:\Users\rin>

たとえばショートカットを作成し、実行できるようにするとよいと思います。

  1. デスクトップで右クリック - 新規作成 - ショートカット
  2. 「リンク先」に powershell.exe -ExecutionPolicy RemoteSigned C:\Users\rin\Desktop\nowplaying.ps1 などと入力
  3. OK

参考

Discussion