« [tool]サポートに必要な情報を取得する(基本情報+対象アプリ) 追加 | トップページ | [Link Annotation]リンク注釈(同一ドキュメント内の他のページビューの移動) »

[musicbrainz]アーティスト名から、musicbrainzのアーティストIDを取得する(JSON)

再生中のアーティストのIDを取得して、アーティストページを開きます

【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application
set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()

#################################################
##### URLの基本構造を生成しておく
set strURL to "http://musicbrainz.org/ws/2/artist/" as text
set ocidURLStr to refMe's NSString's stringWithString:(strURL)
set ocidURL to refMe's NSURL's URLWithString:(ocidURLStr)
set ocidComponents to refMe's NSURLComponents's alloc()'s initWithURL:(ocidURL) resolvingAgainstBaseURL:false
set ocidComponentArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
set ocidQueryItem to refMe's NSURLQueryItem's alloc()'s initWithName:("fmt") value:("json")
ocidComponentArray's addObject:(ocidQueryItem)
#################################################
##### アーティスト名を取得
tell application "Music"
  set objNowTrack to current track
  tell objNowTrack
    properties
  end tell
  set strArtistName to (artist of objNowTrack) as text
end tell

#################################################
#####アーティスト名から artist idを取得する
set ocidArtistStr to (refMe's NSString's stringWithString:(strArtistName))
set ocidQueryItem to (refMe's NSURLQueryItem's alloc()'s initWithName:("query") value:(ocidArtistStr))
(ocidComponentArray's addObject:(ocidQueryItem))
###検索クエリーとして追加
(ocidComponents's setQueryItems:(ocidComponentArray))
####コンポーネントをURLに展開
set ocidJsonURL to ocidComponents's |URL|()
log ocidJsonURL's absoluteString() as text
##################################################
##### JSON取得
set ocidOption to refMe's NSDataReadingMappedIfSafe
set listReadData to (refMe's NSData's dataWithContentsOfURL:(ocidJsonURL) options:(ocidOption) |error|:(reference))
set ocidJsonData to (item 1 of listReadData)
###JSON初期化 してレコードに格納
set listJSONSerialization to (refMe's NSJSONSerialization's JSONObjectWithData:(ocidJsonData) options:0 |error|:(reference))
set ocidJsonData to item 1 of listJSONSerialization
##rootのレコード
set ocidHolidayDict to (refMe's NSDictionary's alloc()'s initWithDictionary:(ocidJsonData))
##レコードのartistsはArrayなのでfirstObjectが検索結果の最上位
set ocidArtistsDict to (ocidHolidayDict's valueForKey:"artists")'s firstObject()
###アーティストID
set ocidArtistsID to (ocidArtistsDict's valueForKey:"id")
###コメント用にテキストに整形して
set strArtistsID to ocidArtistsID as text
set strArtistURL to ("https://musicbrainz.org/artist/" & strArtistsID & "") as text
##################################################
##### ブラウザで開く
tell application "Google Chrome"
  set numCntWindow to (count of every window) as integer
  if numCntWindow ≠ 0 then
    tell front window
      set objNewTab to make new tab
      tell objNewTab to set URL to strArtistURL
    end tell
  else
make new window
    tell front window
      set objNewTab to make new tab
      tell objNewTab to set URL to strArtistURL
    end tell
  end if
end tell

return strArtistsID

|

« [tool]サポートに必要な情報を取得する(基本情報+対象アプリ) 追加 | トップページ | [Link Annotation]リンク注釈(同一ドキュメント内の他のページビューの移動) »

AppleScript Json」カテゴリの記事

AppleScript Music」カテゴリの記事