Feelings deep inside

のんびりと音楽の話でも。。

HOMEスポンサー広告動画nico.msをもっと利用してみるスクリプト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このエントリーをはてなブックマークに追加    --:--:-- | スポンサー広告  | 
□ Comment

 [コメント記入欄はこちら]


□ コメントを投稿する

   

□ Trackback
この記事のトラックバックURL
□ この記事へのトラックバック

 全く需要がないのは分かっているけど、以下は自分用のメモw
以前にニコニコ動画の「nico.msをもっと利用してみるVBScript」というのを書いたけど、動画等のページ右下にある「Tweet」ボタンを押したら新しいウィンドウが開いてTwitter公式のt.coという短縮URLが生成されるんですよね。でも新しいウィンドウが開くのも好きじゃないしTwitterが重かったりしたらちょっと待つのも嫌だから…と思っていたら右クリックでURLをコピーすればいいんじゃない?ということでやってみた。
 最初にVBScriptでURLデコードをやってみようとしたけど、そういう機能はVBScriptにはなくていくつか代替のサンプル処理は見つけたけどニコニコ動画の「Tweet」ボタンで使われているUTF-8のURLデコードはうまくいかなかったので、WSHでVBScriptの他にもう一つあるJScript(マイクロソフトのJavaScriptみたいなもの)ではdecodeURIComponent()というそのまんまの処理があるのでJScriptもJavaScriptもろくに知らなかったけどそれを使ってみることに。でも、何度やってもエラーが出てどういうことだよ…と調べてみたらVBScriptのInputBoxは255バイトまでしか受け付けないからそれ以上は無視されてエラーが出てた。一旦ファイルに保存してからそれを…というのは簡単に実装できるけどそれじゃあ「Tweet」ボタンをクリックした方が早くて本末転倒だしw ってことで、クリップボードの内容を取得という当初からやりたかった方法を採用。とは言ってもVBScriptで直接クリップボードの内容を取得する処理はなくて調べたらInputBoxを使うものやIEを使うものやWordやExcelなどを利用するものがあったけど、InputBoxは文字数がオーバーするからダメだし、IEはセキュリティーが以前より厳しくなってダイアログが出るらしいから鬱陶しいし、最後のはサーバー用の自作パソコンにOfficeなんか入れているわけがないから使えない…ということで手詰まりだったから前回のでは見送ったんですよね。今はWindows 7 Ultimate (x64)なのでPowerShellがプリインストールされているからそれを利用することに。PowerShellが分かるならそれだけで完結するんですが、約4ヶ月前にVBScriptを勉強し始めたばかりでPowerShellについて全く分からないというか勉強していないので、「PowerShell.exeでクリップボードを標準出力に取り出す1行バッチファイル」というのをまるっと取り入れて問題解決…のはずがいつまで経ってもコマンドプロンプトが終わらないので調べたらまたしても同じサイトに「PowerShellのワンライナをWScript.ShellのExec()すると、終了待ちが解けない。」というのがあって今度こそ問題解決! じゃあついでにPowerShellでURLデコードも処理させればJScriptを使わなくてすむと思ったけど、PowerShellがよく分からなかったので断念(^_^;
 以下は、ソースコードと具体的な使用例です。


<job id="nico">
<script language="VBScript">
Option Explicit
Dim wsh,oExec,strClip
Set wsh = WScript.CreateObject("WScript.Shell")
Set oExec =wsh.Exec("%ComSpec% /c <nul PowerShell -command ""[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');$textbox=new-object System.Windows.Forms.TextBox;$textbox.Multiline=$true;$textbox.Paste();write-output $textbox.Text""")
strClip = Replace(oExec.StdOut.ReadAll,vbCrLf,"")
</script>

<script language="JavaScript">
var inputurl = decodeURIComponent(strClip);
</script>

<script language="VBScript">
If InStr(strClip,"http://") <> 0 Then
Else
	Call MsgBox("クリップボードにURLを含んだ文字列をコピーしてください",vbOkOnly + vbExclamation,"エラー")
	WScript.Quit
End If

Dim msg,regEx
Set regEx = New RegExp
If InStr(inputurl,"http://twitter.com/share") <> 0 Then '通常の表記に変換
	regEx.Pattern = ".+?counturl=(http://.+?nicovideo.jp/.+?/.+?\d+?)&text=(.+?)&url=(http://.+?)"
	url = regEx.Replace(inputurl,"$2 $3") '$1が通常のURL、$3がnico.msのURL
	regEx.Pattern = "http://twitter.com/.+?counturl=(.+)"
	inputurl = regEx.Replace(inputurl,"$1")
	If InStr(url,"#nicovideo") <> 0 Then 'ニコニコ動画の時間とハッシュタグなし
		regEx.Pattern = "(.*?)\(\d+?:\d\d\) #.+? (http://.+)"
		msg = regEx.Replace(url,"$1$2")
		success
	End If
	If InStr(url,"#nicoch") <> 0 Then 'ニコニコチャンネルの時間とハッシュタグなしでチャンネル用の短縮URL
		regEx.Pattern = "(.*?)\(\d+?:\d\d\) #nicoch #(.+?\d+?) http://.+"
		msg = regEx.Replace(url,"$1http://nico.ms/$2")
		success
	End If
Else
	url = inputurl
End If

If InStr(url,"nicovideo.jp/") <> 0 Then 'nico.msに変換
	regEx.Pattern = "(.*?)http://.+?nicovideo.jp/.+?/(.+?\d+?)(.*?)"
	msg = regEx.Replace(url,"$1http://nico.ms/$2$3")
	success
End If

If InStr(url,"#nicovideo") <> 0 Then 'ニコニコ動画の時間とハッシュタグなし
	regEx.Pattern = "(.*?)\(\d+?:\d\d\) #nicovideo #(.+?\d+?) http://t.co/.+"
	msg = regEx.Replace(url,"$1http://nico.ms/$2")
	success
End If

If InStr(url,"#nico") <> 0 Then 't.coからnico.msに変換
	regEx.Pattern = "(.*?)#nico(.+?) #(.+?\d+?) http://t.co/.+"
	msg = regEx.Replace(url,"$1http://nico.ms/$3 #nico$2 #$3")
	success
End If

If InStr(url,"http://www.youtube") <> 0 Then 'youtu.beに変換
	If InStr(url,"&") <> 0 Then
		msg = Left(url,InStr(url,"&")-1)
	Else
		msg = url
	End If
	regEx.Pattern = "(.*?)http://www.youtube.com/watch\?v=(.+?)"
	msg = regEx.Replace(msg,"$1http://youtu.be/$2")
	success
End If


Sub success
	msg = InputBox(inputurl & vbCrLf & vbCrLf & "から以下のように変換しました","URL短縮",msg)
	WScript.Quit
End Sub

Call MsgBox(inputurl & vbCrLf & vbCrLf & "は変換できませんでした",vbOkOnly + vbExclamation,"エラー")
</script>
</job>

 上記のソースコードを適当はファイル名で拡張子は「.wsf」として保存。ニコニコ動画や生放送とかで「Tweet」ボタンを右クリックしてリンクのURLをコピーすると、例えば

http://twitter.com/share?_=1299243389308&count=none&counturl=http%3A%2F%2Fwww.nicovideo.jp%2Fwatch%2F1298894129&text=%E3%81%A8%E3%81%82%E3%82%8B%E9%AD%94%E8%A1%93%E3%81%AE%E7%A6%81%E6%9B%B8%E7%9B%AE%E9%8C%B2%E2%85%A1%20%E7%AC%AC20%E8%A9%B1%E3%80%8C%E7%8C%9F%E7%8A%AC%E9%83%A8%E9%9A%8A%EF%BC%88%E3%83%8F%E3%82%A6%E3%83%B3%E3%83%89%E3%83%89%E3%83%83%E3%82%B0%EF%BC%89%E3%80%8D%20(23%3A40)%20%23nicoch%20%23so13737463&url=http%3A%2F%2Fnico.ms%2F1298894129

というようなものがクリップボードにコピーされる。この状態で先ほど保存したファイルをダブルクリックして開くと

とある魔術の禁書目録Ⅱ 第20話「猟犬部隊(ハウンドドッグ)」 http://nico.ms/so13737463

と変換されるはず。もちろんPowerShellを利用しているので古いOSだとプリインストールされていないみたいだから事前にインストールしておく必要があります。「Tweet」ボタン以外の処理は以前と同じなので、前の記事を参考にしてください。

このエントリーをはてなブックマークに追加    02:23:49 | 動画  | Trackback (0)  | Comment (0)  | 
□ Comment

 [コメント記入欄はこちら]


□ コメントを投稿する

   

□ Trackback
この記事のトラックバックURL
□ この記事へのトラックバック
Base template by Sun&Moon.  
Copyright © 2005-2017 Feelings deep inside. All Rights Reserved. Powered by FC2 BLOG.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。