Closed Astest12 closed 3 weeks ago
Oui, ce serait possible! Une contribution est bienvenue!
Les articles du site web ne semblent pas accessibles (seulement référencés). Par contre le magazine est lui bien disponible en pdf, et il serait possible d'ajouter le bouton lire sur europresse pour chaque numéro: https://www.telerama.fr/kiosque/telerama
Première ébauche, avec l'aide de ChatGPT, ne pas prendre en compte le monthNames.
En collant dans la console.
Évidemment il faut modifier le link tout en bas du JS pour correspondre à votre Europresse.
Ceci n'est qu'à but de test, je ne suis pas sûr de comment intégrer ça au code vu que ça fonctionne différemment et que ça ne "consume" rien. Et aussi, car j'ai un peu la flemme.
Globalement aucune vérification n'est faite, ça ajoute juste un lien avec la date détectée + 3 jours, parce que sur Europresse, c'est systématiquement publié 3 jours après. Par chance ça nous permet d'avoir un lien statique facilement devinable.
Bref c'est un PoC qu'il faudrait travailler pour l'inclure.
// Function to format date to "YYYY-MM-DD"
function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
// Function to add days to a given date
function addDays(date, days) {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
// Get articles
const articles = document.querySelectorAll('#liste-magazine-telerama article');
console.log(`Found ${articles.length} articles.`);
// Month names mapping
const monthNames = {
'Janvier': 0, 'Jan.': 0, 'Janv.': 0, 'Janv': 0,
'Février': 1, 'Fév.': 1, 'Févr.': 1, 'Févr': 1,
'Mars': 2, 'Mar.': 2, 'Mar': 2,
'Avril': 3, 'Avr.': 3, 'Avr': 3,
'Mai': 4, 'Mai.': 4,
'Juin': 5, 'Juin.': 5,
'Juillet': 6, 'Juil.': 6, 'Juil': 6,
'Août': 7,
'Septembre': 8, 'Sep.': 8, 'Sept.': 8, 'Sept': 8,
'Octobre': 9, 'Oct.': 9, 'Oct': 9,
'Novembre': 10, 'Nov.': 10, 'Nov': 10,
'Décembre': 11, 'Déc.': 11, 'Déc': 11
};
// Process each article
articles.forEach(article => {
// Extract the date text
const dateText = article.querySelector('p').textContent.trim();
console.log(`Raw date text: "${dateText}"`);
// Parse the date
const [dayStr, monthName, yearStr] = dateText.split(' ');
// Trim and remove any extra spaces or periods
const cleanMonthName = monthName.trim().replace(/\./g, '');
console.log(`Parsed - Day: ${dayStr}, Month Name: ${monthName} (Cleaned: ${cleanMonthName}), Year: ${yearStr}`);
// Convert day and year to integers
const day = parseInt(dayStr, 10);
const year = parseInt(yearStr, 10);
const month = monthNames[cleanMonthName];
if (month === undefined) {
console.error(`Unknown month name: "${monthName}" (Cleaned: "${cleanMonthName}")`);
return;
}
console.log(`Month number: ${month}`);
// Create date object in a robust way
const articleDate = new Date(year, month, day);
console.log(`Article date: ${articleDate}`);
// Check if the date object is valid
if (isNaN(articleDate.getTime())) {
console.error(`Invalid date: ${year}-${month + 1}-${day}`);
return;
}
// Calculate the new date + 3 days
const newDate = addDays(articleDate, 3);
const formattedDate = formatDate(newDate);
console.log(`New date + 3 days: ${formattedDate}`);
// Generate the link
const link = `https://nouveau-europresse-com.acces-distant.bnu.fr/PDF/EditionDate?sourceCode=TA_P&singleDate=${formattedDate}&useFuzzyDate=false`;
console.log(`Generated link: ${link}`);
// Create a new anchor element
const linkElement = document.createElement('a');
linkElement.href = link;
linkElement.target = '_blank'; // Open the link in a new tab
linkElement.textContent = "Lire sur Europresse";
// Inject the link into the article
article.appendChild(linkElement);
});
Le POC fonctionne très bien :)
Bonjour, serait-il possible d’ajouter le site internet de Télérama présent dans europresse? https://www.telerama.fr Merci à vous!