Steam愿望单工具

批量导入和导出愿望单

目前为 2020-04-21 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Steam愿望单工具
  3. // @namespace sourcewater
  4. // @version 0.1.1
  5. // @description 批量导入和导出愿望单
  6. // @author sourcewater
  7. // @match https://store.steampowered.com/wishlist/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. function importWL(){
  15. console.log("导入愿望单");
  16. let file=file_chooser.files[0];
  17. let freader=new FileReader();
  18. freader.readAsText(file);
  19. let appidlist;
  20. freader.onload=function(){
  21. appidlist=freader.result.split(",");
  22. if(appidlist.length==0) return;
  23. let i=0;
  24. let bdialog;
  25. function addWL(){
  26. AddToWishlist(appidlist[i],'add_to_wishlist_area', 'add_to_wishlist_area_success', 'add_to_wishlist_area_fail','1_5_9__407');
  27. if(i==(appidlist.length-1)){
  28. if(i!=0) bdialog.Dismiss();
  29. ShowAlertDialog("成功","已经全部添加至愿望单");
  30. return;
  31. }else{
  32. if(bdialog) bdialog.Dismiss();
  33. bdialog=ShowBlockingWaitDialog('正在添加...',(i+1)+'/'+appidlist.length);
  34. ++i;
  35. setTimeout(addWL,500);
  36. }
  37. }
  38. addWL();
  39. }
  40. }
  41.  
  42. function saveTxt(filename,data){
  43. let winObj=window.URL || window.webkitURL || window;
  44. let blob = new Blob([data],{type:'text/html'});
  45. let url=document.createElementNS("http://www.w3.org/1999/xhtml", "a");
  46. url.href=winObj.createObjectURL(blob);
  47. url.download = filename;
  48. let ev = document.createEvent("MouseEvents");
  49. ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  50. url.dispatchEvent(ev);
  51. }
  52.  
  53. function exportWL(){
  54. let wl=[];
  55. for(let i=0;i<g_rgWishlistData.length;++i){
  56. wl.push(g_rgWishlistData[i].appid);
  57. }
  58. let wln=wl.length;
  59. saveTxt("wishlist_total_"+wln+".txt",wl);
  60. }
  61.  
  62. function emptyWL(){
  63. console.log("清空愿望单");
  64. exportWL();
  65. let wl=[];
  66. for(let i=0;i<g_rgWishlistData.length;++i){
  67. wl.push(g_rgWishlistData[i].appid);
  68. }
  69. let i=0;
  70. let fi=0;
  71. let bdialog;
  72. function removeWL(){
  73. if(i==(wl.length-1)){
  74. if(i!=0) bdialog.Dismiss();
  75. if(fi==0){
  76. ShowAlertDialog("成功","已经清空了所有愿望单!");
  77. }else{
  78. ShowAlertDialog("成功","已经成功从愿望单移除了"+(i-fi)+"个,还有"+fi+"个失败了!");
  79. }
  80. return;
  81. }
  82. let appId=wl[i];
  83. jQuery.ajax({ type: "POST",url: g_strWishlistBaseURL + 'remove/',data: {'appid':appId, sessionid: g_sessionID},success:function(html){
  84. if(bdialog) bdialog.Dismiss();
  85. bdialog=ShowBlockingWaitDialog('正在移除...',(i+1-fi)+'/'+wl.length+'&nbsp;&nbsp;&nbsp;&nbsp;失败:'+fi);
  86. ++i;
  87. setTimeout(removeWL,500);
  88. }}).fail(function(html){
  89. ++fi;
  90. if(bdialog) bdialog.Dismiss();
  91. bdialog=ShowBlockingWaitDialog('正在移除...',(i+1-fi)+'/'+wl.length+'&nbsp;&nbsp;&nbsp;&nbsp;失败:'+fi);
  92. ++i;
  93. setTimeout(removeWL,500);
  94. }).always(function(){
  95. //
  96. });
  97. }
  98. ShowConfirmDialog("警告!", "你确定要清空愿望单?").done(function(){removeWL();});
  99. }
  100.  
  101. let wl_header=document.getElementsByClassName("wishlist_header")[0];
  102. let wl_tools=document.createElement("span");
  103. wl_tools.style="margin-left:100px;";
  104. let export_btn=document.createElement("span");
  105. let import_btn=document.createElement("span");
  106. let empty_btn=document.createElement("span");
  107. export_btn.onclick=exportWL;
  108. empty_btn.onclick=emptyWL;
  109. export_btn.className="pulldown btnv6_blue_hoverfade btn_small";
  110. import_btn.className="pulldown btnv6_blue_hoverfade btn_small";
  111. empty_btn.className="btn_small s_s_s_empty_btn";
  112. export_btn.innerHTML="<span>导出愿望单</span>";
  113. import_btn.innerHTML="<span>导入愿望单</span>";
  114. empty_btn.innerHTML="<span>清空愿望单</span>";
  115. import_btn.style="position: relative;overflow: hidden;vertical-align:top;";
  116. let file_chooser=document.createElement("input");
  117. file_chooser.type="file";
  118. file_chooser.style="position: absolute;right: 0;top: 0;opacity: 0;display: inline-block;cursor:pointer;";
  119. file_chooser.onchange=importWL;
  120. import_btn.firstElementChild.appendChild(file_chooser);
  121. wl_tools.appendChild(export_btn);
  122. wl_tools.appendChild(import_btn);
  123. wl_tools.appendChild(empty_btn);
  124. wl_header.appendChild(wl_tools);
  125. let empty_btn_style=document.createElement("style");
  126. empty_btn_style.innerHTML=`
  127. .s_s_s_empty_btn{
  128. border-radius: 2px;
  129. border: none;
  130. padding: 1px;
  131. display: inline-block;
  132. cursor: pointer;
  133. text-decoration: none !important;
  134. float: right;
  135. vertical-align: middle;
  136. margin: 0px;
  137. background-color:#9b1414;
  138. color:#ffffff;
  139. }
  140. .s_s_s_empty_btn:hover{
  141. color:#000000;
  142. background-color:#ee5555;
  143. }
  144. `;
  145. document.head.appendChild(empty_btn_style);
  146. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址