diff --git a/src/inc/trigger/parser.mjs b/src/inc/trigger/parser.mjs index 4b923da..5cd6129 100644 --- a/src/inc/trigger/parser.mjs +++ b/src/inc/trigger/parser.mjs @@ -11,7 +11,8 @@ import path from "path"; const regex = { all: /https?:\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?/gi, yt: /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\/?\?(?:\S*?&?v\=))|youtu\.be\/)([a-zA-Z0-9_-]{6,11})/gi, - imgur: /^https?:\/\/(\w+\.)?imgur.com\/(\w*\d\w*)+(\.[a-zA-Z]{3,4})?/gi + imgur: /^https?:\/\/(\w+\.)?imgur.com\/(\w*\d\w*)+(\.[a-zA-Z]{3,4})?/gi, + instagram: /(?:https?:\/\/www\.)?instagram\.com\S*?\/(?:p|reel)\/(\w{11})\/?/im }; const mediagroupids = new Set(); @@ -51,7 +52,10 @@ export default async bot => { links.forEach(async link => { if(regex.imgur.test(link)) - return await e.reply(`imgur is not supported!`); + return await e.reply(`fuck imgur... seriously`); + + if(regex.instagram.test(link)) + await e.reply(`insta link`); // check repost (link) repost = await queue.checkrepostlink(link); @@ -65,14 +69,28 @@ export default async bot => { // read metadata let ext; + if(regex.instagram.test(link)) + // is instagram try { - const meta = JSON.parse((await queue.exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' --skip-download --dump-json "${link}"`)).stdout); + // @flummi -> is there a variable for the actual work directory so it doesn't have to be hardcoded? + const meta = JSON.parse((await queue.exec(`yt-dlp --cookies /opt/f0ck/qutecookies.txt -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' --skip-download --dump-json "${link}"`)).stdout); ext = meta.ext; } catch(err) { const tmphead = (await fetch(link, { method: "HEAD" })).headers["content-type"]; // this can be undefined for unsupported mime types, but will be caught in the general mime check below ext = cfg.mimes[tmphead]; } + else { + // is not instagram + try { + const meta = JSON.parse((await queue.exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' --skip-download --dump-json "${link}"`)).stdout); + ext = meta.ext; + } catch(err) { + const tmphead = (await fetch(link, { method: "HEAD" })).headers["content-type"]; + // this can be undefined for unsupported mime types, but will be caught in the general mime check below + ext = cfg.mimes[tmphead]; + } + } if(!Object.values(cfg.mimes).includes(ext?.toLowerCase())) { return console.log('mime schmime ' + ext); @@ -85,13 +103,38 @@ export default async bot => { // download data const start = new Date(); let source; + try { - source = (await queue.exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' "${link}" --max-filesize ${maxfilesize / 1024}k --postprocessor-args "ffmpeg:-bitexact" -o "./tmp/${uuid}.%(ext)s" --print after_move:filepath --merge-output-format "mp4"`)).stdout.trim(); + if(regex.instagram.test(link)) + try { + console.log("insta link"); + source = (await queue.exec(`yt-dlp --cookies /opt/f0ck/qutecookies.txt -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' "${link}" --max-filesize ${maxfilesize / 1024}k --postprocessor-args "ffmpeg:-bitexact" -o "./tmp/${uuid}.%(ext)s" --print after_move:filepath --merge-output-format "mp4"`)).stdout.trim(); + } catch(err) { + if(e.type == 'tg') + return await e.editMessageText(msg.result.chat.id, msg.result.message_id, "instagram dl error"); + return await e.reply("instagram dl error", err); + } + else { + try { + source = (await queue.exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' "${link}" --max-filesize ${maxfilesize / 1024}k --postprocessor-args "ffmpeg:-bitexact" -o "./tmp/${uuid}.%(ext)s" --print after_move:filepath --merge-output-format "mp4"`)).stdout.trim(); + } catch(err) { + if(e.type == 'tg') + return await e.editMessageText(msg.result.chat.id, msg.result.message_id, err); + return await e.reply(err); + } + } } catch(err) { - if(e.type == 'tg') - return await e.editMessageText(msg.result.chat.id, msg.result.message_id, "something went wrong lol"); - return await e.reply("something went wrong lol"); + console.log(err); } + + // this is how it was before I fucked it up :> + // try { + // source = (await queue.exec(`yt-dlp -f 'bv*[height<=720]+ba/b[height<=720] / wv*+ba/w' "${link}" --max-filesize ${maxfilesize / 1024}k --postprocessor-args "ffmpeg:-bitexact" -o "./tmp/${uuid}.%(ext)s" --print after_move:filepath --merge-output-format "mp4"`)).stdout.trim(); + // } catch(err) { + // if(e.type == 'tg') + // return await e.editMessageText(msg.result.chat.id, msg.result.message_id, "something went wrong lol"); + // return await e.reply("something went wrong lol"); + // } if(!source) { if(e.type == 'tg')