// ==UserScript== // @name SC Display Languages // @version 0.1.2 // @description Displays movies audio and text languages in SC // @author risq // @match http*://secret-cinema.pw/torrents.php?id=* // @namespace https://greasyfork.org/users/157340 // @downloadURL https://update.greasyfork.icu/scripts/34609/SC%20Display%20Languages.user.js // @updateURL https://update.greasyfork.icu/scripts/34609/SC%20Display%20Languages.meta.js // ==/UserScript== var torrents = unsafeWindow.jQuery('.torrent_table .torrent_row').each(function (i, el) { var $el = unsafeWindow.jQuery(el); var languages = parseText($el.next().find('> td > blockquote').text()); var text = void 0; if (languages.audio.length) { text = 'Audio: ' + languages.audio.join(', ') + ''; if (languages.text.length) { text += ' / Text: ' + languages.text.join(', ') + ''; } } else if (languages.text.length) { text = 'Text: ' + languages.text.join(', ') + ''; } if (text) { $el.find('> td:first-child').append('
' + text + '
'); } }); function parseText(text) { var res = { audio: [], text: [] }; var dataFound = false; const bdinfoAudio = /AUDIO:\s*\n\n\s*Codec\s*Language.*\s*\n\s*(-|\s)*\s*\n((.|\n)*)\n\s*SUBTITLES/gi.exec(text); if (bdinfoAudio) { bdinfoAudio[2].split(/\n/g).forEach(function (info) { var audio = /(\s\s)+\s*(\w+)/gi.exec(info); if (audio && isResultValid(audio[2])) { dataFound = true; res.audio.push(audio[2]); } }); } const bdinfoText = /SUBTITLES:\s*\n\n\s*Codec\s*Language.*\s*\n\s*(-|\s)*\s*\n((.|\n)*)\n\s*FILES/gi.exec(text); if (bdinfoText) { bdinfoText[2].split(/\n/g).forEach(function (info) { var text = /(\s\s)+\s*(\w+)/gi.exec(info); if (text && isResultValid(text[2])) { dataFound = true; res.text.push(text[2]); } }); } if (dataFound) { return res; } var blocks = text.split(/\s*\n\s*\n\s*/g).forEach(function (block) { var title = block.split('\n')[0].toLowerCase(); if (title.indexOf('audio') > -1) { var audio = /language\s*:\s*(.*)/gi.exec(block); if (audio && isResultValid(audio[1])) { dataFound = true; res.audio.push(audio[1]); } } if (title.indexOf('text') > -1) { var text = /language\s*:\s*(.*)/gi.exec(block); if (text && isResultValid(text[1])) { dataFound = true; res.text.push(text[1]); } } }); if (dataFound) { return res; } var lines = text.split(/\n/g); lines.forEach(function (line) { var audio = /.*?(audio).*?:\s*(\w+)/gi.exec(line); if (audio && isResultValid(audio[2])) { res.audio.push(audio[2]); return; } var text = /.*?(subtitle|text).*?:\s*(\w+)/gi.exec(line); if (text && isResultValid(text[2])) { res.text.push(text[2]); return; } }); return res; } function isResultValid(result) { if (result.trim().length === 0) { return false; } var invalidWords = ['untouched', 'none', 'no']; var regexp = new RegExp('(\\b' + invalidWords.join('\\b|\\b') + '\\b)', 'gi'); return !regexp.test(result); }