Some fixes

This commit is contained in:
Joris Bertomeu
2025-08-26 09:21:46 +02:00
parent ac0dc8286b
commit 1851ca9241
2 changed files with 389 additions and 383 deletions

View File

@@ -142,7 +142,7 @@
<i class="fas fa-server"></i> CrawlFlix Server
</label>
<input type="text" id="crawlFlixUrl" class="form-control"
placeholder="http://localhost:3000" value="http://localhost:3000">
placeholder="http://localhost:4200" value="http://localhost:4200">
</div>
</div>
<div class="col-md-6">
@@ -237,7 +237,7 @@
<div class="col-12">
<label for="crawlFlixUrlCK" class="form-label">CrawlFlix Server</label>
<input type="text" id="crawlFlixUrlCK" class="form-control form-control-sm"
placeholder="http://localhost:3000" value="http://localhost:3000">
placeholder="http://localhost:4200" value="http://localhost:4200">
</div>
</div>

View File

@@ -4,7 +4,7 @@ let requests = chrome.extension.getBackgroundPage().requests;
let pageURL = chrome.extension.getBackgroundPage().pageURL;
let targetIds = chrome.extension.getBackgroundPage().targetIds;
let clearkey = chrome.extension.getBackgroundPage().clearkey;
let userInputs = {};
let userInputs = {}; // IMPORTANT: Cette variable était manquante!
// === WIDEVINE KEY EXTRACTION ===
class WidevineExtractor {
@@ -13,6 +13,11 @@ class WidevineExtractor {
const resultTextarea = document.getElementById('result');
try {
// Vérifier que userInputs.license est défini
if (userInputs.license === undefined || !requests[userInputs.license]) {
throw new Error('License not selected. Please wait for auto-selection or select manually.');
}
// UI feedback
UIHelpers.setLoadingState(guessButton, true);
document.body.style.cursor = "wait";
@@ -106,7 +111,6 @@ class WidevineExtractor {
}
}
// === SMART MPD SELECTOR ===
class SmartMPDSelector {
static scoreAndRankMPDs(mpdUrls) {
const scoredMPDs = mpdUrls.map(url => ({
@@ -361,7 +365,7 @@ class MPDDetector {
class CrawlFlixIntegration {
static async sendToCrawlFlix(isClearchey = false) {
const suffix = isClearchey ? 'CK' : '';
const crawlFlixUrl = document.getElementById(`crawlFlixUrl${suffix}`).value || 'http://localhost:3000';
const crawlFlixUrl = document.getElementById(`crawlFlixUrl${suffix}`).value || 'http://localhost:4200';
const mpdUrl = document.getElementById(`mpdUrl${suffix}`).value;
const resultTextarea = document.getElementById(isClearchey ? 'ckResult' : 'result');
@@ -377,27 +381,22 @@ class CrawlFlixIntegration {
}
try {
StatusManager.show('Processing MPD and sending to CrawlFlix...', 'info', suffix);
StatusManager.show('Opening CrawlFlix with preloaded data...', 'info', suffix);
// Parse and validate keys
// Parse et valide les clés pour information
const keys = this.parseKeys(resultTextarea.value);
if (keys.length === 0) {
StatusManager.show('No valid keys found in the format key:value', 'error', suffix);
return;
}
// Test CrawlFlix connection and process MPD
const mpdData = await this.processMPD(crawlFlixUrl, mpdUrl);
// Create success message
const message = `✓ Successfully sent to CrawlFlix!
${keys.length} key(s) • ${mpdData.videoTracks.length} video track(s) • ${mpdData.audioTracks.length} audio track(s) • ${mpdData.subtitles.length} subtitle(s)`;
StatusManager.show(message, 'success', suffix);
// Open CrawlFlix with pre-filled data
// Ouvrir CrawlFlix directement avec les paramètres
this.openCrawlFlixTab(crawlFlixUrl, mpdUrl, resultTextarea.value);
// Message de succès
const contentType = isClearchey ? 'ClearKey' : 'Widevine';
StatusManager.show(`${contentType} data sent to CrawlFlix! (${keys.length} keys, MPD URL)`, 'success', suffix);
} catch (error) {
console.error('CrawlFlix send error:', error);
StatusManager.show(`Failed to send: ${error.message}`, 'error', suffix);
@@ -435,14 +434,18 @@ ${keys.length} key(s) • ${mpdData.videoTracks.length} video track(s) • ${mpd
}
static openCrawlFlixTab(crawlFlixUrl, mpdUrl, keysText) {
// Encoder les données pour l'URL
const params = new URLSearchParams({
mpdUrl: mpdUrl,
keys: keysText,
source: 'widevine-plugin'
autoLoad: 'true'
});
// Ouvrir CrawlFlix avec les paramètres pré-remplis
const crawlFlixTab = `${crawlFlixUrl}?${params.toString()}`;
chrome.tabs.create({ url: crawlFlixTab });
console.log('Opening CrawlFlix with preloaded data:', crawlFlixTab);
}
static copyKeys(resultTextareaId) {
@@ -558,7 +561,7 @@ class UIHelpers {
button.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Extracting Keys...';
} else {
button.disabled = false;
button.innerHTML = button.dataset.originalText || button.innerHTML;
button.innerHTML = '<i class="fas fa-magic me-2"></i> Extract Widevine Keys';
}
}
@@ -684,16 +687,19 @@ if (clearkey) {
MPDDetector.updateDropdowns();
StatusManager.show('ClearKey content detected', 'success');
MPDDetector.updateBadgeFromPopup();
} else if (psshs.length) {
// Widevine detected
document.getElementById('noEME').style.display = 'none';
document.getElementById('home').style.display = 'block';
WidevineExtractor.autoSelect();
// IMPORTANT: Faire autoSelect avant d'initialiser les event listeners
WidevineExtractor.autoSelect().then(() => {
EventManager.init();
MPDDetector.updateDropdowns();
StatusManager.show('Widevine content detected', 'success');
MPDDetector.updateBadgeFromPopup();
StatusManager.show('Widevine content detected and configured', 'success');
});
// Auto-refresh MPD detection periodically
setInterval(() => {
MPDDetector.updateDropdowns();