XML webloc

WEBページの選択範囲(テキスト限定)からフラグメントを作成してURLに整形する

1:WEBページ上のテキストを選択した状態でコピー(コマンド+C)
2:スクリプトを実行する
3:戻り値がテキストフラグメント付きのURLになります

1:WEBページ上のテキストを選択した状態でコピー(コマンド+C)
202505030524171_511x184
2:スクリプトを実行する
スクリプトメニューに入れておくと良いですね
202505030529211_535x358
3:戻り値がテキストフラグメント付きのURLになります
202505030524001_1184x586
このように
#のフラグメントから『:~:text=』をキーにしてValueが%エンコードされたキーワードになります
https://www.google.com/advanced_search?hl=ja#:~:text=%E6%A4%9C%E7%B4%A2%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3
LINK

202505031217452_726x276

リンク先がこのようにハイライトされた状態になります

対象のページがCSS設定していないと意図した
表示にならないこともあります
仕様としては
https://example.com#:~:text=[prefix-,]textStart[,textEnd][,-suffix]
開始ワード ハイライトされる文書 終了ワード
といった形式で
指定することができるので
同じページに複数、対象のワードが出る場合は
開始ワード、終了ワード形式でないと
最初にマッチした部分にハイライトが入ります

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

MakeフラグメントURL.applescript
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004Microsoft Edgeの全画面で
005範囲選択したテキストをコピーします
006そのコピーした範囲の
007テキストフラグメントURLを生成して
008クリップボードまたはWEBロケーションファイルとして保存します
009
010仕様は
011https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Fragment/Text_fragments
012
013とりあえず作った感じで
014仕様通りなのか?もアレな
015v1 20250503 初回作成
016
017com.cocolog-nifty.quicktimer.icefloe *)
018----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
019use AppleScript version "2.8"
020use framework "Foundation"
021use framework "AppKit"
022use framework "UniformTypeIdentifiers"
023use scripting additions
024
025property refMe : a reference to current application
026
027################################
028######ペーストボードを取得
029################################
030set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
031#タイプを取得
032set ocidPastBoardTypeArray to ocidPasteboard's types()
033log ocidPastBoardTypeArray as list
034#
035set boolContain to ocidPastBoardTypeArray's containsObject:("org.chromium.source-url")
036if (boolContain as boolean) is false then
037   set refResponse to doDisplayAlert("テキストフラグメントURLが含まれていないのでURLを作成できません")
038   return "テキストフラグメントURLが含まれていないのでURLを作成できません"
039else if (boolContain as boolean) is true then
040   #含まれているのでデータを取得して
041   set ocidPastBoardData to (ocidPasteboard's dataForType:("org.chromium.source-url"))
042   #テキストにします
043   set ocidURLstring to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
044   set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLstring)
045   #クエリーアイテムに分解しておいて
046   set ocidURLomponents to refMe's NSURLComponents's componentsWithURL:(ocidURL) resolvingAgainstBaseURL:(false)
047   set ocidFlagment to ocidURLomponents's fragment()
048   #すでにフラグメントがあるURLが入力の可能性があるから
049   #テキストフラグメントは再セットが基本
050   #フラグメントになるテキスト
051   set ocidFlagMentString to refMe's NSMutableString's stringWithString:(":~:text=")
052   #テキストを取得して
053   set ocidPastBoardData to (ocidPasteboard's dataForType:("public.utf8-plain-text"))
054   set ocidContentsString to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
055   #フラグメント用テキストに追加する
056   ocidFlagMentString's appendString:(ocidContentsString)
057   ocidURLomponents's setFragment:(ocidFlagMentString)
058   ##URLに戻して テキストにしておく
059   set ocidSetURL to ocidURLomponents's |URL|()
060   set ocidSetURLString to ocidSetURL's absoluteString()
061   #2重改行を取り除いておく
062   set ocidSetURLString to (ocidSetURLString's stringByReplacingOccurrencesOfString:("%0A%0A") withString:("%0A"))
063   set boolConteinReturn to ocidSetURLString's hasSuffix:("%0A")
064   if (boolConteinReturn as boolean) is true then
065      set ocidLength to ocidSetURLString's |length|()
066      set ocidSetURLString to ocidSetURLString's substringToIndex:(ocidLength - 3)
067   end if
068end if
069set strSetURL to ocidSetURLString as text
070########################
071##ダイアログ
072########################
073set strIconPath to ("/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/InternetLocation.icns") as text
074set aliasIconPath to (POSIX file strIconPath) as alias
075#前面に
076set strName to (name of current application) as text
077if strName is "osascript" then
078   tell application "SystemUIServer" to activate
079else
080   tell current application to activate
081end if
082#
083set strTitle to ("テキストフラグメントURL\r戻り値です") as text
084set strMes to ("\r\rテキストフラグメントURL\r戻り値です\n値のコピーができます\rOPENして確認』でもクリップボードにURLが入ります\r") as text
085tell application "SystemUIServer"
086   activate
087   set recordResult to (display dialog strMes with title strTitle default answer strSetURL buttons {"クリップボードにコピー", "ローケーションファイルにする", "OPENして確認"} default button "クリップボードにコピー" giving up after 30 with icon aliasIconPath without hidden answer)
088end tell
089if (gave up of recordResult) is true then
090   return "時間切れです"
091else if (button returned of recordResult) is "OPENして確認" then
092   set strURL to (text returned of recordResult) as text
093   set ocidURLstring to refMe's NSString's stringWithString:(strURL)
094   set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLstring)
095   set boolDone to doSendPasteboard(strURL) as boolean
096   #デフォルトのブラウザで開く
097   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
098   set boolDone to appSharedWorkspace's openURL:(ocidURL)
099else if button returned of recordResult is "クリップボードにコピー" then
100   set strReturnedText to (text returned of recordResult) as text
101   set boolDone to doSendPasteboard(strReturnedText) as boolean
102   if boolDone is false then
103      log ("ペーストボードへのコピーに失敗しました") as text
104      return "ペーストボードへのコピーに失敗しました"
105   end if
106else if button returned of recordResult is "ローケーションファイルにする" then
107   set strURL to (text returned of recordResult) as text
108   log doMakeWebloc(strURL)
109   set boolDone to doSendPasteboard(strURL) as boolean
110else
111   log (text returned of recordResult) as text
112end if
113
114return
115########################
116## WEBLOCファイルで保存
117########################
118to doMakeWebloc(argURL)
119   set ocidURLstring to refMe's NSString's stringWithString:(argURL)
120   #WEBLOCDICTにして
121   set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s init()
122   (ocidPlistDict's setValue:(ocidURLstring) forKey:("URL"))
123   #PLIST
124   set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
125   set listResponse to (refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFormat) options:0 |error|:(reference))
126   set ocidPlistData to (item 1 of listResponse)
127   #Window用のURLファイル
128   set strURLfileString to ("[InternetShortcut]\r\nURL=" & (argURL as text) & "") as text
129   set ocidURLfileString to refMe's NSString's alloc()'s initWithString:(strURLfileString)
130   #保存先はダウンロードフォルダ
131   set appFileManager to refMe's NSFileManager's defaultManager()
132   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDownloadsDirectory) inDomains:(refMe's NSUserDomainMask))
133   set ocidDownloadsDirPathURL to ocidURLsArray's firstObject()
134   #ファイル名とパスを定義して
135   set strWeblocFileName to ("org.chromium.source-url.webloc")
136   set strURLFileName to ("org.chromium.source-url.url")
137   set ocidWeblocFilePathURL to (ocidDownloadsDirPathURL's URLByAppendingPathComponent:(strWeblocFileName) isDirectory:(false))
138   set ocidURLFilePathURL to (ocidDownloadsDirPathURL's URLByAppendingPathComponent:(strURLFileName) isDirectory:(false))
139   #WEBLOC保存
140   set ocidOption to (refMe's NSDataWritingAtomic)
141   set listDone to ocidPlistData's writeToURL:(ocidWeblocFilePathURL) options:(ocidOption) |error|:(reference)
142   #URL保存
143   set listDone to ocidURLfileString's writeToURL:(ocidURLFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
144   #保存先を開く
145   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
146   set boolDone to appSharedWorkspace's openURL:(ocidDownloadsDirPathURL)
147   
148end doMakeWebloc
149
150
151########################
152## クリップボードに送る
153########################
154on doSendPasteboard(argText)
155   set appPasteboard to refMe's NSPasteboard's generalPasteboard()
156   set ocidText to (refMe's NSString's stringWithString:(argText))
157   appPasteboard's clearContents()
158   set boolDone to appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
159   if boolDone = false then
160      try
161         tell application "Finder"
162            set the clipboard to strTitle as text
163         end tell
164      on error
165         return false
166      end try
167   else if boolDone = true then
168      return true
169   end if
170end doSendPasteboard
171
172
173
174################################
175##エラーアラート
176################################
177to doDisplayAlert(argMesText)
178   #display alert
179   set strName to (name of current application) as text
180   if strName is "osascript" then
181      tell application "SystemUIServer" to activate
182   else
183      tell current application to activate
184   end if
185   #      set strMes to "エラーしました" as text
186   set strMes to argMesText as text
187   try
188      tell application "SystemUIServer"
189         #   tell application id "com.apple.Safari"
190         activate
191         set recordResponse to (display alert strMes buttons {"OK"} default button "OK" as critical giving up after 3) as record
192      end tell
193   on error
194      tell application "SystemUIServer" to quit
195      log "エラーしました"
196      return false
197   end try
198   return false
199end doDisplayAlert
AppleScriptで生成しました

| | コメント (0)

[org.microsoft.link-preview]Microsoft EdgeのURLコピーの形式(超便利:私がMicrosoft Edgeを使う理由)

Microsoft EdgeのURL欄からのURLのコピーは
各ブラウザの中で最もすぐれている
詳細な情報をJSON形式で取得できるのです
超便利♪
例えばyahooのnewsだとこんな感じ

org.microsoft.link-preview.json

サンプルコード

サンプルソース(参考)
行番号ソース
001{
002  "description": "Yahoo!ニュースは、新聞・通信社が配信するニュースのほか、映像、雑誌や個人の書き手が執筆する記事など多種多様なニュースを掲載しています。",
003  "domain": "yahoo.co.jp",
004  "favicon_url": "https://s.yimg.jp/c/icon/s/bsc/2.0/favicon.ico",
005  "filtered_terms": [
006    "new",
007    "yahoo",
008    "co",
009    "jp",
010    "yahoo",
011    "ニュース",
012    "yahoo",
013    "ニュースは、新聞・通信社が配信するニュースのほか、映像、雑誌や個人の書き手が執筆する記事など多種多様なニュースを掲載しています。"
014  ],
015  "image_url": "https://s.yimg.jp/images/news-web/all/images/ogp_default.png",
016  "keywords": "",
017  "preferred_format": "text/plain;content=plain-url",
018  "title": "Yahoo!ニュース",
019  "type": "website",
020  "url": "https://news.yahoo.co.jp/"
021}
AppleScriptで生成しました

これを使わない手はないでしょ
タイトルとって…とか必要ない
加工に必要な情報全部揃ってる
org.microsoftになっているから『みんなも使ってね』仕様になっているのかな?

例:Microsoft EdgeのURLコピーからアイコン付きWEBLOCファイルを作成する
202504020230421_466x306
こんな感じ

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

001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004Microsoft EdgeURLをコピーすると
005JSON形式のorg.microsoft.link-previewが取得できる
006これを使って
007ファイル名をタイトル
008アイコン画像がアイコンもつける WEBLOCファイルを作成保存する
009com.cocolog-nifty.quicktimer.icefloe *)
010----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
011use AppleScript version "2.8"
012use framework "Foundation"
013use framework "AppKit"
014use scripting additions
015
016property refMe : a reference to current application
017
018
019################################
020######ペーストボードを取得
021################################
022set appPasteboard to refMe's NSPasteboard's generalPasteboard()
023#タイプを取得使わないけど
024set ocidPastBoardTypeArray to appPasteboard's types()
025#URLコピーは基本テキスト
026set ocidPastBoardData to (appPasteboard's stringForType:("org.microsoft.link-preview"))
027#set ocidPastBoardData to (appPasteboard's propertyListForType:("org.microsoft.link-preview"))
028#org.microsoft.link-previewJSON形式のDATA
029set ocidPastBoardData to (appPasteboard's dataForType:("org.microsoft.link-preview"))
030if ocidPastBoardData = (missing value) then
031   return "データ未取得処理終了"
032end if
033#JSON初期化
034set ocidOption to (refMe's NSJSONReadingJSON5Allowed)
035set listResponse to (refMe's NSJSONSerialization's JSONObjectWithData:(ocidPastBoardData) options:(ocidOption) |error|:(reference))
036set ocidJsonDict to (item 1 of listResponse)
037#キー一覧を取得
038set ocidKeyArray to ocidJsonDict's allKeys()
039log ocidKeyArray as list
040#JSONから各種値を取得する
041set ocidDomain to (ocidJsonDict's valueForKey:("domain"))
042log ("domain: " & ocidDomain & "") as text
043set ocidURL to (ocidJsonDict's valueForKey:("url"))
044log ("url: " & ocidURL & "") as text
045set ocidIMG_URL to (ocidJsonDict's valueForKey:("image_url"))
046log ("image_url: " & ocidIMG_URL & "") as text
047set ocidTITLE to (ocidJsonDict's valueForKey:("title"))
048log ("title: " & ocidTITLE & "") as text
049set ocidDESCRIPTION to (ocidJsonDict's valueForKey:("description"))
050log ("description: " & ocidDESCRIPTION & "") as text
051set ocidFAVICON_URL to (ocidJsonDict's valueForKey:("favicon_url"))
052log ("favicon_url: " & ocidFAVICON_URL & "") as text
053
054#WEBLOCファイルを作成する
055set ocidPistDict to refMe's NSMutableDictionary's alloc()'s init()
056ocidPistDict's setValue:(ocidURL) forKey:("URL")
057ocidPistDict's setValue:(ocidTITLE) forKey:("title")
058
059#PLIST
060set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
061set listResponse to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPistDict) format:(ocidFormat) options:0 |error|:(reference)
062set ocidPlistData to (item 1 of listResponse)
063#保存先
064set appFileManager to refMe's NSFileManager's defaultManager()
065set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
066set ocidDocumentDirPathURL to ocidURLsArray's firstObject()
067set strSubPath to ("Apple/Webloc/Webloc/" & ocidDomain & "") as text
068set ocidSaveDirPathURL to ocidDocumentDirPathURL's URLByAppendingPathComponent:(strSubPath) isDirectory:(true)
069#フォルダ作成
070set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
071ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
072set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
073#保存先パス
074set ocidBaseFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(ocidTITLE) isDirectory:(false)
075set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:("webloc")
076set ocidSaveFilePath to ocidSaveFilePathURL's |path|()
077#保存
078set ocidOption to (refMe's NSDataWritingAtomic)
079set listDone to ocidPlistData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error|:(reference)
080
081#アイコン画像があるならアイコンつける
082if ocidFAVICON_URL ≠ (missing value) then
083   set strURL to ocidFAVICON_URL as text
084   set ocidURLString to refMe's NSString's stringWithString:(strURL)
085   set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLString)
086   set ocidOption to (refMe's NSDataReadingMappedIfSafe)
087   set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error|:(reference)
088   set ocidIconData to (item 1 of listResponse)
089   set ocidIconImage to (refMe's NSImage's alloc()'s initWithData:(ocidIconData))
090   if ocidIconImage ≠ (missing value) then
091      set ocidImgSize to ocidIconImage's |size|()
092      set ocidImageRep to ocidIconImage's representations()'s firstObject()
093      set ocidSetImage to (refMe's NSImage's alloc()'s initWithSize:(ocidImgSize))
094      ocidSetImage's addRepresentation:(ocidImageRep)
095      ocidSetImage's setSize:(ocidImgSize)
096      #アイコンをつける
097      set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
098      set boolAddIcon to appSharedWorkspace's setIcon:(ocidSetImage) forFile:(ocidSaveFilePath) options:(refMe's NSExcludeQuickDrawElementsIconCreationOption)
099   end if
100end if
101
102#保存先を開く
103set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
104set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL)
105

| | コメント (0)

macOSのWebloc(インターネットロケーションファイル)からWindows用のURLファイル(インターネットショートカットファイル)を作成する


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#
006#
007# com.cocolog-nifty.quicktimer.icefloe
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use framework "UniformTypeIdentifiers"
013use scripting additions
014property refMe : a reference to current application
015property ocidChosenFilePathURL : missing value
016
017
018####################
019##ダイアログ
020####################
021on appChooseFile:(ocidArgDirPathURL)
022  set strName to (name of current application) as text
023  if strName is "osascript" then
024    tell application "Finder" to activate
025  else
026    tell current application to activate
027  end if
028  set ocidOpenPanel to refMe's NSOpenPanel's openPanel()
029  #
030  ocidOpenPanel's setDirectoryURL:(ocidArgDirPathURL)
031  ocidOpenPanel's setCanChooseFiles:(true)
032  ocidOpenPanel's setCanChooseDirectories:(false)
033  ocidOpenPanel's setAllowsMultipleSelection:(false)
034  ocidOpenPanel's setAccessoryViewDisclosed:(true)
035  ocidOpenPanel's setTitle:"WEBLOCファイルWINDOWSのURLファイルにします"
036  ocidOpenPanel's setPrompt:"実行"
037  ocidOpenPanel's setMessage:"WEBLOCファイルWINDOWSのURLファイルにします"
038  ocidOpenPanel's setShowsTagField:(true)
039  ocidOpenPanel's setResolvesAliases:(false)
040  ocidOpenPanel's setShowsHiddenFiles:(true)
041  ocidOpenPanel's setExtensionHidden:(false)
042  ocidOpenPanel's setCanCreateDirectories:(true)
043  ocidOpenPanel's setCanDownloadUbiquitousContents:(true)
044  ocidOpenPanel's setCanResolveUbiquitousConflicts:(true)
045  ocidOpenPanel's setCanSelectHiddenExtension:(true)
046  ocidOpenPanel's setTreatsFilePackagesAsDirectories:(true)
047  #対象のUTIを限定する
048  # set listUTI to {"com.apple.web-internet-location", "com.microsoft.internet-shortcut"} as list
049  set listUTI to {"com.apple.web-internet-location"} as list
050  
051  set ocidUTIarray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
052  repeat with itemUTI in listUTI
053    set ocidItemUTType to (refMe's UTType's typeWithIdentifier:(itemUTI))
054    (ocidUTIarray's addObject:(ocidItemUTType))
055  end repeat
056  #UTTypeを限定項目としてセット
057  ocidOpenPanel's setAllowedContentTypes:(ocidUTIarray)
058  #
059  set returnCode to ocidOpenPanel's runModal()
060  #キャンセルをmissing value
061  if returnCode = (refMe's NSModalResponseCancel) then
062    log "キャンセル"
063    error number -128
064  else if returnCode = (refMe's NSModalResponseOK) then
065    log "OK"
066    set my ocidChosenFilePathURL to ocidOpenPanel's |URL|()
067    return
068  end if
069end appChooseFile:
070
071####################
072##ダイアログ呼び出し
073####################
074set appFileManager to refMe's NSFileManager's defaultManager()
075set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
076set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
077##ダイアログ呼び出し
078my performSelectorOnMainThread:("appChooseFile:") withObject:(ocidDesktopDirPathURL) waitUntilDone:(true)
079##戻り値NULならキャンセルで停止
080if ocidChosenFilePathURL = (missing value) then
081  error number -128
082else
083  ##戻り値あるならURL
084  set ocidFilePathURL to ocidChosenFilePathURL
085end if
086
087####################
088##保存先パス
089####################
090set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
091set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:("url")
092
093####################
094##データ取得
095####################
096set listResponse to refMe's NSDictionary's dictionaryWithContentsOfURL:(ocidFilePathURL) |error| :(reference)
097set ocidReadDict to (item 1 of listResponse)
098set ocidValue to ocidReadDict's valueForKey:("URL")
099#念の為NSURLを経由させて%エンコードさせる
100set ocidSetURL to refMe's NSURL's alloc()'s initWithString:(ocidValue)
101set ocidSetURLStr to ocidSetURL's absoluteString()
102
103####################
104##データ作成
105####################
106set ocidSaveString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
107ocidSaveString's appendString:("[InternetShortcut]")
108ocidSaveString's appendString:("\r\n")
109ocidSaveString's appendString:("URL=")
110ocidSaveString's appendString:(ocidSetURLStr)
111
112####################
113##保存
114####################
115set listDone to ocidSaveString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSASCIIStringEncoding) |error| :(reference)
116
117return
AppleScriptで生成しました

|

URLをWEBLOCファイルにする(簡易版)

色々盛り込もうとすると…収集つかなくなったので
基本的なところでやめておくことにした
AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "UniformTypeIdentifiers"
009use framework "AppKit"
010use scripting additions
011property refMe : a reference to current application
012
013set strMes to ("URLを入力\rLOCファイルを作成します") as text
014
015########################
016## クリップボードの中身取り出し
017########################
018###初期化
019set appPasteboard to refMe's NSPasteboard's generalPasteboard()
020##格納されているタイプをリストにして
021set ocidPastBoardTypeArray to appPasteboard's types
022###テキストがあれば
023set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
024if (boolContain as boolean) is true then
025  ###値を格納する
026  tell application "Finder"
027    set strReadString to (the clipboard as text) as text
028  end tell
029else
030  ###UTF8が無いなら
031  ##テキスト形式があるか?確認して
032  set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
033  ##テキスト形式があるなら
034  if (boolContain as boolean) is true then
035    set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
036    ocidTypeClassArray's addObject:(refMe's NSString)
037    set ocidReadString to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
038    set strReadString to ocidReadString as text
039  else
040    log "テキストなし"
041    set strReadString to strMes as text
042  end if
043end if
044##############################
045#####ダイアログ
046##############################
047###ダイアログを前面に出す
048set strName to (name of current application) as text
049if strName is "osascript" then
050  tell application "Finder" to activate
051else
052  tell current application to activate
053end if
054set aliasIconPath to POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/InternetLocation.icns" as alias
055try
056  set recordResult to (display dialog strMes with title "入力してください" default answer strReadString buttons {"OK", "キャンセル"} default button "OK" with icon aliasIconPath giving up after 20 without hidden answer) as record
057on error
058  log "エラーしました"
059  return
060end try
061if "OK" is equal to (button returned of recordResult) then
062  set strReturnedText to (text returned of recordResult) as text
063else if (gave up of recordResult) is true then
064  return "時間切れです"
065else
066  return "キャンセル"
067end if
068##############################
069#####戻り値整形
070##############################
071set ocidResponseText to (refMe's NSString's stringWithString:(strReturnedText))
072###タブと改行を除去しておく
073set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
074ocidTextM's appendString:(ocidResponseText)
075###除去する文字列リスト
076set listRemoveChar to {"\n", "\r", "\t", "\\s"} as list
077##置換
078repeat with itemChar in listRemoveChar
079  set strPattern to itemChar as text
080  set strTemplate to ("") as text
081  set ocidOption to (refMe's NSRegularExpressionCaseInsensitive)
082  set listResponse to (refMe's NSRegularExpression's regularExpressionWithPattern:(strPattern) options:(ocidOption) |error| :(reference))
083  if (item 2 of listResponse) ≠ (missing value) then
084    log (item 2 of listResponse)'s localizedDescription() as text
085    return "正規表現パターンに誤りがあります"
086  else
087    set ocidRegex to (item 1 of listResponse)
088  end if
089  set numLength to ocidResponseText's |length|()
090  set ocidRange to refMe's NSRange's NSMakeRange(0, numLength)
091  set ocidResponseText to (ocidRegex's stringByReplacingMatchesInString:(ocidResponseText) options:0 range:(ocidRange) withTemplate:(strTemplate))
092end repeat
093
094####戻り値を半角にする
095set ocidNSStringTransform to (refMe's NSStringTransformFullwidthToHalfwidth)
096set ocidTextM to (ocidTextM's stringByApplyingTransform:ocidNSStringTransform |reverse|:false)
097
098##############################
099#####タイトル取得
100##############################
101##URLにして
102set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidTextM)
103set strURL to ocidURL's absoluteString() as text
104set ocidURLComponent to refMe's NSURLComponents's alloc()'s initWithString:(ocidTextM)
105set ocidPath to ocidURLComponent's |path|()
106set ocidHostName to ocidURL's |host|()
107set strScheme to ocidURL's |scheme|() as text
108#
109if strScheme starts with "http" then
110  set strExtension to ("webloc") as text
111  set strSubDir to ("Webloc") as text
112  set strFileName to ocidHostName as text
113else if strScheme starts with "afp" then
114  set strExtension to ("afploc") as text
115  set strSubDir to ("Afp") as text
116  set strFileName to ocidHostName as text
117else if strScheme starts with "file" then
118  set strExtension to ("fileloc") as text
119  set strSubDir to ("File") as text
120  set strFileName to ocidHostName as text
121else if strScheme starts with "ftp" then
122  set strExtension to ("ftploc") as text
123  set strSubDir to ("Ftp") as text
124  set strFileName to ocidHostName as text
125else if strScheme starts with "mail" then
126  set strExtension to ("mailloc") as text
127  set strSubDir to ("Mail") as text
128  set ocidEmailAdd to ocidURL's resourceSpecifier()
129  set ocidHostName to (ocidPath's componentsSeparatedByString:("@"))'s lastObject()
130  set strFileName to ocidEmailAdd as text
131else if strScheme starts with "news" then
132  set strExtension to ("newsloc") as text
133  set strSubDir to ("News") as text
134  set strFileName to ocidHostName as text
135else
136  set strExtension to ("inetloc") as text
137  set strSubDir to (ocidURL's |scheme|())'s capitalizedString() as text
138  if ocidHostName is (missing value) then
139    set ocidHostName to (ocidURL's |scheme|())'s capitalizedString()
140    set strFileName to ocidPath's lastPathComponent() as text
141  end if
142end if
143##############################
144#####ファイル保存先
145##############################
146set appFileManager to refMe's NSFileManager's defaultManager()
147set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
148set ocidDocumentDirURL to ocidURLsArray's firstObject()
149set strSubDir to ("Apple/Webloc/" & strSubDir & "/") as text
150set ocidWebLocDirPathURL to ocidDocumentDirURL's URLByAppendingPathComponent:(strSubDir)
151set ocidSaveDirPathURL to ocidWebLocDirPathURL's URLByAppendingPathComponent:(ocidHostName)
152#
153set appFileManager to refMe's NSFileManager's defaultManager()
154set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
155ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
156set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
157
158#########################
159###ファイル名
160set strDateno to doGetDateNo("yyyyMMdd")
161set strSaveWeblocFileName to (strScheme & "." & strFileName & "." & strDateno & "." & strExtension) as text
162set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveWeblocFileName)
163log ocidSaveFilePathURL's |path| as text
164#########################
165##WEBLOC 内容
166set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
167ocidPlistDict's setValue:(strURL) forKey:("URL")
168set strDateno to doGetDateNo("yyyyMMdd")
169ocidPlistDict's setValue:(strDateno) forKey:("version")
170ocidPlistDict's setValue:(strScheme) forKey:("scheme")
171ocidPlistDict's setValue:(strDateno) forKey:("productVersion")
172##これは自分用
173ocidPlistDict's setValue:(strDateno) forKey:("kMDItemFSCreationDate")
174
175#########################
176####weblocファイルを作る
177set ocidFromat to refMe's NSPropertyListXMLFormat_v1_0
178set listPlistEditDataArray to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFromat) options:0  |error| :(reference)
179set ocidPlistData to item 1 of listPlistEditDataArray
180set listDone to ocidPlistData's writeToURL:(ocidSaveFilePathURL) options:0  |error| :(reference)
181if (item 1 of listDone) is false then
182  return "保存に失敗しました"
183end if
184
185#########################
186set strSaveUrlFileName to (strFileName & "." & strDateno & ".url") as text
187####URLファイルを作る
188set strShortCutFileString to ("[InternetShortcut]\r\nURL=" & strURL & "\r\n") as text
189set ocidUrlFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveUrlFileName)
190set ocidShortCutFileString to refMe's NSMutableString's alloc()'s initWithCapacity:0
191ocidShortCutFileString's setString:(strShortCutFileString)
192##保存
193set listDone to ocidShortCutFileString's writeToURL:(ocidUrlFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
194if (item 1 of listDone) is false then
195  return "保存に失敗しました"
196end if
197delay 1
198#########################
199####保存先を開く
200try
201  tell application "Finder"
202    set aliasSaveFile to (file strSaveWeblocFileName of folder aliasSaveDirPathURL) as alias
203    set refNewWindow to make new Finder window
204    tell refNewWindow
205      set position to {10, 30}
206      set bounds to {10, 30, 720, 480}
207    end tell
208    set target of refNewWindow to aliasSaveDirPathURL
209    set selection to aliasSaveFile
210  end tell
211on error
212  set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
213  set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL)
214end try
215
216return 0
217
218#########################
219####バージョンで使う日付
220to doGetDateNo(strDateFormat)
221  ####日付情報の取得
222  set ocidDate to current application's NSDate's |date|()
223  ###日付のフォーマットを定義
224  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
225  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
226  ocidNSDateFormatter's setDateFormat:strDateFormat
227  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
228  set strDateAndTime to ocidDateAndTime as text
229  return strDateAndTime
230end doGetDateNo
AppleScriptで生成しました

|

[WEBLOC]クリップボードのURLからWEBLOCファイルを作成する(途中)


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "UniformTypeIdentifiers"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014
015
016
017########################
018## クリップボードの中身取り出し
019########################
020###初期化
021set appPasteboard to refMe's NSPasteboard's generalPasteboard()
022##格納されているタイプをリストにして
023set ocidPastBoardTypeArray to appPasteboard's types
024###テキストがあれば
025set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
026if (boolContain as boolean) is true then
027  ###値を格納する
028  tell application "Finder"
029    set strReadString to (the clipboard as text) as text
030  end tell
031else
032  ###UTF8が無いなら
033  ##テキスト形式があるか?確認して
034  set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
035  ##テキスト形式があるなら
036  if (boolContain as boolean) is true then
037    set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
038    ocidTypeClassArray's addObject:(refMe's NSString)
039    set ocidReadString to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
040    set strReadString to ocidReadString as text
041  else
042    log "テキストなし"
043    set strReadString to "" as text
044  end if
045end if
046
047
048################################
049######ダイアログ
050################################
051#####ダイアログを前面に
052tell current application
053  set strName to name as text
054end tell
055####スクリプトメニューから実行したら
056if strName is "osascript" then
057  tell application "Finder" to activate
058else
059  tell current application to activate
060end if
061set aliasIconPath to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/BookmarkIcon.icns") as alias
062try
063  set recordResponse to (display dialog "WEBページのURLを入力してください\n例:\nhttps://news.yahoo.co.jp\nhttp://localhost:631\nhttps://www.google.com/search?q=今日" with title "URLを入力してください" default answer strReadString buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 20 without hidden answer)
064on error
065  log "エラーしました"
066  return "エラーしました"
067end try
068if true is equal to (gave up of recordResponse) then
069  return "時間切れですやりなおしてください"
070end if
071if "OK" is equal to (button returned of recordResponse) then
072  set strResponse to (text returned of recordResponse) as text
073else
074  log "キャンセルしました"
075  return "キャンセルしました"
076end if
077#########################
078###タブと改行を除去しておく
079set ocidResponseText to refMe's NSString's stringWithString:(strResponse)
080set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
081ocidTextM's appendString:(ocidResponseText)
082##改行除去
083set ocidTextM to ocidTextM's stringByReplacingOccurrencesOfString:("\n") withString:("")
084set ocidTextM to ocidTextM's stringByReplacingOccurrencesOfString:("\r") withString:("")
085##タブ除去
086set ocidTextM to ocidTextM's stringByReplacingOccurrencesOfString:("\t") withString:("")
087set strResponse to ocidTextM as text
088if strResponse starts with "http" then
089  ###URLがすでにエンコードされているか?の確認
090  set ocidChkURL to refMe's NSURL's alloc()'s initWithString:(ocidTextM)
091else
092  return "httpURL以外は処理しない"
093end if
094#########################
095###
096if ocidChkURL = (missing value) then
097  ##URL
098  set strURL to doUrlDecode(strURL)
099  ##テキスト
100  set ocidArgText to refMe's NSString's stringWithString:(strURL)
101  set ocidArgTextArray to ocidArgText's componentsSeparatedByString:("?")
102  set numCntArray to (count of ocidArgTextArray) as integer
103  ####クエリーがある場合
104  if numCntArray > 1 then
105    ###最初のArrayitemがURL部
106    set ocidBaseURLstr to ocidArgTextArray's firstObject()
107    ocidArgTextArray's removeObjectAtIndex:(0)
108    ####最初の?以降がクエリーなので?でリスト化したので?を足してテキストに
109    set ocidQueryStr to ocidArgTextArray's componentsJoinedByString:("?")
110    log ocidQueryStr as text
111    ###【B】クエリーのnameとvalueの区切り文字でリスト化
112    set ocidArgTextArray to ocidQueryStr's componentsSeparatedByString:("=")
113    set numCntArray to (count of ocidArgTextArray) as integer
114    ###複数クエリーがある場合
115    if numCntArray > 1 then
116      log ocidArgTextArray as list
117      ###【格納】最初の項目はnameだけになるので格納しておく
118      set strNewQuery to ((ocidArgTextArray's firstObject() as text) & "=") as text
119      repeat with itemIntNo from 1 to (numCntArray - 2) by 1
120        ###【B】のリストを順番に処理
121        set ocidItem to (ocidArgTextArray's objectAtIndex:(itemIntNo))
122        log ocidItem as text
123        ####【C】&で区切ってリストに
124        set ocidItemArray to (ocidItem's componentsSeparatedByString:("&"))
125        set numCntArray to (count of ocidItemArray) as integer
126        ####複数ある場合=クエリーのvalueに値として&がある場合
127        if numCntArray > 1 then
128          ###最後の値を格納しておく
129          set ocidNextQue to ocidItemArray's lastObject()
130          ###最後の値を削除=次のクエリーのNameだから
131          (ocidItemArray's removeLastObject())
132          ####残った値がValueになるので【C】で&でリストにしたので&を足してテキストに戻す
133          set ocidItemQueryStr to (ocidItemArray's componentsJoinedByString:("&"))
134          ###VALUE=クエリーの値をURLエンコードする
135          set strEncValue to doUrlEncode(ocidItemQueryStr as text)
136          ###エンコード済みの値をストリングスにして
137          set ocidEncValue to (refMe's NSString's stringWithString:(strEncValue))
138          ###Valueの中にある&を個別でエンコードしておく
139          set ocidEncValue to (ocidEncValue's stringByReplacingOccurrencesOfString:("&") withString:("%26"))
140          ####【格納】出来上がった値をクエリー用に格納
141          set strNewQuery to strNewQuery & ((ocidEncValue as text) & "&" & (ocidNextQue as text) & "=") as text
142        else
143          ####クエリーが1つだけの場合
144          ####【格納】出来上がった値をクエリー用に格納
145          set strNewQuery to strNewQuery & ((ocidItemArray's firstObject() as text) & "&" & (ocidItemArray's lastObject() as text) & "=") as text
146        end if
147      end repeat
148      ####【格納】出来上がった値をクエリー用に格納
149      set strNewQuery to (strNewQuery & (ocidArgTextArray's lastObject() as text)) as text
150      ####ベースになるURLにクエリーの値を戻してURLを再定義
151      set strEncText to ((ocidBaseURLstr as text) & "?" & strNewQuery) as text
152    end if
153    ##URLのクエリーにNameが無い場合
154    set strEncText to ((ocidBaseURLstr as text) & "?" & (ocidQueryStr as text)) as text
155    set strURL to doUrlDecode(strEncText)
156    set strEncText to doUrlEncode(strURL)
157  else
158    ##URLに?がない=クエリーがない場合
159    set ocidBaseURLstr to ocidArgTextArray's firstObject()
160    set strURL to doUrlDecode(ocidBaseURLstr)
161    set strEncText to doUrlEncode(strURL)
162  end if
163  
164  set strURL to strEncText as text
165else
166  set strURL to ocidTextM as text
167end if
168
169#########################
170#URL
171set ocidURLString to refMe's NSString's alloc()'s initWithString:(strURL)
172set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLString)
173set ocidHostName to ocidURL's |host|()
174##############################
175#####DATA
176set ocidOption to (refMe's NSDataReadingMappedIfSafe)
177set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error| :(reference)
178if (item 2 of listResponse) = (missing value) then
179  log "正常処理"
180  set ocidHTMLData to (item 1 of listResponse)
181else if (item 2 of listResponse) ≠ (missing value) then
182  log (item 2 of listResponse)'s code() as text
183  log (item 2 of listResponse)'s localizedDescription() as text
184  return "NSDATAエラーしました"
185end if
186##############################
187#####XML
188set ocidOption to (refMe's NSXMLNodePreserveAll) + (refMe's NSXMLDocumentTidyHTML)
189set listResponse to refMe's NSXMLDocument's alloc()'s initWithData:(ocidHTMLData) options:(ocidOption) |error| :(reference)
190if (item 2 of listResponse) = (missing value) then
191  log "正常処理"
192  set ocidXMLDoc to (item 1 of listResponse)
193else if (item 2 of listResponse) ≠ (missing value) then
194  log (item 2 of listResponse)'s code() as text
195  log (item 2 of listResponse)'s localizedDescription() as text
196  log "NSXMLDocumentエラー 警告がありました"
197  set ocidXMLDoc to (item 1 of listResponse)
198end if
199##############################
200#####TITLE
201set listResponse to (ocidXMLDoc's nodesForXPath:"//title"  |error| :(reference))
202if (item 2 of listResponse) = (missing value) then
203  log "正常処理"
204  set ocidAttarURLArray to (item 1 of listResponse)
205else if (item 2 of listResponse) ≠ (missing value) then
206  log (item 2 of listResponse)'s code() as text
207  log (item 2 of listResponse)'s localizedDescription() as text
208  return "エラーしました"
209end if
210set ocidTitleString to ocidAttarURLArray's firstObject()'s stringValue()
211set numCntTitle to ocidTitleString's |length|() as integer
212if numCntTitle > 30 then
213  set ocidRenge to refMe's NSRange's NSMakeRange(0, 30)
214  set ocidTitleString to ocidTitleString's substringWithRange:(ocidRenge)
215end if
216
217set strTitle to ocidTitleString as text
218
219##保存先
220set appFileManager to refMe's NSFileManager's defaultManager()
221set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
222set ocidDocumentDirURL to ocidURLsArray's firstObject()
223set ocidWebLocDirPathURL to ocidDocumentDirURL's URLByAppendingPathComponent:("Apple/Webloc/")
224set ocidSaveDirPathURL to ocidWebLocDirPathURL's URLByAppendingPathComponent:(ocidHostName)
225##フォルダ作る
226set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
227# 777-->511 755-->493 700-->448 766-->502
228ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
229set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
230set aliasSaveDirPathURL to (ocidSaveDirPathURL's absoluteURL()) as alias
231#########################
232###ファイル名
233set strFileName to ocidHostName as text
234set strDateno to doGetDateNo("yyyyMMdd")
235set strSaveWeblocFileName to (strTitle & ".webloc") as text
236set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveWeblocFileName)
237#########################
238##WEBLOC 内容
239set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
240ocidPlistDict's setValue:(strURL) forKey:("URL")
241set strDateno to doGetDateNo("yyyyMMdd")
242ocidPlistDict's setValue:(strDateno) forKey:("version")
243ocidPlistDict's setValue:(strDateno) forKey:("productVersion")
244##これは自分用
245ocidPlistDict's setValue:(strDateno) forKey:("kMDItemFSCreationDate")
246##これも自分用
247if strTitle is "" then
248  log "何もしない"
249else if strTitle is (missing value) then
250  set strTitle to ocidHostName as text
251else
252  ocidPlistDict's setValue:(strTitle) forKey:("name")
253end if
254#########################
255####weblocファイルを作る
256set ocidFromat to refMe's NSPropertyListXMLFormat_v1_0
257set listPlistEditDataArray to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFromat) options:0  |error| :(reference)
258set ocidPlistData to item 1 of listPlistEditDataArray
259set boolWritetoUrlArray to ocidPlistData's writeToURL:(ocidSaveFilePathURL) options:0  |error| :(reference)
260(*
261tell application "Finder"
262  make new internet location file to strURL at aliasSaveDirPathURL with properties {name:"" & strTITLE & "", creator type:"MACS", stationery:false, location:strURL}
263end tell
264*)
265#########################
266set strSaveUrlFileName to (strFileName & "." & strDateno & ".url") as text
267####URLファイルを作る
268set strShortCutFileString to ("[InternetShortcut]\r\nURL=" & strURL & "\r\n") as text
269set ocidUrlFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveUrlFileName)
270
271set ocidShortCutFileString to refMe's NSMutableString's alloc()'s initWithCapacity:0
272ocidShortCutFileString's setString:(strShortCutFileString)
273
274##保存
275set boolDone to ocidShortCutFileString's writeToURL:(ocidUrlFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
276
277#########################
278
279####保存先を開く
280tell application "Finder"
281  set aliasSaveFile to (file strSaveWeblocFileName of folder aliasSaveDirPathURL) as alias
282  set refNewWindow to make new Finder window
283  tell refNewWindow
284    set position to {10, 30}
285    set bounds to {10, 30, 720, 480}
286  end tell
287  set target of refNewWindow to aliasSaveDirPathURL
288  set selection to aliasSaveFile
289end tell
290
291#########################
292####バージョンで使う日付
293to doGetDateNo(strDateFormat)
294  ####日付情報の取得
295  set ocidDate to current application's NSDate's |date|()
296  ###日付のフォーマットを定義
297  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
298  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
299  ocidNSDateFormatter's setDateFormat:strDateFormat
300  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
301  set strDateAndTime to ocidDateAndTime as text
302  return strDateAndTime
303end doGetDateNo
304####################################
305###### %でコード
306####################################
307
308on doUrlDecode(argText)
309  ##テキスト
310  set ocidArgText to refMe's NSString's stringWithString:(argText)
311  ##デコード
312  set ocidArgTextEncoded to ocidArgText's stringByRemovingPercentEncoding
313  set strArgTextEncoded to ocidArgTextEncoded as text
314  return strArgTextEncoded
315end doUrlDecode
316
317
318####################################
319###### %エンコード
320####################################
321on doUrlEncode(argText)
322  ##テキスト
323  set ocidArgText to refMe's NSString's stringWithString:(argText)
324  ##キャラクタセットを指定
325  set ocidChrSet to refMe's NSCharacterSet's URLQueryAllowedCharacterSet
326  ##キャラクタセットで変換
327  set ocidArgTextEncoded to ocidArgText's stringByAddingPercentEncodingWithAllowedCharacters:(ocidChrSet)
328  ##テキスト形式に確定
329  set strTextToEncode to ocidArgTextEncoded as text
330  ###値を戻す
331  return strTextToEncode
332end doUrlEncode
333
334(*
335
336####################################
337###### %エンコード
338####################################
339on doUrlEncode(argText)
340  ##テキスト
341  set ocidArgText to refMe's NSString's stringWithString:(argText)
342  ##キャラクタセットを指定
343  set ocidChrSet to refMe's NSCharacterSet's URLQueryAllowedCharacterSet
344  ##キャラクタセットで変換
345  set ocidArgTextEncoded to ocidArgText's stringByAddingPercentEncodingWithAllowedCharacters:(ocidChrSet)
346  ######## 置換 %エンコードの追加処理
347  ###置換レコード
348  set recordPercentMap to {|+|:"%2B", |&|:"%26", |$|:"%24"} as record
349  set recordPercentMap to {|+|:"%2B", |$|:"%24"} as record
350  ##  set recordPercentMap to {|+|:"%2B", |=|:"%3D", |&|:"%26", |$|:"%24"} as record
351  ###ディクショナリにして
352  set ocidPercentMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordPercentMap)
353  ###キーの一覧を取り出します
354  set ocidAllKeys to ocidPercentMap's allKeys()
355  ###取り出したキー一覧を順番に処理
356  repeat with itemAllKey in ocidAllKeys
357    ##キーの値を取り出して
358    set ocidMapValue to (ocidPercentMap's valueForKey:(itemAllKey))
359    ##置換
360    set ocidEncodedText to (ocidArgTextEncoded's stringByReplacingOccurrencesOfString:(itemAllKey) withString:(ocidMapValue))
361    ##次の変換に備える
362    set ocidArgTextEncoded to ocidEncodedText
363  end repeat
364  ##テキスト形式に確定
365  set strTextToEncode to ocidEncodedText as text
366  ###値を戻す
367  return strTextToEncode
368end doUrlEncode
369
370*)
AppleScriptで生成しました

|

インターネット・ロケーションファイルまとめ(addPrinterファイル追記分)

macOS14からAddPrinter(プリンター追加)用のロケーションファイルがあることに気がついた

20240512043756854x394
ippとippsのみ対応です

202405120441101086x568




20240326060434642x414

inetloc インターネットロケーションファイルには
URL部分にデータが入っているケースがあった
202403260605031112x450

Base64でエンコードされているだけなので、画像でータの取り出しは比較的簡単
[inetloc] inetlocのURLがBASE64エンコードされたデータの場合の取り出し方(HTMLにしちゃう版)
https://quicktimer.cocolog-nifty.com/icefloe/2024/03/post-0a7314.html



以下変更無し
Screen-20230911-93240


ダウンロード - webloc.zip




AFP.afploc
AFPサーバーへのリンクファイル

[AfpLoc] afpサーバーへのリンクファイルを作る(afp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-af3be0.html
FILE.fileloc
ファイル・フォルダへのリンクファイル

[FileLoc] ファイルのリンクファイルを作る(file://)ファイル選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-99ee9e.html
[FileLoc] フォルダのリンクファイルを作る(file://)フォルダ選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-88b291.html
[FileLoc] ファイルやフォルダのリンクファイルを作る(file://)パス入力
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-384039.html
FTP.ftploc
FTPサーバーへのリンクファイル

[FtpLoc] FTPサーバーのFtpLocリンクファイルを作る(ftp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-557534.html
HTTP.webloc
WEBサーバーへのリンクファイル

[WebLoc]WebLocファイルを作る(Safari)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-026999.html
[WebLoc]WebLocファイルを作る(Chrome)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-b24690.html
[WebLoc]WebLocファイルを作る(Edge)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2f6c2c.html
MAIL.mailloc
メールアドレスリンク

[MailLoc] メールアドレスのmaillocファイルを作る(mailto)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-cc18f0.html
NEWS.newsloc
ニュース(Usenet)サーバーへのリンクファイル

[NewsLoc] Usenet newsサーバーのnewslocファイルを作る(Usenet)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-7a166f.html
SMB.inetloc
SMBサーバーへのリンクファイル

[inetloc] SMBサーバーへのリンクファイルを作る(SMB)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-9b0084.html
SSH.inetloc
SSHサーバーへのリンクファイル

[inetloc] SSHサーバーへのリンクinetlocファイルを作る(SSH)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2e9950.html
CalLoc.inetloc
カレンダーサーバーへのリンクファイル

[inetloc] カレンダーサーバーに対してのリンクファイルを作る(webcal)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-45c42b.html


WindowsのURLファイル(ショートカットファイル)
WindowのURLファイル(ショートカットファイル)を作る
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-749751.html
inetlocファイルをWindowsのURLファイルに変換する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-9c2964.html

|

インターネット・ロケーションファイルまとめ(inetlocファイル追記分)

20240326060434642x414

inetloc インターネットロケーションファイルには
URL部分にデータが入っているケースがあった
202403260605031112x450

Base64でエンコードされているだけなので、画像でータの取り出しは比較的簡単
[inetloc] inetlocのURLがBASE64エンコードされたデータの場合の取り出し方(HTMLにしちゃう版)
https://quicktimer.cocolog-nifty.com/icefloe/2024/03/post-0a7314.html



以下変更無し
Screen-20230911-93240


ダウンロード - webloc.zip




AFP.afploc
AFPサーバーへのリンクファイル

[AfpLoc] afpサーバーへのリンクファイルを作る(afp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-af3be0.html
FILE.fileloc
ファイル・フォルダへのリンクファイル

[FileLoc] ファイルのリンクファイルを作る(file://)ファイル選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-99ee9e.html
[FileLoc] フォルダのリンクファイルを作る(file://)フォルダ選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-88b291.html
[FileLoc] ファイルやフォルダのリンクファイルを作る(file://)パス入力
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-384039.html
FTP.ftploc
FTPサーバーへのリンクファイル

[FtpLoc] FTPサーバーのFtpLocリンクファイルを作る(ftp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-557534.html
HTTP.webloc
WEBサーバーへのリンクファイル

[WebLoc]WebLocファイルを作る(Safari)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-026999.html
[WebLoc]WebLocファイルを作る(Chrome)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-b24690.html
[WebLoc]WebLocファイルを作る(Edge)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2f6c2c.html
MAIL.mailloc
メールアドレスリンク

[MailLoc] メールアドレスのmaillocファイルを作る(mailto)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-cc18f0.html
NEWS.newsloc
ニュース(Usenet)サーバーへのリンクファイル

[NewsLoc] Usenet newsサーバーのnewslocファイルを作る(Usenet)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-7a166f.html
SMB.inetloc
SMBサーバーへのリンクファイル

[inetloc] SMBサーバーへのリンクファイルを作る(SMB)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-9b0084.html
SSH.inetloc
SSHサーバーへのリンクファイル

[inetloc] SSHサーバーへのリンクinetlocファイルを作る(SSH)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2e9950.html
CalLoc.inetloc
カレンダーサーバーへのリンクファイル

[inetloc] カレンダーサーバーに対してのリンクファイルを作る(webcal)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-45c42b.html


WindowsのURLファイル(ショートカットファイル)
WindowのURLファイル(ショートカットファイル)を作る
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-749751.html
inetlocファイルをWindowsのURLファイルに変換する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-9c2964.html

|

[inetloc] inetlocのURLがBASE64エンコードされたデータの場合の取り出し方(HTMLにしちゃう版)


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

#!/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 appFileManager to refMe's NSFileManager's defaultManager()

###################################
#####ファイル選択ダイアログ
###################################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
activate
  end tell
else
  tell current application
activate
  end tell
end if
####ダイアログを出す
set listUTI to {"com.apple.property-list", "com.apple.generic-internet-location"} as list
set aliasFilePath to (choose file with prompt "plistファイルを選んでください" default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
####入力ファイルパス
set strFilePath to POSIX path of aliasFilePath
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
set ocidPrefixName to ocidBaseFilePathURL's lastPathComponent()
###################################
##保存先ディレクトリの確保
###################################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidTempDirURL to appFileManager's temporaryDirectory()
#上書きできないようにUUIDで別名フォルダにする
set ocidUUID to refMe's NSUUID's alloc()'s init()
set ocidUUIDString to ocidUUID's UUIDString
set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:true
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
#アクセス権777=511を指定
ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
#保存ファイル名
set strFileName to ((ocidUUIDString as text) & ".html") as text
#保存先URL
set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:false


###################################
#####本処理
###################################
# DICTに読み込んで
set listResponse to refMe's NSDictionary's alloc()'s initWithContentsOfURL:(ocidFilePathURL) |error|:(reference)
set ocidReadData to (item 1 of listResponse)
#
set ocidURL64 to ocidReadData's objectForKey:("URL")

########################
##HTML生成開始
########################
##Header に渡すエレメント
set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div"))
set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
set strSetValue to ("InetLocのURLがBase64フォーマットの画像") as text
(ocidH3Element's setStringValue:(strSetValue))
(ocidSetHeaderElement's addChild:(ocidH3Element))
########################
#footerに渡すエレメント
set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div"))
set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/"))
(ocidAElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
(ocidAElement's addAttribute:(ocidAddNode))
set strSetValue to ("AppleScriptで生成しました") as text
(ocidAElement's setStringValue:(strSetValue))
(ocidSetFooterElement's addChild:(ocidAElement))
########################
#Articleに渡すエレメント
set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div"))
set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
set strSetValue to ("InetLocからの収集: ") as text
(ocidH3Element's setStringValue:(strSetValue))
(ocidSetArticleElement's addChild:(ocidH3Element))

########################
#テーブル部生成開始
set ocidTableElement to refMe's NSXMLElement's elementWithName:("table")
#####【caption】
set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption")
ocidCaptionElement's setStringValue:("InetLocから取得")
ocidTableElement's addChild:(ocidCaptionElement)
#####【colgroup】
set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup")
#タイトル部の数だけ繰り返し
set listColName to {"LineNO", "Value"}
repeat with itemColName in listColName
  #######【col】col生成
  set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(itemColName))
(ocidAddElement's addAttribute:(ocidAddNode))
(ocidColgroupElement's addChild:(ocidAddElement))
end repeat
#テーブルエレメントに追加
ocidTableElement's addChild:(ocidColgroupElement)
#######【thead】
set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead")
#TR
set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
set listColName to {"\", "Value"}
#タイトル部の数だけ繰り返し
repeat with itemColName in listColName
  #ここはTDではなくてTHを利用
  set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(itemColName))
(ocidAddElement's addAttribute:(ocidAddNode))
  #
  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:(itemColName))
(ocidAddElement's addAttribute:(ocidAddNode))
  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
(ocidAddElement's addAttribute:(ocidAddNode))
  #値を入れる
(ocidAddElement's setStringValue:(itemColName))
  #TH→TRにセット
(ocidTrElement's addChild:(ocidAddElement))
end repeat
#TRをTHEADにセット
ocidTheadElement's addChild:(ocidTrElement)
#THEADをテーブルにセット
ocidTableElement's addChild:(ocidTheadElement)
##################################
######【tbody】
set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody")
##############
#TRの開始
set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
#
set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:"))
(ocidThElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NameID"))
(ocidThElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
(ocidThElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("rowspan") stringValue:("2"))
(ocidThElement's addAttribute:(ocidAddNode))
(ocidThElement's setStringValue:("1"))
(ocidTrElement's addChild:(ocidThElement))
##################################

##################################
set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("videoId"))
(ocidTdElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("key"))
(ocidTdElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
(ocidTdElement's addAttribute:(ocidAddNode))
#######
set ocidImgElement to (refMe's NSXMLElement's elementWithName:("img"))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("src") stringValue:(ocidURL64))
(ocidImgElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("alt") stringValue:("base64image"))
(ocidImgElement's addAttribute:(ocidAddNode))
#
(ocidTdElement's addChild:(ocidImgElement))
(ocidTrElement's addChild:(ocidTdElement))
(ocidTbodyElement's addChild:(ocidTrElement))
#Tbodyをテーブルにセット
ocidTableElement's addChild:(ocidTbodyElement)

######【tfoot】 TRで
set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot")
set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")

#colspan指定して1行でセット
set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
(ocidThElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("2"))
(ocidThElement's addAttribute:(ocidAddNode))
set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
(ocidThElement's addAttribute:(ocidAddNode))
#
set strContents to ("URL内容です") as text
(ocidThElement's setStringValue:(strContents))
#THをTRにセットして
ocidTrElement's addChild:(ocidThElement)
#TRをTFOOTにセット
ocidTfootElement's addChild:(ocidTrElement)
#TFOOTをテーブルにセット
ocidTableElement's addChild:(ocidTfootElement)
ocidSetArticleElement's addChild:(ocidTableElement)

##############################
#HTMLにする
##############################
set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement})

#####保存
#読み取りやすい表示
set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)

set listDone to ocidXMLdata's writeToURL:(ocidSaveFilePathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference)

####ブラウザで開く
set aliasFilePath to (ocidSaveFilePathURL's absoluteURL()) as alias
tell application "Finder"
open location aliasFilePath
end tell

##############################
# 基本的なHTMLの構造
(*
doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
HTMLのBODY部
header
article
footerにそれぞれAddchildするデータをリストで渡す
戻り値はRootエレメントにセットされた
NSXMLDocumentを戻すので 保存すればOK
*)
##############################
to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
  #XML初期化
  set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)
  # DTD付与
  set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
ocidDTD's setName:("html")
ocidXMLDoc's setDTD:(ocidDTD)
  #
  set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
ocidRootElement's addAttribute:(ocidAddNode)
  #
  set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
  #
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
ocidAddElement's setStringValue:("RSS一覧")
ocidHeadElement's addChild:(ocidAddElement)
  # http-equiv
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
ocidAddElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
ocidAddElement's addAttribute:(ocidAddNode)
ocidHeadElement's addChild:(ocidAddElement)
  #
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type")
ocidAddElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css")
ocidAddElement's addAttribute:(ocidAddNode)
ocidHeadElement's addChild:(ocidAddElement)
  #
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type")
ocidAddElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript")
ocidAddElement's addAttribute:(ocidAddNode)
ocidHeadElement's addChild:(ocidAddElement)
  #
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
ocidAddElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720")
ocidAddElement's addAttribute:(ocidAddNode)
ocidHeadElement's addChild:(ocidAddElement)
  #
  set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
ocidAddElement's setStringValue:("body {margin: 10px;background-color: #FFFFFF;}img {max-width: 720px;}table {border-spacing: 0;caption-side: top;font-family: system-ui;}thead th {border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:first-of-type {border-start-start-radius: .5em}&:last-of-type {border-start-end-radius: .5em;border-inline-end-width: 1px}}tbody td {word-wrap: break-word;max-width: 720px;border-spacing: 0;border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:last-of-type {border-inline-end-width: 1px}}tbody th {border-spacing: 0;border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;}tbody tr:nth-of-type(odd) {background: #F2F2F2;}.kind_string {font-size: 0.75em;}.date_string {font-size: 0.5em;}tfoot th {border: solid 1px #666666;padding: .5ch 1ch;&:first-of-type {border-end-start-radius: .5em}&:last-of-type {border-end-end-radius: .5em;border-inline-end-width: 1px}}")
ocidHeadElement's addChild:(ocidAddElement)
ocidRootElement's addChild:(ocidHeadElement)
  #
  #ボディエレメント
  set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body")
  #ヘッダー
  set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")
ocidHeaderElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")
ocidHeaderElement's addAttribute:(ocidAddNode)
ocidHeaderElement's addChild:(argHeaderContents)
ocidBodyElement's addChild:(ocidHeaderElement)
  #アーティクル
  set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")
ocidArticleElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")
ocidArticleElement's addAttribute:(ocidAddNode)
ocidArticleElement's addChild:(argArticleContents)
ocidBodyElement's addChild:(ocidArticleElement)
  #フッター
  set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer")
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")
ocidFooterElement's addAttribute:(ocidAddNode)
  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")
ocidFooterElement's addAttribute:(ocidAddNode)
ocidFooterElement's addChild:(argFooterContents)
ocidBodyElement's addChild:(ocidFooterElement)
  
ocidRootElement's addChild:(ocidBodyElement)
ocidXMLDoc's setRootElement:(ocidRootElement)
return ocidXMLDoc
end doMakeRootElement

|

インターネット・ロケーションファイルまとめ

Screen-20230911-93240



ダウンロード - webloc.zip




AFP.afploc
AFPサーバーへのリンクファイル

[AfpLoc] afpサーバーへのリンクファイルを作る(afp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-af3be0.html
FILE.fileloc
ファイル・フォルダへのリンクファイル

[FileLoc] ファイルのリンクファイルを作る(file://)ファイル選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-99ee9e.html
[FileLoc] フォルダのリンクファイルを作る(file://)フォルダ選択
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-88b291.html
[FileLoc] ファイルやフォルダのリンクファイルを作る(file://)パス入力
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-384039.html
FTP.ftploc
FTPサーバーへのリンクファイル

[FtpLoc] FTPサーバーのFtpLocリンクファイルを作る(ftp://)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-557534.html
HTTP.webloc
WEBサーバーへのリンクファイル

[WebLoc]WebLocファイルを作る(Safari)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-026999.html
[WebLoc]WebLocファイルを作る(Chrome)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-b24690.html
[WebLoc]WebLocファイルを作る(Edge)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2f6c2c.html
MAIL.mailloc
メールアドレスリンク

[MailLoc] メールアドレスのmaillocファイルを作る(mailto)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-cc18f0.html
NEWS.newsloc
ニュース(Usenet)サーバーへのリンクファイル

[NewsLoc] Usenet newsサーバーのnewslocファイルを作る(Usenet)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-7a166f.html
SMB.inetloc
SMBサーバーへのリンクファイル

[inetloc] SMBサーバーへのリンクファイルを作る(SMB)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-9b0084.html
SSH.inetloc
SSHサーバーへのリンクファイル

[inetloc] SSHサーバーへのリンクinetlocファイルを作る(SSH)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-2e9950.html
CalLoc.inetloc
カレンダーサーバーへのリンクファイル

[inetloc] カレンダーサーバーに対してのリンクファイルを作る(webcal)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-45c42b.html


WindowsのURLファイル(ショートカットファイル)
WindowのURLファイル(ショートカットファイル)を作る
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-749751.html
inetlocファイルをWindowsのURLファイルに変換する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-9c2964.html

|

ファイルパスからFILELOCファイルを作成する

202504200530351_2560x1440

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

#!/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 "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
##デフォルトクリップボードから
set appPasteboard to refMe's NSPasteboard's generalPasteboard()
set ocidPastBoardTypeArray to appPasteboard's types()
set boolContainURL to ocidPastBoardTypeArray's containsObject:"public.file-url"
if boolContainURL is true then
  set ocidObjectArray to appPasteboard's readObjectsForClasses:({refMe's NSURL}) options:(missing value)
  set ocidObject to ocidObjectArray's firstObject()
  set strURL to ocidObject's |path|() as text
else
  set strURL to ("/some/path/file/or/dir") as text
end if
################################
######ダイアログ
################################
#####ダイアログを前面に
tell current application
  set strName to name as text
end tell
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
set aliasIconPath to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/BookmarkIcon.icns") as alias
try
  set strMes to ("ファイルパスを入力してください\n例:\n/some/path/file/or/dir\n~/Desktop") as text
  set recordResponse to (display dialog strMes with title "ファイルパスを入力してください" default answer strURL buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 20 without hidden answer)
on error
log "エラーしました"
return "エラーしました"
end try
if true is equal to (gave up of recordResponse) then
return "時間切れですやりなおしてください"
end if
if "OK" is equal to (button returned of recordResponse) then
  set strResponse to (text returned of recordResponse) as text
else
log "キャンセルしました"
return "キャンセルしました"
end if

if strResponse starts with "/" then
  set ocidFilePathStr to refMe's NSString's stringWithString:(strResponse)
else if strResponse starts with "~" then
  set ocidFilePathStr to refMe's NSString's stringWithString:(strResponse)
else
return "ファイルパス専用です"
end if
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath))
set strURL to ocidFilePathURL's absoluteString() as text
###ファイル名を取得して拡張子を取っておく
set ocidBaseNamePathURL to ocidFilePathURL's URLByDeletingPathExtension()
set strBaseFileName to (ocidBaseNamePathURL's lastPathComponent()) as text
###保存用のファイル名
set strSaveFileName to (strBaseFileName & ".fileloc") as text
###保存先はデスクトップ
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set ocidSaveFilePathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:(strSaveFileName)
###PLIST用のURLの値
set strURL to (ocidFilePathURL's absoluteString()) as text
##############################
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidPlistDict's setValue:(strURL) forKey:("URL")
###
set ocidFromat to refMe's NSPropertyListXMLFormat_v1_0
set listPlistEditDataArray to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFromat) options:0 |error|:(reference)
set ocidPlistData to item 1 of listPlistEditDataArray
###
set listDone to ocidPlistData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference)




|

より以前の記事一覧

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat 2024 Acrobat AddOn Acrobat Annotation Acrobat AppleScript Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat GentechAI Acrobat JS Acrobat JS Word Search Acrobat Maintenance Acrobat Manifest Acrobat Menu Acrobat Merge Acrobat Open Acrobat PDFPage Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat Print Acrobat Python Acrobat Reader Acrobat Reader Localized Acrobat Reference Acrobat Registered Products Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat URL List Mac Acrobat URL List Windows Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin ConfigCode Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin NetWork Admin Permission Admin Pkg Admin Power Management Admin Printer Admin Printer Basic Admin Printer Custompapers Admin SetUp Admin SMB Admin softwareupdate Admin Support Admin System Information Admin TCC Admin Tools Admin Umask Admin Users Admin Volumes Admin XProtect Adobe Adobe AUSST Adobe Bridge Adobe Documents Adobe FDKO Adobe Fonts Adobe Reference Adobe RemoteUpdateManager Adobe Sap Code AppKit Apple AppleScript AppleScript Duplicate AppleScript entire contents AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Video Applications AppStore Archive Archive Keka Attributes Automator BackUp Barcode Barcode Decode Barcode QR Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome Chromedriver CIImage CityCode CloudStorage Color Color NSColor Color NSColorList com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Desktop Position Device Diff Disk do shell script Dock Dock Launchpad DropBox Droplet eMail Encode % Encode Decode Encode HTML Entity Encode UTF8 Error EXIFData exiftool ffmpeg File File Name Finder Finder Window Firefox Folder FolderAction Font List FontCollections Fonts Fonts Asset_Font Fonts ATS Fonts Emoji Fonts Maintenance Fonts Morisawa Fonts Python Fonts Variable Foxit GIF github Guide HTML Icon Icon Assets.car Illustrator Image Events ImageOptim Input Dictionary iPhone iWork Javascript Jedit Ω Json Label Language Link locationd lsappinfo m3u8 Mail Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Microsoft Fonts Microsoft Office Microsoft Office Link Microsoft OneDrive Microsoft Teams Mouse Music Node Notes NSArray NSArray Sort NSAttributedString NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSGraphicsContext Crop NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMetadataItem NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSet NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSUbiquitous NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth PDF PDF Image2PDF PDF MakePDF PDF nUP PDF Pymupdf PDF Pypdf PDFContext PDFDisplayBox PDFImageRep PDFKit PDFKit Annotation PDFKit AnnotationWidget PDFKit DocumentPermissions PDFKit OCR PDFKit Outline PDFKit Start PDFPage PDFPage Rotation PDFView perl Photoshop PlistBuddy pluginkit plutil postalcode PostScript PowerShell prefPane Preview Python Python eyed3 Python pip QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver Script Editor Script Menu SF Symbols character id SF Symbols Entity Shortcuts Shortcuts Events sips Skype Slack Sound Spotlight sqlite StandardAdditions StationSearch Subtitles LRC Subtitles SRT Subtitles VTT Swift swiftDialog System Events System Settings TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom Weather webarchive webp Wifi Windows XML XML EPUB XML HTML XML LSSharedFileList XML LSSharedFileList sfl2 XML LSSharedFileList sfl3 XML objectsForXQuery XML OPML XML Plist XML Plist System Events XML RSS XML savedSearch XML SVG XML TTML XML webloc XML xmllint XML XMP YouTube Zero Padding zoom