ilhamdev commited on
Commit
35c1109
·
verified ·
1 Parent(s): 35a6a41

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +86 -0
index.js CHANGED
@@ -516,6 +516,89 @@ form.append('lang', 'en');
516
  }
517
  }
518
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
  const app = express()
520
  .set('json spaces', 4)
521
  .use(morgan('dev'))
@@ -843,6 +926,9 @@ let { url } = req.query
843
  if (!ytIdRegex.test(url)) return res.json({ message: 'Invalid URL' });
844
  let video = await ytmp4(url)
845
  let audio = await ytmp3(url)
 
 
 
846
  return res.json({
847
  video: video,
848
  audio: audio
 
516
  }
517
  }
518
 
519
+ async function ytDEEL(url) {
520
+ const { v4: uuidv4 } = require('uuid');
521
+ const theme = encodeURIComponent('system');
522
+ const apiUrl = `https://gradio-blocks-youtube-downloader.hf.space/queue/join?__theme=${theme}`;
523
+ const mp3UploadId = uuidv4(); // Gunakan UUID yang berbeda untuk MP3
524
+ const mp4UploadId = Math.random().toString(36).substring(2); // Gunakan UUID yang berbeda untuk MP4
525
+
526
+ const mp3PostData = {
527
+ data: [url, false],
528
+ event_data: null,
529
+ fn_index: 0,
530
+ session_hash: mp3UploadId, // Gunakan mp3UploadId untuk MP3
531
+ trigger_id: 10
532
+ };
533
+
534
+ const mp4PostData = {
535
+ data: [url, true],
536
+ event_data: null,
537
+ fn_index: 0,
538
+ session_hash: mp4UploadId, // Gunakan mp4UploadId untuk MP4
539
+ trigger_id: 10
540
+ };
541
+
542
+ try {
543
+ // Kirim permintaan MP3
544
+ const mp3Response = await axios.post(apiUrl, mp3PostData, { headers: { 'Content-Type': 'application/json', 'Accept': '*/*' } });
545
+ const mp3EventId = mp3Response.data.event_id;
546
+
547
+ // Tunggu respons MP3
548
+ let mp3Url;
549
+ let mp3Completed = false;
550
+ const mp3StatusUrl = `https://gradio-blocks-youtube-downloader.hf.space/queue/data?session_hash=${mp3UploadId}`;
551
+ while (!mp3Completed) {
552
+ const statusResponse = await axios.get(mp3StatusUrl, { headers: { 'Accept': 'text/event-stream' }, responseType: 'text' });
553
+ const rawData = statusResponse.data.trim().split('\n').map(line => line.replace(/^data: /, ''));
554
+ for (const line of rawData) {
555
+ try {
556
+ const event = JSON.parse(line);
557
+ if (event.msg === 'process_completed') {
558
+ if (event.event_id === mp3EventId && !mp3Completed) {
559
+ mp3Url = event?.output?.data[1]?.value?.url;
560
+ mp3Completed = true;
561
+ }
562
+ }
563
+ } catch (e) {}
564
+ }
565
+ await new Promise(resolve => setTimeout(resolve, 5000));
566
+ }
567
+
568
+ // Kirim permintaan MP4
569
+ const mp4Response = await axios.post(apiUrl, mp4PostData, { headers: { 'Content-Type': 'application/json', 'Accept': '*/*' } });
570
+ const mp4EventId = mp4Response.data.event_id;
571
+
572
+ // Tunggu respons MP4
573
+ let mp4Url;
574
+ let mp4Completed = false;
575
+ const mp4StatusUrl = `https://gradio-blocks-youtube-downloader.hf.space/queue/data?session_hash=${mp4UploadId}`;
576
+ while (!mp4Completed) {
577
+ const statusResponse = await axios.get(mp4StatusUrl, { headers: { 'Accept': 'text/event-stream' }, responseType: 'text' });
578
+ const rawData = statusResponse.data.trim().split('\n').map(line => line.replace(/^data: /, ''));
579
+ for (const line of rawData) {
580
+ try {
581
+ const event = JSON.parse(line);
582
+ if (event.msg === 'process_completed') {
583
+ if (event.event_id === mp4EventId && !mp4Completed) {
584
+ mp4Url = event?.output?.data[0]?.value?.url;
585
+ mp4Completed = true;
586
+ }
587
+ }
588
+ } catch (e) {}
589
+ }
590
+ await new Promise(resolve => setTimeout(resolve, 5000));
591
+ }
592
+
593
+ const result = { mp3: mp3Url, mp4: mp4Url };
594
+ return JSON.stringify(result, null, 2);
595
+
596
+
597
+ } catch (error) {
598
+ throw error;
599
+ }
600
+ }
601
+
602
  const app = express()
603
  .set('json spaces', 4)
604
  .use(morgan('dev'))
 
926
  if (!ytIdRegex.test(url)) return res.json({ message: 'Invalid URL' });
927
  let video = await ytmp4(url)
928
  let audio = await ytmp3(url)
929
+ let data = await ytDEEL(url)
930
+ video = video.concat(data.mp4);
931
+ audio = audio.concat(data.mp3);
932
  return res.json({
933
  video: video,
934
  audio: audio