Conversation
…r/14_EUFactForce into 22-fetch-metadata-from-apis
cgoudet
left a comment
There was a problem hiding this comment.
Merci pour ce travail!
Il faudrait tout mettre en "prod" plutot qu'en exploration.
There was a problem hiding this comment.
Puisque l'on va les utiliser en prod, ces parsers doivent être dans la section prod et pas exploration du projet.
| return [article.pdf_url] if article else [] | ||
|
|
||
|
|
||
| if __name__ == "__main__": |
There was a problem hiding this comment.
A plutot mettre comme un test d'intégration mais mettre un skip pour qu'ils ne soit jamais lancé dans la CI.
| ARXIV_DOI_PREFIX = "10.48550/arXiv." | ||
|
|
||
|
|
||
| class ArxivMetadataParser(MetadataParser): |
There was a problem hiding this comment.
Je ne me souviens plus des discussions. PAs de téléchargement possible sur pdf sur arxiv?
There was a problem hiding this comment.
Téléchargement possible sur Arxiv mais pas sur Pubmed à première vue
| return False | ||
| try: | ||
| for pdf_url in pdf_urls: | ||
| response = requests.get(pdf_url, timeout=30) |
There was a problem hiding this comment.
Pour un poil plus de clarté, peut être créer une fonction dédié pour télécharger 1 fichier.
There was a problem hiding this comment.
Quand tu dis une fonction dédiée, tu parles d'une sous-fonction de cette fonction qui s'occupe uniquement du téléchargement en tant que tel (pour que la fonction soit moins complexe), ou de faire une fonction spécifique pour chaque classe fille ?
| if not response.content.startswith(b"%PDF"): | ||
| print(f"Content at {pdf_url} is not a valid PDF (possibly a paywall page).") | ||
| continue | ||
| with open(output_path, "wb") as f: |
There was a problem hiding this comment.
Si tu as plusieurs fichiers, ils vont tous s'écraser mutuellement et seul le dernier sera disponible.
There was a problem hiding this comment.
Dans la fonction, on télécharge uniquement le pdf de la première url qui n'est pas une interface de paiement. Ca peut cependant s'écraser entre les différentes API, mais dans l'idée on ne veut qu'un seul pdf par DOI non ?
| return True | ||
| return False | ||
| except Exception as e: | ||
| print(f"Download failed: {e}") |
There was a problem hiding this comment.
logging à la place de print.
| return [] | ||
|
|
||
|
|
||
| if __name__ == "__main__": |
There was a problem hiding this comment.
Pareil, mettre ca dans un TU
| return {"found": bool(sources), "sources": sources} | merged | ||
|
|
||
|
|
||
| if __name__ == "__main__": |
There was a problem hiding this comment.
Ici ce serait mieux d'intégrer ca directement dans fetch_file_and_metadata de services.py
| ## Usage | ||
|
|
||
| ```bash | ||
| python3 main.py --doi 10.1128/mbio.01735-25 |
There was a problem hiding this comment.
C'est une méthode d'exploration pour l'exploration, pas pour la prod qui doit utiliser l'API
Script that retrieves metadata for a specific article using various APIs based on its DOI and downloads its PDF if it is open access.