Anime Xunlei

By Lin Yu Wei Last update Feb 27, 2009 — Installed 115 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           Anime Xunlei
// @namespace      http://summerwxy.blogspot.com/
// @include        http://images.anime.xunlei.com/book/segment/*
// ==/UserScript==

(function() {
  function strSort(len) {
    var ary = new Array();
    for (var i = 0; i <= len; i++) {
      ary.push(new String(i));
    }
    return ary.sort();
  }

  Array.prototype.strIndexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
      if (this[i] == val) {
        return i;
      }
    }
  }

  var init = function() {
    var len = unsafeWindow.maxPage;
    var sort = strSort(len);
    var page = unsafeWindow.page;
    var maxPage = unsafeWindow.maxPage;

    var previousPage = (sort[page] > 1) ? sort.strIndexOf(parseInt(sort[page]) - 1) : sort.strIndexOf(1);
    var nextPage = (sort[page] < maxPage) ? sort.strIndexOf(parseInt(sort[page]) + 1) : sort.strIndexOf(maxPage);
    
    var pattern = /\/book\/segment\/\d+\/(\d+)\.html/;
    unsafeWindow.preLink.search(pattern);
    var true_prev_segment_id = RegExp.$1;
    unsafeWindow.nextLink.search(pattern);
    var true_next_segment_id = RegExp.$1;
    window.location.href.search(pattern);
    var this_segment_id = prev_segment_id = next_segment_id = RegExp.$1;

    if (sort[page] == 1) { // 剛好 page == 1 == sort[1] 成立, 否則原本是有 bug 的
      var pp = unsafeWindow.previousPage;
      var sa = strSort(pp);
      previousPage = sa.strIndexOf(pp);
      prev_segment_id = true_prev_segment_id;
    }
    
    if (sort[page] == maxPage) {
      nextPage = 1;
      next_segment_id = true_next_segment_id;
    }
    
    // 0_o's Url
    var nextUrl = 'http://images.anime.xunlei.com/book/segment/';
    nextUrl += Math.ceil(next_segment_id / 1000) + '/';
    nextUrl += next_segment_id + '.html?page=';
    nextUrl += nextPage + '#photobox';
    var prevUrl = 'http://images.anime.xunlei.com/book/segment/';
    prevUrl += Math.ceil(prev_segment_id / 1000) + '/';
    prevUrl += prev_segment_id + '.html?page=';
    prevUrl += previousPage + '#photobox';

    var ta = document.getElementsByClassName('pageOPT')[0].getElementsByTagName('a');
    var ba = document.getElementsByClassName('pageOPB')[0].getElementsByTagName('a');
    var pp = document.getElementById('prev');
    var np = document.getElementById('next');
    pp.href = ta[0].href = ba[0].href = prevUrl;
    np.href = ta[1].href = ba[1].href = nextUrl;
    
    var span1 = document.getElementsByClassName('pageOPT')[0].getElementsByTagName('span')[0];
    span1.innerHTML = span1.innerHTML + ' (' + sort[page] + ')';
    var span2 = document.getElementsByClassName('pageOPB')[0].getElementsByTagName('span')[0];
    span2.innerHTML = span2.innerHTML + ' (' + sort[page] + ')';

    document.body.style.backgroundColor = '#333';
    // document.title = '';
  };

  var timer;

  function run() {
    if (timer) {
      window.clearTimeout(timer);
    }
    var w = unsafeWindow;
    if (w.previousPage == null || w.nextLink == null || w.preLink == null || w.maxPage == null || w.page == null || w.maxPage == null) {
      timer = window.setTimeout(run, 100);      
      return;
    }
    init();
  }

  run();
})();