Some fixes
This commit is contained in:
@@ -142,7 +142,7 @@
|
|||||||
<i class="fas fa-server"></i> CrawlFlix Server
|
<i class="fas fa-server"></i> CrawlFlix Server
|
||||||
</label>
|
</label>
|
||||||
<input type="text" id="crawlFlixUrl" class="form-control"
|
<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>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@@ -237,7 +237,7 @@
|
|||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<label for="crawlFlixUrlCK" class="form-label">CrawlFlix Server</label>
|
<label for="crawlFlixUrlCK" class="form-label">CrawlFlix Server</label>
|
||||||
<input type="text" id="crawlFlixUrlCK" class="form-control form-control-sm"
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ let requests = chrome.extension.getBackgroundPage().requests;
|
|||||||
let pageURL = chrome.extension.getBackgroundPage().pageURL;
|
let pageURL = chrome.extension.getBackgroundPage().pageURL;
|
||||||
let targetIds = chrome.extension.getBackgroundPage().targetIds;
|
let targetIds = chrome.extension.getBackgroundPage().targetIds;
|
||||||
let clearkey = chrome.extension.getBackgroundPage().clearkey;
|
let clearkey = chrome.extension.getBackgroundPage().clearkey;
|
||||||
let userInputs = {};
|
let userInputs = {}; // IMPORTANT: Cette variable était manquante!
|
||||||
|
|
||||||
// === WIDEVINE KEY EXTRACTION ===
|
// === WIDEVINE KEY EXTRACTION ===
|
||||||
class WidevineExtractor {
|
class WidevineExtractor {
|
||||||
@@ -13,6 +13,11 @@ class WidevineExtractor {
|
|||||||
const resultTextarea = document.getElementById('result');
|
const resultTextarea = document.getElementById('result');
|
||||||
|
|
||||||
try {
|
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
|
// UI feedback
|
||||||
UIHelpers.setLoadingState(guessButton, true);
|
UIHelpers.setLoadingState(guessButton, true);
|
||||||
document.body.style.cursor = "wait";
|
document.body.style.cursor = "wait";
|
||||||
@@ -106,7 +111,6 @@ class WidevineExtractor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// === SMART MPD SELECTOR ===
|
|
||||||
class SmartMPDSelector {
|
class SmartMPDSelector {
|
||||||
static scoreAndRankMPDs(mpdUrls) {
|
static scoreAndRankMPDs(mpdUrls) {
|
||||||
const scoredMPDs = mpdUrls.map(url => ({
|
const scoredMPDs = mpdUrls.map(url => ({
|
||||||
@@ -361,7 +365,7 @@ class MPDDetector {
|
|||||||
class CrawlFlixIntegration {
|
class CrawlFlixIntegration {
|
||||||
static async sendToCrawlFlix(isClearchey = false) {
|
static async sendToCrawlFlix(isClearchey = false) {
|
||||||
const suffix = isClearchey ? 'CK' : '';
|
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 mpdUrl = document.getElementById(`mpdUrl${suffix}`).value;
|
||||||
const resultTextarea = document.getElementById(isClearchey ? 'ckResult' : 'result');
|
const resultTextarea = document.getElementById(isClearchey ? 'ckResult' : 'result');
|
||||||
|
|
||||||
@@ -377,27 +381,22 @@ class CrawlFlixIntegration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
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);
|
const keys = this.parseKeys(resultTextarea.value);
|
||||||
if (keys.length === 0) {
|
if (keys.length === 0) {
|
||||||
StatusManager.show('No valid keys found in the format key:value', 'error', suffix);
|
StatusManager.show('No valid keys found in the format key:value', 'error', suffix);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test CrawlFlix connection and process MPD
|
// Ouvrir CrawlFlix directement avec les paramètres
|
||||||
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
|
|
||||||
this.openCrawlFlixTab(crawlFlixUrl, mpdUrl, resultTextarea.value);
|
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) {
|
} catch (error) {
|
||||||
console.error('CrawlFlix send error:', error);
|
console.error('CrawlFlix send error:', error);
|
||||||
StatusManager.show(`Failed to send: ${error.message}`, 'error', suffix);
|
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) {
|
static openCrawlFlixTab(crawlFlixUrl, mpdUrl, keysText) {
|
||||||
|
// Encoder les données pour l'URL
|
||||||
const params = new URLSearchParams({
|
const params = new URLSearchParams({
|
||||||
mpdUrl: mpdUrl,
|
mpdUrl: mpdUrl,
|
||||||
keys: keysText,
|
keys: keysText,
|
||||||
source: 'widevine-plugin'
|
autoLoad: 'true'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Ouvrir CrawlFlix avec les paramètres pré-remplis
|
||||||
const crawlFlixTab = `${crawlFlixUrl}?${params.toString()}`;
|
const crawlFlixTab = `${crawlFlixUrl}?${params.toString()}`;
|
||||||
chrome.tabs.create({ url: crawlFlixTab });
|
chrome.tabs.create({ url: crawlFlixTab });
|
||||||
|
|
||||||
|
console.log('Opening CrawlFlix with preloaded data:', crawlFlixTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
static copyKeys(resultTextareaId) {
|
static copyKeys(resultTextareaId) {
|
||||||
@@ -558,7 +561,7 @@ class UIHelpers {
|
|||||||
button.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Extracting Keys...';
|
button.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Extracting Keys...';
|
||||||
} else {
|
} else {
|
||||||
button.disabled = false;
|
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();
|
MPDDetector.updateDropdowns();
|
||||||
StatusManager.show('ClearKey content detected', 'success');
|
StatusManager.show('ClearKey content detected', 'success');
|
||||||
MPDDetector.updateBadgeFromPopup();
|
|
||||||
} else if (psshs.length) {
|
} else if (psshs.length) {
|
||||||
// Widevine detected
|
// Widevine detected
|
||||||
document.getElementById('noEME').style.display = 'none';
|
document.getElementById('noEME').style.display = 'none';
|
||||||
document.getElementById('home').style.display = 'block';
|
document.getElementById('home').style.display = 'block';
|
||||||
|
|
||||||
WidevineExtractor.autoSelect();
|
// IMPORTANT: Faire autoSelect avant d'initialiser les event listeners
|
||||||
|
WidevineExtractor.autoSelect().then(() => {
|
||||||
|
EventManager.init();
|
||||||
MPDDetector.updateDropdowns();
|
MPDDetector.updateDropdowns();
|
||||||
StatusManager.show('Widevine content detected', 'success');
|
StatusManager.show('Widevine content detected and configured', 'success');
|
||||||
MPDDetector.updateBadgeFromPopup();
|
});
|
||||||
|
|
||||||
// Auto-refresh MPD detection periodically
|
// Auto-refresh MPD detection periodically
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
MPDDetector.updateDropdowns();
|
MPDDetector.updateDropdowns();
|
||||||
|
|||||||
Reference in New Issue
Block a user