Sleazy Fork is available in English.

自动下载DLsite商品界面图片

提取Id,title以及下载url,来下载相关文件,需要修改油猴脚本设置里面的下载模式为api模式,否则无法生成文件夹

  1. // ==UserScript==
  2. // @name 自动下载DLsite商品界面图片
  3. // @license MIT
  4. // @namespace http://tampermonkey.net/
  5. // @version 0.8
  6. // @description 提取Id,title以及下载url,来下载相关文件,需要修改油猴脚本设置里面的下载模式为api模式,否则无法生成文件夹
  7. // @author yuewuliuying
  8. // @match https://www.dlsite.com/maniax/work/*
  9. // @grant GM_download
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 根据URL获取文件名
  16. function getFileNameFromUrl(url) {
  17. var urlParts = url.split('/');
  18. return urlParts[urlParts.length - 1];
  19. }
  20.  
  21. //自定义下载函数
  22. function downloadImages(Id, Title, srcArray) {
  23.  
  24. // 创建文件夹名称
  25. var folderName = "[" + Id + "]" + Title;
  26.  
  27. // 循环下载每个URL中的文件
  28. srcArray.forEach(function(src, index) {
  29. //下载路径的凭借
  30. const filePath = folderName + "/" + getFileNameFromUrl(src);
  31. // 使用GM_download函数下载文件
  32. GM_download({
  33. url: src,
  34. name: filePath, // 用函数自动获取下载文件名称
  35. saveAs: false, // 如果希望用户选择下载位置,可以设置为true
  36. onerror: function(error) {
  37. console.error("Error downloading file:", error);
  38. }
  39. });
  40. });
  41.  
  42. }
  43.  
  44. //运行入口
  45. //定义空变量
  46. var Id = "";//内容的编号
  47. var Title = "";//内容的标题
  48. const srcArray = [];// 初始化一个空数组来存储图片的url
  49.  
  50. // 获取当前页面的 URL,从而获得游戏的Id编号
  51. const currentURL = window.location.href;
  52. const matchResult = currentURL.match(/\/product_id\/([A-Za-z0-9]+)/);
  53. if (matchResult) {
  54. // 提取的值存储在 matchResult[1] 中
  55. Id = matchResult[1];
  56. }
  57.  
  58. //提取DLsite上的游戏的标题信息
  59. const h1Element = document.querySelector('h1[itemprop="name"]');
  60. if (h1Element) {
  61. // 提取<h1>元素的文本内容并存储在变量中
  62. Title = h1Element.textContent.trim();
  63. }
  64.  
  65. // 获取包含data-src的元素,所有的图片的地址
  66. const Picelements = document.querySelectorAll('.product-slider-data div[data-src]');
  67. // 遍历元素并将data-src内容添加到数组中
  68. Picelements.forEach(element => {
  69. const src = 'https:' + element.getAttribute('data-src');
  70. srcArray.push(src);
  71. });
  72.  
  73. //调用下载函数下载到本地文件夹
  74. //downloadImages(Id, Title, srcArray);
  75. // 控制台输出调试,查看是否获取了需要的相关信息
  76. //console.log(Id);
  77. //console.log(Title);
  78. //console.log(srcArray);
  79.  
  80. //生成文件夹
  81. const button = document.createElement('button');
  82. button.textContent = '下载图片'; // 按钮上显示的文本
  83. button.style.backgroundColor = '#53F3F0E6'; //
  84. button.style.color = 'white'; // 按钮的文本颜色
  85. button.style.padding = '10px'; // 按钮的内边距
  86. button.style.borderRadius = '5px'; // 设置边框圆角半径,可以根据需要调整值
  87.  
  88. // 添加按钮点击事件监听器
  89. button.addEventListener('click', function() {
  90. downloadImages(Id, Title, srcArray);
  91. });
  92.  
  93. // 将按钮添加到页面中的某个元素中
  94. document.body.appendChild(button);
  95. if (h1Element) {
  96. //将按钮附加到这部分之后
  97. h1Element.parentNode.insertBefore(button, h1Element.nextSibling);
  98. }
  99.  
  100. })();