getchu information copy

copy getchu item information

  1. // ==UserScript==
  2. // @name getchu information copy
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2
  5. // @description copy getchu item information
  6. // @author charles
  7. // @match *://www.getchu.com/soft.phtml?id=*
  8. // @icon https://www.google.com/s2/favicons?domain=getchu.com
  9. // @grant GM_addStyle
  10. // @grant GM_setClipboard
  11. // ==/UserScript==
  12.  
  13. GM_addStyle(
  14. `
  15. #copy_info_button , #copy_info_setting{
  16. margin-left : 20px;
  17. }
  18. #copy_info_input_setting{
  19. position:absolute;
  20. width : 500px;
  21. height:500px;
  22. margin-left:auto;
  23. margin-right:auto;
  24. margin-top:auto;
  25. margin-bottom:auto;
  26. top:0;
  27. bottom:0;
  28. right:0;
  29. left:0;
  30. z-index:10;
  31. background-color: blue;
  32. }
  33. #copy_info_setting_textarea{
  34. width = 100%;
  35. }
  36. `
  37. );
  38. const keywords = {
  39. title_keyword: "%title",
  40. brand_keyword: "%brand",
  41. price_keyword: "%price",
  42. release_date_keyword: "%release_date",
  43. media_keyword: "%media",
  44. genre_keyword: "%genre",
  45. JAN_Code_keyword: "%JAN_Code",
  46. original_keyword: "%original",
  47. scenario_keyword: "%scenario",
  48. category_keyword: "%category",
  49. product_number_keyword: "%product_number",
  50. special_keyword: "%special",
  51. sub_genre_keyword: "%sub_genre_keyword",
  52. };
  53.  
  54. const keywod_desc = [
  55. { keyword: keywords.title_keyword, desc: "titlename" },
  56. { keyword: keywords.brand_keyword, desc: "ブランド" },
  57. { keyword: keywords.price_keyword, desc: "定価" },
  58. { keyword: keywords.release_date_keyword, desc: "発売日" },
  59. { keyword: keywords.media_keyword, desc: "メディア" },
  60. { keyword: keywords.genre_keyword, desc: "ジャンル" },
  61. { keyword: keywords.JAN_Code_keyword, desc: "JANコード" },
  62. { keyword: keywords.original_keyword, desc: "原画" },
  63. { keyword: keywords.scenario_keyword, desc: "シナリオ" },
  64. { keyword: keywords.category_keyword, desc: "カテゴリ" },
  65. { keyword: keywords.product_number_keyword, desc: "品番" },
  66. { keyword: keywords.special_keyword, desc: "商品同梱特典" },
  67. { keyword: keywords.sub_genre_keyword, desc: "サブジャンル" },
  68. ];
  69. var search_cookie = function (cookie_name) {
  70. var cookies = document.cookie;
  71. console.log(cookies);
  72. var split_cookies = cookies.split(";");
  73. for (var i = 0; i < split_cookies.length; i++) {
  74. let split = split_cookies[i].split("=");
  75. if (split[0].trim() === cookie_name.trim()) {
  76. var result = "";
  77. for (var j = 1; j < split.length; j++) {
  78. result += split[j];
  79. }
  80. return result;
  81. }
  82. }
  83. return "";
  84. };
  85. var parse_list = () => {
  86. var table = document
  87. .querySelector("#soft_table")
  88. .getElementsByTagName("tbody")[0]
  89. .getElementsByTagName("tr")[1]
  90. .getElementsByTagName("th")[0]
  91. .getElementsByTagName("table")[0]
  92. .getElementsByTagName("tbody")[0]
  93. .getElementsByTagName("tr");
  94. var result = [];
  95. for (var i = 0; i < table.length; i++) {
  96. var td = table[i].getElementsByTagName("td");
  97. if (td.length < 2) {
  98. break;
  99. }
  100. var a_tag = td[1].getElementsByTagName("a");
  101. let value = td[1].innerText;
  102. if (a_tag.length >= 1) {
  103. value = a_tag[0].innerText;
  104. }
  105. var keyword = "%unknown";
  106. var td0_string = td[0].innerText.trim();
  107. td0_string = td0_string.split(":")[0].trim();
  108. for (var x = 0; x < keywod_desc.length; x++) {
  109. if (td0_string === keywod_desc[x].desc) {
  110. keyword = keywod_desc[x].keyword;
  111. break;
  112. }
  113. }
  114. // 轉換為 yyMMdd 的格式
  115. if(keyword === keywords.release_date_keyword)
  116. {
  117. let date = new Date(value);
  118. let year = date.getFullYear().toString().substring(2);
  119. let month = date.getMonth().toString().padStart(2, "0");
  120. let day = date.getDay().toString().padStart(2, "0");
  121. value = year + month + day;
  122. }
  123.  
  124. result.push({ keyword, value });
  125. }
  126. return result;
  127. };
  128. var copy_information = () => {
  129. let information_pattern = search_cookie("copy_info_setting");
  130. var title_name = document
  131. .querySelector("#soft-title")
  132. .firstChild.nodeValue.trim();
  133.  
  134. var list = parse_list();
  135. list.push({ keyword: keywords.title_keyword, value: title_name });
  136. for (var i = 0; i < list.length; i++) {
  137. information_pattern = information_pattern.replaceAll(
  138. list[i].keyword,
  139. list[i].value
  140. );
  141. }
  142. information_pattern = information_pattern.replaceAll("\\n", "\n");
  143. console.log(information_pattern);
  144. GM_setClipboard(information_pattern, "text");
  145. alert("copied");
  146. };
  147.  
  148. var get_copy_setting_default_string = () => {
  149. return (
  150. "title:%title\\nbrand:%brand\\nprice:%price\\nrelease_date:%release_date\\n" +
  151. "media:%media\\ngenre:%genre\\nJAN_Code:%JAN_Code\\noriginal:%original\\nscenario:%scenario\\n" +
  152. "category:%category;"
  153. );
  154. };
  155.  
  156. (function () {
  157. "use strict";
  158.  
  159. // Your code here...
  160. let title = document.querySelector("#soft-title");
  161. console.log(title);
  162. var button_copy = document.createElement("button");
  163. button_copy.setAttribute("id", "copy_info_button");
  164. button_copy.innerText = "copy";
  165. button_copy.addEventListener("click", (e) => {
  166. copy_information();
  167. });
  168. title.appendChild(button_copy);
  169. var button_setting = document.createElement("button");
  170. button_setting.setAttribute("id", "copy_info_setting");
  171. button_setting.innerText = "copy setting";
  172. button_setting.addEventListener("click", (e) => {
  173. if (document.querySelector("#copy_info_input_setting") !== null) {
  174. return;
  175. }
  176. let copy_setting_div = document.createElement("div");
  177. copy_setting_div.setAttribute("id", "copy_info_input_setting");
  178. let ul = document.createElement("ul");
  179.  
  180. for (var i = 0; i < keywod_desc.length; i++) {
  181. let li = document.createElement("li");
  182. li.innerText = keywod_desc[i].keyword + "=" + keywod_desc[i].desc;
  183. ul.appendChild(li);
  184. }
  185.  
  186. let text_area = document.createElement("textarea");
  187. text_area.setAttribute("id", "copy_info_setting_textarea");
  188. text_area.setAttribute("cols", "50");
  189. text_area.setAttribute("rows", "5");
  190. let cookie_result = search_cookie("copy_info_setting");
  191. text_area.innerHTML = cookie_result.replaceAll("\\n", "\n");
  192. copy_setting_div.appendChild(ul);
  193. copy_setting_div.appendChild(text_area);
  194. let button_bar = document.createElement("div");
  195. button_bar.style.width = "100%";
  196. let button_set = document.createElement("button");
  197. button_set.innerText = "Set";
  198. button_set.addEventListener("click", (e) => {
  199. document.cookie =
  200. "copy_info_setting=" + text_area.value.replaceAll("\n", "\\n");
  201. document.body.removeChild(copy_setting_div);
  202. console.log(text_area.value.replaceAll("\n", "\\n"));
  203. // copy_information();
  204. });
  205. let button_cancel = document.createElement("button");
  206. button_cancel.innerText = "Cancel";
  207. button_cancel.addEventListener("click", (e) => {
  208. document.body.removeChild(copy_setting_div);
  209. });
  210. let button_default = document.createElement("button");
  211. button_default.innerText = "default value";
  212. button_default.addEventListener("click", (e) => {
  213. text_area.value = "";
  214. text_area.innerHTML = get_copy_setting_default_string().replaceAll(
  215. "\\n",
  216. "\n"
  217. );
  218. });
  219. button_bar.appendChild(button_set);
  220. button_bar.appendChild(button_cancel);
  221. button_bar.appendChild(button_default);
  222. copy_setting_div.appendChild(button_bar);
  223. document.body.appendChild(copy_setting_div);
  224. });
  225. title.appendChild(button_setting);
  226. let cookie_result = search_cookie("copy_info_setting");
  227. if (cookie_result === "") {
  228. document.cookie = "copy_info_setting=" + get_copy_setting_default_string();
  229. }
  230. console.log(document.cookie);
  231. })();