Greasy Fork 支持简体中文。

Codemao inject

帮助bcm用户更便捷地对作品进行bcmc注入!

  1. // ==UserScript==
  2. // @name Codemao inject
  3. // @namespace https://greasyfork.org/zh-CN/users/1022906-dream%E4%B8%8D%E6%83%B3%E5%8F%98%E5%B1%91awa
  4. // @version 0.2
  5. // @description 帮助bcm用户更便捷地对作品进行bcmc注入!
  6. // @author Dream不想变屑awa
  7. // @match https://shequ.codemao.cn/*
  8. // @require https://cdn.jsdelivr.net/npm/lil-gui@0.16
  9. // @require https://cdn.jsdelivr.net/npm/three@0.142.0/examples/js/libs/stats.min.js
  10. // @require https://unpkg.com/mdui@1.0.2/dist/js/mdui.min.js
  11. // @license MIT
  12. // @grant GM_xmlhttpRequest
  13. // @compatible edge
  14. // @compatible chrome
  15. // @icon https://cdn-community.codemao.cn/community_frontend/asset/cute_4caf9.png
  16. // ==/UserScript==
  17. /*
  18. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  19. !!! 注:使用此脚本造成的损失作者不承担任何责任 !!!
  20. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  21. */
  22.  
  23. var stats = new Stats();
  24.  
  25. document.body.append(stats.domElement);
  26.  
  27. var getworkid = () => location.href.substring(location.href.lastIndexOf('/') + 1,location.href.length)
  28.  
  29. function geth (sth){
  30. return document.getElementsByClassName(sth)
  31. }
  32.  
  33. function log (messge){
  34. console.log(
  35. '%c %s %c %s',
  36. 'border: 1px solid white;border-radius: 3px 0 0 3px;padding: 2px 5px;color: white;background-color: green;',
  37. '[Codemao inject1.0]',
  38. 'border: 1px solid white;border-radius: 0 3px 3px 0;padding: 2px 5px;color: black;background-color: white;border-left: none;',
  39. messge
  40. );
  41. }
  42.  
  43. (function() {
  44. if(window.location.pathname.indexOf("/work/")+1) {
  45. log('a work page')
  46. var tk = confirm(`
  47. Codemao inject已加载完成,请认真阅读《Codemao inject服务条款》
  48. 1.此脚本是一个对bcm(编程猫社区的简称,下称bcm)作品进行快捷bcmc文件注入的工具,可以对一个作品注入自己制作的客户端,使用此脚本需要一定编程基础
  49. 2.使用此脚本造成的损失作者不承担任何责任
  50. 3.CiCodemao inject的简称,下称Ci)分为bcmc文件注入和再创作品id注入两种注入方式,此条款均生效
  51. 4.Ci作者将会在简介或更新中补充该条款,请每次使用本脚本时查看
  52. 5.Ci在法律允许范围内的最终解释权归Ci制作方所有
  53. 当您点击确定后,此条款将立即生效,您可以正常使用所有功能!
  54. 如果点击取消,Ci将不会为您提供服务(性能显示器除外),同时条款不会生效,您可以正常游玩作品
  55. `);
  56.  
  57. if (!tk) return;
  58. let player_url = 'https://player.codemao.cn/new/'
  59. if (geth('r-work-c-work_info--work_tool r-work-c-work_info--kitten3')[0] != null)player_url = 'https://player.codemao.cn/w/'
  60. else if(geth('r-work-c-work_info--work_tool r-work-c-work_info--kitten4')[0] != null)player_url = 'https://player.codemao.cn/new/'
  61. else if(geth('r-work-c-work_info--nemo')[0] != null)player_url = 'https://nemo.codemao.cn/w/'
  62. var under = {
  63. '未开发': () => {
  64. log('点击-未开发');
  65. alert('开发中,敬请期待');
  66. },
  67. '调试中': () => {
  68. log('点击-调试中');
  69. alert('功能正在调试,暂时无法使用,敬请谅解');
  70. },
  71. };
  72. var inject= {
  73. '文件': () =>{
  74. const input = document.createElement("input");
  75. input.type = "file";
  76. input.style.display = "none";
  77. input.addEventListener("change", () => {
  78. let reader = new FileReader();
  79. reader.addEventListener("load", () => {
  80. GM_xmlhttpRequest({
  81. method: "post",
  82. url: "https://static.box3.codemao.cn/block",
  83. data: reader.result,
  84. binary: true,
  85. onload({ response }) {
  86. const { Key, Size } = JSON.parse(response);
  87. log("上传成功! Hash: "+Key);
  88. const hash = Key;
  89. input.remove();
  90. alert('上传完成!请打开控制台查看注入链接')
  91. log('inject_url: '+player_url+getworkid()+'?bcmc_url=https://static.box3.codemao.cn/block/'+hash+'.json')
  92. },
  93. });
  94. });
  95. reader.readAsBinaryString(input.files[0]);
  96. });
  97.  
  98. input.click();
  99. },
  100. 'id': () =>{
  101. var wi = prompt('请输入挂端作品id','')
  102. }
  103. }
  104. window.gui = new lil.GUI({ title: '🧰Codemao inject工具箱' });
  105. window.gui.domElement.style.top = 'unset';
  106. window.gui.domElement.style.bottom = '0';
  107. window.gui.domElement.style.userSelect = 'none';
  108. var page1 = gui.addFolder('注入');
  109. page1.add(inject, '文件').name('上传bcm文件');
  110. page1.add(under, '未开发').name('作品id');
  111. var page2 = gui.addFolder('');
  112. page2.add(code, '').name('');
  113. }
  114. })();