Guest User

Save Twitch Clips by Stream ID - @RydanTweets

a guest
Nov 6th, 2020
1,682
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Twitter: @RydanTweets
  2.  
  3. const fs = require('fs');
  4. const https = require('https');
  5.  
  6. let count = 0;
  7. checkLinks = (streamId, offset, end) => {
  8.   offset = offset || 1;
  9.   if (offset > end) {
  10.     console.log(`Done checking stream '${streamId}'. Found ${count} clips.`);
  11.     return;
  12.   }
  13.  
  14.   let filename = `${streamId}-offset-${offset}.mp4`;
  15.   var request = https
  16.     .get(`https://clips-media-assets2.twitch.tv/${filename}`, (resp) => {
  17.       if (typeof resp !== 'undefined') {
  18.         if (resp.statusCode === 200) {
  19.           // request returned status code 200, clip found
  20.  
  21.           console.log(`Clip found at offset '${offset}' in stream '${streamId}'.`);
  22.           count++;
  23.  
  24.           let file = fs.createWriteStream(`${filename}`);
  25.           resp.pipe(file);
  26.  
  27.           file.on('finish', function () {
  28.             console.log(`Successfully downloaded '${filename}'.`);
  29.  
  30.             file.close(checkLinks(streamId, ++offset, end));
  31.           });
  32.         } else if (resp.statusCode === 403) {
  33.           // request returned status code 403, no clip at offset
  34.           checkLinks(streamId, ++offset, end);
  35.         } else {
  36.           // request returned an "unknown" status code, try again
  37.           checkLinks(streamId, offset, end);
  38.         }
  39.       } else {
  40.         // response is undefined, try again
  41.         checkLinks(streamId, offset, end);
  42.       }
  43.     })
  44.     .on('error', function (err) {
  45.       // request failed, try again
  46.       checkLinks(streamId, offset, end);
  47.     });
  48. };
  49.  
  50. checkLinks('39349364158', 1, 3600);
  51.  
Add Comment
Please, Sign In to add comment