Skip to content
Timo Cornelius Metzger edited this page Nov 12, 2020 · 10 revisions

Willkommen im Wiki für wdr-okr!

Die Module in diesem Repo sind Teil eines Projekts zur automatisierten Erfassung, Analyse und Visualisierung von Nutzungsdaten.

Das Gesamtprojekt nutzt dazu zwei Komonenten:

  • Der "Intelligence Layer": Ein System, das Daten aus unterschiedlichen Quellen (Instagram, Youtube, Spotify, Webserver-Statistiken, etc.) ausliest, in ein nutzbares Format bringt und in einer Datenbank bereitstellt
  • Die Daten-Visualisierung: Eine Reihe von Visualisierungen und Auswertungen in chart.io, die auf der Datenbank des Intelligence Layer basieren.

In diesem Repo befindet sich der Intelligence Layer.

Aufbau des Intelligence Layer

Der Intelligence Layer verbindet die folgenden drei Elemente:

  • Indiviuell angepasste Scraper für die einzelnen Datenquellen (Instagram, Youtube, Spotify, Webserver-Statistiken, etc.)
  • Datenbank-Modell zum Speichern der Daten
  • Django-basiertes CMS zum Anlegen und Editieren von Datenquellen

1. Scraper

Die Scraper des Intelligence Layer machen externe Datenquellen für die weitere Analyse nutzbar. Für jede Datenquelle existiert ein individuell angepasstes Scraping-Modul.

Im Moment nutzt der Intelligence Layer Daten für folgende Formate:

  • Instagram-Accounts (über die Quintly-API)
  • Youtube-Accounts (über die Quintly-API)
  • Podcasts (über die APIs von Spotify, Podstat, Mediatrend und Webtrekk)

2. Datenbank-Modell

Sämtliche Daten des Intelligence Layer befinden sich in einer SQLite-Datenbank. Die Tabellen der Datenbank lassen sich vier Gruppen zuordnen:

  1. Instagram TBD

  2. Youtube TBD

  3. Podcast

    Tabellen-Name: podcast

    Enthält Daten zu den einzelnen Podcast-Reihen.

    Name Typ NOT NULL Beschreibung
    id (primary key) integer X ID des Podcasts
    name varchar (200) X Name des Podcasts
    author varchar (200) X Autor des Podcasts
    image varchar (1024) X URL zum Coverbild des Podcasts
    description text X Beschreibungstext des Podcasts
    last_updated datetime X Datum der letzten Aktualisierung
    spotify_id varchar (32) Spotify ID, falls vorhanden
    feed_url varchar (1024) X URL des RSS-Feeds des Podcasts

    Tabellen-Name: podcast_data_spotify

    Enthält zusätzliche Daten zu den einzelnen Podcast-Reihen, die auf Spotify verfügbar sind.

    Name Typ NOT NULL Beschreibung
    id (primary key) integer X ID des Eintrags
    date date X Erstellungsdatum des Datenpunkts
    followers integer X Anzahl der Follower des Podcasts
    podcast_id (foreign key) integer X ID des Podcasts
    last_updated datetime X Datum der letzten Aktualisierung
    listeners integer X Hörer
    listeners_all_time integer X Hörer insgesamt
    listeners_monthly integer X Hörer pro Monat
    listeners_weekly integer X Hörer pro Woche

    Tabellen-Name: podcast_data_spotify_hourly

    Enthält Daten über die stündliche Nutzung der Podcast-Reihen, die auf Spotify verfügbar sind.

    Name Typ NOT NULL Beschreibung
    id (primary key) integer X ID des Eintrags
    date_time datetime X Datum und Uhrzeit
    starts integer X Anzahl der Starts
    streams integer X Anzahl der Streams
    podcast_id (foreign key) integer X ID des Podcasts

    Tabellen-Name: podcast_episode

    Enthält Daten zu den einzelnen Folgen der Podcasts

    Name Typ NOT NULL Beschreibung
    id (primary key) integer X ID des Eintrags
    title varchar(400) X Titel der einzelnen Folge
    description text X Beschreibungstext der Folge
    publication_date_time datetime X Datum der Veröffentlichung
    media varchar (1024) X URL der Mediendatei
    zmdb_id integer X ZMDB ID der Mediendatei
    podcast_id (foreign key) integer X ID des Podcasts
    duration bigint X Länge der Mediendatei
    last_updated datetime X Letzte Aktualisierung
    spotify_id varchar (32) Spotify ID, falls vorhanden
  4. Django-CMS und User-Management TBD

3. Django-basiertes CMS

Clone this wiki locally