Sie haben Spam – Lovely Spam

19. Juni 2016 um 20:05 | Veröffentlicht in Internet, Vermischtes | 5 Kommentare

Ab und zu mache ich mir den Spaß in offensichtliche Spam-Mails zu schauen um zu erfahren auf welch merwürdige Texte immer noch genug Menschen hereinfallen, dass sich diese Industrie erhalten kann.

Kurz zum Geschäftsmodell eines Spamers: Werbe-Mails werden in großer Zahl versendet, meist im 2-stelligen Millionenbereich. Die eMail-Adressen der Empfänger kommen entweder aus dem Datenhandel oder werden zufällig generiert. Die Spam-Mails werden normalerweise über gehackte Server, gephischte eMail-Konten oder Botnetze verschickt, wodurch sich die Kosten der Aktion für den Sender sehr gering halten. Durch die hohe Anzahl an Empfängern sorgt die Statistik dafür, dass genug Empfänger reagieren und die angepriesenen Services oder Produkte kaufen. Ein Teil des Geldes geht als Kommission an den Spamer.

Der Betreff

Was macht eine Spam-Mail offensichtlich? Oftmals bereits die Eigenschaften des Betreffs. Der Betreff einer eMail hat den Sinn den Inhalt oder den Zweck der eMail zu beschreiben. Anhand des Betreffs kann der Empfänger entscheiden ob die eMail im Moment wichtig ist oder in welchen Ordner sie gespeichert werden soll.

Der Betreff ist also das erste Merkmal einer eMail mit welchem der Empfänger in Berührung kommt. Um zu erreichen, dass der Nutzer die Schwelle nimmt die eMail tatsächlich zu lesen wird der Betreff normalerweise (versucht) interessant gehalten. Oftmals fehlt es hier jedoch an Subtilität. Viele Spam-Mails beginnen ihren Betreff mit Re: um den Eindruck zu erwecken, dass es sich um eine Antwort auf eine eMail handelt, welche der Empfänger zuvor selbst versendet hat. Viele wenig subtile Betreffzeilen beinhalten Begriffe wie „Gewinn“, „Sex“ und „Gratis“. Die Zielgruppe riecht nach: 30-40 Jahre, männlich, ohne Beziehung.

Manche Spam-Mails gehen ins gegenteilige Extrem und setzen statt auf eindeutige Begriffe auf generische Worte oder vage Formulierungen. Dazu zählen unverfängliche Worte wie „Hello“, „Anfrage“ oder „Erinnerung“ sowie meist nicht vollständige Sätze wie „Wir melden Ihnen“.

In beiden Fällen sollte dem Rest der eMail Skepsis entgegengebracht werden.

Der Absender

Das nächste Merkmal einer eMail, welches beäugt werden sollte ist der Absender. Ist der Name des Absenders nicht bekannt ist erneut Skepsis angebracht. Auf jeden Fall lohnt sich eine Analyse der eMail-Adresse des Absenders. Hier eine kurze Aufstellung von Kuriosen Möglichkeiten, die mir selbst schon zugegangen sind:

  • Ewig lange Domainnamen:
    • Margarete.****@mosttreasuredonlinelegend.cn
  • Eine IP-Adresse als Domain:
    • eindeutig.spam@165.12.23.95
  • Die eigene eMail-Adresse als Absender
  • Die eMail-Adresse des Absenders ist nicht angegeben

Der letzte Punkt wird häufig verwendet für Phishing oder als Möglichkeit für den Spamer um zu prüfen, dass die erbeutete eMail-Adresse tatsächlich existiert. All diese möglichen Absender-Adressen sind noch kein 100%iges Merkmal für Spam. Die Wahrscheinlichkeit ist aber sehr hoch.

Die Antwort-Adresse

Oftmals, wenn der Spamer auf eine Reaktion hofft wird eine zusätzliche Antwort-Adresse in der eMail angegeben. Diese ist normalerweise nicht die Adresse des Absenders, welche entweder dem Adressbuch des Empfängers entnommen oder zufällig generiert wurde. Manchmal ist es auch einfach die echte Adresse des gekaperten eMail-Accounts. In diesen Fällen will der Spamer nicht 30 Mio verschiedene eMail-Konten nach potentiellen Antworten abklappern sondern richtet ein neues Konto ein und trägt dessen Adresse als Antwort-Adresse ein. Natürlich kann es legitime Fälle geben, bei welchen separate Antwort-Adressen verwendet werden. Sind Absender und Antwort-Adresse jedoch signifikant unterschiedlich ist auch hier die Wahrscheinlichkeit für Spam sehr hoch.

Die Empfänger-Adresse

Ja, sogar an der eMail-Adresse des Empfängers kann man manchmal Spam erkennen. Manchmal ist die Adresse einfach leer um zu verschleiern an welche der potentiell mehreren Adressen die eMail geschickt wurde. Manchmal enthält die Empfänger-Adresse irgendeine Zeichenkette, die vermutlich zufällig zusammengesetzt wurde. Die abstruseste Variante ist jedoch, wenn als Empfänger-Adresse einfach der Absender eingetragen wird. Zum Technischen: Die angezeigten Adressen beschafft sich das eMail-Programm aus den Meta-Daten der eMail. Diese lassen sich mit einfachen Mitteln manipulieren. Dadurch funkioniert der Versand, die Details werden aber vor dem Empfänger versteckt.

Der Inhalt

Wenn man es bis hierher geschafft hat, ohne dass bei einem der vorherigen Punkte bereits die Alarmglocken in verschiedenen Tonhöhen erklungen sind, dann ist die Chance auf Spam bereits sehr gering. Die meisten Spam-eMails erfüllen mehrere der bereits angeführten Punkte. Spam der sich dermaßen gut verkleidet ist selten und meist gesellt sich der Inhalt zu den Kuriositäten hinzu.

  • Wenn sofort für irgendwelche Produkte geworben wird: Spam.
  • Wenn der Prinz von Nigeria/ein Banker mit Gewissen/ein todkranker superreicher/seine todkranke Witwe beim zufällig ausgesuchten Empfänger um Hilfe ansuchen große Mengen Geld zu verschieben und dazu ein existierendes Girokonto brauchen: Spam (oder eher Scam, da es hier speziell darum geht, dass der Empfänger ausgebeutet werden soll).
  • Wenn der Text wirkt als wäre er durch Google Translate gejagt worden: 99%ig Spam.
  • Wenn irgendeine Bank (auch die scheinbar eigene) ersucht man solle doch seine Kontodaten auf einer verlinkten Seite preisgeben: Spam (konkret: Phishing).
  • Merkwürdige Punktuation: 90%ig Spam.
  • Sich in verschiedenen Teilen des Inhaltes wiederholende Aussagen: 90%ig Spam.

Ein konkretes Beispiel

Heute Nacht habe ich ein ziemlich eindeutiges Beispiel an Spam bekommen. Es gehört zur Kategorie „Romance Scam“ und weist mehrere der aufgeführten Punkte auf.

Der Betreff

HELLO

Ein generischer Begriff, der den Empfänger verdutzen aber nicht abschrecken soll. Check.

Der Absender

Janice Williams <oliver.*******@**.***>

Die Adresse habe ich wegen Datenschutz teilweise anonymisiert, da sie echt zu sein scheint (vermutlich einem gehackten Konto entnommen). Der angegebene Name und die eMail-Adresse haben aber offensichtlich nichts gemeinsam. Check.

Die Antwort-Adresse

Janice Williams <janicewilliams122@*****.***>

Datenschutz ist ein Recht und gilt auch für schlechte Menschen. Eindeutig eine für diese Spamwelle eingerichtete Adresse. Check.

Die Empfänger-Adresse

… wurde einfach leer gelassen. Durch eine Analyse des Quelltextes der eMail konnte ich herausfinden an welches meiner Konten die eMail ging. Check.

Der Inhalt

How are you doing and how is your day going? I am Janice Williams, Am looking for atrustworthy man who believes in true love,I am single never been marriedbefore,I am looking for a mature man who can understand life with me .I am28Years old,5.8ft tall. and 58kg.Blond hair,Blue eye and milky white skin and big natural breasts,I don't smoke and i don't drink alcoholic.I don't havekids. I am a happy single lady looking for a wonderful man out there .I am looking to relocate someday .I really need someone to make me believe in the right way of life .I am into music and i do lots of coordinating job with a charity firm down here .I love doing my best .I am looking forward to meet someone with a heart of gold.I am the open-heated girl who likes to take everything that life can offer but to give in return as well! I am active andenthusiastic, I am cheerful and I treat people just I want them to treat me. I am attentive and caring, I need to love and to be loved, to bring my futureman happiness and joy. I am the open-heated girl who likes to take everythingthat life can offer but to give in return as well! I am active and enthusiastic,I am cheerful and I treat people just I want them to treat me. I am attentiveand caring, I need to love and to be loved, to bring my future man happiness andjoy. I don't like to sit on one place and I am dreaming of strong and friendlyfamily.I love nature very much and I think that to live surrounded by nature issomething wonderful. I enjoy music and dancing. I love to take photos of myselfwhich I collect, let me stop right here.

Wow. Dieser Text ist direkt aus meinem eMail-Programm kopiert. Nicht nur kennt dieser Text keine vernünftige Punktuation, er kennt auch keine Formatierung. Keine Absätze, keine Leerzeilen. Dieser Text kommt als eine einzelne Textzeile. Aber zum Inhalt. Nahezu jeder Satz beginnt mit dem Wort „I“. Das ist Vorschulniveau. Vernünftiges Englisch ist es meist auch nicht. Es wirkt eher wie Google Translate von ??? nach Englisch mit Umweg über Chinesisch, Latein und Swahili. An mehreren Stellen fehlen Leerzeichen um Wörter zu trennen, die eindeutig nicht zusammengehören. Dafür gibt es mehrere Stellen, bei denen der Punkt am Satzende vom letzten Wort durch ein Leerzeichen getrennt wird. Die ersten paar Sätze werden nicht durch einen Punkt sondern ein Komma „beendet“. Der Teil mit dem „open-heated girl“ wiederholt sich Wort für Wort mit denselben Rechtschreibfehlern aber fehlenden Leerzeichen an leicht anderen Stellen. Die Information, dass die Person, welche die eMail vermeintlich versendet hat gerne Musik hört ist einmal kurz nach dem Beginn des Textes und einmal gegen Ende zu finden. Zusätzlich ist die Beschreibung der Person sehr zugeschnitten auf die westlichen Vorstellungen einer perfekten Frau: Weiße Haut, blonde Haare, blaue Augen, große Brüste, schlank und kurz vor 30. Keine Zigaretten, Alkohol oder Kinder. Wahre Liebe, Treue und Ergebenheit. Fröhlich und freizügig. Das klingt ja verlockender als die Playboy-Villa. Das einzige an dem Text, dem ich Glauben schenken kann ist der Satz

I am looking forward to meet someone with a heart of gold.

Wobei ich heart durch wallet ersetzen würde. Auffällig ist auch das abrupte Ende dieser einmaligen Selbstdarstellung ohne konkret geäußertem Zweck. Will diese Person jetzt was von mir? Ich schreibe besser zurück …

  • Es wird sofort für ein Produkt geworben (Aber hallo. Noch nie so eine detailierte Objektifizierung einer Frau gesehen): Check.
  • Google Translate: Check.
  • Merkwürdige Punktuation: Check.
  • Sich wiederholende Aussagen (Holy Copy&Paste, Batman!): Check.

Fazit

Meine Auflistung ist sicher nicht vollständig und es gibt Beispiele die weniger offensichtlich sind. Grundsätzlich ist der Großteil des täglichen Spamaufkommens aber recht einfach zu erkennen und dadurch verursachte Probleme einfach zu vermeiden, wenn man den Spam einfach löscht und einen vernünftigen Spam-Filter verwendet.

=-=-=-=-=
Powered by Blogilo

Lautes Knacken im Kopfhöhrer – ein Workaround

4. August 2014 um 12:00 | Veröffentlicht in Bash, Multimedia, Programmieren, Ubuntuusers | 6 Kommentare
Ich habe mir kurz vor Ostern einen neuen Laptop angeschafft (ein Lenovo Thinkpad E540; mein HP war davor sanft entschlafen). Seit damals habe ich das Problem, dass bei eingestecktem Kopfhörer in unregelmäßigen Abständen ein lautes und sehr unangenehmes Knacken zu hören war. Und das immer direkt bevor eine Audioausgabe gestartet wurde. Sei das nun ein Musikstück in Amarok, ein Video auf YouTube oder ein Snippet zur Bearbeitung in Audacity. Letzteres habe ich besonders in letzter Zeit häufig gemacht und werde ich noch eine Zeit lang tun, wodurch das nervige Problem etwas pressender wurde.
Ich konnte mehrere Faktoren ausschließen. Zum einen bestand das Problem nicht mit meinem Vorgängergerät, was auf ein Problem entweder beim Treiber oder bei der Hardware schließen lässt. Dass ich das Problem sowohl unter Ubuntu 13.10, 14.04, Debian 7 (Sid) und Tanglu Aurora hatte legt ebenfalls diesen Schluss nahe. Auch habe ich mehrere verschiedene Kopfhörer durchprobiert. Manchmal wird ein ein-/ausgestecker Kopfhöhrer gleich, manchmal erst ein paar Sekunden später erkannt. Für mich, als relativer Laie in diesem Gebiet, klingt das wie ein Problem mit der Buchse.
Da ich weder das Wissen, noch das Werkzeug habe um es mir anzusehen oder zu reparieren habe ich mich entschieden einen Workaround zu basteln.

Der Workaround

Mir ist aufgefallen, dass das Knacksen niemals auftritt, wenn irgendein anderes Programm eine Audioausgabe produziert. Die Idee ist also: schreib ein Programm/Skript, welches wenig Ressourcen benötigt, welches eine permanente Audioausgabe macht und welches so unbemerkt wie möglich agiert.
Meine Lösung:
  • Ein Bash-Skript, welches
  • das Programm play aufruft, welches
  • die Datei silence.ogg abspielt, welche 12 Stunden Stille beinhält
Das Programm  play benötigt die Installation des Paketes  sox. Die Datei  silence.ogg habe ich schnell mal in  Audacity kreiert. Sie kommt auf eine Größe von ca. 3,8 MB. Natürlich passt auch jedes andere Format.
Hier ist das Skript:
#!/bin/bash

FILE=silence.ogg
DIR="$HOME/Musik"
if [[ $(ps -ef | grep play | grep "$FILE" -c) -eq 0 ]]; then
    echo "Silencer on"
    play -q "$DIR/$FILE" &
else
    echo "Silencer off"
    pid="$(ps -O command -C play | grep $FILE | tail -
 
shopt -s extglob
    pid=“${pid##*( )}“
    shopt -u extglob
 
    pid=“$(echo „$pid“ | cut -f1 -d‘ ‚)“
    kill "$pid"
fi
Die Zeile
if [[ $(ps -ef | grep play | grep $FILE -c) -eq 0 ]]; then
prüft ob das Skript bereits ausgeführt wird. Dazu holen wir uns mit ps -ef eine Liste aller Prozesse, filtern sie mit grep nach dem String silence.ogg und besorgen uns mit dem Schalter -c die Anzahl der gefundenen Zeilen. Wenn diese 0 ist, dann wird der Prozess noch nicht ausgeführt und wir wollen ihn starten. Nach einer entsprechenden Meldung wird das Programm play mit der gewünschten Datei im Hintergrund (dafür das ‚&‚) gestartet. Der Schalter -q sorgt dafür, dass play selbst keine Ausgabe erzeugt.
Sollte das if nicht zutreffen, also bereits ein Prozess mit dem Skript laufen, begeben wir uns ins else. Hier besorgen wir uns die Programm ID, kurz: pid. In der Zeile
pid=“$(ps -O command -C play | grep $FILE | tail -n1)“
wird dem Programm ps der Schalter -O command übergeben. Damit wird die PID zusammen mit dem jeweiligen Befehl ausgegeben. Die PID steht in der ersten Spalte, kann aber Leerzeichen vorangestellt haben. Mit dem zusätzlichen Schalter -C filtern wir die Liste gleich nach Prozessen des Programmes play. Danach wenden wir grep an um aus den übrig gebliebenen Zeilen die Prozesse zu bekommen, die die Datei silence.ogg verwenden. Da die erste Zeile von ps eine Überschrift ist holen wir uns die Zeile am unteren Ende mittels tail -n1. Sollte es mehrere entsprechende Prozesse geben wird nur der unterste damit gefunden. Man kann natürlich eine Schleife basteln, welche einfach Prozesse beendet, solange es welche gibt. Da sich das Skript aber theoretisch bei jedem zweiten Aufruf selbst beendet, sollte nie mehr als ein Prozess gleichzeitig laufen.
Die Zeile
pid=“${pid##*( )}“
schneidet nun alle vorangestellten Leerzeichen ab. Damit diese Syntax funktioniert haben wir die Shell Option (shopt) Extended Globbing (extglob) aktiviert (-s). Diese ermöglicht der Bash die Verarbeitung von etwas mächtigeren Regulären Ausdrücken. Da wir sie später nicht mehr brauchen, deaktivieren wir sie danach sofort wieder. Nach allem was ich gelesen habe schadet es aber nicht sie in der .bashrc generell zu aktivieren, da sie nur aus Kompatibilitätsgründen deaktiviert ist. Dann kann man diese beiden Zeilen natürlich entfernen.
Mittels dem Befehl cut schneiden wir nun die erste Spalte aus unserer Zeile. Dadurch sollte nun nurmehr die PID übergeblieben sein.
pid=“$(echo „$pid“ | cut -f1 -d‘ ‚)“
Jetzt können wir dem Kommando kill diese pid übergeben und die „Ausgabe“ unserer Stille damit beenden.
Das ist mein Workaround. Für einfachere Ideen oder Vorschläge das Grundproblem anzugehen bin ich jederzeit offen.

=-=-=-=-=
Powered by Blogilo

Kommt ein FairPhone geflogen

3. März 2014 um 12:00 | Veröffentlicht in China, GNU/Linux, Multimedia, Ubuntuusers | 4 Kommentare

Seit inzwischen 5 Wochen bin ich im Besitz eines FairPhones aus der ersten Auflage. Was ist ein FairPhone? Ein faires Telefon. Ein Telefon, in dessen Erzeugung keine Arbeiter ausgebeutet, in welchem nur Rohstoffe aus konfliktfreien Regionen verwendet und bei welchem der komplette Lebenszyklus bedacht wurde. Die Verantwortung hört nicht beim Nutzer auf, sondern erstreckt sich bis hin zur Entsorgung des ausgedienten Geräts. Und weil der Lebenszyklus besonders lang sein sollte um nicht bald wieder mehr Müll zu produzieren wurde das FairPhone als SmartPhone konzipiert, welches mit heutigen High-End Geräten auf Augenhöhe stehen und sehr robust sein soll. Das Gerät selbst hat € 325,- gekostet, womit aber wesentlich mehr als nur das Telefon abgedeckt ist.

FairPhone Front small

Das FairPhone mit gesperrtem Bildschirm.

Die Philosophie

Das „Fair“ in FairPhone ist vergleichbar mit „fair“ gehandelten Nahrungsmitteln, welche inzwischen in jedem Supermarkt zu finden sind. Bei den Nahrungsmitteln sollen die Bauern einen gerechten Lohn für ihre Arbeit erhalten und selbst entscheiden können, was sie anbauen. Beim FairPhone sollen die Minenarbeiter, welche die Erze schürfen, wie auch die Fließbandarbeiter, welche das Telefon zusammenbauen, gerecht entlohnt werden und unter sicheren Umständen arbeiten können. Oft genug kommt es zum Beispiel vor, dass Minenarbeiter verschüttet werden, weil die Betreiber nicht auf ein Mindestmaß an Sicherheit geachtet hat. Und am Fließband atmen viel Arbeiter giftige Dämpfe ein, die ihre Gesundheit nachhaltig schädigen.

Ebendiese Probleme sollen bei der Produktion des FairPhones vermieden werden. Dazu hat das Projekt Verbindung mit lokalen Gruppen aufgenommen, welche sich für ein faires Vorgehen einsetzen. Außerdem wird jede Produktionsstätte von einem Mitglied des Projektes betreut. In den Minen wird auf die Einhaltung von Sicherheitsstandards geachtet. In der Produktionsfirma in China, in der das Gerät zusammengebaut wird, gibt es eine Selbstverpflichtung der Leitung auf würdige Arbeitsbedingungen. Von einem Teil des Kaufpreises des FairPhones wurde hier für die Arbeiter ein Fond eingerichtet, über dessen Nutzung die Arbeiter gemeinsam entscheiden können.

Mit im Preis enthalten ist ein Beitrag für die zukünftige Entsorgung des Telefons. Da auch das FairPhone nicht ewig leben wird, ist es nur konsequent sich Gedanken darüber zu machen, was eigentlich mit Geräten am Ende ihrer Lebenszeit passiert und ob und wie Rohstoffe zurückgewonnen werden können. Auch hier erleiden heute Arbeiter Langzeitgesundheitsschäden. Und auch hier möchte das FairPhone faire Wege gehen.

FairPhone Back small

Die Rückseite des FairPhones.

Technische Spezifikationen

Thema Robust. Dazu zählt ein Display aus Dragontrail Glass. Das Telefon ist mir bis jetzt 3 Mal heruntergefallen. Das erste Mal aus ca. 1/2 m Höhe auf einen Holzfußboden. Die anderen beiden Male aus ca. 1 m Höhe auf einen Fließenboden. Das Telefon zeigt keine merkbare Beeinträchtigung und das Glas hat keinen Kratzer, geschweige denn einen Splitter. Brutal hört es sich trotzdem an, da sich bei einem Sturz die rückwertige Aluminiumplatte löst und auf Fließen so klingt wie springendes Glas.

Eine Quad-Core CPU (Mediatek 6589M chipset) mit je 1,2 GHz liefert genug Rechenkraft für die nächsten Jahre.

Das 4:3 Display hat eine Auflösung von 960×540 bei Gesamtausmaßen von 126×63 cm. Die Dicke des FairPhones ist etwa 1 cm.

Eine Fotokamera mit 8 Megapixel sorgt für schöne Bilder, eine 1,3 Megapixel Kamera kann für Videoanrufe verwendet werden. Die Fotokamera verfügt über einen Blitz.

Enthalten ist eine tauschbare Standardbatterie mit 2000 mAh. Mit dieser hält das FairPhone bis zu einer Woche durch.

Verbinden kann sich das Telefon per WLAN (802.11 b/g/n), Bluetooth, 2G und 3G. LTE und NFC haben es in die erste Edition nicht geschafft.

Es verfügt über 2 SIM-Slots und die Möglichkeit den Internen Speicher (16 GB) mit bis zu 64 GB per microSD zu erweitern.

Geladen wird das Gerät mit dem inzwischen vereinheitlichten MicroUSB 2.0 Type B, welcher bei allen modernen Geräten zum Einsatz kommt. Ein solches Kabel ist, im Sinne der Müllvermeidung, aber nicht mit dem Telefon verpackt. Es kann bei Bestellung aber dazugenommen werden.

Als Betriebssystem kommt Android 4.2.2 zum Einsatz, die Produzenten versprechen aber Updates auf höhere Versionen über den inkludierten FairPhone Updater.

Das von der Firma Kwame erstellte Custom Interface des FairPhones bedient sich bekannter Bedienkonzepte und fügt noch ein Quickmenü dazu, welches per Sideswipe vom Rand weg aktiviert werden kann. Hier können bis zu 4 häufig verwendete Apps untergebracht werden.

FairPhone Back Open small

Das Innere des FairPhones.

Mein Eindruck

Vielleicht kann man es bereits aus dem vorangegangenen Text herauslesen: ich bin mit meinem FairPhone sehr zufrieden. Es ist ein stabiles, leistungsstarkes und leicht zu verwendendes Gerät, dass seine Aufgaben gut erfüllt. In den Medien habe ich von instabiler Software und Problemen mit der Kamera gelesen. Diese kann ich zum Glück nicht vermelden. Mit einer kleinen Ausnahme habe ich nichts auszusetzen.

Das FairPhone lässt sich zu leicht einschalten. Wenn es bei mir in der Hosentasche liegt scheint der Power-Knopf an der oberen Seite leicht vom Stoff eingedrückt zu werden. Die Entsperrung des Displays scheint dann vom Oberschenkel vorgenommen zu werden. Dadurch kann es sein, dass mehrere Programme gestartet, Einstellungen verändert oder Anrufe getätigt werden, ohne dass man es mitbekommt. Dieses Problem lässt sich aber recht einfach lösen. Ich habe einfach statt des einfachen Entsperrens per Swipe eine Mustersperre eingestellt, bei der ich nun ein komplexes Muster ziehen muss um das Telefon nutzen zu können. Da ich hier beliebig viele Versuche habe, kann mein Oberschenkel machen was er will.

Die Philosophie hinter dem FairPhone war es, was mich ursprünglich dazu bewogen hat die Crowdfunding Kampagne des Projektes zu unterstützen. Das entstandene Produkt ist seinen Preis wert und ich hoffe, dass das FairPhone noch weitere Auflagen erhält. Man kann nur hoffen, dass dieses Projekt langfristig zu einem Umdenken in der Gesellschaft und damit im Vertriebsweg führt.

Wer Interesse hat, der kann sich auf fairphone.com als Interessent für die 2. Auflage eintragen lassen.

=-=-=-=-=
Powered by Blogilo

Audible Audio – DRM at its finest

24. Februar 2014 um 10:00 | Veröffentlicht in DRM, Multimedia, Ubuntuusers | 11 Kommentare

Mein Vater ist ein Fan der Serie „Perry Rhodan“, einer inzwischen über 50 Jahre laufenden Romanreihe. Sie handelt vom fiktiven Ex-NASA-Piloten Perry Rhodan, der mit Hilfe von Außerirdischen die Erde eint und viele Jahrtausende lang Abenteuer im bekannten Universum und darüber hinaus erlebt. Die sogenannten Silber-Bände sind je eine Zusammenfassung mehrer Hefte und bilden eine Sammler-Edition der Reihe. Diese Silber-Bände wurden großteils vertont und sind als Hörbücher erhältlich. Mein Vater fand nun mehrere dieser Hörbücher bei Audible.de, dem Audiobook-Portal von Amazon. Da ich ihm nicht garantieren konnte, dass ich ihm die von dort heruntergeladenen Dateien nach seinem Wunsch als Audio-CD zur Verfügung stellen könnte, habe ich ihm davon abgeraten sich die Hörbücher über diese Plattform zu besorgen. Eine Weise Entscheidung, wie sich herausstellen sollte.

Ich habe schon mehrfach von Audible.com gehört (z.B. als Sponsor von MinutePhysics, einer YouTube-Reihe, die wissenschaftliche Themen auf anschauliche Art und Weise zu erklären versucht). Da ich persönlich CDs bevorzuge, habe ich aber nie in Erwägung gezogen tatsächlich bei Audible zu kaufen. Durch die Frage meines Vaters begann ich mich jedoch dafür zu interessieren, in welchem Format denn die Hörbücher von Audible daherkommen.

An eine Datei herankommen

An ein Hörbuch von Audible kommt man, indem man ein Amazon-Konto erzeugt und ein Hörbuch kauft. Alternativ kann man auch eine Aktion, wie am Ende der meisten MinutePhysics-Folgen beschrieben, nutzen und sich ein gratis Audiobook herunterladen. (!!Vorsicht: das erste Monat ist gratis, ab dann wird automatisch eine Gebühr von fast € 15,- im Monat fällig. Man muss selbst rechtzeitig stornieren!! Ich bin nicht dafür verantwortlich, wenn du plötzlich etwas bezahlen musst!) Ich entschied mich für „Breakfast at Tiffanys“ von Truman Capote. Mit der Absicht den Account gleich nach dem Download wieder zu stornieren legte ich das Hörspiel in den Warenkorb und klickte mich durch den Amazon-typischen Bezahlprozess. Ich setzte meinen einzigen Credit ein und gelangte schließlich zur Download-Seite … äh wie? Wo ist mein Download-Link? Hallo! Hört mich wer? Wo ist mein Link?

Nach Abschluss des Kaufes wird einem nicht angeboten, dass man die Datei sofort herunterladen könne. Stattdessen wird einem eine Liste von kompatiblen Geräten vorgeschlagen, auf welchen man doch bitte die Audible-App installieren sollte um in den Genuss des Hörbuchs zu kommen.

Your level has risen to 2. You have earned a new skill. You can now be Rick-Rolled by Audible.

Ok, wieder zurück zum Ernst des digitalen Lebens. Audible forciert an allen Ecken und Enden einen strengen Kopierschutz. Deswegen sehen sie es am Liebsten, wenn ihre Dateien nur mit von ihnen zertifizierter Software abgespielt werden. Möchte man doch die eigentliche Datei erhalten, so muss man unter dem Punkt „Library -> My Books“ aus der Liste der gekauften Hörbücher das gewünschte auswählen und ganz rechts auf „Download“ klicken. Hier erhält man nun eine Datei mit der Endung *.aa.

Nach dem erfolgreich abgeschlossenen Download wollte ich den Account wieder löschen, da ich weder Interesse an den angebotenen Diensten hatte, noch willens war knappe € 15,-/mtl an Grundgebühr zu berappen. Hier begann eine neue Herausforderung … Wie beende ich meine Mitgliedschaft? Spätestens seit Facebook sollte uns allen bewusst sein, wie schwierig die Anbieter es zeitweise machen aus ihren kommerziellen Spinnennetzen zu entkommen. Im Nutzermenü unter „Account Details“ findet sich ein Punkt zu „Membership Details“. Nach all den Fancy CSS-Blasen der aktuellen Membership-Angebote findet sich ein übersehbarer fader HTML-Link mit der Aufschrift „Cancel Membership“.

Nach einem Klick auf diesen landet man, wie zu erwarten, auf einer Seite, auf der man seinen Ausstieg nochmal bestätigen soll. Umrahmt ist das mit Angeboten, die das Verbleiben doch noch schmackhaft machen sollen. Wie erwähnt: Vorhersehbar. Klick man nun auf „Confirm Cancellation“ landet man … auf einer mit Angeboten vollgestopften Seite, auf der man schon wieder seinen Ausstieg bestätigen soll. Nach einem Klick auf „Continue Cancellation“ landet man … und so weiter. Insgesamt 4 mal muss man bestätigen, dass man der Mitgliedschaft den Rücken kehren will. Und jedes Mal sollen einen Batterien von Angeboten davon überzeugen doch zu bleiben. Am Schluss wollen sie einen nicht gehen lassen, bevor man ihnen einen Grund genannt hat. Liebes Audible-Management, diese Drangsalierung macht euch nicht sympathischer.

Your level has risen to 3. You have earned a new skill. You can now be handcuffed and whipped into submission by Audible.

Was ist das Audible Audio Format nun eigentlich?

Auf der deutschen Audible-Seite wird das eigene Format, vorhersehbar, mit lauter Vorteilen für den Nutzer zu erklären versucht. Spaß, Hörkomfort und die Fähigkeit Lesezeichen zu setzen sind die Hauptargumente. Und … ach ja:

Es gibt noch einen weiteren Grund: die Größe und Vielfalt unseres Angebots. Wir möchten Ihnen natürlich möglichst die ganze Welt der Hörbücher und der gesprochenen Inhalte anbieten.
Da unser Format einen eingebauten Kopierschutz hat, vertrauen uns die Verlage und Autoren so viele Hörbücher an, die es woanders nicht zu kaufen gibt. Deshalb finden Sie bei uns ein so reichhaltiges Sortiment an Hörbüchern.

Ja, ein reichhaltiges, DRM-verseuchtes Sortiment, das ich aus genau diesem Grund nicht haben will. Das Audible-Format wird als eine Alternative zu MP3 beschrieben. Tatsächlich handelt es sich nur um ein Containerformat, welches seine Payload per Verschlüsselung vor dem direkten Zugriff des Nutzers „schützt“. In manchen Fällen kommt für das Audio-Format der Payload sogar MP3 zum Einsatz. Ein Containerformat selbst bietet keine verwertbaren Daten. Es ist vergleichbar mit einer ZIP-Datei, aus welcher man per geeigneter Software die tatsächlichen Daten extrahieren kann.

Auf about.com findet sich eine kurze Übersicht über die Eigenschaften des *.aa-Formates.

Hier beginnt die erste wirkliche Herausforderung, wenn man eine *.aa-Datei auf einem Linux-Gerät abspielen möchte: Es gibt keine geeignete Software. Audible hat sich bis lang erfolgreich gegen die Öffnung seiner Plattform für freie Betriebssysteme gestellt. libav (ein Fork von ffmpeg) kennt das Format schonmal nicht. Damit ist die bislang zuverlässigste Medien-Library aus dem Spiel. Ein kurzes apt-cache search audible liefert keine verwertbaren Ergebnisse. Es scheint so, als müsse man mittels Wine ein Windows-Programm ausführen, welches das Format beherrscht und in ein anderes Format übersetzt. Die Anzahl der Geräte, auf denen eine konkrete *.aa-Datei abgespielt werden kann ist stark begrenzt. Die Anzahl der Audio-CDs, die man damit brennen kann liegt sowieso nur bei 1.

Fazit

Das Audible Audio Format ist entbehrlich. Das Einzige, was dem Format noch fehlt ist ein Always-On Zwang. Amazon hat offensichtlich verschlafen, dass DRM für Audio nach einer langgezogenen Blamage der Musikindustrie heute keinen Platz mehr hat. Tatsächlich gehört Audible zu den letzten Musik-Anbietern, die ihre Ware mit DRM verseuchen und damit ihren ehrlichen Kunden das Leben erschweren, während Menschen, die sich nicht um Entlohnung kümmern, einen Weg finden das DRM komplett zu entfernen um digitale Inhalte auch ohne Bezahlung zu genießen. Wie immer bei DRM fühlen sich die Manager sicherer vor den „bösen Piraten“, sind die ehrlichen Kunden die Verlierer und merken die „bösen Piraten“ nichts von irgendwelchen Einschränkungen.

Mein Rat: Finger weg von Audible. Wenn du ein Hörbuch haben willst, welches aktuell nur bei Audible verfügbar ist, dann setz dich mit dem Produzenten in Verbindung und besprich die Möglichkeit eines alternativen Vertriebswegs.

=-=-=-=-=
Powered by Blogilo

Playr – Ein iPod Shuffle für die Bash

21. Januar 2013 um 10:05 | Veröffentlicht in Bash, Multimedia, Programmieren, Ubuntuusers | 9 Kommentare

Schon länger habe ich nach einer Möglichkeit gesucht ein paar Musikdateien auszuwählen und in zufälliger Reihenfolge abspielen zu lassen. Das kann sowohl ein einzelnes Album sein, als auch eine Zusammenstellung mehrere Tracks aus verschiedenen Verzeichnissen. Außerdem sollte dieses Programm Konsolen-basiert sein, da ich es für schnelle Wiedergabe brauche und nicht zuerst in einer GUI alles zusammenklicken will. Da ich ein solches Programm leider noch nicht gefunden habe, habe ich mir selbst ein Bash-Skript zusammengestellt, welches als Scheduler dient und play (Paket sox aus den Quellen) zum Abspielen verwendet. play kann sowohl OGG, FLAC und WAV abspielen. Nach Installation von libsox-fmt-mp3 auch MP3.

Playr

Playr steht für die Zusammensetzung aus play (dem Programm fürs Abspielen der einzelnen Tracks) und random (engl.: zufällig). Dass es aussieht wie ein Web2.0-Name ist wiederum Zufall (dt.: coincidence).

Die grobe Funktionsweise: Die übergebenen Musiktracks werden in eine versteckte Textdatei geschrieben. Dann wird mit Hilfe von $RANDOM eine Zufallszahl zur Berechnung des nächsten Tracks verwendet. Dieser Track wird sodann abgespielt und aus der Textdatei entfernt. Das verhindert, dass dieser erneut abgespielt wird (was etwas ist, dass ich bei portablen Audio-Playern sehr nervig finde). Solange noch Tracks in der Liste sind wird fortgefahren.

Soll die Wiedergabe abgebrochen werden, muss der Nutzer nur [strg]+[c] drücken. Leider habe ich bis jetzt keine Möglichkeit gefunden zusätzlich dazu auch einfach zum nächsten Track zu wechseln. Man kann natürlich einfach die trap entfernen, dann bricht [strg]+[c] nur das aktuelle play ab. Dann kann jedoch das Skript selbst nicht mehr komfortabel beendet werden.

Das Skript

Wir beginnen mit der trap. Dieses Konstrukt sorgt dafür, dass unser Skript [strg]+[c] verarbeiten kann. Dafür schreiben wir folgende Zeile:
trap quit SIGINT SIGTERM

Diese Zeile führt dazu, dass beim Erhalt der Signale SIGINT (Signal 2) oder SIGTERM (Signal 15) quit ausgeführt wird. Nun ist quit kein Bash-Befehl sondern eine Funktion, die wir uns selbst schreiben, welche das Skript geordnet beendet:
function quit {
    rm -f $TRACK_FILE $TEMP_FILE
    exit 1
}

Diese Funktion schreiben wir vor die Trap. In dieser löschen wir einfach unsere Textdateien, damit sie beim nächsten Programmaufruf nicht stören.

Als nächstes definieren wir zwei Variablen für unsere versteckten Textdateien. Zum einen eine Datei um die Tracklist zu speichern, zum Anderen eine Datei in der die veränderte Liste gespeichert wird:
TRACK_FILE=/tmp/.tracklist.playr
TEMP_FILE=/tmp/.temp.playr

Wir speichern die Dateien in  /tmp , damit sie keine Verzeichnisse zumüllen. Außerdem sollten wir in  /tmp  immer Schreibzugriff haben. Sollte  /tmp  nicht verfügbar sein, kann man das Verzeichnis ja auf  $HOME  ändern.

Nun wirds Zeit sicherheitshalber Überbleibsel einer vorherigen Ausführung zu entfernen:
rm -f $TRACK_FILE $TEMP_FILE

Nur für den Fall, dass etwas total schief gelaufen ist.

Um die Tracklist zu erzeugen schreiben wir nun einfach alle Parameter, die beim Skriptaufruf übergeben wurde in das TRACK_FILE:
for file in " $@ "; do
    echo " $file "
done > $TRACK_FILE

Das funktioniert gewisserweise wie eine foreach-Schleife. Eine beliebige Anzahl Parameter wird durchlaufen ( $@ ). Der jeweils aktuelle Parameter wird in  $file  gespeichert und in der Schleife verarbeitet. Hier wird er einfach an die Standardausgabe geschickt. Die komplette Ausgabe der Schleife wird wieder auf  $TRACK_FILE  umgebogen, wodurch die Ausgabe nicht auf der Kommandozeile erscheint, sondern in der angegebenen Datei.

Die Größe der Tracklist holen wir uns mit wc:
size=$( cat "$TRACK_FILE" | wc -l)

Natürlich könnte man die Datei auch gleich als Parameter für wc angeben:
wc -l " $TRACK_FILE "

Dann jedoch erhält man eine Ausgabe nach folgendem Muster:
6 .tracklist.playr

Man muss also erst noch den eigentlichen Wert extrahieren. Da mache ich lieber den „Umweg“ über cat. Ist kürzer.

Nun kommt die eigentliche Hauptschleife des Programmes:
while [[ $size -gt 0 ]]; do
    ## Code
    ((size–))
done

Diese Schleife läuft solange durch, bis  $size  den Wert 0 hat. Da  $size  auf jeden Fall größer als 0 sein muss und in jedem Durchgang um eins verringert wird, ist das irgendwann der Fall. Mit der Abbruchbedingung verhindern wir auch, dass die Schleife ausgeführt wird, wenn die Tracklist leer ist.

Es ist Zeit. Zeit um die Urväter, die Auditoren, die Götter anzurufen. Zeit eine Zufallszahl zu erzeugen. Einer Zufallszahl innerhalb eines Intervalls errechnet man am Besten mithilfe von Modulo. Modulo ist der Name der in der Unterstufe als Restwertdivision bekannten Berechnung.

Kleine Beispiele:  10 / 3 = 3 . Rest:  1 13 / 5 = 2 . Rest:  3 . Uns interessiert immer der Restwert. Dieser ist auf jeden Fall immer  um  1  kleiner als der Divisor (für diejenigen, die schon lange aus der Schule draußen sind 🙂 ).

Bash scheint keine built-in Funktion für Modulo zu haben, dafür gibt es ein paar andere Möglichkeiten eine solche Berechnung durchzuführen. Am ansprechendsten habe ich  let  gefunden:
let "rand = $RANDOM % $size + 1"

In der Variable  $rand  wird das Ergebnis der Berechnung festgehalten.  $size  ist natürlich der Begrenzer.  $RANDOM  ist eine Umgebungsvariable, welche bei jedem Aufruf einen neuen zufälligen Integer (Ganzzahl) ausgibt. Da diese Berechnung bei einer Tracklist-Größe von z.B.  6  den Wertebereich von  0-5  abdeckt, wir aber kein  0 tes Lied, dafür aber ein  6 tes, zählen wir zum Ergebnis einfach  1  dazu.

Den damit errechneten Track erhalten so:
track= " $( head  $TRACK_FILE  -n$rand | tail -n1)

Hier passiert ein bisschen was:
head  -n$rand

filtert die ersten  $rand  Zeilen aus der Liste. Ist  $rand also  2 , dann erhalten wir durch  head   die ersten  2  Zeilen. Dadurch ist der gesuchte Track immer an letzter Stelle in der Liste. Diese letzte Stelle können wir uns nun per  tail  holen:
tail  -n1

Hier holt uns  tail  die  1 ste Zeile von hinten. Damit haben wird unseren Track. Dieser wird nun in die Variable  $track  gespeichert.

Jetzt wird es Zeit den Track abzuspielen:
play " $track "

Natürlich kann man auch das Ausrechnen des Tracks und den Aufruf von  play  in einer Zeile unterbringen. Ich bin jedoch eher für lesbaren Code als für „Zeileneffizienz“.

Zum Abschluss muss noch eine neue Tracklist angelegt werden, ohne den gerade abgespielten Track. Dazu holen wir uns zuerst alle Tracks vor dem Aktuellen:
head " $TRACK_FILE " -n$[ $rand-1 ] > " $TEMP_FILE "

und die Tracks danach:
tail " $TRACK_FILE " -n$[ $size-$rand ] >> " $TEMP_FILE "

Mit
$rand-1

holen wir uns alle Tracks vor dem Aktuellen und sparen diesen aus. Hingegen
$size$rand

liefert uns alle Tracks nach dem Aktuellen. Damit erhalten wir wieder dieselbe Liste wie zuvor, nur ohne dem letzten Track. Man beachte die Pfeile, welche das Ergebnis jeweils nach $TEMP_FILE schicken. In der ersten Zeile befindet sich nur ein Pfeil. Das bedeutet, dass die Datei überschrieben und neu befüllt wird. Es wird also nur das gespeichert, was in dieser Zeile herauskommt. In der zweiten Zeile hingegen sind zwei Pfeile. Das bedeutet, das das Ergebnis an die Datei angehängt wird. Der Inhalt der Datei wird also nicht über-, sondern der neue Inhalt dahinter in die Datei geschrieben.

Schließlich müssen wir die neue Tracklist noch über die alte schreiben:
mv " $TEMP_FILE " " $TRACK_FILE "

Nach der Schleife selbst rufen wir noch einmal quit auf, damit das Skript sich auch ohne Abbruch durch den Nutzer sauber beendet.

Das vollständige Skript

#!/bin/bash

function quit {
     rm  -f $TRACK_FILE $TEMP_FILE
     exit  1
}

trap  quit SIGINT SIGTERM

TRACK_FILE=/tmp/.tracklist.playr
TEMP_FILE=/tmp/.temp.playr

rm  -f $TRACK_FILE $TEMP_FILE

for  file  in  $@ do
     echo   $file
done > $TRACK_FILE

size=$( cat  „$TRACK_FILE“ |  wc  -l)

while [[  $size -gt 0 ]]; do
     let  „rand =  $RANDOM  %  $size  + 1″
    
track= " $( head  $TRACK_FILE  -n$rand  tail  -n1)
     play  $track
     head   $TRACK_FILE  -n$[ $rand-1 ] >  $TEMP_FILE
     tail   $TRACK_FILE  -n$[ $size$rand ] >>  $TEMP_FILE
     mv   $TEMP_FILE “ „ $TRACK_FILE
    ((size–))
done

quit

Zum Schluss

Ich bin vergleichsweise ein Anfänger in Shell-Script. Ich habe einige Erfahrung in C++ und es kann daher sein, dass ich versuche Konzepte daraus in Bash umzusetzen, obwohl es wesentlich einfachere Lösungen gibt. Wenn du eine bessere Lösung weißt, schreibe sie doch bitte in die Kommentare.

Lizenz

Das Skript steht unter der GPLv3.

Alternativen zu youtube-dl

13. Dezember 2012 um 21:28 | Veröffentlicht in Bash, Free Software/Open Source, Multimedia, Programmieren, Ubuntuusers | 17 Kommentare

Ich mag youtube-dl. Es ist einfach zu benutzen, ist plattformunabhängig (Python) und braucht nicht viele Ressourcen (Terminal-Anwendung).

Leider mag youtube-dl mich zur Zeit nicht. Sobald ich versuche ein Video herunterzuladen schaufelt die Anwendung meinen Arbeitsspeicher voll, sodass alles andere in den Swap ausweichen muss. Das führt dazu, dass das System innerhalb von Sekunden nicht mehr reagiert. Am längsten überlebt noch die Maus, welche sich etwa eine halbe Minute lang stark ruckelnd bewegen kann. Danach ist auch sie tot und das Einzige das hilft ist ein Hard-Reset. Keine wünschenswerte Situation.

Ich habe bereits
youtube-dl -U
als sudo ausgeführt um ein update des Scripts zu erzwingen. Das hat leider nichts geholfen. Der Streaming-Dienst ist auch egal. Ob YouTube, Vimeo oder sonst was, das Problem ist immer gleich.

Logischer Schritt: ich schaue mich nach Alternativen um. Wenn man per
apt-cache search
nach youtube sucht, werden einem bereits eine Liste an Programmen angeboten, welche in der Lage sind Videos von Streaming-Services herunterzuladen. Darunter befinden sich

  • clive
  • cclive
  • fatrat
  • slimrat
  • nicovideo-dl
  • get-flash-videos
  • metacafe-dl
  • nomnom

clive

Speziell clive hat meine Aufmerksamkeit erregt. Es ist ein Terminal-Tool, welches sich für Streaming-Services eignet, die ihre Videos in einem Flash-Player abspielen. Es ist leichtgewichtig, hat eine Vielzahl an praktischen Optionen und verhält sich allgemein sehr wie ich es von youtube-dl gewohnt bin.

Ein einfaches
clive <video_url>
lädt das Video an der angegebenen URL herunter. An sich kann man damit leben. Allerdings hat clive eben mehrere interessante Funktionen, mit denen man sich gerne spielt. Dazu gehört einmal der Schalter -F. Damit erhält man eine Liste von verfügbaren Formaten und Qualitätsstufen in denen das Video vorhanden ist. Diese Liste kommt im Format
hd|mobile|sd
Die durch „|“ getrennten Optionen kann man dann in einem zweiten Aufruf dem Schalter -f angeben, welcher dann dafür sorgt, dass clive das Video in der gewünschten Qualität herunterlädt.

Da es etwas unbequem ist für jedes Video zwei Programm-Aufrufe zu starten, habe ich ein einfaches Skript geschrieben, welches diese Aufgabe abnimmt:

#!/bin/bash

VIDEO_URL="$1"
TEMP_FILE=".video-dl_temp_file"

clive -F "$VIDEO_URL" > "$TEMP_FILE"

CHOICES=$(cat "$TEMP_FILE" | tail -n1)

echo -n "Choose format (${CHOICES%% *}|best): "
read FORMAT

clive "$VIDEO_URL" --format="$FORMAT"
--filename-format="%t_$FORMAT.%s"

rm -f "$TEMP_FILE"

Was passiert hier?

VIDEO_URL=“$1
Wir speichern die angegebene URL in einer Variable.

TEMP_FILE=“.video-dl_temp_file
Der Einfachheit halber brauchen wir eine temporäre Textdatei, in welcher wir Informationen speichern können. Der Punkt am Anfang des Dateinamens bedeutet, dass die Datei versteckt ist. Sie wird also im Dateibrowser, oder per ls nicht angezeigt. Die Datei wird am Ende des Skripts wieder gelöscht.

clive -F „$VIDEO_URL“ > „$TEMP_FILE
Hier holen wir uns die möglichen Formate, in denen das Video vorliegt und schreiben diese Ausgabe in die temporäre Datei. Da es sich hierbei um zwei Zeilen handelt und nur die zweite Zeile relevant ist, brauche ich:

CHOICES=$(cat „$TEMP_FILE“ | tail -n1)
Diese Zeile gibt mir den Inhalt der temporären Datei aus (cat), schneidet die letzte Zeile ab (tail) und speichert die gewünschte Zeile in der Variablen CHOICES.

Als Nächstes fragen wir den Nutzer, welches Format bevorzug wird:
echo -n „Choose format (${CHOICES%% *}|best): 
wobei
${CHOICES%% *}
dafür sorgt, dass hinter der Liste nichts mehr steht. clive gibt hier nochmal die Adresse des Videos aus. Dieser Ausdruck schneidet sie weg.

Dann lesen wir die Wahl des Nutzers ein:
read FORMAT

Nun ist es an der Zeit endlich das Video herunterzuladen:
clive „$VIDEO_URL“ –format=“$FORMAT
–filename-format=“%t_$FORMAT.%s

–filename-format gibt die Formatierung des Dateinamens an. %t und %s sind dabei Platzhalter, welche für den Titel und das Suffix der Datei stehen. Zusätzlich zu den Platzhaltern kann man noch beliebig weitere Vorgaben für den Dateinamen machen. Ich füge zwischen Dateinamen und Suffix noch das Format der Datei ein.

Nachdem die Video-Datei sicher auf der Platte liegt lösche ich noch die temporäre Datei:
rm -f „$TEMP_FILE

Fazit

Bis jetzt habe ich clive mit YouTube und Vimeo getestet. Beides funktionierte sehr gut und machte keine Probleme. Das Skript ist natürlich ausbaufähig. Zur Zeit kann es immer nur mit einem Video gleichzeitig umgehen und möglicherweise findet man noch einen besseren Weg als die Informationen in einer temporären Datei zu speichern. Für meine aktuellen Zwecke reichts.

clive steht unter der GPLv3.

[UPDATE]

clive wird inzwischen nicht mehr gepflegt. Stattdessen sollte cclive verwendet werden, welches in der aktuellen Version leicht andere Parameter aufweist. Georg hat in den Kommentaren eine mögliche Version des Skripts mit cclive gepostet.

[/UPDATE]

=-=-=-=-=
Powered by Blogilo

Firefox – Wie man einen aufdringlichen Kleinen Panda in die Schranken weist

4. Juli 2012 um 17:47 | Veröffentlicht in Free Software/Open Source, Internet, Ubuntuusers | 2 Kommentare

2012, das Jahr für welches so mancher Pseudo-Prophet im Namen der Maya das Ende der Welt vorausbefürchtet, lieferte uns auch ein paar andere wichtige Ereignisse. So war es das Geburtsjahr von Firefox 10 … äh 11. Nein 12. Ach ja, 13 ist auch schon da. 14 soll auch bald da sein … Zum geplanten Ende der Welt soll uns die Version 17 Seligkeit bringen. Hoffen wir die Außerirdischen verwenden IE.

So viele Witzchen man auch machen kann über die rivalisierenden Browser, so viele Macken haben sie jeweils. Und obwohl der Firefox auf meinem Laptop noch vor Chromium und Rekonq der Browser meiner Wahl ist, erkenne ich seine diversen Mängel (hoher Speicherverbrauch, aufgeblähter Code, …) durchaus an. Einem seiner Mängel kann man aber durchaus einen Riegel vorschieben.

Das Problem ist einfach geschildert: Wenn in einem Programm (außer einem Webbrowser) ein Link angeklickt wird, dann schiebt sich Firefox mit dem neuen Tab in den Vordergrund. In den meisten Fällen will ich aber an dieser Stelle noch weiterarbeiten (eMail fertig lesen, noch mehr Links anklicken, …).

Der FireTray-Versuch

Mein Firefox ist mit dem FireTray-Addon (neben anderen) ausgestattet. Dieses bietet die Möglichkeit Fenster, die wiederhergestellt werden, im Hintergrund zu belassen (Den Haken vor „Active restored Windows“ entfernen).

Das bringt den gewünschten Effekt, dass Firefox sich im Hintergrund öffnet, sobald er extern aufgerufen wird. Allerdings hat das auch zur Folge, dass Firefox sich ebenfalls hinter alle offenen Fenster schiebt wenn er durch einen Klick auf das FireTray-Icon wieder hergestellt wird. Da das nicht der gewünschte Effekt war, habe ich die Einstellung wieder aktiviert und mich nach alternativen Lösungen umgesehen.

Das Reich der about:config

Nach einer (erstaunlich kurzen) Recherche im Web (aka Google) fand ich einen Artikel, der genau mein Problem angesprochen hat. Der Artikel How To Stop Firefox From Stealing Window Focus von techsupportalert.com beschreibt die Lösung des Problems unter FF 5.0, sie ist aber auch auf alle späteren Versionen anwendbar. Hier eine kurze Zusammenfassung:

  • Man gebe in der Adress-Leiste (Smart Location Bar im FF-Sprech) „about:config“ ein und akzeptiere den Warnhinweis.
  • Hier öffnet sich nun eine Konfigurationsseite. Am oberen Rand der Seite findet sich eine Filterleiste („Suchen:“).
  • In diese Filterleiste gibt man nun folgende Zeichenkette ein: „browser.tabs.loadDivertedInBackground

Diese Einstellung wird von haus aus als deaktiviert ausgeliefert (als Wert steht „false„). Um die Einstellung nun zu aktivieren genügt entweder ein Doppelklick darauf oder man macht einen Rechtsklick darauf und wählt den Punkt „Umschalten“ aus. So oder so sollte nun als Wert „true“ eingetragen sein.

Firefox übernimmt die Einstellung sofort und muss nicht neu gestartet werden. Von nun an bleibt Firefox im Hintergrund wenn er von einem anderen Programm einen Link bekommt, öffnet sich aber im Vordergrund wenn er aktiv (z.B. über das FireTray-Icon) aufgerufen wird.

=-=-=-=-=
Powered by Blogilo

Microsofts Argument gegen DVD-Codecs in Win8

9. Mai 2012 um 08:48 | Veröffentlicht in Österreich, Microsoft, Multimedia | Hinterlasse einen Kommentar

Über einen Artikel des Standard bin ich auf dieses FAQ von Microsoft gestoßen. Wie viele vermutlich wissen hat Microsoft angekündigt keine DVD-Codecs in Windows 8 zu integrieren. Nach Meldungen sollen solche zwar in den aktuellen Testimages vorhanden sein, in der Verkaufsversion dann aber fehlen. Diese Entscheidung wird damit begründet, dass Windows 8 hauptsächlich auf Geräten ausgeliefert würde die gar kein geeignetes Laufwerk zum Abspielen einer DVD beinhalten. Soweit kann man dem Argument folgen. Bei der Frage

Why can’t I just pay for DVD when I need it?

Übersetzung
Warum kann ich für die DVD-Funktion nicht einfach zahlen wenn ich sie brauche?

gibt Microsoft folgende Antwort:

When we have DVD playback capabilities in software broadly like in Windows 7, there is no way to distinguish whether the PC will ever play a DVD disc but still this cost is carried on every PC. […]

Übersetzung
Wenn die Möglichkeit zum Abspielen von DVDs so verbreitet wie in Windows 7 einsetzen gibt es keine Möglichkeit zu entscheiden ob der PC jemals eine DVD abspielen wird. Die Kosten dafür sind aber bei jedem PC-Kauf zu zahlen. […]

Man lasse sich das Argument auf der Zunge zergehen. Microsoft stellt also von sich aus klar, dass die technische Möglichkeit etwas zu tun noch nicht Grund genug sind dafür auch zahlen zu müssen. Das dürfte besonders die RIAA, GEMA, AustroMechana und wie sie nicht alle heißen freuen, die von einer Leerkassettenabgabe bisher ganz gut profitieren. In Österreich besonders die AustroMechana welche sich zur Zeit für recht hohe Abgaben beim Kauf einer Festplatte einsetzt. Denn, so das Argument, jemand der die technische Möglichkeit hat soll auch dafür zahlen.

Um es auf den Punkt zu bringen: Unter all den vorgeschlagenen Modellen zur Honorierung von künstlerischen Werken halte die die sogenannte Kulturflatrate für das beste Modell. Dabei zahlt jeder seinen Beitrag und eine Verwertungsgesellschaft schaut dazu, dass das vorhandene Geld gerecht aufgeteilt wird. ABER. Wenn ich pauschal für Kunst zahlen soll, dann will ich auch das Recht haben sie pauschal zu verwenden. Mit anderen Worten: für jedes Kunstwerk welches ich in meinem Land mit meinem Geld mitfinanziere muss gelten: das Werk geht in eine Art nationale Public Domain über. Wenn der Künstler das nicht will, dann hat er zwei Möglichkeiten: entweder das Werk unter eine spezielle Lizenz stellen oder es bei sich zu Hause im Keller vergraben. In beiden Fällen sehe ich aber auch keine Berechtigung mehr das Werk aus der Kulturflatrate zu bezahlen.

DIe Verwertungsgesellschaften haben bisher immer damit argumentiert, dass für die Künstler ein gleiches Recht gelten muss wie für jede andere Dienstleistung und ihre Werke somit nicht einfach gratis vervielfältigt werden dürften. Das ist für mich ein schiefes Bild. Ich bin der Meinung: gleiches Recht für alle. Der Künstler soll seine Entschädigung bekommen. Doch das wofür ich bezahle will ich auch verwenden dürfen.

=-=-=-=-=
Powered by Blogilo

Mozilla und Facebook verbünden sich [2. UPDATE]

31. März 2012 um 23:18 | Veröffentlicht in 1. April, Free Software/Open Source, Internet, Multimedia, Ubuntuusers | 8 Kommentare

Gerade eben ist eine bedenkliche Nachricht hereingeflattert. Mozilla hat bekannt gegeben, dass sich Facebook mit dem Versprechen einer jährlichen Spende gewissermaßen in die Entscheidungen bei der Entwicklung von Firefox eingekauft hat. Das soll heißen, dass sie den Kurs, den Firefox über die nächsten Jahre nehmen wird, entscheident mitbeeinflußen werden. Mozilla spricht von einer Abmachung welche der Verbreitung von Firefox auf lange Sicht gesehen sehr gut tun wird. Von Facebook selbst gibt es dazu noch keine Informationen.

[UPDATE]

Facebook hat gerade eine Meldung veröffentlicht nachdem sie planen einen Fork von Firefox zu basteln. Der Arbeitsname dieses Forks lautet FaceFox.

FaceFox Logo

Das vorläufige Logo von Facebooks Firefox-Klon „FaceFox“

Er soll den freien Browser und das „Social Network“ näher zusammenbringen indem beim Beginn jeder Sitzung automatisch bei Facebook eingeloggt wird und über eine einblendbare Seitenleiste auf News und Freunde direkt zugegriffen werden kann. So soll das Tauschen von Links einfacher werden indem der Link aus der aktuellen Website direkt auf den Avatar eines Freundes gezogen werden kann und dieser dann in dessen Profil erscheint.

Auch an Nutzer die noch kein Facebook-Konto haben wird gedacht: FaceFox soll sich so verhalten als wäre er eingeloggt. Er führt ein lokales Profil welches im Falle einer Registrierung bei Facebook abgeglichen wird. FaceFox 1.0 soll auf Firefox 15.0 basieren. Bis dahin plant Facebook alle angedachten Modifikationen umgesetzt zu haben. Eine erste Alpha soll, auf Firefox 12.0 basierend, ein paar Tage nach dessen Erscheinen verfügbar werden.

Wer sich nun denkt: „das hätte Facebook auch ohne die Spenden haben können“ hat damit durchaus Recht. Allerdings hat Facebook bereits weitergedacht. Nach einem Kommentar, den Mark Zuckerberg in seinem eigenen Profil veröffentlicht hat, soll die Entwicklung von FaceFox und Firefox bis zur Version 21.0 (also innerhalb der folgenden 6 Monate nach FaceFox 1.0) zusammengeführt werden und Firefox 21.0 über alle von Facebook bis dahin entwickelten Funktionen verfügen. Danach soll die Entwicklung bei Firefox weitergehen.

Facebook bekommt dadurch seinen eigenen „Haus-Browser“ so wie Google Chrome hat, nur ohne die Entwicklung von Grund auf durchführen zu müssen.

[/UPDATE]

[2. UPDATE]

Verdammt, Google macht alles kaputt.

[/2. UPDATE]

[UPDATE 2018-04-12]

Verdammt, das war doch nur als Spaß gemeint!

[/UPDATE 2018-04-12]

=-=-=-=-=
Powered by Blogilo

Spark nun vorbestellbar

16. Februar 2012 um 13:11 | Veröffentlicht in Computer, Free Software/Open Source, GNU/Linux, KDE, Multimedia, Ubuntuusers | 4 Kommentare

Das Spark-Tablet, ein mit Mer laufendes 7 Zoll-Gerät, ist nun zur Vormerkung freigegeben. Interessierte können sich unter makeplaylive.com registrieren.

Mer ist ein Fork der für Mobilgeräte geschaffenen Linux-Distribution MeeGo. Als graphische Oberfläche wird das Spark KDE Plasma Active mitbringen. Nach dem von Aaron Seigo kürzlich veröffentlichten Promo-Video wird der Fokus auf den KDE Aktivitäten liegen. Der Umfang kann per Apps erweitert werden, welche sowohl kostenlos als auch käuflich über den zugehörigen add-on Store erwerbbar sein werden.

In der ersten Version wird das Display 7“ groß sein, eine 1 GHz ARM Cortex A9 CPU beinhalten und über 512 MB DDR2 RAM verfügen. Als Speichermedium wird eine 4 GB große Flash Disk dienen. Über den integrierten MicroSD-Slot oder die beiden (Mini-) USB-Ports kann der Speicherplatz erweitert werden. Eine Kamera und eine Reihe von Knöpfen zum Steuern runden das 1080P-fähige Touch-Gerät ab. Wie lange die 3000mAH Batterie halten soll wurde noch nicht erwähnt. Das gute Stück wiegt etwa 355 Gramm. (Informationen von makeplaylive.com.)

Der aktuelle Aufruf zum Registrieren des Interesses soll den Entwicklern einen Überblick verschaffen wie groß die Nachfrage nach dem Gerät ist. Da sich das Gerät mit € 200,- relativ zu anderen Tablets im durchschnittlichen Preisbereich befindet sind die Hauptargumente die für das Spark sprechen wohl hauptsächlich seine offene Natur (der größte Teil ist freie Software) und der (eventuell) bereits bekannte KDE Desktop. Ich möchte mir ein solches Gerät auf jeden Fall zulegen. Sobald ich mich ein wenig damit herumgespielt habe werde ich meine Erfahrungen damit beschreiben.

Hier hat Aaron Seigo viele Antworten zu Fragen veröffentlich. Er schreibt dort unter anderem, dass Europa vorerst der Fokus der Verkäufe sein wird.

=-=-=-=-=
Powered by Blogilo

Nächste Seite »

Bloggen auf WordPress.com.
Entries und Kommentare feeds.