Last active
December 12, 2023 16:28
-
-
Save joelthorner/9f4f1760a566cb3fabdaec42c375edcb to your computer and use it in GitHub Desktop.
3cat-download video
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function getScript(e,a){var t=document.createElement("script"),r=document.getElementsByTagName("script")[0];t.async=1,t.onload=t.onreadystatechange=function(e,r){(r||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t=void 0,!r&&a&&setTimeout(a,0))},t.src=e,r.parentNode.insertBefore(t,r)}function esperar(e){return new Promise(a=>setTimeout(a,e))}async function descarregarIVeEmpaquetar(){let e=document.querySelector(".videoviewbase video");if(e){e.click(),await esperar(2e3),(e=document.querySelector(".videoviewbase video")).click();let a=e.src,t=(a=(a=(a=a.replace("blob:","")).replace("https://","https:")).replace(".cat","")).split("/");a=t[0]+"/"+t[1]+"/"+t[1],e.src=a,await esperar(1e3);let r=document.querySelector(".videoviewbase video"),o=r.src;try{let l=await fetch(o),c=["|","/","-","\\","|","/","-","\\"],i=0,n=setInterval(()=>{console.clear();let e="%c Fetching! Aixo pot tardar uns minuto. Que aixo pesa 1GB! "+c[i];console.log(e,"font-size: 12px;font-family: monospace;background: white;display: inline-block;color: black;padding: 8px 19px;border: 1px dashed;"),++i>c.length-1&&(i=0)},500);if(!l.ok)throw Error(`Error en la sol\xb7licitud: ${l.statusText}`);let s=await l.blob();clearInterval(n);let d=URL.createObjectURL(s),p=document.createElement("a");p.href=d,p.download=document.querySelector("h1").innerText+".mp4",document.body.appendChild(p),p.click(),document.body.removeChild(p),msg="%c Donete!",styles="font-size: 12px;font-family: monospace;background: white;display: inline-block;color: black;padding: 8px 19px;border: 1px dashed;",console.log(msg,styles)}catch(y){console.error("Error en la desc\xe0rrega:",y)}}}console.clear();let msg="%c A one a moment!",styles="font-size: 12px;font-family: monospace;background: white;display: inline-block;color: black;padding: 8px 19px;border: 1px dashed;";console.log(msg,styles),descarregarIVeEmpaquetar(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @version 1.0.0 | |
*/ | |
function getScript(source, callback) { | |
var script = document.createElement('script'); | |
var prior = document.getElementsByTagName('script')[0]; | |
script.async = 1; | |
script.onload = script.onreadystatechange = function (_, isAbort) { | |
if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) { | |
script.onload = script.onreadystatechange = null; | |
script = undefined; | |
if (!isAbort && callback) setTimeout(callback, 0); | |
} | |
}; | |
script.src = source; | |
prior.parentNode.insertBefore(script, prior); | |
} | |
function esperar(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} | |
async function descarregarIVeEmpaquetar() { | |
let video = document.querySelector('.videoviewbase video'); | |
// console.log(video); | |
if (video) { | |
video.click(); | |
await esperar(2000); | |
video = document.querySelector('.videoviewbase video'); | |
video.click(); | |
let src = video.src; | |
// console.log(video.src); | |
// blob:https://www.ccma.cat/81382346-d094-4a34-9f86-b17ac9887bec | |
// Copy the src of the blob video, the url may look like https://XXX.com/XXX | |
src = src.replace('blob:', ''); | |
// console.log(src); | |
// https://www.ccma.cat/81382346-d094-4a34-9f86-b17ac9887bec | |
// Copy the link and edit to with your id ABC like this: https:XXX/XXX/ABC | |
src = src.replace('https://', 'https:'); | |
src = src.replace('.cat', ''); | |
// console.log(src); | |
// https:www.ccma/81382346-d094-4a34-9f86-b17ac9887bec | |
// Replace the url blob:https://XXX/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX inside the SRC with the URL we created step 6. | |
let split = src.split('/'); | |
src = split[0] + '/' + split[1] + '/' + split[1]; | |
// console.log(src); | |
video.src = src; | |
await esperar(1000); | |
const videoNew = document.querySelector('.videoviewbase video'); | |
// console.log(videoNew.src); | |
const rutaMP4 = videoNew.src; // Reemplaça amb la teva ruta | |
try { | |
const response = await fetch(rutaMP4); | |
let loading = ['|', '/', '-', '\\', '|', '/', '-', '\\']; | |
let i = 0; | |
let interval = setInterval(() => { | |
console.clear(); | |
let msg = "%c Fetching! Aixo pot tardar uns minuto. Que aixo pesa 1GB! " + loading[i]; | |
let styles = [ | |
'font-size: 12px', | |
'font-family: monospace', | |
'background: white', | |
'display: inline-block', | |
'color: black', | |
'padding: 8px 19px', | |
'border: 1px dashed;' | |
].join(';') | |
console.log(msg, styles); | |
i++; | |
if (i > loading.length - 1) { | |
i = 0; | |
} | |
}, 500); | |
if (!response.ok) { | |
throw new Error(`Error en la sol·licitud: ${response.statusText}`); | |
} | |
const blob = await response.blob(); | |
clearInterval(interval); | |
// Crear un objecte URL per al blob i crear un enllaç d'ancoratge per descarregar | |
const url = URL.createObjectURL(blob); | |
const link = document.createElement('a'); | |
link.href = url; | |
link.download = document.querySelector('h1').innerText + '.mp4'; | |
document.body.appendChild(link); | |
link.click(); | |
document.body.removeChild(link); | |
msg = "%c Donete!"; | |
styles = [ | |
'font-size: 12px', | |
'font-family: monospace', | |
'background: white', | |
'display: inline-block', | |
'color: black', | |
'padding: 8px 19px', | |
'border: 1px dashed;' | |
].join(';') | |
console.log(msg, styles); | |
// console.log('Descàrrega completada amb èxit.'); | |
} catch (error) { | |
console.error('Error en la descàrrega:', error); | |
} | |
} | |
} | |
console.clear(); | |
let msg = "%c A one a moment!"; | |
let styles = [ | |
'font-size: 12px', | |
'font-family: monospace', | |
'background: white', | |
'display: inline-block', | |
'color: black', | |
'padding: 8px 19px', | |
'border: 1px dashed;' | |
].join(';') | |
console.log(msg, styles); | |
descarregarIVeEmpaquetar(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment