this post was submitted on 21 Jan 2024
36 points (97.4% liked)

Piracy: ꜱᴀɪʟ ᴛʜᴇ ʜɪɢʜ ꜱᴇᴀꜱ

54669 readers
417 users here now

⚓ Dedicated to the discussion of digital piracy, including ethical problems and legal advancements.

Rules • Full Version

1. Posts must be related to the discussion of digital piracy

2. Don't request invites, trade, sell, or self-promote

3. Don't request or link to specific pirated titles, including DMs

4. Don't submit low-quality posts, be entitled, or harass others



Loot, Pillage, & Plunder

📜 c/Piracy Wiki (Community Edition):


💰 Please help cover server costs.

Ko-Fi Liberapay
Ko-fi Liberapay

founded 1 year ago
MODERATORS
 

Hello! I'd like to write a script to download videos from streamingcommunity.estate from a given video URL, and to do this I need the m3u8 file url. Currently I manually go to the network tab to search for it, but I'd like the script to do this automatically. Do you know of a way to achieve this? Bash or Python if possible, otherwise any other method will do fine. Thanks in advance!

you are viewing a single comment's thread
view the rest of the comments
[–] tubbadu@lemmy.kde.social 1 points 9 months ago (3 children)

hi, sorry for the late reply! I finally wrote this nodejs script:

const puppeteer = require('puppeteer');

// This is where we'll put the code to get around the tests.



function findPlaylistUrl(networkUrls) {
  for (const url of networkUrls) {
    if (url.startsWith('https://vixcloud.co/playlist')) {
      return url;
    }
  }
  return ''; // Return an empty string if no matching URL is found
}

(async () => {
  // Check if URL argument is provided
  if (process.argv.length <= 2) {
    console.error('Usage: node get_network_urls.js <URL>');
    process.exit(1);
  }

  const url = process.argv[2];

  // Launch a headless browser
  const browser = await puppeteer.launch({ headless: 'true' });
  const page = await browser.newPage();

  // Enable request interception
  await page.setRequestInterception(true);

  // Capture network requests
  const networkUrls = [];
  page.on('request', (request) => {
    networkUrls.push(request.url());
    request.continue();
  });

  // Navigate to the URL
  await page.goto(url);

  // Wait for a while to capture network requests (adjust as needed)
  await page.waitForTimeout(5000);

  // Print the captured network URLs
  console.log(findPlaylistUrl(networkUrls));
    
  // Close the browser
  await browser.close();
})();

the first argument passed to the script is the url of the webpage. The script uses the puppeteer module to "fake" a browser, in order to receive all the network calls and so on, and then will search through them for the m3u8 playlist. It is very specific and only works on this website, but it can be easily adapted for other websites as well

[–] free@lemmy.world 1 points 9 months ago (2 children)

Thanks heaps for reply. Legend. After using chatgpt and bingchat I got the script cleaned up and working but unfortunately no output. 😥 I dont need the content, I just like to defeat these websites. Oh well. Dont want to bother you. My command was "node your-script.js https://streamingcommunity.express/watch/3330"

[–] tubbadu@lemmy.kde.social 1 points 9 months ago (1 children)

uhm that's strange, I just tried executing it on your link and it worked. have you waited at least 5 seconds after running the script?

[–] free@lemmy.world 1 points 9 months ago

Thanks for reply, appreciate it. The thing is when i try your code it errors out. So I had to use bingchat or chatgpt to clean it up. Any chance you could upload your file somewhere please?