Workaround für Episoden Seiten im Podlove Publisher

Im Podlove Publisher gibt es in den Experteneinstellungen die Möglichkeit Episoden Seiten zu aktivieren. Gemeint ist damit nicht anders als alle Podcastbeiträge auf einer zusätzlichen Seite anzeigen zu lassen. Seit der Version 2.7.0 des Podlove Publisher funktionierte dieses Feature bei mir nicht mehr.

Die Episoden Seite für alle veröffentlichenden Podcasts

Hintergrund war der Commit b4d9f14; hier gab es unter anderem eine Änderung in der Datei permalinks.php. Wenn nun die URL für die Episoden Seiten eingestellt wurde funktionierte diese nicht mehr. Stattdessen gab es nur die Meldung das die Seite nicht existiert. Als Workaround habe ich die permalinks.php-Datei wieder um folgenden Quellcode aus dem Commit erweitert:

// Add archive pages
if ( 'on' == \Podlove\get_setting( 'website', 'episode_archive' ) ) {
	$archive_slug = trim( \Podlove\get_setting( 'website', 'episode_archive_slug' ), '/' );

	$blog_prefix = \Podlove\get_blog_prefix();
	$blog_prefix = $blog_prefix ? trim( $blog_prefix, '/' ) . '/' : '';

	$wp_rewrite->add_rule( "{$blog_prefix}{$archive_slug}/?$", "index.php?post_type=podcast", 'top' );
	$wp_rewrite->add_rule( "{$blog_prefix}{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", 'index.php?post_type=podcast&paged=$matches[1]', 'top' );
}

Der Quellcode muss an das Ende der Funktion podlove_add_podcast_rewrite_rules angetragen werden. Damit funktioniert das Episoden Seiten-Feature bei mir wieder ohne Probleme. Natürlich muss dieses Prozess bei jedem Update des Podlove Publisher wiederholt werden.

Google Fonts herunterladen

Im Rahmen der DSGVO wird unter anderen Datensparsamkeit gefordert; bei vielen Webseiten ist dies leider nicht immer gegeben. So findet häufig die Einbindung der Google Fonts vor. Jetzt ist es per se nicht verwerflich Google Fonts zu nutzen, allerdings sollten diese Fonts lokal eingebunden werden. Wenn dies nicht geschieht und sie direkt über das CDN von Google eingebunden werden, überträgt man bei jedem Aufruf entsprechende Daten an Google.

fonts.google.com

Um dies zu unterbinden, sollte die gewünschte Schriftart heruntergeladen werden und anschließend lokal in die eigene Webseite bzw. das eigene Projekt eingebunden werden. Hierfür bietet sich der google-webfonts-helper von Mario Ranftl an. Dort wählt man die gewünschte Schriftart aus und kann diese anschließend herunterladen. Neben dem eigentlichen Font wird auch entsprechendes CSS zu Einbindung bereitgestellt. Genutzt werden kann der google-webfonts-helper nicht nur über die Weboberfläche, sondern auch über eine entsprechende REST-API.

Der google-webfonts-helper

Der Quelltext des google-webfonts-helper kann über GitHub bezogen werden. Lizenziert ist das Projekt unter der MIT Lizenz und damit freie Software.

Webseite auf Datenschutzprobleme abklopfen

Die meisten Webseiten in der heutigen Zeit beziehen ihre Daten nicht nur vom eigenen Server, sondern nutzen Dienste von Drittanbietern wie Google Fonts oder ähnliche. Daneben gibt es andere Probleme, welche im Zusammenhang mit dem Datenschutz (und der DSGVO) auf einer Webseite auftreten können. Überprüfen kann man seine Website mit dem Tool Webbkoll. Das unter webbkoll.dataskydd.net zu findende Werkzeug nimmt eine URL entgegen und analysiert diese.

Die Ergebnisse der Analyse

Analysiert werden unterschiedlichste datenschutzrelevante Dinge, wie Third-Party-Requests, Cookies, Referrer und bestimmte Einstellung welche für mehr Sicherheit sorgen. Die Analyse glänzt mit eine Fülle von Informationen über die jeweiligen Probleme sowie Vorschläge zu dessen Lösung. Webbkoll ist unter der MIT Lizenz lizenziert und damit freie Software. Der entsprechende Quelltext befindet sich auf GitHub.

Bibliothek zur Nutzung der MediaWiki-API unter .NET

Für ein kleines Projekt war ich auf der Suche nach einer halbwegs aktuellen Bibliothek zur Nutzung der MediaWiki-API. Wenn man sich auf der entsprechenden Seite in der MediaWiki-Dokumentation umschaut, wird man feststellen das einem nicht all zu viele Bibliotheken zur Verfügung stehen.

Die Auswahl an .NET Bibliotheken fällt eher mager aus

Genutzt habe ich letztendlich die Bibliothek Wiki Client Library, da diese halbwegs aktuell ist und mit meinen MediaWiki-Installationen problemlos zusammenarbeitet. Ein minimales Beispiel zur Bearbeitung einer Wiki-Seite sieht mit der Bibliothek wie folgt aus:

// Init
var client = new WikiClient
{
    ClientUserAgent = "WikiBot"
};

var site = new WikiSite(client, https://wiki.example.com/api.php);

// Login
await site.Initialization;
try
{
    await site.LoginAsync("username", "password");
}
catch (WikiClientException ex)
{
    Console.WriteLine(ex.Message);
}

// Edit site
var page = new WikiPage(site, buildingName);

// Load page
await page.RefreshAsync(PageQueryOptions.FetchContent);

// Update page
page.Content = "new content";
await page.UpdateContentAsync("New page created.", minor: false, bot: true);

// Logout
await site.LogoutAsync();

Über die Nutzung von Generatoren ist es möglich größere Bereiche wie z.B. Kategorien oder Suchergebnisse zu iterieren:

// Iterate all pages
var generator = new AllPagesGenerator(site)
{
    StartTitle = "A",
    NamespaceId = BuiltInNamespaces.Main,
    PaginationSize = 50
};

using (var enumerator = generator.EnumPagesAsync().GetEnumerator())
{
    int index = 0;

    while (await enumerator.MoveNext(CancellationToken.None))
    {
        // Debug output
        var page = enumerator.Current;
        Console.WriteLine("{0}: {1}", index, page);
        index++;

        // Load page
        await page.RefreshAsync(PageQueryOptions.FetchContent);

        // Update page
        page.Content = "new content";
        await page.UpdateContentAsync("Update page.", minor: true, bot: true);
    }
}

Der Quelltext der Wiki Client Library ist auf GitHub zu finden. Lizenziert ist er unter der Apache Licence 2 und damit freie Software.

Zertifikatsüberprüfung bei wget deaktivieren

Wenn man mittels wget etwas herunterlädt, kann es passieren das der Download mittels:

wget https://example.com

mit folgender Meldung abbricht:

FEHLER: Kann das Zertifikat von »example.com« nicht prüfen, ausgestellt von »/C=US/O=Let’s Encrypt/CN=Let’s Encrypt Authority X3«:. Die Authorität des Ausstellers des Zertifikates kann lokal nicht geprüft werden.

In diesem Fall schlägt die Zertifikatsprüfung fehl. Möchte man die entsprechende Ressourche trotzdem herunterladen, so kann man die Zertifikatsprüfung deaktivieren:

wget https://example.com --no-check-certificate

Über den Schalter –no-check-certificate wird die Prüfung deaktiviert und der Downloads kann durchgeführt werden.