From d1d7085533135c284146f8d9a8b11946399c1f4e Mon Sep 17 00:00:00 2001 From: Valentin <80779186+ValentinGassend@users.noreply.github.com> Date: Thu, 6 Mar 2025 12:26:17 +0100 Subject: [PATCH] feat: add download button --- assets/icons/icon.png | Bin 14457 -> 118919 bytes manifest.json | 18 +- src/amazon-ivs-worker.min.js | 15 +- src/app.js | 39 +-- src/background.js | 82 ++++++ src/download.js | 525 +++++++++++++++++++++++++++++++++++ src/downloader-worker.js | 136 +++++++++ src/patch_amazonworker.js | 41 +-- src/ts-downloader.js | 123 ++++++++ src/twitchnosub.js | 8 +- 10 files changed, 923 insertions(+), 64 deletions(-) create mode 100644 src/background.js create mode 100644 src/download.js create mode 100644 src/downloader-worker.js create mode 100644 src/ts-downloader.js diff --git a/assets/icons/icon.png b/assets/icons/icon.png index b4441175daba0c6ae79599df1ea631e956f9532d..173e6744beb03d218543df48650cf520c7092540 100644 GIT binary patch literal 118919 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 K=d#Wzp$P!34NLX_ literal 14457 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 { + const data = event.data; + + if ((data.id == 1 || isVariantA) && data.type == 1) { + const newData = event.data; - const blobUrl = URL.createObjectURL(new Blob([` - importScripts( - '${patch_url}', - ); - ${workerString} - `])); + newData.arg = [data.arg]; - super(blobUrl); + this.postMessage(newData); + } + }); } } \ No newline at end of file diff --git a/src/background.js b/src/background.js new file mode 100644 index 0000000..39a5dc9 --- /dev/null +++ b/src/background.js @@ -0,0 +1,82 @@ + +chrome.webNavigation.onBeforeNavigate.addListener(function () { + +}, { + url: [{ hostContains: "twitch" }] +}); + +var isChrome = chrome.declarativeNetRequest != undefined; +var cdnLink = ''; + +if (isChrome) { + + chrome.runtime.onStartup.addListener(() => { + chrome.runtime.reload(); + }); +} + + +const app = () => { + if (isChrome) { + + chrome.declarativeNetRequest.updateDynamicRules({ + addRules: [{ + 'id': 1001, + 'priority': 1, + 'action': { + 'type': 'redirect', + 'redirect': { url: cdnLink } + }, + 'condition': { urlFilter: 'https://static.twitchcdn.net/assets/amazon-ivs-wasmworker.min-*.js' } + }], + removeRuleIds: [1001] + }); + + chrome.declarativeNetRequest.updateDynamicRules({ + addRules: [{ + 'id': 1002, + 'priority': 1, + 'action': { + 'type': 'redirect', + 'redirect': { url: cdnLink } + }, + 'condition': { urlFilter: 'https://assets.twitch.tv/assets/amazon-ivs-wasmworker.min-*.js' } + }], + removeRuleIds: [1002] + }); + } else { + + browser.webRequest.onBeforeRequest.addListener(() => { + return { redirectUrl: cdnLink }; + }, { + urls: [ + "https://static.twitchcdn.net/assets/amazon-ivs-wasmworker.min-*.js", + "https://assets.twitch.tv/assets/amazon-ivs-wasmworker.min-*.js" + ], + types: ["main_frame", "script"] + }, ["blocking"]); + } + +}; + +(async () => { + + try { + const response = await fetch("https://api.github.com/repos/besuper/TwitchNoSub/commits"); + const content = await response.json(); + + var latestCommit = content[0].sha; + + console.log("Lastest commit sha: " + latestCommit); + + cdnLink = `https://cdn.jsdelivr.net/gh/besuper/TwitchNoSub@${latestCommit}/src/amazon-ivs-worker.min.js`; + } catch (e) { + console.log(e); + + cdnLink = `https://cdn.jsdelivr.net/gh/besuper/TwitchNoSub/src/amazon-ivs-worker.min.js`; + } + + console.log("CDN link : " + cdnLink); + + app(); +})(); \ No newline at end of file diff --git a/src/download.js b/src/download.js new file mode 100644 index 0000000..19b2227 --- /dev/null +++ b/src/download.js @@ -0,0 +1,525 @@ + + +(function() { + + let downloadButtonAdded = false; + + + function getVodId() { + const match = window.location.pathname.match(/\/videos\/(\d+)/); + return match ? match[1] : null; + } + + + async function getVodInfo(vodId) { + + const vodInfo = { + m3u8Url: null, + title: null + }; + + + const videoElements = document.querySelectorAll('video'); + for (const video of videoElements) { + if (video.src && video.src.includes('.m3u8')) { + vodInfo.m3u8Url = video.src; + + + const titleElement = document.querySelector('h1[data-a-target="stream-title"], .tw-title'); + if (titleElement) { + vodInfo.title = titleElement.textContent.trim(); + } + + return vodInfo; + } + } + + + try { + + const resp = await fetch("https://gql.twitch.tv/gql", { + method: 'POST', + body: JSON.stringify({ + "query": "query { video(id: \"" + vodId + "\") { seekPreviewsURL, title, owner { login } }}" + }), + headers: { + 'Client-Id': 'kimne78kx3ncx6brgo4mv6wki5h1ko', + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }); + + const data = await resp.json(); + if (data && data.data && data.data.video) { + const vodData = data.data.video; + const currentURL = new URL(vodData.seekPreviewsURL); + const domain = currentURL.host; + const paths = currentURL.pathname.split("/"); + const vodSpecialID = paths[paths.findIndex(element => element.includes("storyboards")) - 1]; + + + vodInfo.m3u8Url = `https://${domain}/${vodSpecialID}/chunked/index-dvr.m3u8`; + vodInfo.title = vodData.title; + + return vodInfo; + } + } catch (e) { + console.error("Error getting VOD info:", e); + } + + return vodInfo; + } + + + function createSafeFilename(title, vodId) { + if (!title) return `twitch_vod_${vodId}`; + + + let safeTitle = title + .replace(/[\\/:*?"<>|]/g, '_') + .replace(/\s+/g, '_') + .replace(/__+/g, '_') + .substring(0, 100); + + + return `${safeTitle}_${vodId}`; + } + + + async function getFixedM3u8Content(m3u8Url) { + try { + const response = await fetch(m3u8Url); + const content = await response.text(); + + + const baseUrl = m3u8Url.substring(0, m3u8Url.lastIndexOf('/') + 1); + + + const lines = content.split('\n'); + const fixedLines = lines.map(line => { + if (line.endsWith('.ts') || (line.endsWith('.m3u8') && !line.startsWith('#'))) { + return baseUrl + line; + } + return line; + }); + + return fixedLines.join('\n'); + } catch (error) { + console.error('Error fixing M3U8:', error); + return null; + } + } + + + function createDownloadButton() { + if (downloadButtonAdded) return; + + const vodId = getVodId(); + if (!vodId) return; + + + let safeFilename = `twitch_vod_${vodId}`; + + + const controlsContainer = document.querySelector('.player-controls__right-control-group') || + document.querySelector('.ScCoreButton-sc-ocjdkq-0'); + + if (!controlsContainer) { + + setTimeout(createDownloadButton, 1000); + return; + } + + + const downloadDialog = document.createElement('div'); + downloadDialog.style.display = 'none'; + downloadDialog.style.position = 'fixed'; + downloadDialog.style.left = '50%'; + downloadDialog.style.top = '50%'; + downloadDialog.style.transform = 'translate(-50%, -50%)'; + downloadDialog.style.backgroundColor = '#18181b'; + downloadDialog.style.border = '1px solid #3a3a3d'; + downloadDialog.style.borderRadius = '6px'; + downloadDialog.style.padding = '20px'; + downloadDialog.style.zIndex = '9999'; + downloadDialog.style.width = '500px'; + downloadDialog.style.maxHeight = '80vh'; + downloadDialog.style.overflowY = 'auto'; + downloadDialog.style.color = 'white'; + downloadDialog.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.5)'; + + downloadDialog.innerHTML = ` +

Télécharger la VOD

+
+

Choisissez une option de téléchargement :

+ + + + +
+
+ +
+ `; + + document.body.appendChild(downloadDialog); + + + const downloadButton = document.createElement('button'); + downloadButton.innerHTML = ` + + + + `; + downloadButton.className = 'ScCoreButton-sc-ocjdkq-0 ScCoreButtonSecondary-sc-ocjdkq-2'; + downloadButton.style.marginLeft = '10px'; + downloadButton.title = 'Télécharger VOD'; + + + downloadButton.addEventListener('click', async () => { + const vodInfo = await getVodInfo(vodId); + if (vodInfo.m3u8Url) { + + const safeFilename = createSafeFilename(vodInfo.title, vodId); + + + downloadDialog.style.display = 'block'; + + + document.getElementById('directM3u8').addEventListener('click', async () => { + try { + + const fixedContent = await getFixedM3u8Content(vodInfo.m3u8Url); + if (!fixedContent) { + alert('Erreur lors de la préparation du fichier. Veuillez réessayer.'); + return; + } + + + const blob = new Blob([fixedContent], { type: 'application/x-mpegURL' }); + const downloadUrl = URL.createObjectURL(blob); + const downloadLink = document.createElement('a'); + downloadLink.href = downloadUrl; + downloadLink.setAttribute('download', `${safeFilename}.m3u8`); + downloadLink.click(); + + + URL.revokeObjectURL(downloadUrl); + + + document.getElementById('nodeCmd').textContent = `node ts-downloader.js ${safeFilename}.m3u8`; + document.getElementById('ffmpegCmd').textContent = `ffmpeg -i ${safeFilename}.ts -c copy ${safeFilename}.mp4`; + + + document.getElementById('downloadHelp').style.display = 'block'; + } catch (error) { + alert('Erreur: ' + error.message); + } + }); + + document.getElementById('copyNode').addEventListener('click', () => { + const cmd = document.getElementById('nodeCmd').textContent; + navigator.clipboard.writeText(cmd) + .then(() => { + const btn = document.getElementById('copyNode'); + btn.textContent = 'Copié!'; + setTimeout(() => { btn.textContent = 'Copier la commande'; }, 2000); + }); + }); + + document.getElementById('copyFfmpeg').addEventListener('click', () => { + const cmd = document.getElementById('ffmpegCmd').textContent; + navigator.clipboard.writeText(cmd) + .then(() => { + const btn = document.getElementById('copyFfmpeg'); + btn.textContent = 'Copié!'; + setTimeout(() => { btn.textContent = 'Copier la commande'; }, 2000); + }); + }); + + document.getElementById('downloadScript').addEventListener('click', (e) => { + e.preventDefault(); + + + const scriptContent = `// ts-downloader.js - Outil pour télécharger les segments TS d'une VOD Twitch +// Utilisez: node ts-downloader.js + +const fs = require('fs'); +const path = require('path'); +const https = require('https'); +const readline = require('readline'); + + +const m3u8File = process.argv[2]; +if (!m3u8File) { + console.error('Usage: node ts-downloader.js '); + process.exit(1); +} + + +const outputDir = path.join(path.dirname(m3u8File), 'segments'); +const outputFile = path.join(path.dirname(m3u8File), path.basename(m3u8File, '.m3u8') + '.ts'); + +try { + if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir); + } +} catch (error) { + console.error('Erreur lors de la création du dossier segments:', error); + process.exit(1); +} + + +const content = fs.readFileSync(m3u8File, 'utf8'); +const lines = content.split('\\n'); + + +const segments = []; +for (const line of lines) { + if (line.trim() && line.indexOf('http') === 0 && line.endsWith('.ts')) { + segments.push(line.trim()); + } +} + +if (segments.length === 0) { + console.error('Aucun segment trouvé dans le fichier M3U8'); + process.exit(1); +} + +console.log(\`Nombre total de segments: \${segments.length}\`); + + +function downloadSegment(url, outputPath) { + return new Promise((resolve, reject) => { + https.get(url, (response) => { + if (response.statusCode !== 200) { + reject(new Error(\`Erreur HTTP \${response.statusCode}\`)); + return; + } + + const fileStream = fs.createWriteStream(outputPath); + response.pipe(fileStream); + + fileStream.on('finish', () => { + fileStream.close(); + resolve(); + }); + + fileStream.on('error', (err) => { + fs.unlink(outputPath, () => {}); + reject(err); + }); + }).on('error', (err) => { + reject(err); + }); + }); +} + + +async function downloadAllSegments() { + + const combinedFile = fs.createWriteStream(outputFile); + + + let completed = 0; + const total = segments.length; + const updateProgress = () => { + const percent = Math.round((completed / total) * 100); + readline.clearLine(process.stdout, 0); + readline.cursorTo(process.stdout, 0); + process.stdout.write(\`Progression: \${completed}/\${total} (\${percent}%)\`); + }; + + + for (let i = 0; i < segments.length; i++) { + const segmentUrl = segments[i]; + const segmentPath = path.join(outputDir, \`segment_\${i}.ts\`); + + try { + + await downloadSegment(segmentUrl, segmentPath); + + + const segmentData = fs.readFileSync(segmentPath); + combinedFile.write(segmentData); + + + fs.unlinkSync(segmentPath); + + + completed++; + updateProgress(); + + } catch (error) { + console.error(\`\\nErreur lors du téléchargement du segment \${i}:\`, error.message); + + } + } + + combinedFile.end(); + console.log(\`\\nTéléchargement terminé. Fichier enregistré: \${outputFile}\`); + console.log(\`\\nPour convertir en MP4, utilisez cette commande: ffmpeg -i \${outputFile} -c copy \${outputFile.replace('.ts', '.mp4')}\`); +} + + +downloadAllSegments().catch(err => { + console.error('\\nErreur:', err); +});`; + + + const blob = new Blob([scriptContent], { type: 'application/javascript' }); + const url = URL.createObjectURL(blob); + const downloadLink = document.createElement('a'); + downloadLink.href = url; + downloadLink.setAttribute('download', 'ts-downloader.js'); + downloadLink.click(); + URL.revokeObjectURL(url); + }); + + document.getElementById('closeDialog').addEventListener('click', () => { + downloadDialog.style.display = 'none'; + }); + + + document.getElementById('ffmpegHelp').addEventListener('click', () => { + const guide = document.getElementById('ffmpegInstallGuide'); + guide.style.display = guide.style.display === 'none' ? 'block' : 'none'; + }); + + + document.querySelectorAll('.os-tab').forEach(tab => { + tab.addEventListener('click', () => { + + document.querySelectorAll('.os-content').forEach(content => { + content.style.display = 'none'; + }); + + + document.querySelectorAll('.os-tab').forEach(t => { + t.classList.remove('active'); + t.style.borderBottom = '2px solid transparent'; + }); + + + const os = tab.getAttribute('data-os'); + document.getElementById(`${os}-content`).style.display = 'block'; + + + tab.classList.add('active'); + tab.style.borderBottom = '2px solid #9147ff'; + }); + }); + } else { + alert('Impossible d\'obtenir l\'URL vidéo. Veuillez réessayer quand la vidéo est en cours de lecture.'); + } + }); + + + controlsContainer.appendChild(downloadButton); + downloadButtonAdded = true; + + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + const dialog = document.querySelector('div[style*="fixed"]'); + if (dialog && dialog.style.display !== 'none') { + dialog.style.display = 'none'; + } + } + }); + + console.log('TwitchNoSub: Download button added'); + } + + + function checkAndAddButton() { + const isVodPage = window.location.pathname.includes('/videos/'); + if (isVodPage) { + createDownloadButton(); + } else { + downloadButtonAdded = false; + } + } + + + checkAndAddButton(); + + + const pushState = history.pushState; + history.pushState = function() { + pushState.apply(history, arguments); + setTimeout(checkAndAddButton, 1000); + }; + + + window.addEventListener('popstate', () => { + setTimeout(checkAndAddButton, 1000); + }); + + + setInterval(checkAndAddButton, 3000); +})(); \ No newline at end of file diff --git a/src/downloader-worker.js b/src/downloader-worker.js new file mode 100644 index 0000000..85b2315 --- /dev/null +++ b/src/downloader-worker.js @@ -0,0 +1,136 @@ + +self.onmessage = async function(e) { + const { m3u8Url, vodId } = e.data; + + try { + + const m3u8Response = await fetch(m3u8Url); + if (!m3u8Response.ok) { + throw new Error(`Erreur lors du téléchargement du fichier m3u8: ${m3u8Response.status}`); + } + + const m3u8Content = await m3u8Response.text(); + + + const baseUrl = m3u8Url.substring(0, m3u8Url.lastIndexOf('/') + 1); + + + const segmentUrls = []; + const lines = m3u8Content.split('\n'); + + for (let i = 0; i < lines.length; i++) { + if (lines[i].endsWith('.ts')) { + segmentUrls.push(baseUrl + lines[i]); + } + } + + if (segmentUrls.length === 0) { + + + let subPlaylistUrl = ''; + for (let i = 0; i < lines.length; i++) { + if (lines[i].endsWith('.m3u8')) { + subPlaylistUrl = baseUrl + lines[i]; + break; + } + } + + if (subPlaylistUrl) { + + const subResponse = await fetch(subPlaylistUrl); + if (!subResponse.ok) { + throw new Error(`Erreur lors du téléchargement de la sous-playlist: ${subResponse.status}`); + } + + const subContent = await subResponse.text(); + const subBaseUrl = subPlaylistUrl.substring(0, subPlaylistUrl.lastIndexOf('/') + 1); + + + const subLines = subContent.split('\n'); + for (let i = 0; i < subLines.length; i++) { + if (subLines[i].endsWith('.ts')) { + segmentUrls.push(subBaseUrl + subLines[i]); + } + } + } + } + + self.postMessage({ + type: 'info', + message: `Téléchargement de ${segmentUrls.length} segments...` + }); + + + let completedSegments = 0; + const totalSegments = segmentUrls.length; + const chunkSize = 20; + + + const segments = new Map(); + + + for (let i = 0; i < totalSegments; i += chunkSize) { + const batch = segmentUrls.slice(i, i + chunkSize); + + await Promise.all(batch.map(async (url, index) => { + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to download segment: ${response.status}`); + } + + const buffer = await response.arrayBuffer(); + segments.set(i + index, new Uint8Array(buffer)); + + completedSegments++; + if (completedSegments % 10 === 0 || completedSegments === totalSegments) { + self.postMessage({ + type: 'progress', + completed: completedSegments, + total: totalSegments + }); + } + } catch (error) { + self.postMessage({ + type: 'error', + message: `Erreur segment ${i + index}: ${error.message}` + }); + } + })); + } + + + self.postMessage({ type: 'info', message: 'Combinaison des segments...' }); + + + let totalSize = 0; + for (const segment of segments.values()) { + totalSize += segment.length; + } + + + const combined = new Uint8Array(totalSize); + let offset = 0; + + + const sortedSegments = Array.from(segments.entries()).sort((a, b) => a[0] - b[0]); + + + for (const [_, segment] of sortedSegments) { + combined.set(segment, offset); + offset += segment.length; + } + + self.postMessage({ + type: 'complete', + data: combined.buffer, + filename: `twitch_vod_${vodId}.ts` + }, [combined.buffer]); + + } catch (error) { + self.postMessage({ + type: 'error', + message: `Erreur: ${error.message}` + }); + } +}; diff --git a/src/patch_amazonworker.js b/src/patch_amazonworker.js index aaa86cb..86dbb98 100644 --- a/src/patch_amazonworker.js +++ b/src/patch_amazonworker.js @@ -31,35 +31,18 @@ async function isValidQuality(url) { if (response.ok) { const data = await response.text(); - if (data.includes(".ts")) { - // ts files should still use the h264 - return { codec: "avc1.4D001E" }; - } - - if (data.includes(".mp4")) { - // mp4 file use h265, but sometimes h264 - const mp4Request = await fetch(url.replace("index-dvr.m3u8", "init-0.mp4")); - - if (mp4Request.ok) { - const content = await mp4Request.text(); - - return { codec: content.includes("hev1") ? "hev1.1.6.L93.B0" : "avc1.4D001E" }; - } - - return { codec: "hev1.1.6.L93.B0" }; - } + return data.includes(".ts"); } - return null; + return false; } const oldFetch = self.fetch; -self.fetch = async function (input, opt) { - let url = input instanceof Request ? input.url : input.toString(); - let response = await oldFetch(input, opt); +self.fetch = async function (url, opt) { + let response = await oldFetch(url, opt); + - // Patch playlist from unmuted to muted segments if (url.includes("cloudfront") && url.includes(".m3u8")) { const body = await response.text(); @@ -72,7 +55,7 @@ self.fetch = async function (input, opt) { const data = await fetchTwitchDataGQL(vodId); if (data == undefined) { - return new Response("Unable to fetch twitch data API", { status: 403 }); + return new Response("Unable to fetch twitch data API", 403); } const vodData = data.data.video; @@ -110,7 +93,7 @@ self.fetch = async function (input, opt) { let ordered_resolutions = {}; - for (const key in sorted_dict) { + for (key in sorted_dict) { ordered_resolutions[sorted_dict[key]] = resolutions[sorted_dict[key]]; } @@ -135,8 +118,8 @@ self.fetch = async function (input, opt) { let startQuality = 8534030; - for (const [resKey, resValue] of Object.entries(resolutions)) { - url = undefined; + for ([resKey, resValue] of Object.entries(resolutions)) { + var url = undefined; if (broadcastType === "highlight") { url = `https://${domain}/${vodSpecialID}/${resKey}/highlight-${vodId}.m3u8`; @@ -152,16 +135,14 @@ self.fetch = async function (input, opt) { continue; } - const result = await isValidQuality(url); - - if (result) { + if (await isValidQuality(url)) { const quality = resKey == "chunked" ? resValue.res.split("x")[1] + "p" : resKey; const enabled = resKey == "chunked" ? "YES" : "NO"; const fps = resValue.fps; fakePlaylist += ` #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="${quality}",NAME="${quality}",AUTOSELECT=${enabled},DEFAULT=${enabled} -#EXT-X-STREAM-INF:BANDWIDTH=${startQuality},CODECS="${result.codec},mp4a.40.2",RESOLUTION=${resValue.res},VIDEO="${quality}",FRAME-RATE=${fps} +#EXT-X-STREAM-INF:BANDWIDTH=${startQuality},CODECS="avc1.64002A,mp4a.40.2",RESOLUTION=${resValue.res},VIDEO="${quality}",FRAME-RATE=${fps} ${url}`; startQuality -= 100; diff --git a/src/ts-downloader.js b/src/ts-downloader.js new file mode 100644 index 0000000..06050cf --- /dev/null +++ b/src/ts-downloader.js @@ -0,0 +1,123 @@ + + + +const fs = require('fs'); +const path = require('path'); +const https = require('https'); +const readline = require('readline'); + + +const m3u8File = process.argv[2]; +if (!m3u8File) { + console.error('Usage: node ts-downloader.js '); + process.exit(1); +} + + +const outputDir = path.join(path.dirname(m3u8File), 'segments'); +const outputFile = path.join(path.dirname(m3u8File), path.basename(m3u8File, '.m3u8') + '.ts'); + +try { + if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir); + } +} catch (error) { + console.error('Erreur lors de la création du dossier segments:', error); + process.exit(1); +} + + +const content = fs.readFileSync(m3u8File, 'utf8'); +const lines = content.split('\n'); + + +const segments = []; +for (const line of lines) { + if (line.trim() && line.indexOf('http') === 0 && line.endsWith('.ts')) { + segments.push(line.trim()); + } +} + +if (segments.length === 0) { + console.error('Aucun segment trouvé dans le fichier M3U8'); + process.exit(1); +} + +console.log(`Nombre total de segments: ${segments.length}`); + + +function downloadSegment(url, outputPath) { + return new Promise((resolve, reject) => { + https.get(url, (response) => { + if (response.statusCode !== 200) { + reject(new Error(`Erreur HTTP ${response.statusCode}`)); + return; + } + + const fileStream = fs.createWriteStream(outputPath); + response.pipe(fileStream); + + fileStream.on('finish', () => { + fileStream.close(); + resolve(); + }); + + fileStream.on('error', (err) => { + fs.unlink(outputPath, () => {}); + reject(err); + }); + }).on('error', (err) => { + reject(err); + }); + }); +} + + +async function downloadAllSegments() { + + const combinedFile = fs.createWriteStream(outputFile); + + + let completed = 0; + const total = segments.length; + const updateProgress = () => { + const percent = Math.round((completed / total) * 100); + readline.clearLine(process.stdout, 0); + readline.cursorTo(process.stdout, 0); + process.stdout.write(`Progression: ${completed}/${total} (${percent}%)`); + }; + + + for (let i = 0; i < segments.length; i++) { + const segmentUrl = segments[i]; + const segmentPath = path.join(outputDir, `segment_${i}.ts`); + + try { + + await downloadSegment(segmentUrl, segmentPath); + + + const segmentData = fs.readFileSync(segmentPath); + combinedFile.write(segmentData); + + + fs.unlinkSync(segmentPath); + + + completed++; + updateProgress(); + + } catch (error) { + console.error(`\nErreur lors du téléchargement du segment ${i}:`, error.message); + + } + } + + combinedFile.end(); + console.log(`\nTéléchargement terminé. Fichier enregistré: ${outputFile}`); +} + + +downloadAllSegments().catch(err => { + console.error('\nErreur:', err); +}); diff --git a/src/twitchnosub.js b/src/twitchnosub.js index 406dc81..6c85f4b 100644 --- a/src/twitchnosub.js +++ b/src/twitchnosub.js @@ -5,9 +5,5 @@ function injectScript(src) { (document.head || document.documentElement).append(s); } -const extensionType = window.chrome !== undefined ? "chrome" : "firefox"; - -console.log("[TNS] Found extension type : " + extensionType); - -injectScript(`src/${extensionType}/app.js`); -injectScript("src/app.js"); \ No newline at end of file +injectScript("src/app.js"); +injectScript("src/download.js"); \ No newline at end of file