-
-
Save helloint/725c30bcd5c541b86ac1f325c52f2148 to your computer and use it in GitHub Desktop.
| // ==UserScript== | |
| // @name Download PDF from smartedu | |
| // @namespace https://helloint.com | |
| // @version 0.2 | |
| // @description Download PDF file from basic.smartedu.cn by press keyboard 'ddd' | |
| // @author Wayne Mao | |
| // @match https://basic.smartedu.cn/* | |
| // @icon https://www.google.com/s2/favicons?sz=64&domain=web.app | |
| // @grant none | |
| // ==/UserScript== | |
| const PASSWORD = 'ddd'; | |
| const TIMEOUT = 5000; | |
| let userInput = ''; | |
| let iid = 0; | |
| const startTimer = () => { | |
| iid = setTimeout(() => { | |
| userInput = ''; | |
| }, TIMEOUT); | |
| }; | |
| const clearTimer = () => { | |
| if (iid) { | |
| clearTimeout(iid); | |
| } | |
| }; | |
| const resetTimer = () => { | |
| clearTimer(); | |
| startTimer(); | |
| } | |
| function downloadPDF(url, fileName) { | |
| console.log(`PDF url: ${url}, fileName: ${fileName}`); | |
| fetch(url) | |
| .then(response => response.blob()) | |
| .then(blob => { | |
| const url = window.URL.createObjectURL(blob); | |
| const a = document.createElement('a'); | |
| a.style.display = 'none'; | |
| a.href = url; | |
| a.download = fileName; | |
| document.body.appendChild(a); | |
| a.click(); | |
| window.URL.revokeObjectURL(url); | |
| }) | |
| .catch(() => alert('An error occurred while downloading the PDF.')); | |
| } | |
| function parsePdfInfo() { | |
| const pdfTitle = document.querySelectorAll('h3')[0].innerText; | |
| const urlParams = new URLSearchParams(location.search); | |
| const pdfId = urlParams.get('contentId'); // c4857bdb-4166-4552-b65e-41b545d8f7b8 | |
| const pdfUrl = `https://r3-ndr.ykt.cbern.com.cn/edu_product/esp/assets/${pdfId}.pkg/pdf.pdf`; | |
| return { | |
| pdfTitle, pdfUrl | |
| }; | |
| } | |
| function doc_keyUp(e) { | |
| resetTimer(); | |
| switch (e.keyCode) { | |
| case 68: | |
| //d | |
| userInput += 'd'; | |
| break; | |
| default: | |
| userInput = ''; | |
| break; | |
| } | |
| if (userInput === 'ddd') { | |
| const {pdfUrl, pdfTitle} = parsePdfInfo(); | |
| downloadPDF(pdfUrl, pdfTitle); | |
| } | |
| } | |
| document.addEventListener('keyup', doc_keyUp, false); |
@badkill23 which one? Can you show me?
This is the site, I need to download the PDF automatically with a custom name
https://www.gob.mx/curp/
CURP: LOAN030925MPLPNYA8
Are these info sensitive? If yes, please remove and you can send me via email.
The logic can be found here https://www.gob.mx/curp/assets/tramite-curp-7c83023497ff5c39c8882c335c535347.js
Depends on what you mean about 'automatically'. You want to download the PDF by curps in batch? There is google recaptcha on the site, so I think such thing is not doable.
No in batches, what I meant by automatic is that when consulting the CURP, at that moment the button to download the PDF with a personalized name is automatically pressed
like CURP_LOAN030925MPLPNYA8.pdf?
Yes, something like that, or maybe taking the first name. Something like this:
NAME_LOAN030925MPLPNYA8.pdf
Because I always download it as CURP.pdf
a bit difficult to get the name. CURP_LOAN030925MPLPNYA8.pdf is easier
I understand, with that structure of the name of the pdf it would look good
try this
// ==UserScript==
// @name Download named curp PDF
// @namespace https://helloint.com
// @version 0.2
// @description Download curp PDF file with specific filename
// @author Wayne Mao
// @match https://www.gob.mx/curp/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=web.app
// @grant none
// ==/UserScript==
function execModule() {
window.define('tramite-curp/services/curp-document', ['exports', 'tramite-curp/mixins/util', 'tramite-curp/config/environment'], function(e, t, a) {
Object.defineProperty(e, '__esModule', { value: !0 }), e.default = Ember.Service.extend(t.default, {
getDocument: function(e, t) {
var n = this;
Ember.$.ajax({
url: '' + a.default.APP.CURP_HOST + e, type: 'GET', mimeType: 'text/plain; charset=x-user-defined', success: function(e) {
var a = 'data:application/pdf;base64,' + e, r = e, o = document.getElementById('dwnldLnk'),
i = Ember.$('.wizard-steps').find('.wizardbar-i').find('.glyphicon');
var s = function() {
var e = window.navigator.userAgent;
if (e.indexOf('MSIE ') > 0) return !0;
if (e.indexOf('Trident/') > 0) return e.indexOf('rv:'), !0;
return e.indexOf('Edge/'), !1;
}();
n.downloader(a, 'CURP_' + t + '.pdf');
Ember.$(i).parent().addClass('success'), Ember.$('.loader').addClass('hidden'), Ember.$('#download').attr('disabled', !0), surveyTramiteGobMX.getEncuestaHC('CRP666');
},
});
},
});
});
console.log('module executed.');
}
execModule();
perfect, works very well. I only have one problem, in the Safari browser it doesn't download anything, the download button doesn't work. Could you help me with that problem?
I also found an element that stands above the download button that acts as if it were deactivated, will it be possible to hide or eliminate it from the same code?
<div class="col-md-12 top-buffer clearfix">
<hr>
</div>
your request become quite customized...
I understand, and I apologize for the inconvenience. For your help, thank you very much, the code was perfect with what I was looking for.
Hello, could you help me with a Script similar to this for another website?