jherve преди 1 година
родител
ревизия
6e46b9c2c0
променени са 2 файла, в които са добавени 44 реда и са изтрити 0 реда
  1. 4 0
      src/de_quoi_parle_le_monde/medias/__init__.py
  2. 40 0
      src/de_quoi_parle_le_monde/medias/bfmtv.py

+ 4 - 0
src/de_quoi_parle_le_monde/medias/__init__.py

@@ -3,6 +3,7 @@ from de_quoi_parle_le_monde.article import ArchiveCollection
 from .france_tv_info import FranceTvInfoMainPage
 from .le_monde import LeMondeMainPage
 from .cnews import CNewsMainPage
+from .bfmtv import BfmTvMainPage
 
 
 media_collection = {
@@ -19,5 +20,8 @@ media_collection = {
         ArchiveCollection(
             name="cnews", url="https://cnews.fr", MainPageClass=CNewsMainPage
         ),
+        ArchiveCollection(
+            name="bfmtv", url="https://bfmtv.com", MainPageClass=BfmTvMainPage
+        ),
     ]
 }

+ 40 - 0
src/de_quoi_parle_le_monde/medias/bfmtv.py

@@ -0,0 +1,40 @@
+from de_quoi_parle_le_monde.article import (
+    FeaturedArticleSnapshot,
+    TopArticle,
+    MainArticle,
+    MainPage,
+    to_text,
+)
+
+
+class BfmTvFeaturedArticleSnapshot(FeaturedArticleSnapshot):
+    ...
+
+
+class BfmTvMainPage(MainPage):
+    @staticmethod
+    def get_top_articles(soup):
+        all_articles = soup.select("section[id*='top_contenus'] li > a")
+        return [
+            TopArticle(
+                article=BfmTvFeaturedArticleSnapshot.create(
+                    title=to_text(a, "h3"), url=a["href"]
+                ),
+                rank=idx + 1,
+            )
+            for idx, a in enumerate(all_articles)
+        ]
+
+    @staticmethod
+    def get_main_article(soup):
+        def to_href(soup):
+            link = soup.select("a")[0]
+            return link["href"]
+
+        [main] = soup.select("article.une_item")
+        return MainArticle(
+            article=BfmTvFeaturedArticleSnapshot.create(
+                title=to_text(main, "h2.title_une_item"),
+                url=to_href(main),
+            )
+        )