TLsqueezer

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

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

Um dieses Skript zu installieren, müssen Sie eine Erweiterung wie Tampermonkey oder Violentmonkey installieren.

Um dieses Skript zu installieren, müssen Sie eine Erweiterung wie Tampermonkey oder Violentmonkey installieren.

Um dieses Skript zu installieren, müssen Sie eine Erweiterung wie Tampermonkey oder Userscripts installieren.

Um dieses Skript zu installieren, müssen Sie eine Erweiterung wie Tampermonkey installieren.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

Um dieses Design zu installieren, müssen Sie eine Erweiterung wie Stylus installieren.

Um dieses Design zu installieren, müssen Sie eine Erweiterung wie Stylus installieren.

Um dieses Design zu installieren, müssen Sie eine Erweiterung wie Stylus installieren.

Um diesen Stil zu installieren, müssen Sie eine Erweiterung für den Benutzerstil Verwaltung installieren.

Um diesen Stil zu installieren, müssen Sie eine Erweiterung für den Benutzerstil Verwaltung installieren.

Um diesen Stil zu installieren, müssen Sie eine Erweiterung für den Benutzerstil Verwaltung installieren.

(Ich habe bereits einen Benutzerstil Verwaltung, ich möchte ihn installieren!)

// ==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()
      }
    }
  })
})