AppleScript OAuth

[Youtube] Youtube API Rtingで高評価を送信する

set strVideoID to "ここにビデオID" as text

set strAccessToken to "アクセストークン"

####API ID
property strAPIkey : "APIキー" as text


set strPostRting2Like to ("/usr/bin/curl -X POST 'https://www.googleapis.com/youtube/v3/videos/rate?key=" & strAPIkey & "&id=" & strVideoID & "&rating=like' -H \"Content-Type: application/json\" -H \"Authorization: Bearer " & strAccessToken & "\"") as text

####コマンド実行
set strResponse to (do shell script strPostRting2Like) as text

log strResponse
-->(**)

|

[Youtube] Youtube API から OAuthを利用する (その1:準備編)

1:API キーを発行する
2:OAuth 同意画面を設定する
3:OAuth 2.0 クライアント IDを発行する
まずはここまで



1:API キーを発行する
_20220627_14_04_10

ここでAPIキーが発行されます。
_20220627_14_05_01



2:OAuth 同意画面を設定する
_20220627_14_05_41



3:OAuth 2.0 クライアント IDを発行する
_20220627_14_04_23

ここで
クライアント ID
クライアント シークレットを取得できます
_20220627_14_04_31

|

[Youtube] Youtube API から OAuthを利用する (その2:認証コードを取得する)

[Youtube] Youtube API から OAuthを利用する (その1:準備編)
https://quicktimer.cocolog-nifty.com/icefloe/2022/06/post-d38ded.html
その1で
APIキー:
クライアント ID:
クライアント シークレット:
この3点が揃いました
次がアクセス・トークン



URLのクエリーは概ね以下のようになります

https://accounts.google.com/o/oauth2/v2/auth?scope=スコープ&access_type=offline&include_granted_scope=true&response_type=code&redirect_uri=リダイレクトURL&client_id=クライアントID

私はYouTubeのDataAPIを利用したいので
スコープは:https://www.googleapis.com/auth/youtube
リダイレクトは:urn:ietf:wg:oauth:2.0:oob になりますが
スコープは利用したいサービスによって変わります。



アクセス・トークンは賞味期限があります。
デスクトップ等で長時間、タイムアウトにならないようにしたい場合は
access_type=offlineの指定をするといいようです(どの程度長く利用できるか?は確認していない)


URLにアクセスすると
この画面ですので進めます
20220627144019_472x569x72_0
自分で作っているIDなので続行します(普段はダメよ)
20220627144024_515x583x72_0
最後の確認画面が出ます
20220627144031_498x729x72_02
認証コード
20220627144042_535x759x72_02



サンプルはSafari用

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

tell application "System Events"
set listAppList to title of (every process where background only is false)
end tell
repeat with objAppList in listAppList
set strAppList to objAppList as text
if strAppList is "スクリプトエディタ" then
tell application "Script Editor"
if frontmost is true then
try
tell application "System Events" to click menu item "ログを表示" of menu "表示" of menu bar item "表示" of menu bar 1 of application process "Script Editor"
end try
end if
end tell
end if
end repeat

################################
### URL整形
set strOAuthCliantID to "ここにクライアントIDを入れる"

set strRedirectURL to "urn:ietf:wg:oauth:2.0:oob"

set strScope to "https://www.googleapis.com/auth/youtube"

set strOAuthURL to "https://accounts.google.com/o/oauth2/v2/auth?scope=" & strScope & "&access_type=offline&include_granted_scope=true&response_type=code&redirect_uri=" & strRedirectURL & "&client_id=" & strOAuthCliantID & ""


################################


tell application "Safari"
activate
make new document with properties {name:"oauth2 by Google API"}
tell window 1
open location strOAuthURL
end tell
end tell

|

[Youtube] Youtube API から OAuthを利用する (その3:アクセス・トークンを取得する)

[Youtube] Youtube API から OAuthを利用する (その2:認証コードを取得する)
https://quicktimer.cocolog-nifty.com/icefloe/2022/06/post-055f75.html
で取得した
認証コードからアクセストークンを生成します。
トークンは時間切れや再発行すると利用出来なくなります
その場合は
認証コード再生成から『やり直し』となります。



AppleScriptを利用してCURLコマンド利用して取得します
POSTですのでお間違い無く
#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
(*
API
https://developers.google.com/youtube/v3

コンソール
https://console.cloud.google.com/apis/dashboard?pli=1

認証情報
APIキー
クライアント ID
クライアント シークレット はここから
https://console.cloud.google.com/apis/credentials

*)
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property objMe : a reference to current application
property objNSString : a reference to objMe's NSString
property objNSMutableString : a reference to objMe's NSMutableString

property objNSJSONSerialization : a reference to objMe's NSJSONSerialization


################################
### ▼設定項目
################################
#### クライアントID
set strOAuthCliantID to "ここにクライアントID" as text

####クライアントシークレット
set strCliantSec to "ここにクライアントシークレット" as text

################################
#### 認証コード
set strAuthCode to "ここに認証コード" as text

###設定ここまで
################################

tell application "System Events"
set listAppList to title of (every process where background only is false)
end tell
repeat with objAppList in listAppList
set strAppList to objAppList as text
if strAppList is "スクリプトエディタ" then
tell application "Script Editor"
if frontmost is true then
try
tell application "System Events" to click menu item "ログを表示" of menu "表示" of menu bar item "表示" of menu bar 1 of application process "Script Editor"
end try
end if
end tell
end if
end repeat

################################
####コマンドライン整形
set strCommandText to "/usr/bin/curl -X POST -d \"code=" & strAuthCode & "\" -d \"client_id=" & strOAuthCliantID & "\" -d \"client_secret=" & strCliantSec & "\" -d \"redirect_uri=urn:ietf:wg:oauth:2.0:oob\" -d \"grant_type=authorization_code\" -d \"access_type=offline\" https://accounts.google.com/o/oauth2/token"

####コマンド実行
set jsonResponse to (do shell script strCommandText) as text

####戻り値 JSON
log jsonResponse

####戻り値を格納 JSONで格納
set ocidResJson to (objNSJSONSerialization's JSONObjectWithData:((objNSString's stringWithString:jsonResponse)'s dataUsingEncoding:(objMe's NSUTF8StringEncoding)) options:0 |error|:(missing value))

####アクセストークンをテキストで取得
set strAccessToken to access_token of ocidResJson as text
####リフレッシュトークンをテキストで取得
set strRefreshToken to refresh_token of ocidResJson as text

log "AccessToken:" & strAccessToken
log "RefreshToken:" & strRefreshToken

|

[Youtube] Youtube API から OAuthを利用する (その4:YouTubeAPIを認証付きで実行する)

色々なケースがありますが
サンプルは
自分のプレイリストにビデオを追加するになります
APIキーアクセス・トークンが必要になります

大量のビデオに対して特定の処理をするときに『超』便利です。



#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions


################################
### ▼設定項目
################################
#### APIキー
set strAPIkey to "ここにAPIキー" as text

################################
#### アクセストークン
set strAccessToken to "ここにアクセストークン" as text


################################
####ビデオを追加するYouTubeのプレイリストID

set strPlayListID to "ここに追加するプレイリストID"

####追加したいビデオのVideoID
set strVideoID to "ビデオのVideoID"

###設定ここまで
################################
tell application "System Events"
set listAppList to title of (every process where background only is false)
end tell
repeat with objAppList in listAppList
set strAppList to objAppList as text
if strAppList is "スクリプトエディタ" then
tell application "Script Editor"
if frontmost is true then
try
tell application "System Events" to click menu item "ログを表示" of menu "表示" of menu bar item "表示" of menu bar 1 of application process "Script Editor"
end try
end if
end tell
end if
end repeat


################################
####POSTするJSONを整形
set strPostJson to "{\"snippet\": {\"playlistId\": \"" & strPlayListID & "\",\"resourceId\": {\"videoId\": \"" & strVideoID & "\",\"kind\": \"youtube#video\"}}}" as text

####コマンド整形
set strCommandText to ("/usr/bin/curl -X POST 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&key=" & strAPIkey & "' -H \"Content-Type: application/json\" -H \"Authorization: Bearer " & strAccessToken & "\" -d '" & strPostJson & "'") as text

####コマンド実行
set jsonGetTokenResponse to (do shell script strCommandText) as text

log jsonGetTokenResponse

|

その他のカテゴリー

Acrobat Acrobat Annotation Acrobat Dialog Acrobat Form Acrobat JS Acrobat Open Acrobat Plugin Acrobat python Acrobat Reader Acrobat Sequ Acrobat Stamps Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin System Information Admin Tools Admin Users Admin Volumes Adobe Apple AppleScript AppleScript Guide AppleScript Accessibility AppleScript AppKit AppleScript Applications AppleScript AppStore AppleScript Archive AppleScript Attributes AppleScript Automator AppleScript AVAsset AppleScript AVconvert AppleScript AVFoundation AppleScript AVURLAsset AppleScript BackUp AppleScript Barcode AppleScript Bash AppleScript Basic AppleScript Basic Path AppleScript Bluetooth AppleScript BOX AppleScript Browser AppleScript Calendar AppleScript CD/DVD AppleScript Choose AppleScript Chrome AppleScript CIImage AppleScript CloudStorage AppleScript Color AppleScript com.apple.LaunchServices.OpenWith AppleScript Console AppleScript Contacts AppleScript CotEditor AppleScript CURL AppleScript current application AppleScript Date&Time AppleScript delimiters AppleScript Desktop AppleScript Device AppleScript Disk AppleScript do shell script AppleScript Dock AppleScript DropBox AppleScript eMail AppleScript Encode Decode AppleScript Error AppleScript EXIFData AppleScript ffmpeg AppleScript File AppleScript Finder AppleScript Firefox AppleScript Folder AppleScript Fonts AppleScript GIF AppleScript HTML AppleScript Icon AppleScript Illustrator AppleScript Image Events AppleScript Image2PDF AppleScript ImageOptim Applescript iWork AppleScript Javascript AppleScript Jedit AppleScript Json AppleScript Label AppleScript List AppleScript locationd AppleScript LRC AppleScript LSSharedFileList AppleScript m3u8 AppleScript MakePDF AppleScript Map AppleScript Math AppleScript Microsoft AppleScript Microsoft Edge AppleScript Microsoft Excel AppleScript Mobileconfig AppleScript Mouse AppleScript Movie AppleScript Music AppleScript NetWork AppleScript Notes AppleScript NSArray AppleScript NSBitmapImageRep AppleScript NSBundle AppleScript NSCFBoolean AppleScript NSCharacterSet AppleScript NSColor AppleScript NSColorList AppleScript NSData AppleScript NSDictionary AppleScript NSError AppleScript NSEvent AppleScript NSFileAttributes AppleScript NSFileManager AppleScript NSFont AppleScript NSFontManager AppleScript NSImage AppleScript NSIndex AppleScript NSKeyedArchiver AppleScript NSKeyedUnarchiver AppleScript NSLocale AppleScript NSMutableArray AppleScript NSMutableDictionary AppleScript NSMutableString AppleScript NSNotFound AppleScript NSNumber AppleScript NSOpenPanel AppleScript NSPasteboard AppleScript NSPDFImageRep AppleScript NSpoint AppleScript NSPredicate AppleScript NSRange AppleScript NSRegularExpression AppleScript NSRunningApplication AppleScript NSScreen AppleScript NSSize AppleScript NSString AppleScript NSStringCompareOptions AppleScript NSTask AppleScript NSTimeZone AppleScript NSURL AppleScript NSURL File AppleScript NSURLBookmark AppleScript NSURLComponents AppleScript NSURLResourceKey AppleScript NSUserDefaults AppleScript NSUUID AppleScript NSView AppleScript NSWorkspace AppleScript Numbers AppleScript OAuth AppleScript ObjC AppleScript OneDrive AppleScript Osax AppleScript PDF AppleScript PDFAnnotationWidget AppleScript PDFContext AppleScript PDFDisplayBox AppleScript PDFDocumentPermissions AppleScript PDFKit AppleScript PDFnUP AppleScript PDFOutline AppleScript Photos AppleScript Photoshop AppleScript Plist System Events AppleScript PostScript AppleScript prefPane AppleScript Preview AppleScript Python AppleScript QR AppleScript QR Decode AppleScript QuickLook AppleScript QuickTime AppleScript record AppleScript Regular Expression AppleScript Reminders AppleScript ReName AppleScript Repeat AppleScript RTF AppleScript Safari AppleScript SaveFile AppleScript ScreenCapture AppleScript ScreenSaver AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript Sort AppleScript Sound AppleScript Spotlight AppleScript SRT AppleScript StandardAdditions AppleScript stringByApplyingTransform AppleScript System Events AppleScript System Settings AppleScript TemporaryItems AppleScript Terminal AppleScript Text AppleScript Text CSV AppleScript Text TSV AppleScript TextEdit AppleScript Translate AppleScript Trash AppleScript Twitter AppleScript UI AppleScript Unit Conversion AppleScript UTType AppleScript valueForKeyPath AppleScript Video AppleScript VisionKit AppleScript Visual Studio Code AppleScript webarchive AppleScript webp AppleScript Wifi AppleScript XML AppleScript XML EPUB AppleScript XML OPML AppleScript XML Plist AppleScript XML RSS AppleScript XML SVG AppleScript XML TTML AppleScript XML webloc AppleScript YouTube AppleScript Zero Suppress Applications Barcode OnLine Tools CityCode Design iPhone List Logs lsappinfo Memo Music perl PlistBuddy pluginkit postalcode ReadMe SF Symbols character id SF Symbols Entity sips Skype Slack sqlite TCC Tools Typography Video Wacom zoom