TLsqueezer

groups all releases of same movies and serials into single expendable row

当前为 2018-02-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           TLsqueezer
// @author         paxamit 
// @description    groups all releases of same movies and serials into single expendable row
// @namespace      paxamit
// @include        http://*.torrentleech.org/torrents/*
// @include        https://*.torrentleech.org/torrents/*
// @grant          none
// @version        0.22
// @license        MIT
// ==/UserScript==

function contentEval(source) {
  var script = document.createElement('script')
  script.setAttribute("type", "application/javascript")
  script.textContent = '(' + source + ')();'

  document.body.appendChild(script)
  document.body.removeChild(script)
}

contentEval(function() {
  //                      movies     serials
  var title_regexp = /.*?([12]\d\d\d|S\d\dE\d\d)/i 

  function guess_title(title) { 
    var guessed = title_regexp.exec(title)
    return guessed ? guessed[0] : title 
  }

  function fix_odd_even() {
    var odd = true
    var count = 0
    var was_odd = false

    $('#torrents tr').each(function () {
      var tr = $(this)
      if (tr.hasClass('squeezer')) {
        count = parseInt(tr.attr('data-count')) + 1
        was_odd = odd
      }
      tr.removeClass('odd even').addClass(odd ? 'odd' : 'even')
      odd = --count == 0 ? !was_odd : !odd
    })
  }

  $(document).ready(function() {
    var elements = $('#torrents tr')

    elements.each(function() {
      var tr = $(this)
      this.guessed_title = guess_title(tr.find('.title a').text())
      this.guessed_title_lowercase = this.guessed_title.toLowerCase()
      this.seeds = parseInt(tr.find('.seeders').text())
      this.peers = parseInt(tr.find('.leechers').text())
    })

    for (var x = 0; x < elements.length; ++x) {
      var el = elements[x]
      if (el.processed) 
        continue

      var found_elements = ['#' + $(el).attr('id')]
      var peers = el.peers
      var seeds = el.seeds

      for (var y = elements.length - 1; y > x; y--) {
        var other = elements[y]
        if (!other.processed && el.guessed_title_lowercase == other.guessed_title_lowercase) {
          $(el).after(other);
          other.processed = true
          peers = Math.max(other.peers, peers)
          seeds = Math.max(other.seeds, seeds)
          found_elements.push('#' + $(other).attr('id'))
        }
      }
      if (found_elements.length > 1) {
        var row = '<tr class="squeezer" data-count="' + found_elements.length + '">' 
          + '<td class="category" style="font-size: 20px; line-height: 44px">' 
          + found_elements.length + '</td>' 
          + '<td class="name"><span class="title"><a href="javascript:">' 
          + el.guessed_title + '</a></span></td>'
          + '<td class="quickdownload"></td><td></td><td></td><td></td>' 
          + '<td class="seeders">' + seeds + '</td>' 
          + '<td class="leechers">' + peers + '</td><td></td></tr>'

        var new_row = $(el).before(row).prev()
        var ids = $(found_elements.join(','))

        ids.hide()

        if (ids.find('.newicon').length > 0) 
          new_row.find('.name').append('<span class="newicon"> (NEW)</span>')

        new_row.data('ids', ids)
        new_row.data('show', false)

        ids.find('.title a').each(function () {
          this.innerHTML = this.innerHTML.substr(el.guessed_title.length)
        })

        ids.find('.category img').css({position: 'relative', left: '50px' })
        ids.find('td.name').prepend('<div style="float: left; width: 55px; height: 20px"></div>')

        new_row.click(function () {
          var show = $(this).data('show')
          var ids  = $(this).data('ids')
          show ? $(ids).hide() : $(ids).show()
          $(this).data('show', !show)
        })

        fix_odd_even()
      }
    }
  })
})