Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.87 KB | None | 0 0
  1. // ==UserScript==
  2. // @name New Script
  3. // @namespace Violentmonkey Scripts
  4. // @match *://*/*
  5. // @grant none
  6. // ==/UserScript==
  7. //
  8.  
  9.  
  10. REGEX = {
  11. "ext": /\b(\.\w+)$\b/gi,
  12. "sgroup": /\b(d-z0n3)$\b/gi,
  13. "rgroup": /\b-([a-zA-Z0-9]+)$\b/gi,
  14. "year": /\b(19|20)\d{2}\b/g,
  15. "resolution":/\b(576p|720p|1080p|2160p|4k|uhd)\b/gi,
  16. "audio": /\b(imax|atmos|hifi|truehd|dts-hd.ma.5.1|dts-hd|dts)\b/gi,
  17. "audioChannel": /\b(7\.1|5\.1|stereo|mono|dd5.1)\b/gi,
  18. "audioCodec": /\b(flac2.0|flac)\b/gi,
  19. "remux": /\b(remux)\b/gi,
  20. "video": /\b(avc|vc1|hdr)\b/gi,
  21. "videoSource": /\b(HDRip|bluray|blu-ray|bdrip|hdrip|webrip|web-dl|webdl)\b/gi,
  22. "videoCodec": /\b(x265|x264|hevc)\b/gi,
  23. "subtitle": /\b(multisub|korsub)\b/gi,
  24. }
  25.  
  26.  
  27. bModal = false;
  28. bLoaded = false;
  29.  
  30.  
  31. function extractField(strn, type){
  32. var regex = REGEX[type];
  33. var aResult = [];
  34. do {
  35. match = regex.exec(strn);
  36. if (match) {
  37. aResult.push(match[0]);
  38. }
  39. } while (match);
  40. return aResult;
  41. }
  42.  
  43.  
  44. function generate(strn)
  45. {
  46. strn = normalizeWhitespace(strn);
  47. var strnOriginal = strn;
  48. var aField = {};
  49. for (var regkey in REGEX){
  50. var value = REGEX[regkey];
  51. var field = extractField(strn, regkey);
  52. for (var key in field)
  53. {
  54. var value = field[key];
  55. strn = strn.replace(value, '');
  56. }
  57. aField[regkey] = field;
  58. }
  59. strn = replacePattern(strn, [['.', ' ']]);
  60. var title = normalizeWhitespace(strn).trim();
  61. var a = aField;
  62. var final = `${title} (${a['year']})`;
  63. final = appendVideo(final, aField);
  64. final = appendAudio(final, aField);
  65. final = appendSubtitle(final, aField);
  66. final = appendReleaseGroups(final, aField);
  67. final = normalizeWhitespace(final);
  68. console.log(final)
  69. return final;
  70. }
  71.  
  72.  
  73. function appendReleaseGroups(strn, a)
  74. {
  75. var r = a['rgroup'][0];
  76. if (r) { r = r.replace('-', '') }
  77. else {r = ""};
  78. var s = a['sgroup'][0] ? a['sgroup'][0] : '';
  79. var t = r + s;
  80. if (t)
  81. {
  82. return strn + `(${t})`
  83. }
  84. return strn;
  85. }
  86.  
  87.  
  88. function appendSubtitle(strn, a)
  89. {
  90. var r = a['subtitle'];
  91. var t = r.concat().join(' ');
  92. if (t)
  93. {
  94. return strn + `(${t})`
  95. }
  96. return strn;
  97. }
  98.  
  99.  
  100. function appendAudio(strn, a)
  101. {
  102. var r = a['audio'];
  103. var v = a['audioChannel'];
  104. var c = a['audioCodec'];
  105. var t = r.concat(v, c).join(' ');
  106. if (t)
  107. {
  108. return strn + `(${t})`
  109. }
  110. return strn;
  111. }
  112.  
  113.  
  114. function appendVideo(strn, a)
  115. {
  116. var r = a['resolution'];
  117. var v = a['videoSource'];
  118. var c = a['videoCodec'];
  119. var m = a['remux'];
  120. var o = a['video'];
  121. var t = r.concat(v, c, m, o).join(' ');
  122. if (t)
  123. {
  124. return strn + `(${t})`
  125. }
  126. return strn;
  127. }
  128.  
  129.  
  130. function replacePattern(strn, aPattern)
  131. {
  132. for (var key in aPattern)
  133. {
  134. ptn = aPattern[key];
  135. while (strn.indexOf(ptn[0]) > -1)
  136. {
  137. strn = strn.replace(ptn[0], ptn[1]);
  138. }
  139. }
  140. return strn;
  141. }
  142.  
  143.  
  144. function normalizeWhitespace(strn)
  145. {
  146. return strn.replace(/\s+(?=\s)/g, '');
  147. }
  148.  
  149. function formatString(strn)
  150. {
  151. return generate(strn);
  152. }
  153.  
  154.  
  155. function makeForm()
  156. {
  157. var popup = document.createElement("DIALOG");
  158. popup.id = "popup";
  159. var content = document.createElement("div");
  160. content.id = "content";
  161. document.body.appendChild(popup);
  162. popup.appendChild(content);
  163. }
  164.  
  165.  
  166. var htmlTemplate = `
  167. <dialog id="popup">
  168. <div id="content">
  169. <table style="width:100%">
  170. <tr>
  171. <td align="center">
  172. <button id="btnla" type="button">Load</button>
  173. </td>
  174. </tr>
  175.  
  176. <tr>
  177. <td>
  178. <input id="in0" type="text" value="" size="70" readonly></input>
  179. </td>
  180. <td>
  181. <button id="btn0a" type="button">Format</button>
  182. </td>
  183. <td>
  184. <button id="btn0b" type="button">Copy</button>
  185. </td>
  186. </tr>
  187.  
  188. <tr>
  189. <td>
  190. <input id="in1" type="text" value="" size="70"></input>
  191. </td>
  192. <td>
  193. <button id="btn1a" type="button">Format</button>
  194. </td>
  195. <td>
  196. <button id="btn1b" type="button">Copy</button>
  197. </td>
  198. </tr>
  199.  
  200. </table>
  201.  
  202. </div>
  203. </dialog>
  204. `;
  205.  
  206.  
  207. function fillForm()
  208. {
  209. dict = [];
  210. try {
  211. var fn = document.getElementsByClassName("filename")[0];
  212. in0.value = fn.innerHTML;
  213. } catch {};
  214. try {
  215. var fn = document.getElementsByClassName("tranfer-filetype-txt")[2];
  216. in1.value = fn.innerHTML;
  217. } catch {};
  218. }
  219.  
  220.  
  221. function main()
  222. {
  223. document.body.innerHTML += htmlTemplate;
  224.  
  225. var dict = [];
  226. var btnla = document.getElementById("btnla");
  227. btnla.addEventListener("click", fillForm);
  228.  
  229. if (dict[0])
  230. {
  231. in0.value = dict[0].innerHTML;
  232. in1.value = dict[0].innerHTML;
  233. }
  234. btn0a.addEventListener("click", function(){
  235. in0.value = formatString(in0.value);
  236. });
  237. btn0b.addEventListener("click", function(){
  238. in0.select();
  239. document.execCommand("copy");
  240. });
  241. btn1a.addEventListener("click", function(){
  242. in1.value = formatString(in1.value);
  243. });
  244. btn1b.addEventListener('click', function(){
  245. in1.select();
  246. document.execCommand("copy");
  247. }, true);
  248. }
  249.  
  250.  
  251. function KeyPress(e)
  252. {
  253. var popup = document.getElementById("popup");
  254. var evtobj = window.event? event : e;
  255. if (evtobj.keyCode == 32 && evtobj.ctrlKey)
  256. {
  257. if (bModal)
  258. {
  259. popup.close();
  260. }
  261. else
  262. {
  263. popup.showModal();
  264. if (!bLoaded) fillForm();
  265. }
  266. bModal = !bModal;
  267. }
  268. }
  269. document.onkeydown = KeyPress;
  270.  
  271.  
  272. var bProduction = true;
  273. if (bProduction)
  274. {
  275. setTimeout(function(){
  276. main();
  277. }, 100);
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement