0% acharam este documento útil (0 voto)
1K visualizações3 páginas

Script Download

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
1K visualizações3 páginas

Script Download

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

// ==UserScript==

// @name Auto Resume Downloads (Um por vez - PT/EN)

// @namespace http://tampermonkey.net/

// @version 1.2

// @description Retoma automaticamente downloads com erro (português


ou inglês), um por vez, até completar

// @match chrome://downloads/

// @grant none

// ==/UserScript==

(function() {

'use strict';

let isProcessing = false;

const errorKeywords = [

'erro', 'interrompido', 'falha', // Português

'error', 'failed', 'interrupted' // Inglês

];

function hasError(text) {

const lower = text.toLowerCase();

return errorKeywords.some(keyword => lower.includes(keyword));

function resumeNextDownload() {

if (isProcessing) return;

const manager = document.querySelector('downloads-manager');


if (!manager) return;

[16/08, 22:54] ChatGPT: const items =


manager.shadowRoot.querySelectorAll('downloads-item');

for (const item of items) {

const root = item.shadowRoot;

const stateEl = root?.querySelector('#tag');

const stateText = stateEl?.textContent?.trim();

if (stateText && hasError(stateText)) {

isProcessing = true;

const moreBtn = root.querySelector('#moreActions');

if (moreBtn) {

moreBtn.click();

setTimeout(() => {

const menu = root.querySelector('cr-action-menu');

const menuShadow = menu?.shadowRoot;

const resumeBtn = menuShadow?.querySelector('#pause-


or-resume');

if (resumeBtn) {

resumeBtn.click();

setTimeout(() => {

isProcessing = false;

}, 10000); // Aguarda 10s antes de processar o próximo

}, 300);
}

break; // Processa um download por vez

setInterval(resumeNextDownload, 5000); // Verifica a cada 5 segundos

})();

```

Você também pode gostar