ilhamdev commited on
Commit
7a2f26d
·
verified ·
1 Parent(s): 0ba6e87

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +36 -1
index.js CHANGED
@@ -104,6 +104,39 @@ throw new Error('Error: only audio/video files are supported');
104
  }
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  // MEDIAFIRE DL
108
  async function mediafire(url) {
109
  return new Promise(async (resolve, reject) => {
@@ -985,6 +1018,7 @@ return res.json({ message: e.message });
985
 
986
  let video = await ytmp4(url);
987
  let audio = await ytmp3(url);
 
988
  let data;
989
 
990
  try {
@@ -1001,7 +1035,8 @@ return res.json({ message: e.message });
1001
  audio: {
1002
  ...audio,
1003
  ...(data && data.mp3 ? { url_v2: data.mp3 } : {})
1004
- }
 
1005
  };
1006
 
1007
  return res.json(response);
 
104
  }
105
  }
106
 
107
+ async function ytdlhamster(url) {
108
+ try {
109
+ // Melakukan permintaan GET menggunakan axios
110
+ const response = await axios.get(`https://ytdl.hamsterlabs.de/?url=${encodeURIComponent(url)}`);
111
+ const data = response.data;
112
+
113
+ // Menggunakan cheerio untuk mem-parsing HTML
114
+ const $ = cheerio.load(data);
115
+ const downloadLinks = [];
116
+
117
+ // Memproses setiap baris tabel kecuali header
118
+ $('.formats tr').each((i, elem) => {
119
+ if (i === 0) return; // Skip the header row
120
+
121
+ // Mengambil informasi dari setiap kolom dalam baris
122
+ const format = $(elem).find('td:nth-child(1) .format').text().trim();
123
+ const quality = $(elem).find('td:nth-child(2)').text().trim();
124
+ const bitrate = $(elem).find('td:nth-child(3)').text().trim();
125
+ const container = $(elem).find('td:nth-child(4)').text().trim();
126
+ const codecs = $(elem).find('td:nth-child(5)').text().trim();
127
+ const downloadUrl = $(elem).find('td:nth-child(6) a').attr('href');
128
+
129
+ // Menambahkan link unduhan ke daftar
130
+ downloadLinks.push({ format, quality, bitrate, container, codecs, url: downloadUrl });
131
+ });
132
+
133
+ return downloadLinks;
134
+ } catch (error) {
135
+ console.error('Error fetching data:', error);
136
+ throw error;
137
+ }
138
+ }
139
+
140
  // MEDIAFIRE DL
141
  async function mediafire(url) {
142
  return new Promise(async (resolve, reject) => {
 
1018
 
1019
  let video = await ytmp4(url);
1020
  let audio = await ytmp3(url);
1021
+ let any = await ytdlhamster(url)
1022
  let data;
1023
 
1024
  try {
 
1035
  audio: {
1036
  ...audio,
1037
  ...(data && data.mp3 ? { url_v2: data.mp3 } : {})
1038
+ },
1039
+ any
1040
  };
1041
 
1042
  return res.json(response);