2-klick Buttons sozialer Netzwerke

Jeder kennt sie, die Tweet-, Like- und +1-Knöpfe, die sich auf fast jeder Webseite tummeln. Vielleicht weniger bekannt, aber bereits durch das Anzeigen dieser „Buttons“, weiß das entsprechende soziale Netzwerk, auf welchen Seiten man sich so rumtreibt. Zumindest solange man gerade eingeloggt ist und die entsprechenden Cookies aktiv sind.

Um den Besuchern ein wenig mehr Privatsphäre zu gönnen, hat die c’t das Projekt 2-Klick social share privacy ins Leben gerufen. Der Besucher muss nun aktiv den jeweiligen Knopf freischalten, um ihn zu benutzen. Alternativ kann sich der Besucher auch entscheiden, dass die Knöpfe immer aktiv sein sollen, ohne dass er sie extra freischaltet. Dafür muss er sich aber bewusst entscheiden.

Lange Rede, kurzer Sinn – die Idee gefiel mir und ich wollte sie auf meiner Webseite umsetzen. Nun gibt es zwar ein, zwei Plugins, die das bereits machen, aber sie haben sich nicht so schön mit dem von mir werwendeten Theme – PressWork – integriert. Für PressWork gibt es bereits eine schöne Anleitung, wie man die Social Media Buttons integriert, so dass sie hübsch aussehen. Nämlich nicht ans Ende des Beitrags, sondern direkt darunter. Leider wurde das Projekt unlängst eingestellt und – noch schlimmer – auch die Webseite zeigt nur noch genau diese Information.

Zum Glück gibt es aber das Webarchiv und es gibt somit auch eine Kopie der PressWork Dokumentation dort zu finden. Somit hatte ich also alle Informationen, die ich brauchte und entschied mich als Grundlage das Plugin wp-socialshareprivacy zu nehmen. An sich hätte das schon genügt für die Anzeige, aber ich wollte ja eine andere Position. Glücklicherweise besteht der eigentliche HTML-Code für die Anzeige nur aus der Zeile:

Diese habe ich in der wp-socialprivacy.php auskommentiert. Somit wird zwar durch wp-socialshareprivacy der ganze Code eingebunden und man kann auch die komplette Konfiguration bequem vornehmen, die Anzeige passiert aber woanders.

        function add_content($content = '') {
                global $Default_options;

                $setting_options = get_option('wpssp_options' );
                if ( $setting_options ) {
                        foreach ( array_keys($Default_options[services]) as $service ) {
                                if ( !isset($setting_options['services_' . $service . '_status']) ) {
                                        $setting_options['services_' . $service . '_status'] = 'off';
                                }
                        }
                        foreach ( $setting_options as $key => $value) {
                                if ( isset($value) && strlen($value) ) {
                                        if ( preg_match('/^services_(facebook|twitter|gplus)_(.*)$/', $key, $matches ) ) {
                                                $Default_options[services][$matches[1]][$matches[2]] = $value;
                                        }
                                        else {
                                                $Default_options[$key] = $value;
                                        }
                                }
                        }
                }
                $id = 'socialshareprivacy_' . md5(get_permalink());
                // $content .= '
'; $content .= " "; $content .= ''; return $content; }

Nun zum PressWork Teil. Zu Allererst sollte man in WordPress nicht im originalen Theme ändern, sondern man erstellt ein Child-Theme. Das hat den Vorteil, dass Änderungen durch Updates nicht überschrieben werden. Nun kann man sich streiten, ob das für PressWork noch nötig ist, da es ja vermutlich keine Updates mehr gibt.

Für PressWork gibt es sogar eine eigene Anleitung. Im Prinzip muss man aber nur in wp-content/themes neben den presswork Ordner einen eigenen Ordner anlegen. Darin legt man eine Datei style.css, die minimal folgenden Inhalt hat:

/*
 Theme Name: PressWork - Child theme
 Theme URI: http://presswork.me
 Description: A basic child theme for PressWork
 Author: c.bavota
 Author URI: http://bavotasan.com/
 Template: presswork
 Version: 0.1
 */

@import url("../presswork/style.css");

Dieses Child Theme wird jetzt in WordPress unter Themes angezeigt und kann ausgewählt werden. Danach legt man nach der Anleitung eine actions.php im Ordner an und realisiert damit die Anzeige der Buttons:

< ?php

function share_buts(){
	$id = 'socialshareprivacy_' . md5(get_permalink());
	$content .= '
'; echo $content; } add_action('pw_single_post_bottom', 'share_buts'); ?>

Im Anschluss daran sind die Buttons da wo sie sein sollten, allerdings passt das Layout noch nicht ganz, da das CSS der Buttons nicht ganz sauber ist und teilweise von PressWork Einstellungen überschrieben wird. Dies könnte man im Plugin ändern, welches ja eh schon bearbeitet ist. Aber um für eventuelle Updates gerüstet zu sein, trägt man die entsprechenden Optionen lieber am Ende der style.css des Child-Theme ein:

.social_share_privacy_area ul {
	list-style-type: none;
}
.social_share_privacy_area li {
  clear: none;
	list-style-type: none;
}

Das Ergebnis kann man hier direkt unter dem Artikel bewundern und auch gern ausprobieren… 😉

XML auf der Kommandozeile parsen

Den heutigen Abend habe ich unter Anderem damit zugebracht, von der arte Webseite eine Anzahl Videos herunterladen zu wollen. Normalerweise nehme ich dazu MediathekView, aber diese Videos waren leider nicht drin. Nach einiger Suche habe ich dann auch die Playlist gefunden – eine XML Datei, in der sowohl die niedrige als auch die hohe Qualität der Filme vermerkt waren.

      

Mir ging es jetzt also darum, die einzelnen HD-URLs rauszuparsen. Da ich auf Arbeit gerade viel mit Microsoft PowerShell hantiere, fiel mir ein, wie einfach das jetzt wäre:

$videos = [XML] (Get-Content -Path video-playlist-46.xml)
$urls = Select-XML -Content $videos -XPath "//urlHd" | % {$_.node.InnerXML}

Den Umweg über Get-Content könnte man sich sogar noch sparen …

Tja, nun habe ich zu Hause aber Linux. Die üblichen Verdächtigen habe ich dann gleich mal drauf angesetzt.
grep liefert die Tags mit. awk – zumindest so, wie ich es auf die Schnelle geschrieben habe, liefert auch die ganze Zeile, also mit Tags. Bevor ich weiter mit egrep versucht habe, bzw. meine Perl Kenntnisse ausgegraben habe, befragte ich die große Datenhalde.

Rausgekommen sind zwei Erkenntnisse:

Das Tool xml_grep liefert dann auch schnell die gewünschten Ergebnisse:

xml_grep urlHd video-playlist-46.xml --text_only

Am Runterladen der Videos bin ich trotzdem gescheitert, flvstreamer fehlt wohl noch eine Option, dass es klappt. So findet er keinen Mediastream…

App für teilAuto

Die Tage flatterte eine Neuigkeit von teilAuto ins Haus: Es gibt eine neue App, WebApp. Diese soll nicht nur die bisherige mobile Webseite ersetzen, sondern auch die aktuelle iPhone App.

Eine WebApp? teilAuto hat also Geld in die Hand genommen und eine neue mobile Webseite programmiert bw. programmieren lassen. Löblich ist, dass diesmal nicht nur auf das iPhone geschielt wurde, wie bei der letzten App, sondern auf die ganze Bandbreite der mobilen Geräte. Warum die mobile Webseite nun zur WebApp mutiert, kann wohl nur das Marketing beantworten – vermutlich ist „mobile Webseite“ nicht sexy genug.

Was mir aber völlig schleierhaft ist, warum teilAuto überhaupt selbst entwickeln muss. Offiziell gab es bisher nur die iPhone App. Aber, wer genau hingeschaut hat, der hat gesehen, dass teilAuto sowieso die Infrastruktur von flinkster nutzt. Ich hatte es vor Ewigkeiten ausprobiert – die Android flinkster App funktioniert gut auch für teilAuto. Hätte man die nicht einfach besser vermarkten können? Evtl. auch von den flinkster Entwicklern eine umgelabelte Version erhalten können?

Verstehe ich nicht – als ob das Geld nicht auch anders hätte ausgegeben werden können. Zum Beispiel in die Weiterentwicklung der flinkster App. Mir fallen da spontan der Verfügbarkeitskalender, der nur ein heruntergeladenes Bild ist und ein fehlendes Feld für den Rechnungsbetreff ein.

Neues Jahr, neue Seite, …

… neuer Name, neue Software, neues Glück?

Letzteres wird sich noch zeigen. Auf jeden Fall wird es auf dieser Seite keine alten Inhalte geben. Abgesehen vielleicht von zwei oder drei der am meisten gelesenen Artikel, bzw. Sachen, die mir sehr am Herzen lagen und immer noch liegen. Außerdem werde ich hier wohl nicht allein bleiben, auch wenn das noch nicht ganz sicher ist.

Sicher ist, dass es wieder jede Menge Computerkram geben wird, ein wenig Whippet- und Hundekram und all die anderen Sachen, die mich so bewegen.