Ver código fonte

Use snapshot_apparitions to display more info from similar articles

jherve 1 ano atrás
pai
commit
ee722d0de4

+ 4 - 6
src/de_quoi_parle_le_monde/storage.py

@@ -362,21 +362,19 @@ class Storage:
 
             return [self._from_row(r, "featured_article_snapshots") for r in rows]
 
-    async def list_featured_article_snapshots(
-        self, featured_article_snapshot_ids: list[int]
-    ):
+    async def list_snapshot_apparitions(self, featured_article_snapshot_ids: list[int]):
         async with self.conn as conn:
             placeholders = ", ".join(["?" for _ in featured_article_snapshot_ids])
             rows = await conn.execute_fetchall(
                 f"""
                     SELECT *
-                    FROM featured_article_snapshots
-                    WHERE id IN ({placeholders})
+                    FROM snapshot_apparitions
+                    WHERE featured_article_snapshot_id IN ({placeholders})
                 """,
                 featured_article_snapshot_ids,
             )
 
-            return [self._from_row(r, "featured_article_snapshots") for r in rows]
+            return [self._from_row(r, "snapshot_apparitions") for r in rows]
 
     @classmethod
     def _from_row(cls, r, table_or_view: str):

+ 8 - 3
src/de_quoi_parle_le_monde/web.py

@@ -56,9 +56,10 @@ async def site_main_article_snapshot(
         a for a in main_articles if a["site_id"] == id and a["time_diff"] != 0
     ]
 
+    focused_article_id = focused_article["featured_article_snapshot_id"]
     try:
         [(_, similar)] = await sim_index.search(
-            [focused_article["featured_article_snapshot_id"]],
+            [focused_article_id],
             20,
             lambda s: s < 1.0 and s >= 0.5,
         )
@@ -66,12 +67,16 @@ async def site_main_article_snapshot(
         similar = []
 
     similar_by_id = {s[0]: s[1] for s in similar}
-    similar_articles = await storage.list_featured_article_snapshots(
+    similar_articles = await storage.list_snapshot_apparitions(
         list(similar_by_id.keys())
     )
     # A list of articles and score, sorted by descending score
     similar_articles_and_score = sorted(
-        [(a, similar_by_id[a["id"]]) for a in similar_articles],
+        [
+            (a, similar_by_id[a["featured_article_snapshot_id"]])
+            for a in similar_articles
+            if a["featured_article_snapshot_id"] != focused_article_id
+        ],
         key=lambda a: a[1],
         reverse=True,
     )

+ 7 - 1
templates/site_main_article_detail.html

@@ -26,7 +26,13 @@
             <p><a href="{{ focused['url_article'] }}">Lien</a></p>
             <ul>
                 {% for s in similar %}
-                    <li>{{ s[1] }} {{ s[0]["title"] }}</li>
+                    <li>{{ s[1] | round(3) }}
+                        {% if s[0]["is_main"] %}
+                            {{ article(s[0]) }}
+                        {% else %}
+                            {{ s[0]["title"] }}
+                        {% endif %}
+                    </li>
                 {% endfor %}
             </ul>
         </div>