なげやりろぐ

フテイキコウシン

 ちょっと機能追加とか

おとといのエントリー、YouTubeダウンロードスクリプトに関連してちょこっとね。

ダウンロードボタンに比較して左側にあるフォーマット表示ボタンが無駄にデカイと思われたアナタ、それ正解♪
実はあとでファイルのあるページを普通にリンクさせようと思ってわざとボタン状にしたのでした(笑)
ダウンロードするまでもないけどとりあえず高画質の映像をブラウザ上で見たいという場合もありますよね? ・・・え? ナイって? ワタシはあるんですってば!

  • で、こうなるわけです♪



ただ、スクリプト使いじゃないワタシがそのあたりをモノにするまではちょっと時間とオベンキョが必要だったと言うわけでして・・・


てなわけでおとといのエントリーも踏まえつつ、以下のような改造を施しましたので興味のある方は試して見てください。
あんまり意味はないですけどStyle指定も変数に突っ込んでみました(笑)
画像でわかるように、ファイルが用意されていれば左側のボタンにリンクが貼られます。ターゲット指定はあえてしていませんのでブラウザのほうで挙動を指定してください。

YouTubeダウンローダーMod+α

念のためオリジナルスクリプトと画像ファイルへのリンクを。

ボタン画像はここから


おとといと同じところ、25行目付近から以下をこんな感じに書き換えます・

    var d = document;
    var h = '';
    var s = window.swfArgs;
    var imgs = [sleipnir.ScriptFullName.replace(sleipnir.ScriptName, '').replace(/\.js$/, ''), 'YouTubeDownloader\\'].join('');
    var css_1 = 'style="margin-bottom:5px;margin-right:10px;"';
    var css_2 = 'style="margin-bottom:5px;"';
    
    // Formats [number, description]
    var f = [
                [0, '<img '+css_1+' src="'+imgs+'FLV_Normal_ja.png" />'],
                [6, '<img '+css_1+' src="'+imgs+'FLV_High_ja.png" />'],
                [18,'<img '+css_1+' src="'+imgs+'MP4_iPod_ja.png" />'],
                [22,'<img '+css_1+' src="'+imgs+'MP4_High_ja.png" />']
            ];

で、さらに50行目あたりにある/*Checking*/以降を以下のようにします。

    /**
     * Checking
     */
    function checkURL(format) {
        var url = 'http://'+location.host+'/get_video'
            + '?video_id='+s['video_id']
            + '&t='+s['t']
            + (format[0]?'&fmt='+format[0]:'');
	var uri = 'http://'+location.host+'/watch\?\v\='+s['video_id'] + (format[0]?'&fmt='+format[0]:'');
        var opt = {
            method: 'GET',
            url: 'http://urlcheck.appspot.com/?url='+encodeURIComponent(url),
            onload: function(res){
                eval('json='+res.responseText+';');
                var status = json.requests[json.requests.length-1].status;
                var block  = d.getElementById('DL-YT-video-formats-'+format[0]);
                // Exists
                if ( status == 200 ) {
                    block.innerHTML = '<a href="' +uri+ '" title="' + uri +'">' +format[1]+ '</a><a href="'+url+'"><img '+css_2+' src="'+imgs+'Download_ja.png" /></a><br />';
                }
                // Not Exists
                else {
                    block.innerHTML = format[1]+'<img '+css_2+' src="'+imgs+'404_ja.png" /><br />';
                }
            }

あとは例によって上書き保存したのちSeahorseの再読み込みをすれば、YouTubeのページを新規に開くかリロードすれば適用されるはずです。



おととい貼った参考ページがサクッと削除されちゃってたので別なのを貼っておきます。なんかコチラもやばそうですけど・・・(笑)

YouTube - 中島美嘉 ORION(HD画質)

追記

リンクがあればボタン上にオンマウスでカーソルが変化するはずですが、念のためリンク先のURIツールチップで表示させるようにしてみました。(a要素のtitle属性です)
それとタイミングの問題だと思うのですが、たまにステータスチェック(http://urlcheck.appspot.com/)のレスポンスが遅れて画像が表示されずに[Checking]という文字列が現れてデザインが崩れる場合がありますけどこれは仕様ということで目をつぶってくださいませ・・・(汗)