Greasy Fork 还支持 简体中文。

ImageDownloaderLib

Image downloader for manga download scripts.

22.09.2022 itibariyledir. En son verisyonu görün.

Bu script direkt olarak kurulamaz. Başka scriptler için bir kütüphanedir ve meta yönergeleri içerir // @require https://updategf.qytechs.cn/scripts/451810/1096733/ImageDownloaderLib.js

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu betiği yüklemek için bir betik yöneticisi eklentisi yüklemeniz gerekecektir.

(Zaten bir betik yöneticim var, hadi yükleyelim!)

Advertisement:

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

Advertisement:

function ImageDownloader({
  getImagePromises,
  isOKToDownload = () => true,
  title = `package_${Date.now()}`,
  zipOptions = {},
  imageSuffix = 'jpg',
  cssVerticalDistance = 'top: 80px',
  cssHorizontalDistance = 'left: 80px'
}) {
  // create download button element
  const dlBtn = document.createElement('button');
  dlBtn.textContent = 'Download';
  dlBtn.style = `
    position: fixed;
    ${cssVerticalDistance};
    ${cssHorizontalDistance};
    z-index: 9999999;

    width: 128px;
    height: 48px;

    display: flex;
    justify-content: center;
    align-items: center;

    font-size: 14px;
    font-family: 'Consolas', 'Monaco', 'Microsoft YaHei';
    color: #fff;

    background-color: #0984e3;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  `;

  // setup click event callback
  dlBtn.onclick = function () {
    if (!isOKToDownload()) return;

    dlBtn.disabled = true;
    dlBtn.textContent = "Processing";
    dlBtn.style.backgroundColor = '#aaa';
    dlBtn.style.cursor = 'not-allowed';
    download(getImagePromises, title, zipOptions);
  }

  // add button to body
  document.body.appendChild(dlBtn);

  // download
  async function download(getImagePromises, title, zipOptions) {
    const images = await Promise.all(getImagePromises());

    // create zip
    const zip = new JSZip(); // JSZip library should be imported already
    const folder = zip.folder(title);
    images.forEach((image, index) => {
      const filename = `${index + 1}`.padStart(images.length >= 100 ? 3 : 2, '0') + `.${imageSuffix}`;
      folder.file(filename, image, zipOptions);
    });

    // pop up download window
    const content = await zip.generateAsync({ type: "blob" });
    saveAs(content, `${title}.zip`); // FileSaver library should be imported already

    // change the text of download button
    dlBtn.innerText = "Completed";
  }
}