Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name New Script
- // @namespace Violentmonkey Scripts
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- //
- REGEX = {
- "ext": /\b(\.\w+)$\b/gi,
- "sgroup": /\b(d-z0n3)$\b/gi,
- "rgroup": /\b-([a-zA-Z0-9]+)$\b/gi,
- "year": /\b(19|20)\d{2}\b/g,
- "resolution":/\b(576p|720p|1080p|2160p|4k|uhd)\b/gi,
- "audio": /\b(imax|atmos|hifi|truehd|dts-hd.ma.5.1|dts-hd|dts)\b/gi,
- "audioChannel": /\b(7\.1|5\.1|stereo|mono|dd5.1)\b/gi,
- "audioCodec": /\b(flac2.0|flac)\b/gi,
- "remux": /\b(remux)\b/gi,
- "video": /\b(avc|vc1|hdr)\b/gi,
- "videoSource": /\b(HDRip|bluray|blu-ray|bdrip|hdrip|webrip|web-dl|webdl)\b/gi,
- "videoCodec": /\b(x265|x264|hevc)\b/gi,
- "subtitle": /\b(multisub|korsub)\b/gi,
- }
- bModal = false;
- bLoaded = false;
- function extractField(strn, type){
- var regex = REGEX[type];
- var aResult = [];
- do {
- match = regex.exec(strn);
- if (match) {
- aResult.push(match[0]);
- }
- } while (match);
- return aResult;
- }
- function generate(strn)
- {
- strn = normalizeWhitespace(strn);
- var strnOriginal = strn;
- var aField = {};
- for (var regkey in REGEX){
- var value = REGEX[regkey];
- var field = extractField(strn, regkey);
- for (var key in field)
- {
- var value = field[key];
- strn = strn.replace(value, '');
- }
- aField[regkey] = field;
- }
- strn = replacePattern(strn, [['.', ' ']]);
- var title = normalizeWhitespace(strn).trim();
- var a = aField;
- var final = `${title} (${a['year']})`;
- final = appendVideo(final, aField);
- final = appendAudio(final, aField);
- final = appendSubtitle(final, aField);
- final = appendReleaseGroups(final, aField);
- final = normalizeWhitespace(final);
- console.log(final)
- return final;
- }
- function appendReleaseGroups(strn, a)
- {
- var r = a['rgroup'][0];
- if (r) { r = r.replace('-', '') }
- else {r = ""};
- var s = a['sgroup'][0] ? a['sgroup'][0] : '';
- var t = r + s;
- if (t)
- {
- return strn + `(${t})`
- }
- return strn;
- }
- function appendSubtitle(strn, a)
- {
- var r = a['subtitle'];
- var t = r.concat().join(' ');
- if (t)
- {
- return strn + `(${t})`
- }
- return strn;
- }
- function appendAudio(strn, a)
- {
- var r = a['audio'];
- var v = a['audioChannel'];
- var c = a['audioCodec'];
- var t = r.concat(v, c).join(' ');
- if (t)
- {
- return strn + `(${t})`
- }
- return strn;
- }
- function appendVideo(strn, a)
- {
- var r = a['resolution'];
- var v = a['videoSource'];
- var c = a['videoCodec'];
- var m = a['remux'];
- var o = a['video'];
- var t = r.concat(v, c, m, o).join(' ');
- if (t)
- {
- return strn + `(${t})`
- }
- return strn;
- }
- function replacePattern(strn, aPattern)
- {
- for (var key in aPattern)
- {
- ptn = aPattern[key];
- while (strn.indexOf(ptn[0]) > -1)
- {
- strn = strn.replace(ptn[0], ptn[1]);
- }
- }
- return strn;
- }
- function normalizeWhitespace(strn)
- {
- return strn.replace(/\s+(?=\s)/g, '');
- }
- function formatString(strn)
- {
- return generate(strn);
- }
- function makeForm()
- {
- var popup = document.createElement("DIALOG");
- popup.id = "popup";
- var content = document.createElement("div");
- content.id = "content";
- document.body.appendChild(popup);
- popup.appendChild(content);
- }
- var htmlTemplate = `
- <dialog id="popup">
- <div id="content">
- <table style="width:100%">
- <tr>
- <td align="center">
- <button id="btnla" type="button">Load</button>
- </td>
- </tr>
- <tr>
- <td>
- <input id="in0" type="text" value="" size="70" readonly></input>
- </td>
- <td>
- <button id="btn0a" type="button">Format</button>
- </td>
- <td>
- <button id="btn0b" type="button">Copy</button>
- </td>
- </tr>
- <tr>
- <td>
- <input id="in1" type="text" value="" size="70"></input>
- </td>
- <td>
- <button id="btn1a" type="button">Format</button>
- </td>
- <td>
- <button id="btn1b" type="button">Copy</button>
- </td>
- </tr>
- </table>
- </div>
- </dialog>
- `;
- function fillForm()
- {
- dict = [];
- try {
- var fn = document.getElementsByClassName("filename")[0];
- in0.value = fn.innerHTML;
- } catch {};
- try {
- var fn = document.getElementsByClassName("tranfer-filetype-txt")[2];
- in1.value = fn.innerHTML;
- } catch {};
- }
- function main()
- {
- document.body.innerHTML += htmlTemplate;
- var dict = [];
- var btnla = document.getElementById("btnla");
- btnla.addEventListener("click", fillForm);
- if (dict[0])
- {
- in0.value = dict[0].innerHTML;
- in1.value = dict[0].innerHTML;
- }
- btn0a.addEventListener("click", function(){
- in0.value = formatString(in0.value);
- });
- btn0b.addEventListener("click", function(){
- in0.select();
- document.execCommand("copy");
- });
- btn1a.addEventListener("click", function(){
- in1.value = formatString(in1.value);
- });
- btn1b.addEventListener('click', function(){
- in1.select();
- document.execCommand("copy");
- }, true);
- }
- function KeyPress(e)
- {
- var popup = document.getElementById("popup");
- var evtobj = window.event? event : e;
- if (evtobj.keyCode == 32 && evtobj.ctrlKey)
- {
- if (bModal)
- {
- popup.close();
- }
- else
- {
- popup.showModal();
- if (!bLoaded) fillForm();
- }
- bModal = !bModal;
- }
- }
- document.onkeydown = KeyPress;
- var bProduction = true;
- if (bProduction)
- {
- setTimeout(function(){
- main();
- }, 100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement