/**
* New tabs functionality
*/
// Render series recommendation card (same design as anime recommendations)
function renderSeriesRecommendationCard(series) {
let coverImage = series.cover_image || '';
// Convert relative poster.php URLs to absolute URLs
if (coverImage.startsWith('/poster.php?url=')) {
// Extract the actual image URL from the poster.php URL
const actualUrl = coverImage.replace('/poster.php?url=', '');
coverImage = actualUrl;
}
// If it's a relative path, make it absolute using FS7 base URL
else if (coverImage.startsWith('/')) {
coverImage = 'https://fs7.lol' + coverImage;
}
return `
Série TV populaire
${escapeHtml(series.title)}
${coverImage ? `` : ''}
Série TV
`;
}
// Load series episodes (redirects to series tab with search)
async function loadSeriesEpisodes(url, title) {
// Switch to series tab
switchTab('series');
// Fill search input with the series title
const searchInput = document.getElementById('seriesSearchInput');
if (searchInput) {
searchInput.value = title;
// Trigger search
setTimeout(() => {
if (typeof handleSeriesSearch === 'function') {
handleSeriesSearch();
}
}, 300);
}
}
// Render series release card (same design as anime releases)
function renderSeriesReleaseCard(series) {
let coverImage = series.cover_image || '';
// Convert relative poster.php URLs to absolute URLs
if (coverImage.startsWith('/poster.php?url=')) {
// Extract the actual image URL from the poster.php URL
const actualUrl = coverImage.replace('/poster.php?url=', '');
coverImage = actualUrl;
}
// If it's a relative path, make it absolute using FS7 base URL
else if (coverImage.startsWith('/')) {
coverImage = 'https://fs7.lol' + coverImage;
}
return `
${escapeHtml(series.title)}
${coverImage ? `` : ''}
Série TV • Nouveau
`;
}
// Load series recommendations for the Series tab
async function loadSeriesRecommendations() {
try {
const container = document.getElementById('seriesRecommendationsList');
if (!container) return;
container.innerHTML = '
Chargement des recommandations séries...
';
// Search for popular series from all providers (including FS7)
const searchTerms = ['Breaking Bad', 'Game of Thrones', 'Stranger Things', 'The Walking Dead', 'The Last of Us', 'Wednesday', 'Squid Game', 'Peaky Blinders', 'House of the Dragon', 'The Witcher'];
const allSeries = [];
for (const term of searchTerms) {
try {
const response = await fetch(`${API_BASE}/series/search?q=${encodeURIComponent(term)}&lang=vf`);
const data = await response.json();
// Collect results from all providers, especially fs7
if (data.results) {
// Prioritize fs7 results
if (data.results['fs7'] && data.results['fs7'].length > 0) {
allSeries.push(...data.results['fs7'].slice(0, 2));
}
}
} catch (error) {
console.warn(`Error searching for ${term}:`, error);
}
if (allSeries.length >= 12) break; // Limit to 12 series total
}
if (allSeries.length > 0) {
container.innerHTML = `
';
}
}
// Load series releases for the Series tab
async function loadSeriesReleases() {
try {
const container = document.getElementById('seriesReleasesList');
if (!container) return;
container.innerHTML = '
Chargement des dernières séries TV...
';
// Search for popular series from all providers (including FS7)
const searchTerms = ['Breaking Bad', 'Game of Thrones', 'Stranger Things', 'The Walking Dead', 'The Last of Us', 'Wednesday', 'Squid Game', 'Peaky Blinders'];
const allSeries = [];
for (const term of searchTerms) {
try {
const response = await fetch(`${API_BASE}/series/search?q=${encodeURIComponent(term)}&lang=vf`);
const data = await response.json();
// Collect results from all providers, especially fs7
if (data.results) {
// Prioritize fs7 results
if (data.results['fs7'] && data.results['fs7'].length > 0) {
allSeries.push(...data.results['fs7'].slice(0, 2));
}
// Add results from other providers if needed
for (const [provider, results] of Object.entries(data.results)) {
if (provider !== 'fs7' && results.length > 0 && allSeries.length < 12) {
allSeries.push(...results.slice(0, 1));
}
}
}
} catch (error) {
console.warn(`Error searching for ${term}:`, error);
}
if (allSeries.length >= 12) break; // Limit to 12 series total
}
if (allSeries.length > 0) {
container.innerHTML = `
`;
}
}
}
// Show provider search (redirects to search tab)
function showProviderSearch(providerId) {
switchTab('search');
// Could pre-fill search with provider-specific content
}
// Show download info (explains how to download)
function showDownloadInfo() {
alert('Pour télécharger un fichier:\n\n1. Utilisez l\'onglet "Recherche"\n2. Entrez le nom de l\'anime/série\n3. Cliquez sur "Télécharger" sur un épisode\n\nOu bien:\n- Copiez directement un lien de téléchargement dans la barre d\'adresse de votre navigateur');
}
// Make additional functions available globally
window.showProviderSearch = showProviderSearch;
window.showDownloadInfo = showDownloadInfo;
// Initialize new tabs when they're first opened
document.addEventListener('DOMContentLoaded', () => {
// Wait for main.js to be loaded
setTimeout(() => {
// Override switchTab to load content when opening new tabs
const originalSwitchTab = window.switchTab;
if (originalSwitchTab) {
window.switchTab = function(tabName) {
// Call original switchTab first
originalSwitchTab(tabName);
// Load content for new tabs (after a small delay for DOM to update)
setTimeout(() => {
if (tabName === 'anime') {
if (!window.animeTabLoaded) {
loadAnimeReleases();
window.animeTabLoaded = true;
}
} else if (tabName === 'series') {
if (!window.seriesTabLoaded) {
loadSeriesRecommendations();
loadSeriesReleases();
window.seriesTabLoaded = true;
}
} else if (tabName === 'providers') {
if (!window.providersTabLoaded) {
loadProvidersGrid();
window.providersTabLoaded = true;
}
} else if (tabName === 'watchlist') {
if (!window.watchlistTabLoaded) {
if (typeof displayWatchlist === 'function') {
displayWatchlist();
}
window.watchlistTabLoaded = true;
if (typeof displayWatchlist === 'function') {
window.watchlistRefreshInterval = setInterval(() => { displayWatchlist(); }, 30000);
}
}
}
}, 100);
};
}
}, 500);
});
// Make functions available globally
window.loadSeriesEpisodes = loadSeriesEpisodes;
window.loadSeriesRecommendations = loadSeriesRecommendations;
window.loadAnimeReleases = loadAnimeReleases;
window.loadSeriesReleases = loadSeriesReleases;
window.loadProvidersGrid = loadProvidersGrid;