JURIA @Wiki
open_url.ahk
最終更新:
juria
-
view
open_url.ahk α8 &bookmark_hatena(show=none)
[2008-01-05] 保存ファイル名を変更可能に。
[2007-12-17] DLファイルリスト記録は保存先フォルダを2階層目まで可能に。
[2007-01-06] DLしたファイルをパスリストに記録するように。
[2006-12-30] url を追加するお気に入りリストファイルを選択・作成可能に。
open_url.ahk α8 (2007.12.17 版)
juria(自分用メモ)
juria(自分用メモ)
仕様
■クリップボード内の文字列が url の場合
▼拡張子によって実行するコマンドを振り分ける(対応したメニューのみ表示)
拡張子と実行するコマンド・アプリは工夫次第で
▼ダウンロード
▼パスをお気に入りリストに追加する
付加するコメントとタグをダイアログで入力
▼ttp://、tp:// の補完(completionURL.ahk 下記参照)
■url を含む文字列から url を取り出し整形、クリップボードに戻す
●書式に従って記述されたお気に入り(リンク)リストの場合
▼クリップボードに戻した url を設定したアプリで開く
▼ダウンロード
▼ハイパーリンク・タグの生成
書式は、
タグ, URL, コメント [, 備考など] (カンマ区切り、タブ区切り)
各要素内の最初と最後のスペース、改行は取り除かれる。
AHKリファレンス, http://www.autohotkey.com/docs/commands.htm , 名前順 (タグ, コメント, URL [, 備考など] の場合は、適宜変更のこと)
%new_url1%→%new_url2%、%new_url2%→%new_url3%
●( オートアンカー でコピーした)ハイパーリンクの場合
<a href="http://www.autohotkey.com/">AutoHotKey</a>
▼リストファイルを選択して追加書き込み(ページ上、リンク上)
▼リストファイルを新規作成する場合は、インプットボックスにファイル名を
入力(拡張子も)
▼選択・作成するリストファイルは同一フォルダ内に置く(置かれる)。
▼書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み
「いいえ」でタグを追加するダイアログ表示 →
書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み
「いいえ」でキャンセル
■クリップボード内の文字列に url が含まれない場合
▼Google、Youtube、英辞郎で検索
■クリップボード内の文字列が url の場合
▼拡張子によって実行するコマンドを振り分ける(対応したメニューのみ表示)
拡張子と実行するコマンド・アプリは工夫次第で
▼ダウンロード
▼パスをお気に入りリストに追加する
付加するコメントとタグをダイアログで入力
▼ttp://、tp:// の補完(completionURL.ahk 下記参照)
■url を含む文字列から url を取り出し整形、クリップボードに戻す
●書式に従って記述されたお気に入り(リンク)リストの場合
▼クリップボードに戻した url を設定したアプリで開く
▼ダウンロード
▼ハイパーリンク・タグの生成
書式は、
タグ, URL, コメント [, 備考など] (カンマ区切り、タブ区切り)
各要素内の最初と最後のスペース、改行は取り除かれる。
AHKリファレンス, http://www.autohotkey.com/docs/commands.htm , 名前順 (タグ, コメント, URL [, 備考など] の場合は、適宜変更のこと)
%new_url1%→%new_url2%、%new_url2%→%new_url3%
●( オートアンカー でコピーした)ハイパーリンクの場合
<a href="http://www.autohotkey.com/">AutoHotKey</a>
▼リストファイルを選択して追加書き込み(ページ上、リンク上)
▼リストファイルを新規作成する場合は、インプットボックスにファイル名を
入力(拡張子も)
▼選択・作成するリストファイルは同一フォルダ内に置く(置かれる)。
▼書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み
「いいえ」でタグを追加するダイアログ表示 →
書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み
「いいえ」でキャンセル
■クリップボード内の文字列に url が含まれない場合
▼Google、Youtube、英辞郎で検索
◎ダウンロードには、
esDL
と curl.exe または wget.exe を使用。
Principia さんの ShuffleDown.ahk を参考に(感謝)サブディレクトリも選択可に。
( esDL では cgi? や php? で飛ばされる url をうまく取得できない場合に利用)
◎ダウンロード完了後、ダウンロードしたファイルをパスリストに記録する。
#Include DLarchiveList4.ahk
要 axpathlist.spi(パスリストを書庫にみせかけて展開する Susie プラグイン)
◎設定されていない拡張子の場合は、何も起きない。
◎あふとサクラエディタはローカルのパス用なので、誤爆に注意。
(正規表現で正しくローカルパスかどうか判定すべきだよな。きっと。)
Principia さんの ShuffleDown.ahk を参考に(感謝)サブディレクトリも選択可に。
( esDL では cgi? や php? で飛ばされる url をうまく取得できない場合に利用)
◎ダウンロード完了後、ダウンロードしたファイルをパスリストに記録する。
#Include DLarchiveList4.ahk
要 axpathlist.spi(パスリストを書庫にみせかけて展開する Susie プラグイン)
◎設定されていない拡張子の場合は、何も起きない。
◎あふとサクラエディタはローカルのパス用なので、誤爆に注意。
(正規表現で正しくローカルパスかどうか判定すべきだよな。きっと。)
#noTrayIcon ;#Include mbstring.ahk #EscapeChar ' ; シングルクオートにエスケープ文字を変更' app = D:\Application LDir = E:\etc ;リストファイルを置くフォルダ指定 ; クリップボードの文字列から url を取り出し、クリップボードに戻す path = tp:// StringGetPos, pos_prev, Clipboard, %path%, ; 欠落文字数分(ht,h,f)+ 1 以上 ; url の前にあるタグ・コメントが区切り文字を入れて2文字以下は想定外 if pos_prev > 2 If Clipboard not contains '<a href ; <は半角で { url = %Clipboard% ;StringSplit, OutputArray, InputVar [, Delimiters, OmitChars, FutureUse] ; Delimiters はスペース等を入れずに列挙 StringSplit, new_url, url, ',%A_Tab%, %A_Space% 'n'r { Menu, linklist, Add, MyWiki, MyWiki Menu, linklist, Add, HTML, HTML Menu, linklist, Add, Open, Open Menu, linklist, Show return } MyWiki: Clipboard = [[%new_url1%:new|%new_url2%]] return HTML: Clipboard = <a href="%new_url2%">%new_url1%</a> ; <>は半角で return Open: { Clipboard = %new_url2% ClipWait GoSub, OpenURL return } } ; HTMLハイパーリンクタグの場合 If Clipboard contains '<a href ; <は半角で { url = %Clipboard% StringSplit, new_url, url, ""<>,%A_Space%, list = %new_url5%, %new_url3% MsgBox, 4, , %list% 'n'nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, NO { InputBox, Tag, , タグ名を入力, , 110,124 If ErrorLevel <> 0 Return list = %new_url5%, %new_url3%, %Tag% MsgBox, 4, , %list% 'n'nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, No, Goto, NotAppend } } ; URL の前に、タグやコメントが無い場合 ; (ht,h,f)が欠落している場合を想定 If pos_prev <= 2 { Gosub, OpenURL Return } ; URL を開く OpenURL: ; クリップボード内の url の補完(ttp,tp -> http) #Include completionURL.ahk ; クリップボード内の url を各要素に分解する SplitPath,new_clip,file,dir,ext,name ;;; ポップアップで表示するメニューを作成 ; 書式:Menu,分類,コマンド,表示名,ラベル ; 共通メニュー Menu, DL, Add, &esDL + curl, Menu6 Menu, DL, Add, &Wget, Menu13, Menu, DL, Add, &NetTransport, Menu7 Menu, Main, Add, ダウンロード(&D), :DL Menu, Main, Add, 関連付け実行, Menu8 Menu, Main, Add, Menu, Main, Add, リストに追加, LinkList if new_clip not Contains %path% { Menu, Filer, Add, あふ右, AFX-R Menu, Filer, Add, あふ左, AFX-L Menu, Main, Add, あふ, :Filer } Menu, Main, Add, ; 検索メニュー Menu, Search, Add, Google, Menu10 Menu, Search, Add, YouTube, Menu11 Menu, Search, Add, 英辞郎, Menu14 ; 拡張子フィルターメニュー ; url を実行するアプリのメニューを拡張子で振り分け if (ext="htm" or ext="html" or ext="xml" or ext="php" or ext="cgi") GoSub, htmlMenu if (ext="txt" or ext="ini") { Menu, Main, Add, &sakura, Menu3 Menu, Main, Show } if (ext="gif" or ext="jpg" or ext="png" or ext="bmp") { Menu, Main, Add, &picture, Menu2 Menu, Main, Add, Lynx+i_View, Menu1 Menu, Main, Show } if (ext="mpg" or ext="avi" or ext="wmv") { Menu, Main, Add, video, Menu5 Menu, Main, Show } if (ext="mp3" or ext="ogg" or ext="wma" or ext="ra" or ext="pls" or ext="mid") { Menu, Main, Add, xmplay, Menu4 Menu, Main, Add, mplayer, Menu5 Menu, Main, Add, streamrip, Menu12 Menu, Main, Show } if (ext="zip" or ext="lzh" or ext="rar" or ext="exe" or ext="tar") { Menu, Main, Add, Wget, Menu6 Menu, Main, Add, NetTransport, Menu7 Menu, Main, Show } ; url が / や php?***,cgi?*** やアンカーで終わってるとき if new_clip not contains %name% GoSub, htmlMenu if new_clip contains http,ftp { StringRight, new_url, new_clip, 5 IfNotInString, new_url, '. GoSub, htmlMenu } ; 検索 if new_clip not contains %dir% { Menu, Search, Show } ; else ; { ; Menu, Main, Show ; } return htmlMenu: Menu, Sub, Add, lynx, Menu1 Menu, Sub, Add, luna, Menu2 Menu, Sub, Add, xyzzy_www, Menu9 Menu, Main, Add, Browser, :Sub Menu, Sub2, Add, sakura, Menu5 Menu, Main, Add, Editor, :Sub2 Menu, Main, Show, return ; ハイパーリンクをお気に入りリストに追加する LinkList: InputBox, Comment, , コメントを入力, , 110,124 If ErrorLevel <> 0 Return InputBox, Tag, , タグ名を入力, , 110,124 If ErrorLevel <> 0 Return list = %Comment%, %new_clip%, %Tag% MsgBox, 4, , %list% 'n'nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, NO, Goto, NotAppend NotAppend: MsgBox, リストに追加してません Return ;リストファイルを選択・新規作成して url を追加 Append: { ;Loop, FilePattern [, IncludeFolders?, Recurse?] Loop, %LDir%\* Menu, list, Add, &%A_LoopFileName%, ThisFile Menu, list, Add ;区切り線 Menu, list, Add, &MakeFile, MakeFile Menu, list, Show Return MakeFile: InputBox, NewFile, 新ファイル名, , , 130, 100 If ErrorLevel <> 0 Return ; Sleep, 500 FileAppend, %list%'r'n, %LDir%\%NewFile% Return ThisFile: StringTrimLeft, cFile, A_ThisMenuItem, 1 FileAppend, %list%'r'n, %LDir%\%cFile% Return } ; 各メニューに対応する動作(起動するアプリの)設定 AFX-R: Run, %app%\Filer\afx0165\AFX.EXE -s -r"%new_clip%" Return AFX-L: Run, %app%\Filer\afx0165\AFX.EXE -s -l"%new_clip%" Return Menu1: EnvSet, HOME, %app%\Internet\Lynx EnvSet, Temp, %app%\Internet\Lynx Run, D:\bin\ckw.exe -e %app%\Internet\Lynx\lynx.exe -image_links %new_clip% return Menu2: run, %app%\Internet\Lunascape3\Luna.exe %new_clip%, return Menu3: Run, %app%\Text_Editor\sakura\sakura.exe %new_clip%, return Menu4: ; run, %app%\AudioPlayers\foobar2000_09\foobar2000.exe /play %new_clip% Run, %app%\AudioPlayers\xmplay\xmplay.exe %new_clip% return Menu5: ; Run, %app%\VideoPlayers\MPlayer-KK\mplayer.exe %new_clip% Run, %app%\VideoPlayers\mplayer-athlon-svn-18928\mplayer.exe %new_clip%, return Menu6: Run, %app%\Launcher\esDL\esDL.exe /#e=curl %new_clip% Process, Wait, curl.exe If Errorlevel <> 0 Process, WaitClose, %ErrorLevel% Run, %A_ScriptDir%\DLarchiveList4.ahk return Menu7: Run, "%app%\Internet\NetTransport 2\NetTransport.exe" %new_clip%, return Menu8: Run, %new_clip% Return Menu9: Run, %app%\Text_Editor\xyzzy\xyzzycli.exe -f my-www-open-url %new_clip% Return Menu10: Run, http://www.google.com/search?hl=ja&lr=lang_ja&num=20&q=%new_clip% Return Menu11: Run, http://www.youtube.com/results?search_type=search_videos&search_sort= relevance&search_query=%new_clip% ; 表示の都合により改行、本当は一行 Return Menu12: ; 外部アプリの引数に % が必要な場合はエスケープする Run, %app%\streamripper-win32\streamripper.exe %new_clip% -a -d E:\Stream '%d -D '%d/'%1q-'%A-'%T -k 1 -A ; 表示の都合により改行、本当は一行 Menu13: Run, %A_ScriptDir%\DownLoad3.ahk Process, Wait, wget.exe If Errorlevel <> 0 Process, WaitClose, %ErrorLevel% Run, %A_ScriptDir%\DLarchiveList4.ahk Return Menu14: Run, http://www2.alc.co.jp/ejr/index.php?word_in=%new_clip%&word_in2= '%u304B'%u304D'%u304F'%u3051'%u3053&word_in3=PVawEWi72JXCKoa0Je ; 表示の都合により改行、本当は一行 Return ExitApp
completionURL.ahk
; クリップボード内の url の補完(ttp,tp -> http) new_clip = %Clipboard% StringLeft, new_url, new_clip, 3 IfInString, new_url, ttp { StringReplace, clipboad, clipboad, h%new_clip% new_clip = h%new_clip% } else IfInString, new_url, tp`: { StringReplace, clipboad, clipboad, ht%new_clip% new_clip = ht%new_clip% } else { new_clip = %new_clip% }
esDL のプログラム設定(@あれこれ-2006年11月参照)
esDL.ini
esDL.ini
[exec] ;wgetでダウンロード ;ファイル名をダイアログで入力 ;起動オプション /#e=wget D:\bin\wget.exe >-c --referer=%L -O "%P%$K" %L ;>-c --referer=%L -P %P %L ;curlでダウンロード ;ファイル名をダイアログで入力 ;起動オプション /#e=curl D:\Application\Internet\curl\curl.exe >-o "%P%$K" %L -v %end
DLarchiveList4.ahk
/* DL・保存先のパスを取得するAHK */ ; 保存先フォルダの親フォルダ pDir = D:\archives ; リスト編集用エディタ editor= path\to\sakura\sakura.exe ; クリップボード内の url の置換(ttp,tp -> http) #Include completionURL.ahk dURL = %new_clip% ; クリップボード内の url を各要素に分解する SplitPath,dURL,file,dir,ext,name,drive ; 保存先フォルダのリストアップ ;{ Loop, %pDir%\*, 2, 0 { Dir = %A_LoopFileName% Menu, Main, Add, &%Dir%, ThisDir } Menu, Main, Add Menu, Main, Add, (&E)リストを編集, Edit Menu, Main, Show Return ThisDir: ;保存先フォルダ名 ;左から一文字(ショートカットキー名)カット StringTrimLeft, cDir, A_ThisMenuItem, 1 Loop, %pDir%\%cDir%\*, 2, 0 if A_Index >= 1 { sDir = %A_LoopFileName% Menu, Sub, Add, &%sDir%, SubDir } Menu, Sub, Add Menu, Sub, Add, p/&%cDir%, CurentDir Menu, Sub, Show Return if A_Index = 0 Gosub, CurentDir Return CurentDir: InputBox, filename, 保存ファイル名, , , 180,100,,,,,%file% If ErrorLevel <> 0 ExitApp ;保存先フォルダ名 ;左から三文字(p/ とショートカットキー名)カット StringTrimLeft, cDir, A_ThisMenuItem, 3 FileAppend, %pDir%\%cDir%\%filename%`r`n, archiveList.sz7 Return SubDir: InputBox, filename, 保存ファイル名, , , 180,100,,,,,%file% If ErrorLevel <> 0 ExitApp StringTrimLeft, sDir, A_ThisMenuItem, 1 FileAppend, %pDir%\%cDir%\%sDir%\%filename%`r`n, archiveList.sz7 Return Edit: Run, %editor% E:\etc\archiveList.sz7 Return
DownLoad3.ahk
;;; DownLoad3.ahk (2008-01-05) ; クリップボード内の url をダウンロード ; Principia さんの ShuffleDown.ahk を参考に、保存先 にサブディレクトリも ; 指定可能に改造(1階層のみ)、保存ファイル名を変更できるようにした。 ; クリップボード内の url の置換(ttp,tp -> http) #Include completionURL.ahk pDir = D:\archives\ ;振り分けたいディレクトリ群がある親ディレクトリ wget = wget.exe ;wgetの絶対パス wget_opt = -c --referer=%new_clip% ;wgetのオプション(-O 以外) { Loop, %pDir%*, 2, 0 { Menu, DownDir, Add, &%A_LoopFileName%, ThisDir } Menu, DownDir, Add Menu, DownDir, Add, &MakeDir, MakeDir_Down Menu, DownDir, Show return } ThisDir: StringTrimLeft, cDir, A_ThisMenuItem, 1 Loop, %pDir%%cDir%\*, 2, 0 if A_Index >= 1 { sDir = %A_LoopFileName% Menu, Sub, Add, &%sDir%, SubDir } Menu, Sub, Add Menu, Sub, Add, p/&%cDir%, CurentDir Menu, Sub, Show Return if A_Index = 0 Gosub, CurentDir Return CurentDir: StringTrimLeft, cDir, A_ThisMenuItem, 3 Ren() Run, %wget% %wget_opt% -O %pDir%%cDir%\%filename% %new_clip% Return SubDir: StringTrimLeft, sDir, A_ThisMenuItem, 1 Ren() Run, %wget% %wget_opt% -O %pDir%%cDir%\%sDir%\%filename% %new_clip% Return MakeDir_Down: InputBox, NewDir, 新規ディレクトリ名, , , 180, 100 If ErrorLevel <> 0 Return FileCreateDir, %pDir%%NewDir% Ren() Run, %wget% %wget_opt% -O %pDir%%NewDir%\%filename% %new_clip% Return Ren() { global SplitPath, new_clip, Name, Dir, Ext, NameNoExt, Drive InputBox, filename, 保存ファイル名, , , 180,100,,,,,%Name% If ErrorLevel <> 0 ExitApp }