experimental instagram video download support #65
@@ -12,7 +12,7 @@ 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,
 | 
			
		||||
  instagram: /^https?:\/\/(\w+\.)?instagram.com\/p\/(.*)\//gi
 | 
			
		||||
  instagram: /(?:https?:\/\/www\.)?instagram\.com\S*?\/(?:p|reel)\/(\w{11})\/?/im
 | 
			
		||||
};
 | 
			
		||||
const mediagroupids = new Set();
 | 
			
		||||
 | 
			
		||||
@@ -52,7 +52,10 @@ export default async bot => {
 | 
			
		||||
 | 
			
		||||
      links.forEach(async link => {
 | 
			
		||||
        if(regex.imgur.test(link))
 | 
			
		||||
          await e.reply(`imgur detected?`);
 | 
			
		||||
          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);
 | 
			
		||||
@@ -66,17 +69,28 @@ export default async bot => {
 | 
			
		||||
 | 
			
		||||
        // read metadata
 | 
			
		||||
        let ext;
 | 
			
		||||
        if(regex.imgur.test(link))
 | 
			
		||||
          ext = link.split('.').pop();
 | 
			
		||||
        // blah?
 | 
			
		||||
        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);
 | 
			
		||||
@@ -89,30 +103,45 @@ export default async bot => {
 | 
			
		||||
        // download data
 | 
			
		||||
        const start = new Date();
 | 
			
		||||
        let source;
 | 
			
		||||
        if(regex.imgur.test(link))
 | 
			
		||||
          try {
 | 
			
		||||
            source = (await queue.exec(`wget "${link}" -o "/home/f0ck/f0ckv2/tmp/${uuid}.${ext}"`)).stdout.trim();
 | 
			
		||||
          } catch(err) {
 | 
			
		||||
            return await e.reply("fuck js");
 | 
			
		||||
          }
 | 
			
		||||
        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, "something went wrong lol");
 | 
			
		||||
            return await e.reply("something went wrong lol 1");
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
          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) {
 | 
			
		||||
          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')
 | 
			
		||||
            return await e.editMessageText(msg.result.chat.id, msg.result.message_id, "something went wrong lol");
 | 
			
		||||
          return await e.reply("something went wrong lol 2");
 | 
			
		||||
          return await e.reply("something went wrong lol");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        console.log(typeof source)
 | 
			
		||||
 | 
			
		||||
        if(source.match(/larger than/)) {
 | 
			
		||||
          if(e.type == 'tg')
 | 
			
		||||
            return await e.editMessageText(msg.result.chat.id, msg.result.message_id, "too large lol");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user