bangumi-wiki-editer-enhance

为维基编辑器增加新功能

  1. // ==UserScript==
  2. // @name bangumi-wiki-editer-enhance
  3. // @namespace rabbitohh
  4. // @version v1.1.1
  5. // @description 为维基编辑器增加新功能
  6. // @author rabbitohh
  7. // @match *://bgm.tv/subject/*/edit_detail
  8. // @match *://bangumi.tv/subject/*/edit_detail
  9. // @match *://chii.in/subject/*/edit_detail
  10. // @icon https://bgm.tv/img/favicon.ico
  11. // @license MIT
  12. // @grant none
  13. // @require https://code.jquery.com/jquery-3.6.0.min.js
  14. // ==/UserScript==
  15.  
  16. function convertToISBN13(isbn) {
  17. isbn = isbn.replace(/[^0-9Xx]/g, "");
  18. if (isbn.length === 13) {
  19. return isbn;
  20. } else if (isbn.length === 10) {
  21. const base = "978" + isbn.slice(0, -1);
  22. let sum = 0;
  23. for (let i = 0; i < base.length; i++) {
  24. sum += parseInt(base[i]) * (i % 2 === 0 ? 1 : 3);
  25. }
  26. const checkDigit = (10 - (sum % 10)) % 10;
  27. return base + checkDigit;
  28. } else {
  29. return 0;
  30. }
  31. }
  32.  
  33. function ISBNcvt(isbn) {
  34. var $ISBN = isbn.next().val();
  35. $ISBN = convertToISBN13($ISBN);
  36. if ($ISBN == 0) return '转换失败!';
  37. isbn.next().val($ISBN);
  38. return '转换成功!';
  39. }
  40.  
  41. function MultiAdd() {
  42. var $loc = $('#infobox_normal input.inputtext.id[value!=""]').last();
  43. var $cod = $(`
  44. <p><input class="inputtext id multiKey" tabindex="1024" value="版本:"><input class="inputtext prop multiVal" readonly="true" onclick="addSubProp(this);" value="点此增加输入框:"><input type="button" tabindex="-1" class="multiKeyAdd" onclick="addSubProp(this);"><br clear="all"></p>
  45. <input class="inputtext id multiSubKey" tabindex="1024" value="版本名"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  46. <input class="inputtext id multiSubKey" tabindex="1024" value="别名"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  47. <input class="inputtext id multiSubKey" tabindex="1024" value="出版社"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  48. <input class="inputtext id multiSubKey" tabindex="1024" value="插图"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  49. <input class="inputtext id multiSubKey" tabindex="1024" value="发售日"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  50. <input class="inputtext id multiSubKey" tabindex="1024" value="译者"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  51. <input class="inputtext id multiSubKey" tabindex="1024" value="页数"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  52. <input class="inputtext id multiSubKey" tabindex="1024" value="册数"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  53. <input class="inputtext id multiSubKey" tabindex="1024" value="价格"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  54. <input class="inputtext id multiSubKey" tabindex="1024" value="ISBN"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  55. <input class="inputtext id multiSubKey" tabindex="1024" value="书系"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  56. <input class="inputtext id multiSubKey" tabindex="1024" value="出品方"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  57. <input class="inputtext id multiSubKey" tabindex="1024" value="官方网站"><input class="inputtext prop multiSubVal" value=""><input type="button" tabindex="-1" class="multiKeyDel"><br clear="all">
  58. `);
  59. if($loc.hasClass('multiSubKey'))
  60. {
  61. $loc.next().next().next().after($cod);
  62. return "添加成功!";
  63. }
  64. else if($loc.val()=="其他")
  65. {
  66. $cod.insertBefore($loc);
  67. return "添加成功!";
  68. }
  69. else
  70. {
  71. $loc.next().next().after($cod);
  72. return "添加成功!";
  73. }
  74.  
  75. }
  76.  
  77. function work1() {
  78. var $isbn = $('[value="ISBN"]');
  79. if($isbn.hasClass("multiSubKey")) return;
  80. $isbn.next().siblings('button').remove();
  81. var $cvtbutton = $('<button><i class="fas fa-hammer"></i></button>');
  82. $cvtbutton.css({
  83. 'width': '16px',
  84. 'height': '16px',
  85. 'border-radius': '50%',
  86. 'border': 'solid 1.5px #7a8ca8',
  87. 'align-items': 'center',
  88. 'justify-content': 'center',
  89. 'background-color': '#afc9f0',
  90. 'font-size': '8px',
  91. 'color': 'white',
  92. 'box-shadow': '0 4px 8px rgba(0, 0, 0, 0.2)',
  93. 'padding': '0',
  94. 'cursor': 'pointer',
  95. });
  96.  
  97. $isbn.next().after($cvtbutton);
  98.  
  99. $cvtbutton.off('click').on('click', function (event) {
  100. event.preventDefault();
  101. alert(ISBNcvt($isbn));
  102. });
  103. }
  104.  
  105. function work2()
  106. {
  107. $('#infobox_wcode').prev('button').remove();
  108. var $mltbutton = $('<button>添加多版本</button>');
  109. $mltbutton.insertBefore('#infobox_wcode');
  110. $mltbutton.css({
  111. 'align-items': 'center',
  112. 'justify-content': 'center',
  113. 'background-color': 'rgba(255,255,255,.5)',
  114. 'font-size': '13px',
  115. 'padding': '0',
  116. 'cursor': 'pointer',
  117. 'margin': '5px',
  118. 'border': 'none',
  119. 'padding': '8px',
  120. 'border-radius': '5px',
  121. });
  122. $mltbutton.off('click').on('click', function (event) {
  123. event.preventDefault();
  124. alert(MultiAdd());
  125. });
  126. }
  127.  
  128.  
  129. (function () {
  130. var link = document.createElement('link');
  131. link.rel = 'stylesheet';
  132. link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css';
  133. document.head.appendChild(link);
  134.  
  135. const originalWCODEtoNormal = window.WCODEtoNormal;
  136. window.WCODEtoNormal = function()
  137. {
  138. originalWCODEtoNormal.apply(this, arguments);
  139. work1();
  140. work2();
  141. };
  142.  
  143. work1();
  144. work2();
  145. })();

QingJ © 2025

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