Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Presse nationale] Ajouter Télérama #216

Closed
Astest12 opened this issue Mar 28, 2024 · 4 comments · Fixed by #255
Closed

[Presse nationale] Ajouter Télérama #216

Astest12 opened this issue Mar 28, 2024 · 4 comments · Fixed by #255

Comments

@Astest12
Copy link

Bonjour,
serait-il possible d’ajouter le site internet de Télérama présent dans europresse?
https://www.telerama.fr
Merci à vous!

@lovasoa
Copy link
Owner

lovasoa commented Mar 28, 2024

Oui, ce serait possible! Une contribution est bienvenue!

@Altonss
Copy link
Contributor

Altonss commented Apr 5, 2024

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

@Altonss Altonss mentioned this issue Aug 30, 2024
@Write
Copy link
Collaborator

Write commented Sep 1, 2024

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);
});

@Altonss
Copy link
Contributor

Altonss commented Sep 2, 2024

Le POC fonctionne très bien :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants