TorrentGalaxy: Default values for uploads

Lets you set up defaults for the upload page on TGx

  1. // ==UserScript==
  2. // @name TorrentGalaxy: Default values for uploads
  3. // @namespace NotNeo
  4. // @version 0.2
  5. // @description Lets you set up defaults for the upload page on TGx
  6. // @author NotNeo
  7. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
  8. // @match https://torrentgalaxy.to/torrents-upload.php
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. var icons = {
  17. save: `<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="save" class="svg-inline--fa fa-save fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"></path></svg>`,
  18. saveAlt: `<svg style="color: green;" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="save" class="svg-inline--fa fa-save fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path></svg>`
  19. }
  20.  
  21. var catElm = $("form[name='upload'] td select[name='type']");
  22.  
  23. var torNameDefault = GM_getValue("torNameDefault", "");
  24. var torIMDBDefault = GM_getValue("torIMDBDefault", "");
  25. var torTypeDefault = GM_getValue("torTypeDefault", "0");
  26. var torLangDefault = GM_getValue("torLangDefault", "1");
  27. var torDescDefault = GM_getValue("torDescDefault", "");
  28.  
  29. var catDefaultsString = GM_getValue("catDefaultsString", "");
  30. var catDefaults;
  31. if(catDefaultsString == "")
  32. catDefaults = {};
  33. else
  34. catDefaults = JSON.parse(catDefaultsString);
  35.  
  36.  
  37. //insert styles
  38. {
  39. $("head").append(`<style>
  40. .DVfU_saveButtonContainer {
  41. display: inline-block;
  42. vertical-align: top;
  43. position: relative;
  44. margin: 0 0 0 5px;
  45. }
  46. .DVfU_button > svg {
  47. height: 15px;
  48. }
  49. .DVfU_button {
  50. position: absolute;
  51. top: 17px;
  52. }
  53. .DVfU_button:first-of-type {
  54. top: 1px;
  55. }
  56. .DVfU_button:hover,
  57. .DVfU_button:active {
  58. cursor: pointer;
  59. }
  60.  
  61.  
  62. form[name='upload'] td input:first-child:nth-last-child(2),
  63. form[name='upload'] td select:first-child:nth-last-child(2),
  64. form[name='upload'] td textarea:first-child:nth-last-child(2){
  65. width: calc(100% - 20px);
  66. display: inline-block;
  67. }
  68.  
  69. .DVfU_msg {
  70. display: none;
  71. position: fixed;
  72. bottom: 20px;
  73. right: 20px;
  74. background-color: #555;
  75. color: white;
  76. border-radius: 10px;
  77. font-size: 20px;
  78. padding: 15px 20px;
  79. }
  80. </style>`);
  81. }
  82.  
  83. //insert buttons, initialize listeners and load global defaults
  84. {
  85. //name
  86. $("form[name='upload'] td input[name='name']").val(torNameDefault).after(CreateSaveButtons("Name"));
  87. $("#DVfU_saveNameButton").click(function(){
  88. torNameDefault = $(this).parent().prev().val();
  89. GM_setValue("torNameDefault", torNameDefault);
  90. ShowMessage();
  91. });
  92. $("#DVfU_saveNameCatButton").click(function(){
  93. if(catDefaults["d"+catElm.val()] === undefined)
  94. catDefaults["d"+catElm.val()] = {};
  95.  
  96. catDefaults["d"+catElm.val()]["name"] = $(this).parent().prev().val();
  97. catDefaultsString = JSON.stringify(catDefaults);
  98. GM_setValue("catDefaultsString", catDefaultsString);
  99. ShowMessage();
  100. });
  101.  
  102. //imdb
  103. $("form[name='upload'] td input[name='imdb']").val(torIMDBDefault).after(CreateSaveButtons("IMDB"));
  104. $("#DVfU_saveIMDBButton").click(function(){
  105. torIMDBDefault = $(this).parent().prev().val();
  106. GM_setValue("torIMDBDefault", torIMDBDefault);
  107. ShowMessage();
  108. });
  109. $("#DVfU_saveIMDBCatButton").click(function(){
  110. if(catDefaults["d"+catElm.val()] === undefined)
  111. catDefaults["d"+catElm.val()] = {};
  112.  
  113. catDefaults["d"+catElm.val()]["imdb"] = $(this).parent().prev().val();
  114. catDefaultsString = JSON.stringify(catDefaults);
  115. GM_setValue("catDefaultsString", catDefaultsString);
  116. ShowMessage();
  117. });
  118.  
  119. //type/category
  120. catElm.val(torTypeDefault).after(CreateSaveButtons("Type", true));
  121. $("#DVfU_saveTypeButton").click(function(){
  122. torTypeDefault = $(this).parent().prev().val();
  123. GM_setValue("torTypeDefault", torTypeDefault);
  124. ShowMessage();
  125. });
  126.  
  127. //language
  128. $("form[name='upload'] td select[name='lang']").val(torLangDefault).after(CreateSaveButtons("Lang"));
  129. $("#DVfU_saveLangButton").click(function(){
  130. torLangDefault = $(this).parent().prev().val();
  131. GM_setValue("torLangDefault", torLangDefault);
  132. ShowMessage();
  133. });
  134. $("#DVfU_saveLangCatButton").click(function(){
  135. if(catDefaults["d"+catElm.val()] === undefined)
  136. catDefaults["d"+catElm.val()] = {};
  137.  
  138. catDefaults["d"+catElm.val()]["lang"] = $(this).parent().prev().val();
  139. catDefaultsString = JSON.stringify(catDefaults);
  140. GM_setValue("catDefaultsString", catDefaultsString);
  141. ShowMessage();
  142. });
  143.  
  144. //description
  145. $("form[name='upload'] td textarea[name='descr']").val(torDescDefault).after(CreateSaveButtons("Desc"));
  146. $("#DVfU_saveDescButton").click(function(){
  147. torDescDefault = $(this).parent().prev().val();
  148. GM_setValue("torDescDefault", torDescDefault);
  149. ShowMessage();
  150. });
  151. $("#DVfU_saveDescCatButton").click(function(){
  152. if(catDefaults["d"+catElm.val()] === undefined)
  153. catDefaults["d"+catElm.val()] = {};
  154.  
  155. catDefaults["d"+catElm.val()]["desc"] = $(this).parent().prev().val();
  156. catDefaultsString = JSON.stringify(catDefaults);
  157. GM_setValue("catDefaultsString", catDefaultsString);
  158. ShowMessage();
  159. });
  160.  
  161. LoadCategoryDefaults();
  162. catElm.change(LoadCategoryDefaults);
  163. }
  164.  
  165.  
  166.  
  167.  
  168. function CreateSaveButtons(id, noCatButton = false) {
  169. return `<div class="DVfU_saveButtonContainer"><a id="` + `DVfU_save` + id + `Button" class="DVfU_button" title="Save as the global default value">` + icons["save"] + `</a>` + `<a id="` + `DVfU_save` + id + (noCatButton ? `` : `CatButton" class="DVfU_button" title="Save as the default value for the current category">` + icons["saveAlt"] + `</a>`) + `</div>`;
  170. }
  171.  
  172. function LoadCategoryDefaults() {
  173. let catVal = catElm.val();
  174. if(catDefaults["d"+catVal] !== undefined) {
  175. if(catDefaults["d"+catVal]["name"] !== undefined && catDefaults["d"+catVal]["name"] !== "")
  176. $("form[name='upload'] td input[name='name']").val(catDefaults["d"+catVal]["name"]);
  177. if(catDefaults["d"+catVal]["imdb"] !== undefined && catDefaults["d"+catVal]["imdb"] !== "")
  178. $("form[name='upload'] td input[name='imdb']").val(catDefaults["d"+catVal]["imdb"]);
  179. if(catDefaults["d"+catVal]["lang"] !== undefined && catDefaults["d"+catVal]["lang"] !== "")
  180. $("form[name='upload'] td input[name='lang']").val(catDefaults["d"+catVal]["lang"]);
  181. if(catDefaults["d"+catVal]["desc"] !== undefined && catDefaults["d"+catVal]["desc"] !== "")
  182. $("form[name='upload'] td textarea[name='descr']").val(catDefaults["d"+catVal]["desc"]);
  183. }
  184. }
  185.  
  186. function ShowMessage(text = "Saved!") {
  187. let uniqueId = "DVfU_msg_"+new Date().getTime();
  188. $("body").after('<span id="'+uniqueId+'" class="DVfU_msg">'+text+'</span>');
  189. let msg = $("#"+uniqueId);
  190. msg.fadeIn(200, function(){
  191. setTimeout(function(){
  192. msg.fadeOut(200, function(){
  193. msg.remove();
  194. });
  195. }, 1500);
  196. });
  197. }
  198.  
  199. })();