marians / offeneskoeln

Software backend of offeneskoeln.de
16 stars 9 forks source link

Kommentare RSS-Feeds anbieten #73

Open marians opened 11 years ago

marians commented 11 years ago

Die Kommentare sollten abonniert werden können, wenigstens als RSS.

Hier ist eine Sammlung an API-Aufrufen zu Disqus:

Alle Threads finden:

https://disqus.com/api/3.0/forums/listThreads.json?forum=offeneskoeln

Darin kann man anhand des "link" attributes die Threads im Blog von den Dokumenten-Detailseiten unterscheiden. Zu jeder Kommentar-Detailseite wird darin auch ein eigener RSS-Feed angeboten. Leider muss man alle Threads abrufen, um die Feeds zu finden.

Alle Posts finden:

https://disqus.com/api/3.0/forums/listPosts.json?forum=offeneskoeln

Da steht zu jedem Post ziemlich viel Kram drin:

{
  "isJuliaFlagged": true,
  "forum": "offeneskoeln",
  "parent": null,
  "author": {
    "username": "facebook-1557258278",
    "about": "",
    "name": "Dieter Maretzky",
    "url": "http://www.facebook.com/dieter.maretzky",
    "isAnonymous": false,
    "rep": 1.232124,
    "profileUrl": "http://disqus.com/facebook-1557258278/",
    "emailHash": "db9a2f24abae20947f2bc3446dc05358",
    "reputation": 1.232124,
    "location": "",
    "isPrimary": true,
    "joinedAt": "2013-02-04T11:28:10",
    "id": "42881561",
    "avatar": {
      "small": {
        "permalink": "http://disqus.com/api/users/avatars/facebook-1557258278.jpg",
        "cache": "http://mediacdn.disqus.com/uploads/users/4288/1561/avatar32.jpg?1359977309"
      },
      "isCustom": false,
      "permalink": "http://disqus.com/api/users/avatars/facebook-1557258278.jpg",
      "cache": "http://mediacdn.disqus.com/uploads/users/4288/1561/avatar92.jpg?1359977309",
      "large": {
        "permalink": "http://disqus.com/api/users/avatars/facebook-1557258278.jpg",
        "cache": "http://mediacdn.disqus.com/uploads/users/4288/1561/avatar92.jpg?1359977309"
      }
    }
  },
  "media": [],
  "points": 0,
  "isFlagged": false,
  "dislikes": 0,
  "raw_message": "Nach dem Finanzausschuss wurde offensichtlich das Projekt nicht weiter betrieben, obwohl im Gro\u00dfraum Godorf ein Mangel an Spielpl\u00e4tzen besteht, wie es in der Beschlussfassung heisst. Das muss dringend, ja vordringlich, auf den Weg gebracht werden.\nDieter Maretzky, B\u00fcrgervereinigung Rodenkirchen e.V.",
  "isApproved": true,
  "isSpam": false,
  "thread": "1064369077",
  "numReports": 0,
  "createdAt": "2013-02-04T11:28:28",
  "isEdited": false,
  "message": "<p>Nach dem Finanzausschuss wurde offensichtlich das Projekt nicht weiter betrieben, obwohl im Gro\u00dfraum Godorf ein Mangel an Spielpl\u00e4tzen besteht, wie es in der Beschlussfassung heisst. Das muss dringend, ja vordringlich, auf den Weg gebracht werden.<br>Dieter Maretzky, B\u00fcrgervereinigung Rodenkirchen e.V.</p>",
  "isHighlighted": false,
  "id": "788005454",
  "isDeleted": false,
  "likes": 0
}

Über die Eigenschaft thread kann man mehr Details zu dem Beitrag abrufen:

https://disqus.com/api/3.0/forums/threads/details.json?thread=1064369077

{
  "code": 0,
  "response": {
    "feed": "http://offeneskoeln.disqus.com/sanierung_und_umgestaltung_des_spielplatzes_katharinenstrae_in_koln_godorf/latest.rss",
    "reactions": 0,
    "canModerate": false,
    "identifiers": [],
    "forum": "offeneskoeln",
    "author": "21466519",
    "userScore": 0,
    "isDeleted": false,
    "title": "Sanierung und Umgestaltung des Spielplatzes Katharinenstra\u00dfe in K\u00f6ln-Godorf",
    "dislikes": 0,
    "id": "1064369077",
    "isClosed": false,
    "posts": 1,
    "userSubscription": false,
    "link": "http://offeneskoeln.de/dokumente/0197-2010/",
    "likes": 0,
    "category": "1266245",
    "message": "",
    "canPost": true,
    "slug": "sanierung_und_umgestaltung_des_spielplatzes_katharinenstrae_in_koln_godorf",
    "createdAt": "2013-02-04T11:20:52"
  }
}

Script

Daraus sollte man ein Script bauen können, dass einen RSS-Feed für alle Kommentare auf der Plattform zusammen stellt und als statische Datei speichert.

Dabei sollte aus Gründen der Performance und API-Limits von Disqus alles, was geht, gecached werden. Sprich: Die Thread-Details sollten wir selbst nach dem ersten Abruf in der Datenbank hinterlegen, damit wir im Normalfall nur die Posts abrufen müssen.

Sowas kann als cronjob minütlich laufen.

Die Ausgabe sollte nur überschrieben werden, wenn sich tatsächlich was geändert hat.

marians commented 11 years ago

Hier ist ein Python-Client für die API von Disqus:

https://github.com/disqus/disqus-python