honjarake blog

自分用にテキトーにまとめる

自分用 VectorDirectDLのリンクをファイルの直リンクに差し替えるやつ

変更元は
VectorDirectDL
二重にajaxでGETすることになる事と、テストを一個のページでしかしていない事に注意
重大なミス:複数バージョン存在するときの直リンクに不備有り 要修正

// ==UserScript==
// @name        VectorDirectDL
// @description Vectorのページにダウンロードボタンを追加する
// @version     2.0
// @namespace   phodra
// @include     http://www.vector.co.jp/soft/*
// @exsample    http://www.vector.co.jp/soft/dl/win95/util/se169348.html
// @exsample    http://www.vector.co.jp/soft/dl/winnt/util/se100730.html
// @original    https://greasyfork.org/ja/scripts/7501-vectordirectdl
// ==/UserScript==
/* add //↓ファイル直リンクに入れ替え ~ //↑ファイル直リンクに入れ替え */
(function () {
  // リンクを追加する関数
  var AppendLink = function (page)
  {
    var $page = $(page);
    // 挿入箇所
    $inspos = $('h1');
    // ダウンロードボタンと名前を取得
    $btns = $page.find('a.btn.download');
    $names = $page.find('td>strong.fn');
    if ($names.size() == $btns.size())
    {
      for (i = 0; i < $btns.size(); i++)
      {
        // ダウンローページヘのダイレクトリンクを作成
        var $link = $('<a class=\'downloadlink\'/>');
        $link.text($names.eq(i).text());
        $link.attr('href', $btns.eq(i).attr('href'));
        //↓ファイル直リンクに入れ替え
        $.ajax({
          type: 'GET',
          url: $btns.eq(i).attr('href'),
          success: function (data) {
            var $data = $(data);
            $elm = $data.find('#summary a');
            if ($elm.size() > 0)
            {
              //alert($elm[0]);
              $link.attr('href', $elm[0]);
            }
          }
        });
        //↑ファイル直リンクに入れ替え
        // ソフト名の下に挿入
        $inspos.after($link);
        $inspos.after(' ');
      }
    }
  };
  // ダウンロードタブのエレメント
  var $dltab = $('#v_step>.download');
  if ($dltab.size() > 0)
  {
    // ダウンロードタブページを取得
    $.ajax({
      type: 'GET',
      url: $dltab.attr('href'),
      beforeSend: function (xhr) {
        xhr.overrideMimeType('text/html; charset=Shift_JIS');
      },
      success: function (data) {
        AppendLink(data);
      }
    });
  } 
  else
  {
    // すでにダウンロードタブページの場合
    AppendLink(document);
  }
}) ();