Decklog To Tabletop simulator script

Download TCG image from Decklog and save it for use in Tabletop simulator

目前为 2021-01-16 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Decklog To Tabletop simulator script
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Download TCG image from Decklog and save it for use in Tabletop simulator
  6. // @author Royal
  7. // @match https://decklog.bushiroad.com/view/*
  8. // @grant GM_download
  9. // @grant GM_setClipboard
  10. // @grant GM_xmlhttpRequest
  11. // @require http://code.jquery.com/jquery-3.4.1.min.js
  12. // ==/UserScript==
  13.  
  14. var t1 = "";
  15. var t2 = "";
  16. var t3 = "";
  17. var t4 = "";
  18. var totalnum = "";
  19. var lua_base = "";
  20. var cardback = "https://www.tcgcard.tw/wp-content/uploads/2020/05/ws_cardback.png";
  21.  
  22. (function() {
  23. 'use strict';
  24.  
  25. // Your code here...
  26. $(document).ready(function() { //When document has loaded
  27.  
  28. setTimeout(function() {
  29. //Code to run After timeout elapses
  30. remove_landscape_card();
  31. setTimeout(function() {
  32. //Code to run After timeout elapses
  33. // test button
  34. //$(".deckview").append('<button type="button" id="Testbbt">Testbbt</button>');
  35. //$("#Testbbt").click (Testbbt);
  36. $(".deckview").append('<button type="button" id="DL_TTS_bt">Download As TTS card set</button>');
  37. $("#DL_TTS_bt").click (card_set);
  38. $(".deckview").append('<button type="button" id="getdata">Get Lua Code</button>');
  39. $("#getdata").click (getdata);
  40.  
  41. }, 2500);
  42. }, 1500); //Two seconds will elapse and Code will execute.
  43.  
  44.  
  45. });
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66. })();
  67.  
  68. function card_set (zEvent) {
  69. alert ("Downloading as TTS card set");
  70. $(".deckview").find(".card-item").each(function( index ) {
  71. console.log( index + ": " + $(this).find("img").attr("title"));
  72. var name = $(this).find("img").attr("title").replace('/', '-');
  73. var dl_url = $(this).find("img").attr("src");
  74. var num = "0"+$(this).find(".card-controller-inner").find(".num").first().text()+"x"
  75. var path = 'Decklog_TTS/'; // use a special folder for all the images
  76. var arg = {
  77. url: dl_url,
  78. name: path + num + " " + name + ".png"
  79. };
  80. var result= GM_download(arg);
  81. console.log(result);
  82. });
  83. //download card back
  84. var arg = {
  85. url: "https://www.tcgcard.tw/wp-content/uploads/2020/05/ws_cardback.png",
  86. name: "Decklog_TTS/00 back.png"
  87. };
  88. var result= GM_download(arg);
  89. console.log(result);
  90.  
  91.  
  92.  
  93.  
  94. }
  95.  
  96.  
  97.  
  98. function getdata (zEvent) {
  99. // alert ("Test");
  100. var urllist = [];
  101. var cardidlist = [];
  102. var cardtitlelist = [];
  103. var carddesc = [];
  104. totalnum = $(".graph-sum-value").text();
  105.  
  106. $(".deckview").find(".card-item").each(function( index ) {
  107. //console.log( index + ": " + $(this).find("img").attr("title"));
  108.  
  109. var num = $(this).find(".card-controller-inner").find(".num").first().text()
  110. var i;
  111. for (i = 0; i < num; i++) {
  112. var dl_url = $(this).find("img").attr("src");
  113. urllist.push(dl_url);
  114. var name = $(this).find("img").attr("title");
  115. var spname = name.split(" : ");
  116. cardidlist.push(spname[0]);
  117. cardtitlelist.push(spname[1]);
  118. }
  119.  
  120. });
  121. console.log("'"+urllist.join("','")+"'");
  122. console.log("'"+cardidlist.join("','")+"'");
  123. console.log("'"+cardtitlelist.join("','")+"'");
  124. console.log("'"+carddesc.join("','")+"'");
  125. GM_setClipboard ("'"+urllist.join("','")+"'");
  126. //GM_setClipboard ("'"+cardidlist.join("','")+"'");
  127. //GM_setClipboard ("'"+cardtitlelist.join("','")+"'");
  128. //GM_setClipboard ("'"+carddesc.join("','")+"'");
  129. t1 = "'"+urllist.join("','")+"'";
  130. t2 = "'"+cardidlist.join("','")+"'";
  131. t3 = "'"+cardtitlelist.join("','")+"'";
  132. //var t4 = "'"+carddesc.join("','")+"'";
  133. t4 = "";
  134. combine()
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142. }
  143.  
  144.  
  145. function remove_landscape_card (zEvent) {
  146. //alert ("Test");
  147. const img = new Image();
  148. $(".deckview").find(".card-item").each(function( index ) {
  149. //console.log( index + ": " + $(this).find("img"));
  150.  
  151. const img = new Image();
  152. //img.onload = function() {
  153. // console.log( index + ": " + this.width + 'x' + this.height);
  154. //}
  155.  
  156.  
  157. img.src = $(this).find("img").attr("src");
  158. console.log( index + ": " + img.width + 'x' + img.height);
  159. if (img.width > img.height){
  160. var name = $(this).find("img").attr("title");
  161. var spname = name.split(" : ");
  162. var yyturl1 = 'https://yuyu-tei.jp/game_ws/sell/sell_price.php?name='+spname[0];
  163.  
  164.  
  165. let getimg = new Promise((resolve,reject) => {
  166.  
  167. GM_xmlhttpRequest({
  168. method: 'GET',
  169. url: yyturl1 ,
  170. headers: {
  171. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  172. 'Accept': 'application/atom+xml,application/xml,text/xml',
  173. },
  174. onload: function(responseDetails) {
  175. //console.log('Request for Atom feed returned ' + responseDetails.status + ' ' + responseDetails.statusText + '\n\n' +'Feed data:\n' + responseDetails.responseText);
  176. //console.log(responseDetails.responseText)
  177. var yyturl2 = "https://yuyu-tei.jp"+$(responseDetails.responseText).find(".card_list_box").find("a").attr("href")
  178.  
  179. GM_xmlhttpRequest({
  180. method: 'GET',
  181. url: yyturl2 ,
  182. headers: {
  183. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  184. 'Accept': 'application/atom+xml,application/xml,text/xml',
  185. },
  186. onload: function(responseDetails) {
  187. //console.log('Request for Atom feed returned ' + responseDetails.status + ' ' + responseDetails.statusText + '\n\n' +'Feed data:\n' + responseDetails.responseText);
  188. //console.log(responseDetails.responseText)
  189. var data = responseDetails.responseText;
  190. var newimg = $(data).find(".image_box").find("img").first().attr("src");
  191. console.log(newimg);
  192. if (newimg != "" ){
  193. resolve(newimg);
  194. } else{
  195. reject("img no found");
  196. }
  197.  
  198.  
  199. }
  200. });
  201. }
  202. });
  203.  
  204.  
  205. });
  206.  
  207. getimg.then(successdata =>{
  208. console.log($(this).find("img").attr("src", successdata))
  209. });
  210. }
  211.  
  212. //alert(name);
  213. });
  214.  
  215. }
  216.  
  217.  
  218. function Testbbt (zEvent) {
  219. alert ("Test");
  220. combine();
  221.  
  222.  
  223. };
  224.  
  225. let get_lua_code = new Promise((resolve,reject) => {
  226.  
  227. GM_xmlhttpRequest({
  228. method: 'GET',
  229. url: "https://raw.githubusercontent.com/RoyalShooter/Decklog-To-Tabletop-simulator-script/main/lua_base" ,
  230. headers: {
  231. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  232. 'Accept': 'application/atom+xml,application/xml,text/xml',
  233. },
  234. onload: function(responseDetails) {
  235. //console.log('Request for Atom feed returned ' + responseDetails.status + ' ' + responseDetails.statusText + '\n\n' +'Feed data:\n' + responseDetails.responseText);
  236. //console.log(responseDetails.responseText)
  237. lua_base = responseDetails.responseText;
  238. //GM_setClipboard (lua_base);
  239. if (lua_base != "" ){
  240. resolve(lua_base);
  241. } else{
  242. reject("err on base lua");
  243. }
  244. }
  245. });
  246.  
  247. });
  248.  
  249. function combine(){
  250. get_lua_code.then(successdata =>{
  251. lua_base = successdata ;
  252. });
  253. var lua_top = "local testurl = {"+t1+"} \n local cardid = {"+t2+"} \n local cardname = {"+t3+"} \n local carddesc = {"+t4+"} \n local totalnum = '" +totalnum+"' \n local cardBack = '"+cardback+"'\n";
  254. var lua = lua_top + "\n" + lua_base
  255. GM_setClipboard (lua);
  256. alert("Lua code finished, please paste lua in the scripting tab");
  257.  
  258.  
  259.  
  260.  
  261.  
  262. };
  263.