AppleScriptCharacter

[AppleScripts]シングルクオトのエスケープ処理(phpを使う時のお約束)

シングルクオトのエスケープ処理

-----シングルクオトを含むテキストを定義
set theOriginalText to "<'/>" as text
log theOriginalText
-----シグルクオトの前に\\を付けてエスケープ
set theEscapeSingleQuotesText to my theReplace(theOriginalText, "'", "\\'") as text
log theEscapeSingleQuotesText
-----エンコード処理
set theUrlEncodeText to do shell script ("echo \"<?php print(urlencode('" & theEscapeSingleQuotesText & "'));?>\" | php")
log theUrlEncodeText
-----デコード処理
set theDecodeText to do shell script ("echo \"<?php print(urldecode('" & theUrlEncodeText & "'));?>\" | php")
log theDecodeText


--------------文字の置き換えサブルーチン
to theReplace(theText, theOrgStr, theNewStr)
set theOldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to theOrgStr
set theTmpList to every text item of theText
set AppleScript's text item delimiters to theNewStr
set theReplaceStr to theTmpList as text
set AppleScript's text item delimiters to theOldDelim
return theReplaceStr
end theReplace

「EscapeSingleQuotes.rtf」をダウンロード

「EscapeSingleQuotes.scpt.zip」をダウンロード

|

[AppleScript]YouTubeのBloggerボタンの代わり【Google Chrome専用-その2】

(*
YouTubeBloggerボタンのサムネイルイメージのリング版
YoutubeBloggerボタンがFlashのエンベットなので作りましたのよ
*)
--------------------------全面のURLを取得
tell application "Google Chrome"
activate
--------------URLの取得
set theURL to URL of active tab of window 1 as text
--------------タイトルの取得
set theTitle to title of active tab of window 1 as text
end tell
--------------アンカー等に使われる不要な文字をURLから削除
set theURL to my replace(theURL, "#!", "") as text
set theURL to my replace(theURL, "#", "") as text
set theURL to my replace(theURL, "!", "") as text
--------------VideoIDを取得
set theVidCom to "echo " & quoted form of theURL & "| awk -F \"v=\" '{print($2)}' |awk -F \"&\" '{print($1)}' " as text
set theVid to do shell script theVidCom as text
--------------設定項目:bloggerのポスト用のURL
set theBloggerUrl to "http://www.blogger.com/blog-this.g?"


-------ディレクトリ名用に日付と時間を取得
set nowTime to do shell script "date '+%Y%m%d%H%M%S'" as text
-------テンポラリ用のディレクトリを作ります
do shell script "mkdir -pv /tmp/Sandbox/" & nowTime
------------サムネイル用の画像サイズの判定用
try
do shell script "curl -f -o '/tmp/Sandbox/curl.jpg' 'http://i4.ytimg.com/vi/" & theVid & "/maxresdefault.jpg' > /tmp/Sandbox/curl.txt"
--1576x885--
-------エラーが無い=maxresdefault.jpgがある=エラーにならない場合はそのまま大きい画像をサムネイルに指定
set theImgUrl to "http://i4.ytimg.com/vi/" & theVid & "/maxresdefault.jpg"
-------エラーが発生した場合
on error theErrorMes number theErrorNumber
log theErrorMes
-------エラー番号404がエラーメッセージに含まれるか?を判定します
set theCurlResult to theErrorMes contains "eturned error: 404"
-------true404なので大きいサイズの画像maxresdefault.jpgが無かった事になりますので
log theCurlResult
if theCurlResult is true then
--360x480--
-------一回り小さいサイズの画像をサムネイルとして指定します。
set theImgUrl to "http://i4.ytimg.com/vi/" & theVid & "/hqdefault.jpg"
else
--180x320--
set theImgUrl to "http://i4.ytimg.com/vi/" & theVid & "/mqdefault.jpg"
--90x120--
--set theImgUrl to "http://i4.ytimg.com/vi/" & theVid & "/default.jpg"
end if
end try


--------------短縮URL
set theShortUrl to "http://youtu.be/" & theVid
--------------タグを用意 ここはお好みで エスケープの\\\\

set theHtmlLine1 to "<div style=\\\"display: block; margin: auto;\\\">"
set theHtmlLine2 to "<a rel=\\\"nofollow\\\" href=\\\"" & theShortUrl & "\\\" class=\\\"youtubelink\\\" title=\\\"" & theTitle & "\\\">"
set theHtmlLine3 to "<img src=\\\"" & theImgUrl & "\\\" border=\\\"0\\\" class=\\\"youtubelinkimg\\\" alt=\\\"" & theTitle & "\\\" /></a>"
set theHtmlLine4 to "</div>"

--------------HTMLタグを整形
set theHtmlLine to (theHtmlLine1 & theHtmlLine2 & theHtmlLine3 & theHtmlLine4) as text

--------------HTMLurlエンコード
set theUrlDecodeHtml to do shell script "php -r 'echo urlencode(\"" & theHtmlLine & "\");'"
--------------イメージのURLをエンコード
set theUrlDecodeImgUrl to do shell script "php -r 'echo urlencode(\"" & theImgUrl & "\");'"
--------------タイトルをエンコード
set theUrlDecodeTitle to do shell script "php -r 'echo urlencode(\"" & theTitle & "\");'"
--------------ダイアログ用に\\\になっているエスケープを\に戻す
set theHtmlLine to my replace(theHtmlLine, "\\", "") as text
--------------開く用のURLを整形
set theBloggerUrl to theBloggerUrl & "n=" & theUrlDecodeTitle & "&b=" & theUrlDecodeHtml & "&eurl=" & theUrlDecodeImgUrl
--------------クロームで開く
tell application "Google Chrome"
activate
make new window
tell window 1
tell active tab
open location theBloggerUrl
end tell
end tell
end tell
--------------その後でダイアログにHTML部分だけ表示する
tell application "Finder"
activate
display dialog "HTMLが出来ました" default answer the theHtmlLine with icon 1 with title "HTMLが出来ました" default button 1
end tell
--------------文字の置き換えサブルーチン
to replace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end replace

「YouTubeBloggerUrlGoogleChromev2.scpt.zip」をダウンロード

  
「YouTubeBloggerUrlGoogleChromev2.rtf」をダウンロード

少し直した
 
20130211_220732

サムネイルのサイズ判定を入れて
出来るだけ大きいサイズを使うようにした
エラー制御を使ったトリックになりますね。
 
 
20130211_221443

 
本当はGoogleApi+Jsonが今風なのでしょうが
APIキーが必要になるので
気が進まなかったのでCURLで画像をダウンロードする事で
大きいサイズの有無を確認する方法にした。

  


|

[AppleScript]ユニコードエスケープをデコードする【その2:pythonを使う】


Json等でよく使われるUnicode16進エスケープ形式の文字列を
テキストにデコードします。

その1はphpを使いました

その2ではpythonを使います

ながれはこんな感じ
\の処理が面倒でAppleScriptから使うのはちょっと無理があったかな
phpの方が良いですね

Website_image20130210_193115


--------ターミナルをあらかじめ起動しておく
tell application "Terminal"
end tell
(*
サンプルテキスト
君が好き feat.SAKURA,K2C SUNSHINE BAND - ミトカツユキ
*)
set theResultText to "\\u685c\\u821e\\u3044\\u6563\\u308b\\u5b63\\u7bc0\\u306b\\u3000\\u4e8c\\u4eba\\u64ae\\u3063\\u305f\\u5199\\u771f\",\"\\n\\u4eca\\u3082\\u5b9d\\u7269\\u3060\\u3088\\u3000\\u5e78\\u305b\\u3060\\u3063\\u305f\\u304b\\u3089\",\"\\n\",\"\\n\\u4e8c\\u4eba\\u3082\\u3046\\u4e00\\u5ea6\\u3000\\u7d20\\u76f4\\u306b\\u3000\\u4eca\\u3000\\u5bc4\\u308a\\u6dfb\\u3048\\u305f\\u306a\\u3089\",\"\\n\\u306d\\u3048\\u3082\\u3046\\u4e8c\\u5ea6\\u3068\\u96e2\\u308c\\u306a\\u3044\\u3000\\u4eca\\u3082\\u3042\\u306a\\u305f\\u304c\\u597d\\u304d\",\"\\n\",\"\\n\\u6b62\\u307e\\u306a\\u3044\\u96e8\\u306b\\u554f\\u3044\\u304b\\u3051\\u3066\\u3082\",\"\\n\\u3053\\u306e\\u8ddd\\u96e2\\u3000\\u5909\\u308f\\u3089\\u306a\\u3044\\u304b\\u3089\",\"\\n\\u541b\\u304c\\u597d\\u304d\\u3060\\u3068\\u8a00\\u3063\\u3066\",\"\\n\\u3042\\u306a\\u305f\\u306e\\u53e3\\u304b\\u3089\\u8a00\\u3063\\u3066\",\"\\n\\u3082\\u3046\\u8ff7\\u3044\\u306f\\u3057\\u306a\\u3044\\u304b\\u3089\",\"\\n\",\"\\n\\u4e8c\\u4eba\\u3082\\u3046\\u4e00\\u5ea6\\u3000\\u7d20\\u76f4\\u306b\\u3000\\u4eca\\u3000\\u8a31\\u3057\\u3042\\u3048\\u305f\\u306a\\u3089\",\"\\n\\u306f\\u3050\\u3089\\u304b\\u3055\\u305a\\u306b\\u3000\\u3046\\u3051\\u3068\\u3081\\u3066\\u3000\\u4eca\\u3082\\u3042\\u306a\\u305f\\u304c\\u597d\\u304d\",\"\\n\",\"\\n\\u4eca\\u3082\\u541b\\u304c\\u597d\\u304d" as text

--------ダイアログを表示
display dialog "変換するテキストをペースト" default answer theResultText
--------返り値を格納
set theResultText to text returned of the result as text
----------不要な文字を削除 ここはお好みで
set theResultText to my replace(theResultText, ",", "") as text
set theResultText to my replace(theResultText, "\"", "") as text
set theResultText to my replace(theResultText, "(", "") as text
set theResultText to my replace(theResultText, ")", "") as text
set theResultText to my replace(theResultText, ";", "") as text
set theResultText to my replace(theResultText, "[", "") as text
set theResultText to my replace(theResultText, "]", "") as text
set theResultText to my replace(theResultText, "draw", "") as text
set theResultText to my replace(theResultText, "\\n", " ") as text
set theResultText to my replace(theResultText, "\\r", " ") as text

------ディレクトリ名用に日付と時間を取得
set nowTime to do shell script "date '+%Y%m%d%H%M%S'" as text
------pythonスクリプトを使ってユーザーテンポラリーのディレクトリを取得します
-------スクリプトとキャッシュクリア用のディレクトリを作ります
do shell script "mkdir -pv /tmp/python/" & nowTime
--------スクリプト用のファイルを作成
do shell script "touch /tmp/python/" & nowTime & "/unicode_escape.py"
------結果用のファイルを作成
do shell script "touch /tmp/python/" & nowTime & "/unicode_escape.txt"
---------1行目を書き込み
do shell script "echo 'import sys' > /tmp/python/" & nowTime & "/unicode_escape.py "
---------2行目を書き込み
do shell script "echo 'import tempfile' >> /tmp/python/" & nowTime & "/unicode_escape.py "
---------3行目を書き込み
do shell script "echo 'print \"" & theResultText & "\".decode(\"unicode_escape\")' >> /tmp/python/" & nowTime & "/unicode_escape.py"
---------ターミナルに渡す用にパスを整形
set theScriptFile to ("/tmp/python/" & nowTime & "/unicode_escape.py") as text
---------ターミナルで実行する
tell application "Terminal"
do script "python " & theScriptFile
end tell

---------文字の置き換えサブルーチン
to replace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end replace

 

 
「unicode_escape.py.rtf」をダウンロード


「unicode_escape.py.scpt.zip」をダウンロード


|

[AppleScript]ユニコードエスケープをデコードする【その1:phpを使う】

Json等でよく使われるUnicode16進エスケープ形式の文字列を
テキストにデコードします。

こんな流れになります

Website_image20130210_185841


一旦
CharacterEntityへ変換してから
CharacterEntityをテキストに戻します。


(*
サンプルテキスト
君が好き feat.SAKURA,K2C SUNSHINE BAND - ミトカツユキ
*)

set theResultText to "\\u685c\\u821e\\u3044\\u6563\\u308b\\u5b63\\u7bc0\\u306b\\u3000\\u4e8c\\u4eba\\u64ae\\u3063\\u305f\\u5199\\u771f\",\"\\n\\u4eca\\u3082\\u5b9d\\u7269\\u3060\\u3088\\u3000\\u5e78\\u305b\\u3060\\u3063\\u305f\\u304b\\u3089\",\"\\n\",\"\\n\\u4e8c\\u4eba\\u3082\\u3046\\u4e00\\u5ea6\\u3000\\u7d20\\u76f4\\u306b\\u3000\\u4eca\\u3000\\u5bc4\\u308a\\u6dfb\\u3048\\u305f\\u306a\\u3089\",\"\\n\\u306d\\u3048\\u3082\\u3046\\u4e8c\\u5ea6\\u3068\\u96e2\\u308c\\u306a\\u3044\\u3000\\u4eca\\u3082\\u3042\\u306a\\u305f\\u304c\\u597d\\u304d\",\"\\n\",\"\\n\\u6b62\\u307e\\u306a\\u3044\\u96e8\\u306b\\u554f\\u3044\\u304b\\u3051\\u3066\\u3082\",\"\\n\\u3053\\u306e\\u8ddd\\u96e2\\u3000\\u5909\\u308f\\u3089\\u306a\\u3044\\u304b\\u3089\",\"\\n\\u541b\\u304c\\u597d\\u304d\\u3060\\u3068\\u8a00\\u3063\\u3066\",\"\\n\\u3042\\u306a\\u305f\\u306e\\u53e3\\u304b\\u3089\\u8a00\\u3063\\u3066\",\"\\n\\u3082\\u3046\\u8ff7\\u3044\\u306f\\u3057\\u306a\\u3044\\u304b\\u3089\",\"\\n\",\"\\n\\u4e8c\\u4eba\\u3082\\u3046\\u4e00\\u5ea6\\u3000\\u7d20\\u76f4\\u306b\\u3000\\u4eca\\u3000\\u8a31\\u3057\\u3042\\u3048\\u305f\\u306a\\u3089\",\"\\n\\u306f\\u3050\\u3089\\u304b\\u3055\\u305a\\u306b\\u3000\\u3046\\u3051\\u3068\\u3081\\u3066\\u3000\\u4eca\\u3082\\u3042\\u306a\\u305f\\u304c\\u597d\\u304d\",\"\\n\",\"\\n\\u4eca\\u3082\\u541b\\u304c\\u597d\\u304d" as text

--------ダイアログを表示
display dialog "変換するテキストをペースト" default answer theResultText
--------返り値を格納
set theResultText to text returned of the result as text
----------不要な文字を削除 ここはお好みで
set theResultText to my replace(theResultText, ",", "") as text
set theResultText to my replace(theResultText, "\"", "") as text
set theResultText to my replace(theResultText, "(", "") as text
set theResultText to my replace(theResultText, ")", "") as text
set theResultText to my replace(theResultText, ";", "") as text
set theResultText to my replace(theResultText, "[", "") as text
set theResultText to my replace(theResultText, "]", "") as text
set theResultText to my replace(theResultText, "draw", "") as text
set theResultText to my replace(theResultText, "callback", "") as text
----------改行を半角スペースに変換 ここもお好みで
set theResultText to my replace(theResultText, "\\n", "\\u20") as text
set theResultText to my replace(theResultText, "\\ud", "\\u20") as text
----------まずマルチバイトの4桁コードをCharacterEntityに変換
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{4})/\", \"&#x$1;\", \"" & theResultText & "\");'"
set theResultText to do shell script thePregReplace
----------その後でシングルバイトの2桁コードをCharacterEntityに変換
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{2})/\", \"&#x$1;\", \"" & theResultText & "\");'"
set theResultText to do shell script thePregReplace
----------デコード本処理
set theMbConvertEncoding to "php -r 'echo mb_convert_encoding(\"" & theResultText & "\", \"UTF-8\", \" HTML-ENTITIES \");'"
set theResultText to do shell script theMbConvertEncoding

----------出来上がりを戻す
display dialog "変換出来ました" default answer theResultText


---------文字の置き換えサブルーチン
to replace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end replace

「UniEsc2Text.rtf」をダウンロード
「UniEsc2Text.scpt.zip」をダウンロード


|

[file]テキストファイルの文字コードと改行コードを調べる

Website_image20120115_214720

続きを読む "[file]テキストファイルの文字コードと改行コードを調べる"

| | トラックバック (0)

[Unicode Escape]AppleScriptでユニコード・エスケープ処理

Website_image20110331_182702


日本語を
Website_image20110331_182439

JSONとかでよく使うユニコード・エスケープ形式に変換します。
Website_image20110331_182443

※改行は考慮していません。

続きを読む "[Unicode Escape]AppleScriptでユニコード・エスケープ処理"

| | トラックバック (0)

[awk]テキストファイルの整形【列の取り出し】

WindowsだとteraEditやMIFESも
縦方向に選択もコピーも出来るので便利ですが
私の場合JeditXな人は縦方向の列でコピー取れないので
何かと不便


エクセル等ならこうですが
Force4u00220930_94240

この形式で
B列を取り出すサンプルです。


Force4u00220930_100630


 


タブ区切りテキストの場合

Force4u00220930_94315




tell application "TextEdit"
make new document
set theResult to ""
set theResult to my ComRun(theResult)
make new text at front of paragraph 1 in text of front document with data theResult
end tell


on ComRun(theResult)
set FileAlias to choose file "変更するファイルを選択"
set FilePath to FileAlias as Unicode text
set PoFileParh to POSIX path of FilePath
set ComLine to "cat " & PoFileParh & "| awk '{print($2)}'"
return do shell script ComLine
end ComRun

こんな感じ


 


カンマ区切りの場合は

Force4u00220930_94310


tell application "TextEdit"
make new document
set theResult to ""
set theResult to my ComRun(theResult)
make new text at front of paragraph 1 in text of front document with data theResult
end tell


on ComRun(theResult)
set FileAlias to choose file "変更するファイルを選択"
set FilePath to FileAlias as Unicode text
set PoFileParh to POSIX path of FilePath
set ComLine to "cat " & PoFileParh & " | awk -F\",\" '{print $2}'"
return do shell script ComLine
end ComRun


テキストエディタに
B列だけを取り出せます。

この手法は
エラーログの解析や
価格表などから必要な列だけを取り出すのに使えます。

print($2)($4)

とすれば




tell application "TextEdit"
make new document
set theResult to ""
set theResult to my ComRun(theResult)
make new text at front of paragraph 1 in text of front document with data theResult
end tell


on ComRun(theResult)
set FileAlias to choose file "変更するファイルを選択"
set FilePath to FileAlias as Unicode text
set PoFileParh to POSIX path of FilePath
set ComLine to "cat " & PoFileParh & "| awk '{print($2)($4)}'"
return do shell script ComLine
end ComRun


B列とD列を取り出せます。

結構便利ですよ。


 


「awk_sample.zip」をダウンロード[Download]新しいウィンドで開きます

 

| | コメント (0)

その他のカテゴリー

Accessibility AccessibilityCheck AccessibilityForm AccessibilityInDesign AccessibilityPDF Acrobat Acrobat Action Acrobat Annotation Acrobat AppleScripts Acrobat Character Acrobat Layer Acrobat PDF Embed API Acrobat PDF Form Print Acrobat Plug-ins Acrobat Portfolios Acrobat Print AcrobatBarcode AcrobatDialog AcrobatForm AcrobatJS AcrobatMenu AcrobatPDF AcrobatStamp AcrobatYouTube AddressBook Adobe Adobe InDesign Adobe Photoshop AdobeAppleScript AdobeBridge AdobeIllustrator AdobeJSX aed Alfresco Android AnimationGif Apple Apple Support AppleScript AppleScriptBasics AppleScriptCharacter AppleScriptColor AppleScriptDroplet AppleScriptErrorNum AppleScriptFolder AppleScriptFontBook AppleScriptRename AppleScriptTools AppleSymbols Applications Barcode Barcode2D BarcodePostal BetterHTMLExport Book BOX Browser buzz Certificates CharacterEntity CharacterSets Colors Cool Site CSS Cutting DecoMail DecorationMail Design Desktop Diff DJ dmg DNS Documents Download DTP eBook Editer eMail Envelopes ExifTool Facebook FFmpeg File System Fonts FontsTool FontsWeb FOOD FormPrint ftp Gadget Gif Animation Google Google Chrome Enterprise HexEditor HTML info iPhoto ISBN ISO iTunes iWork iWorkNumbers iWorkNumbersCalendar iWorkNumbersTimecard iWorkPages JavaScript JeditX JeditX Regexp JeditXAppleScript JIS jquery Letterpress Library logo Mac Admin Mac Archiver Mac Browser Mac Browser Plugin Mac QuickLook Mac Setup Mac Spotlight Mac Video Map Memo Microsoft Teams Mobby mobileconfig Moto Movies Music Network Basic ntp OCR Office OfficePowerPoint OSX Paint Pantone Paper PDFlib Permission Photo Pictograms Print Public Python QuickLook QuickTime QuickTimeSetting QuickTimeSound Real Media ReName ResourceFork ruby Sample Screen ScreenCast Search Security SEO Sharing SLAResource Sound Spotlight Stamp SWF TCC.db Tutorial PSD TV Twitter Typography Unicode Utilities Video WEB APP WebFont Wedding Windows WindowsMedia XML XMP XPS YouTube YouTube Rss