Songtexte in iTunes von LyricWiki.org

[Update 13.11.2009] Seit dem 02. August 2009 ist es LyricWiki nicht mehr erlaubt, Songtexte über sein API zur Verfügung zu stellen....

[Update 13.11.2009] Seit dem 02. August 2009 ist es LyricWiki nicht mehr erlaubt, Songtexte über sein API zur Verfügung zu stellen. Das bedeutet, daß die nachfolgend beschriebene Lösung zum Einbinden von Songtexten in iTunes-Musikstücke nicht mehr funktioniert. Auf der Seite LyricWiki API changes sind einige weitere Details vom LyricWiki-Schöpfer Sean Colombo zu erfahren.

iTunes hilft zwar bei der Suche nach Album-Covern, bietet aber kein Pendant für die Suche nach Songtexten. Auf dougscripts.com gibt es so manche AppleScript-Perle zu finden; so auch ein iTunes AppleScript von Doug Adams, mit dem anhand des Songnamens nebst Künstler aus iTunes heraus Songtexte auf LyricWiki.org gesucht und – falls gefunden – direkt in die Musikdatei (mp3) eingebunden werden können. Das Skript ist auch für weniger erfahrene Anwender sehr leicht in iTunes einzubinden und ebenso einfach zu bedienen: Song in iTunes anklicken, Skript aus dem Menü starten und den auf LyricWiki.org gefundenen Songtext in die Musikdatei übernehmen. Fertig!

Zur Installation: Auf der Seite Lyrics via LyricWiki steht eine *.dmg-Datei zum Download bereit. Wer statt des Installers gerne selber Hand anlegt, kann das untenstehende Script in eine Datei, bspw. LyricWiki.scpt, kopieren und diese im Verzeichnis ~/Library/iTunes/Scripts/ ablegen. Falls das Unterverzeichnis Scripts nicht existiert einfach “von Hand” anlegen.

  1. (*
  2. "Lyrics via LyricWiki" for iTunes
  3. written by Doug Adams
  4. dougadams@mac.com
  5. Thanks to the many Correspondents who emailed me info on the SOAP command.
  6. <http://lyricwiki.org/LyricWiki_talk:SOAP>
  7.  
  8. v1.1 may 11 2009
  9. - addressed issue with high-ASCII text
  10.  
  11. v1.0 February 28 2009
  12. -- initial release
  13.  
  14. Get more free AppleScripts and info on writing your own
  15. at Doug's AppleScripts for iTunes
  16. http://dougscripts.com/itunes/
  17. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
  18. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
  19. Get a copy of the GNU General Public License by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  20. or visit http://www.gnu.org/copyleft/gpl.html
  21. *)
  22.  
  23. property my_title : "Lyrics via LyricWiki"
  24. property nom : ""
  25. property art : ""
  26. global sel
  27. tell application "iTunes"
  28.   if player state is playing then
  29.     set sel to current track
  30.     tell sel to set {nom, art} to {get name, get artist}
  31.   else if selection is not {} and (count items of selection) is 1 then
  32.     set sel to item 1 of selection
  33.     tell sel to set {nom, art} to {get name, get artist}
  34.   else
  35.     return
  36.   end if
  37. end tell
  38.  
  39. -- log {nom, art}
  40. if nom is "" or art is "" then
  41.   display dialog "The track does not have enough information to search LyricWiki." buttons {"OK"} with icon stop with title my_title
  42.   return
  43. end if
  44. try
  45.   tell application "http://lyricwiki.org/server.php" to set rez to (call soap {method name:"getSong", method namespace uri:"urn:LyricWiki", SOAPAction:"urn:LyricWiki#getSong", parameters:{artist:art as text, song:nom as text}})
  46. on error m
  47.   tell application "iTunes"
  48.     display dialog "Error from LyricWiki:" & return & return & tab & m with title my_title
  49.   end tell
  50. end try
  51.  
  52. -- log rez
  53. set theLyrics to do shell script "echo " & quoted form of ((lyrics of rez) as text) & " | iconv -t ISO-8859-1 -f UTF-8"
  54. set lyricWikiPageURL to |url| of rez
  55.  
  56. -- copy to lyrics or display LyricsWiki page?
  57. if theLyrics does not contain "Not found" then
  58.   set displayLyrics to my text_to_list(theLyrics, (ASCII character 13))
  59.   set opt to (choose from list displayLyrics with prompt (art & return & "\"" & nom & "\"") as text OK button name "Use Lyrics for Track" with empty selection allowed)
  60.   if opt is false then return
  61.   (*
  62.     tell application "Finder"
  63.       open location lyricWikiPageURL
  64.     end tell
  65.   *)
  66.   tell application "iTunes"
  67.     try
  68.       set sel's lyrics to theLyrics
  69.     end try
  70.   end tell
  71. else
  72.   display dialog "Lyrics for \"" & art & "\" - \"" & nom & "\" not found at LyricWiki." buttons "OK" with icon stop with title my_title
  73. end if
  74.  
  75. on text_to_list(txt, delim)
  76.   set saveD to AppleScript's text item delimiters
  77.   try
  78.     set AppleScript's text item delimiters to {delim}
  79.     set theList to every text item of txt
  80.     on error errStr number errNum
  81.     set AppleScript's text item delimiters to saveD
  82.     error errStr number errNum
  83.   end try
  84.   set AppleScript's text item delimiters to saveD
  85.   return (theList)
  86. end text_to_list

Nutzung: Nach Auswahl einer Musikdatei In iTunes den Eintrag “LyricWiki” im Script-Menü (sieht wie eine Schritftrolle aus) wählen. Falls keine Lyrics auf LyricWiki.org für den gewählten Song gefunden werden, gibt das Script eine entsprechende Meldung aus. Andernfalls wird der Songtext angezeigt und kann, falls gewünscht, in die Musikdatei übernommen werden.

Vom iTunes Store geladenes Cover in mp3-Datei einbinden

NB: Nur für Mac-Nutzer! Durch einen Daten-GAU bin ich über iTunes eigenwilliges Verhalten im Umgang mit Album-Covern gestolpert. Die Funktion...

NB: Nur für Mac-Nutzer! Durch einen Daten-GAU bin ich über iTunes eigenwilliges Verhalten im Umgang mit Album-Covern gestolpert. Die Funktion zum automatischen Download von Cover-Bildern ist ausserordentlich praktisch. Und wie groß ist die Freude, wenn im iTunes-Store tatsächlich auch mal ein Bild gefunden wurde. ;-) Allerdings werden die derart geladenen Cover nicht direkt in die zugehörigen mp3-Dateien eingebaut, sondern mit kryptischen Dateinamen in einer unübersichtlichen Verzeichnisstruktur unter ~/Music/iTunes/Album Artwork/ abgelegt.
   Wer die Cover lieber in seinen mp3-Dateien archiviert wissen möchte, für den hat Brian Webster ein kleines AppleScript für iTunes Version 7 oder höher geschrieben. Das Script steht auf der Seite Doug’s AppleScripts for iTunes als Installer-Archiv zum Download bereit.
   Wer statt den Installer zu bemühen lieber selber Hand anlegt, kann das untenstehende Skript in eine Datei, bspw. EmbedArtwork.scpt, kopieren und diese im Verzeichnis ~/Library/iTunes/Scripts/ ablegen. Falls das Unterverzeichnis Scripts nicht existiert einfach “von Hand” anlegen.

  1. (*
  2. "Embed Artwork" for iTunes 7 or better
  3. written by Brian Webster
  4.  
  5. - v1.1 sept 25 2006
  6. - added routine to check for a selection, account for de-selection of tracks (D.A.)
  7.  
  8. - v1.0 sept 25 2006
  9. - initial release
  10. *)
  11.  
  12. tell application "iTunes"
  13.   if selection is not {} then
  14.     set sel to selection
  15.     with timeout of 300000 seconds
  16.       repeat with aTrack in sel
  17.         repeat with anArtwork in artworks of aTrack
  18.           if downloaded of anArtwork is true then
  19.             set theData to data of anArtwork
  20.             set data of anArtwork to theData
  21.           end if
  22.         end repeat
  23.       end repeat
  24.     end timeout
  25.   else
  26.     display dialog "Select some tracks first..." buttons {"Cancel"} default button 1 with icon 2 giving up after 15
  27.   end if
  28. end tell

Nach Auswahl ein oder mehrerer Musikdateien In iTunes den Eintrag “EmbedArtwork” im Script-Menü (sieht wie eine Schritftrolle aus) wählen und die Bilder werden aus der iTunes-Library in die mp3-Dateien eingefügt.

Kaufe niemals eine Version 1.0 (bspw. Siemens Gigaset SL785)

Der Titel dieses Beitrags ist nicht korrekt formatiert, denn das niemals müsste fettgedruckt und in doppelter Schriftgröße erscheinen. Und darüberhinaus...

Der Titel dieses Beitrags ist nicht korrekt formatiert, denn das niemals müsste fettgedruckt und in doppelter Schriftgröße erscheinen. Und darüberhinaus mindestens vier- bis achtmal wiederholt werden. Kaufe niemals eine Version 1.0 ist übrigens eine außerordentlich wichtige Lebens- und Verhaltensregel, an die ich mich aber dummerweise zweimal selber nicht gehalten habe. Beide Male bei Siemens. Zufall? Hier zumindest die Eine von zwei Geschichten als mahnendes Beispiel für professionelle und vorsätzliche Käuferabzocke.

Aus bestimmten Gründen musste mein altes Festnetztelefon, ein Siemens Gigaset C45, das treu seinen Dienst im Zusammenspiel mit einem GN Netcom 9120GAP Headset verrichtete, in Rente gehen. Finder mit Applets/Droplets Bei der Suche nach einer Alternative stiess ich auf das flatschneue Siemens Gigaset SL785 (nebenstehendes Pressebild Copyright by Siemens). Neben einem gelungenen Äußeren (Geschmackssache, schon klar) waren auch die inneren Werte überzeugend. Für mich kaufentscheidend u.a.

  • EcoMode+ Wenn das Handteil (SL78H) in der Basisstation steckt, reduziert sich die Sendeleistung auf Null Prozent. Habe keine Strahlenphobie, aber wenn ich reduzieren kann, dann tue ich es auch.
  • Listening in Feature, um alle an der Basisstation angemeldeten Endgeräte in einer Konferenz zusammenschalten zu können. Wird für ein komfortables Zusammenspiel mit dem GN Netcom Headset benötigt.
  • Pimp-my-Phone Möglichkeit, eigene Klingeltöne und CLIP Picture auf das Handteil aufzuspielen. Spiele halt gerne. ;-)

Der Liefertermin hat sich zweimal verschoben. Wahrscheinlich weil die Siemensentwickler den in Stein gemeisselten Launchtermin vor Augen habend, panisch die letzten Bugs beseitigen mussten und dann doch nicht fristgerecht fertig wurden. Am Ende die Lieferung, Auspacken, Anschließen. Und glücklich sein?

Mitnichten. Bzgl. der Basisfunktionen, also telefonieren und Anrufbeantworter, keine Klagen von meiner Seite. Auch das Koppeln der Basisstation mit dem GN Netcom Headset funktioniert reibungslos. Aber kommen wir zu den o.g. Features.

  • EcoMode+ Es gibt in der Tat Menüpunkte, um den EcoMode (20% Strahlung) und EcoMode+ (0% Strahlung) einzuschalten. Was in der Werbung allerdings verschwiegen wird und erst eine Anfrage beim Siemens-Service zu Tage förderte: Alle an der Basisstation angemeldeten Endgeräte müssen den EcoMode+ unterstützen, sonst geht nur EcoMode (ohne Plus). Und da das recht alte Headset den EcoMode+ nicht kennt, darf ich mich nun mit 80% Strahlenreduktion zufrieden geben. Naja, immer noch besser als vorher, denn das C45 hat ja permanent mit 100% Leistung die Wohnung “gebraten”.
  • Listening in Jetzt wird es interessant. Das “Listening in”-Feature existiert irgendwo vergraben in der Menüstruktur und lässt sich auch einschalten. Nur funktioniert es nicht so, wie bisher beim alten Gigaset C45. Die Sollverhaltensweise: Nummer am Handteil wählen, dann das Headset hinzuschalten und am Handteil auflegen. Die Istverhaltensweise: Nummer am Handteil wählen. Ende. Denn das Hinzuschalten des Headsets will nicht gelingen. Nur über den mühseligen Weg, eine interne Gesprächsweitergabe zum Headset durchzuführen, was einige Tastendrücke mehr kostet und den Angerufenen i.d.R. mit einer Wartemelodie beglückt. Nicht schlimm? Nun, warum funktioniet es bei der “alten Möhre” C45, nicht jedoch beim neuen Gigaset-Flagschiff? Es geht um Komfort und der ist beim Wählen einer Rufnummer nicht mehr gegeben. Sehr ärgerlich. Eine entsprechende Anfrage beim Siemens-Service verlief bisher ergebnislos. Man bat mir einen Telefontermin an, um das Problem fernmündlich zu erörtern. Honi soit qui mal y pense…aber ich bin ein Schelm und unterstelle, daß sie mir nicht per E-Mail eine Fehlfunktion bestätigen möchten. Könnte ja sein, daß ich diese Information in irgendwelche Foren weitertrage und für schlechte Publicity sorge…
  • Pimp-my-Phone Hahaha, jetzt wird’s richtig lustig! Mit dem SL785 wird eine Software für den PehZeh (nur PC, nicht Mac!) geliefert, mittels derer Outlook-Kontakte synchronisiert werden können. Darüberhinaus dient die Software dem Einspielen von Firmware-Updates auf das Handteil SL78H sowie – genau! – dem Übertragen von eigenen Klingelmelodien und CLIP Pictures. Nach der Installation der Software wundere ich mich, daß der einzige ausgegraute Button jener für die Klingelmelodien und CLIP Pictures ist. Keine Chance, eigene Klingeltöne auf das Handteil zu bringen. Natürlich Anfrage beim Siemens-Service, der aber auch dieses Problem mit dem o.g. Telefonvorschlag abkanzelt. Mittlerweile bin ich schlauer, denn zum Beleg, daß diese Funktion zum Auslieferungszeitpunkt tatsächlich nicht zur Verfügung stand, ist der Siemens Service Downloads-Seite nunmehr folgender Hinweis zu entnehmen “Download von Klingelmelodien und Picture CLIP’s wird mit dem nächsten Firmware-Update, voraussichtl. Frühjahr 2009, unterstützt”.

Soweit ich weiß, spricht man, zumindest bei letztgenanntem Punkt, von einem arglistig verschwiegenen Mangel. Aber wer schonmal mit Produktmanagement und Business Cases zu tun hatte, weiß natürlich, wie das bei Siemens gerechnet wurde. Ein eher teures Produkt für eine eher kleine Zielgruppe in der die meisten mit reiner Telefonie zufrieden sein dürften. Darin eine verschwindend kleine Splittergruppe, die “Listening in” und vielleicht auch noch Klingelmelodien/CLIP Pictures nutzen möchte. Für die wird ein entsprechender Customer Care- und/oder Widerrufs-Posten in den Business Case eingewurstet und fertig ist das Thema. So einfach kann man Bananenprodukte (=reifen beim Käufer) auf den Markt schmeißen.

Aber Hand auf’s Herz: Renne ich jetzt zum Verbraucherschutz? Mache ich meine Rechte geltend? Tausche ich das Gerät wg. arglistig verschwiegenen Mängeln um? Oder warte ich brav bis zum nächsten SW-Update im Frühjahr 2009 in der blinden Hoffnung auf Reparatur bzw. Nachlieferung der zum Kaufzeitpunkt versprochenen und beworbenen Funktionalitäten? Macht eben doch Sinn, sich an bewährte Lebens- und Verhaltensregeln zu halten, bspw.: Kaufe niemals, niemals, niemals, niemals eine Version 1.0 von irgendwas.

[Update, 19.12.2008] Habe gerade diesen Beitrag editiert, um den obigen Link zu GN Netcom/Jabra einzufügen und dabei drei Dinge festgestellt:

  1. GN Netcom wurde offensichlich von Jabra gekauft.
  2. Das 9120-Modell firmiert jetzt unter der Bezeichnung Jabra GN9120 (Duo).[Update, 18.10.2010] Das ehemalige 9120-Modell ist jetzt als Jabra GN9125 Series auf der Jabra Site zu finden.
  3. Dafür gibt es aber eine Akku-Rückrufaktion für 9120er Headsets aus der Zeit Jan05 bis Sep08! Habe bereits den Ersatzakku angefordert… ;)

[Update 2, 27.12.2008] Hahahahaha. Und hier endlich, nach zweimaliger Nachfrage, die Antwort des Siemens-“Service”. Fasten your seatbelts!

Die Markteinführung des Gigaset SL780/SL785 war ursprünglich zu einem späteren Zeitpunkt geplant. Auf Grund der großen Nachfrage entschieden wir uns für eine frühere Markteinführung des Telefons. Der volle Funktionsumfang des Gigaset SL780/SL785 steht ab März 2009 durch ein Softwareupdate zur Verfügung.

Führen Sie bitte ein Update des Gigaset SL78H über die Software QuickSync durch. Die aktuellste Version ist die 75 030 00. Testen Sie danach die Gesprächsübernahme durch drücken der Headset-Taste. Ist die Gesprächsübernahme nicht möglich, ist die Gesprächsübernahme lediglich über das interne Weiterleiten möglich.

Wie unglaublich frech kann man eigentlich sein?!

[Update 3, 10.02.2008] Habe SW-Update des SL78H auf die aktuellste Version 75.030.00 durchgeführt. Die Hoffnung war klein und das Ergebnis ist wie erwartet: Gesprächsübernahme weiterhin nur über internes Weiterleiten möglich. :-(

[Update 4, 17.04.2009] “voraussichtl. Frühjahr 2009” war als Termin eines Updates genannt, mit dem der Download von Klingelmelodien und Picture CLIPs endlich funktionieren soll. Mittlerweile steht eine neue QuickSync-Software auf der Siemens Service Downloads-Seite bereit, die die gewünschten Funktionalitäten nachliefert. Ein schlappes halbes Jahr nach Marktlaunch… Immerhin: Die Übertragung eigener Klingeltöne als “Midi and real Sounds (e.g. MP3, AAC, …) with automatic conversion to G.722 format” funktioniert. Ein über QuickSync durchgeführtes Firmware-Update zeigt, daß auch hier eine neue Version, nun mit Versionsstand 75.114.00 verfügbar ist. Aber leider bleibt der größte Wermutstropfen erhalten: Auch mit dieser Firmware-Version ist eine Gesprächsübernahme auf dem Headset nur über internes Weiterleiten möglich.

WordPress Update Orgie

Unglaublich! Nach zähem Ringen mit mir selbst, habe ich vor drei Tagen meine WordPress-Installation endlich von 2.5.1 auf 2.6.5 aktualisiert....

Unglaublich! Nach zähem Ringen mit mir selbst, habe ich vor drei Tagen meine WordPress-Installation endlich von 2.5.1 auf 2.6.5 aktualisiert. Da stets einige mehr oder weniger nervige Handgriffe nötig sind, hatte ich ein paar Versionsstände mutwillig ausgelassen, um erst dann ein Upgrade durchzuführen, wenn die aktuelle Version Stabilität verspricht. Zwar ist Version 2.7 seit geraumer Zeit in Arbeit, aber aus irgendeinem Grund, vielleicht Erdstrahlen oder Quantenzombies aus dem All, lachte mich vor drei Tagen die 2.6.5er an…
   Nun, besagte drei Tage später, wird Version 2.7 veröffentlicht, hark, hark! Wirklich unglaublich! Muß ich schon wieder upgraden. Aber 2.7 ist verlockend, da es nun endlich einen Update-Manager gibt, der ein One-Klick-Upgrade ermöglichen soll. WordPress ist hervorragend, aber ein automatischer Update-Manager war lange überfällig. ;-)
   [Edit] Nun denn, Version 2.7 ist up and running! Dashboard komplett überarbeitet und deutlich übersichtlicher als zuvor. Das gesamte Look’n’Feel wirkt sehr aufgeräumt und durchdacht. Gemäß Aussage der Entwicklergemeinde sind sehr viele Nutzerwünsche in die Gestaltung des “neuen” Dashboards eingeflossen. Gute Arbeit!

wp-syntax um “Copy to Clipboard”-Funktionalität erweitern

[20.01.2009] NB: Aus unbekannten Gründen funktioniert seit geraumer Zeit die hier vorgestellte Ergänzung nicht mehr. Die Ursachensuche war bisher erfolglos....
[20.01.2009] NB: Aus unbekannten Gründen funktioniert seit geraumer Zeit die hier vorgestellte Ergänzung nicht mehr. Die Ursachensuche war bisher erfolglos. Die erste Vermutung, daß das verwendete Flash-Progrämmchen aufgrund eines automatischen Flash-Player-Updates von Version 9.x auf Version 10.x nicht mehr in die Zwischenablage kopiert, konnte nicht bestätigt werden. Möglicherweise liegt es an Browser-Updates, die aus Sicherheitsaspekten dem hier beschriebenen Weg einen Riegel vorschieben. Bis zur Lösung des Problems ist daher von der Verwendung abzuraten.
Das WordPress-Plugin wp-syntax ermöglicht Syntax Highlighting von Code-Snippets für eine Vielzahl verschiedener Sprachen. Es bietet allerdings von Haus aus keine “Copy to Clipboard”-Funktionalität, also bspw. einen Link, der den Beispiel-Kode in die Zwischenablage kopiert. Nach ein wenig Recherche zeigt sich schnell, daß das Kopieren auf Knopfdruck in die Zwischenablage aus einem Browser eine nicht ganz triviale Angelegenheit ist; vielleicht der Grund, warum wp-syntax gleich ganz darauf verzichtet?!
   Unter Zuhilfenahme einer kleinen Flash-Applikation, etwas Javascript und ein wenig Frickelei an der wp-syntax.php sowie wp-syntax.css lässt sich die Funktionalität allerdings nachrüsten. Wer die Schritte nicht einzeln nachvollziehen möchte, kann am Ende dieses Artikels das vollständige wp-syntax-Plugin nebst aller Änderungen downloaden. Die nötigen Anpassungen im Detail:

  1. wp-syntax.php
    In Funktion wp_syntax_highlight() hinter do_action_ref_array(...) und vor dem if ($line)-Block. Ersetze $output = "\n<div class=\"wp_syntax\">"; durch

    $output = "\n<div class=\"wp_syntax_null\"><div class=\"wp_syntax\">";

    Und $output .= "</div>\n"; hinter dem if ($line)-Block durch

    $output .= "</div><a title=\"copying to clipboard may need flash-player\" style=\"color: #707070;\" href=\"#\" onClick=\"return copyToClipboard(this);\">copy to clipboard</a></div>\n";

    In der Funktion wp_syntax_head() ist vor dem echo-Statement der folgende Block zu ergänzen:

    $js_url = get_bloginfo("wpurl") . "/wp-content/plugins/wp-syntax/wp-syntax.js";
    if (file_exists(TEMPLATEPATH . "/wp-syntax.js"))
    {
      $js_url = get_bloginfo("template_url") . "/wp-syntax.js";
    }
    echo "\n".'<script src="' . $js_url . '" type="text/javascript"></script>'."\n";
  2. wp-syntax.css
    Zu Beginn der Datei den folgenden Kode einfügen:

    .wp_syntax_null {
      color: #707070;
      margin: 0 0 1em 0;
      vertical-align: top;
      text-align: right;
      font-size: 9px;
      line-height: 1;
    }

    In der CSS-Definition für .wp_syntax die Formatbeschreibung für margin mit dem folgenden Block überschreiben.

      margin: 1em 0 0 0;
      text-align: left;
  3. _clipboard.swf
    Das Eingangs erwähnte Flash-Progrämmchen steht als _clipboard.swf zum Download bereit (Rechtsklick auf den Link, dann Speichern unter). Die Datei ist zwingend mit im wp-syntax-Plugin-Verzeichnis zu speichern.
     
  4. wp-syntax.js
    Eine neue Datei. Diese mit folgendem Inhalt befüllen und im selben Verzeichnis wie wp-syntax.php ablegen. Server- und Pfadangabe in Zeile 37 sind den eigenen Gegebenheiten anzupassen.

    1. <!--
    2. function copyToClipboard( t ) {
    3.   // get <pre>-node's innerText|HTML
    4.   if ( /Firefox/.test( navigator.userAgent ) ) {
    5.     var tt = t.previousSibling.firstChild.firstChild.innerHTML;
    6.     tt = tt.replace( /&(lt|gt);/g, function( strMatch, p ) { return (p=="lt")?"<":">"; } );
    7.     tt = tt.replace( /<span style[^>]+(>|$)/g, "" );
    8.     tt = tt.replace( /<\/span>/g, "" );
    9.   } else {
    10.     var tt = t.previousSibling.firstChild.firstChild.innerText;
    11.   }
    12.   // hack to identify and remove leading line numbers
    13.   var lines = tt.split( "\n" );
    14.   if ( lines.length > 1 ) { 
    15.     bailout: while( lines.length ) {
    16.       var trimmed = lines[ 0 ].replace( /\s+$/g, '' ) ;
    17.       for ( var j = 0; j < trimmed.length; ++j ) {
    18.         if ( isNaN( parseInt( trimmed.charAt( j ) ) ) ) {
    19.           // bail out on first line containing non-digit chars
    20.           break bailout;
    21.         }
    22.       }
    23.       lines.shift( );
    24.     }
    25.   }
    26.   text2copy = lines.join( "\n" );
    27.   if ( window.clipboardData ) {
    28.     window.clipboardData.setData( "Text", text2copy );
    29.   } else {
    30.     var f = 'flashcopier';
    31.     if ( !document.getElementById( f ) ) {
    32.       var divholder = document.createElement( 'div' );
    33.       divholder.id = f;
    34.       document.body.appendChild( divholder );
    35.     }
    36.     document.getElementById( f ).innerHTML = '';
    37.     var divinfo = '<embed src="http://www.eigener-server.de/wp-content/plugins/wp-syntax/_clipboard.swf" FlashVars="clipboard=' + escape( text2copy ) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    38.     document.getElementById( f ).innerHTML = divinfo;
    39.   }
    40.   alert( "Text should have been copied to clipboard!\nMay not work with all browsers." );
    41.   return false;
    42. }
    43. -->

Das vollständige wp-syntax-Plugin basierend auf Version 0.9.1 inklusive der hier beschriebenen Ergänzungen steht als wp-syntax.0.9.1-copy2clip.zip (516kB) zum Download bereit.

LayerAd-Blocker für Opera die Zweite

Die Maßnahmen des vorherigen Posts Flash-, LayerAd- und URL-Blocker für Opera helfen gegen Flash, LayerAds und Popup-Fenster. Aber sie helfen...

Die Maßnahmen des vorherigen Posts Flash-, LayerAd- und URL-Blocker für Opera helfen gegen Flash, LayerAds und Popup-Fenster. Aber sie helfen nicht genug. Es gibt noch immer Seiten, die es trotz der zuvor beschriebenen URL-Sperren schaffen, unerwünschte Werbefenster auf den Bildschirm zu zaubern. Bedauerlicherweise ist das auch kein Voodoo, sondern mit einer Kombination aus div-Layern und etwas JavaScript leicht zu bewerkstelligen. Der Kampf geht also weiter und wir zünden die zweite Stufe gegen LayerAds.
   Für Web-Seiten, auf denen Werbefenster über die o.g Kombination aus Layern und JavaScript ein- und ausfliegen, kann mit dem folgenden User-JavaScript für Opera das Laden jedweder externer JavaScript-Dateien unterbunden werden.

// ==UserScript==
// @name AvoidLoadingOfExtJS
// @author nullseite
// @version 1.0
// @description Avoids loading of external javascripts
// @include http://example.com/*
// ==/UserScript==
window.opera.addEventListener(
  'BeforeExternalScript', function (e) { e.preventDefault(); },
  false
);

Über das @include-Tag können beliebige weitere Domains ergänzt werden, für die das Laden externer JavaScript-Dateien vollständig(!) abgeschaltet werden sollen. Und so geht’s: Code den eigenen Bedürfnissen anpassen, in einer Datei speichern, bspw. LayerAdBlocker.js, und diese in das eigene User-JavaScript-Verzeichnis kopieren. Möglicherweise existiert ein solches Verzeichnis noch nicht – es kann aber über Preferences » Advanced » Content » JavaScript Options… ermittelt bzw. eingetragen werden.
   Weiterführende Informationen zu User-JavaScripts sind einem Tutorial auf den Support-Seiten von Opera zu entnehmen.

Flash-, LayerAd- und URL-Blocker für Opera

Die Werbegängelei im Internet nimmt stetig zu. Der &#8220;letzte Schrei&#8221; sind Layer-Ads oder auf Flash basierende Werbefenster, die gerne animiert...

Die Werbegängelei im Internet nimmt stetig zu. Der “letzte Schrei” sind Layer-Ads oder auf Flash basierende Werbefenster, die gerne animiert auf den Bildschirm fliegen, um dann erst nach Klick auf einen meist mikroskopisch kleinen Schließenknopf wieder zu verschwinden. Die in den Browsern verbauten PopUp-Blocker kommen unterschiedlich gut mit den verschiedenen Werbebelästigungen zurecht, wobei sich Opera mit LayerAds besonders schwer tut.
   Beginnen wir aber zunächst mit einer Maßnahme gegen die generell überbordende Verwendung von Flash-Elementen in Web-Seiten. A.Ruzanov hat einen FlashBlocker für Opera9 entwickelt, der auf Operas User-JavaScript-Funktionalität setzt. Da sich die Installationsanleitung ausschließlich auf Windoze bezieht, hier das Ganze für MacOS:

  1. Die Datei FlashBlocker.css ins Verzeichnis /Users/<username>/Library/Preferences/Opera Preferences/Styles/user kopieren. (<username> durch eigenen Usernamen ersetzen)
  2. Die Datei FlashBlocker.js in das eigene User-JavaScript-Verzeichnis kopieren. Möglicherweise existiert ein solches Verzeichnis noch nicht; das Verzeichnis kann über Preferences » Advanced » Content » JavaScript Options… ermittelt bzw. eingetragen werden.
  3. Blocker über View » Style » Flash Blocker einschalten.

Test des FlashBlockers bspw. auf der Seite von Macromedia. Erscheinen F-Icons anstelle der Flash-Elemente, dann verrichtet der Blocker seinen Dienst. Mit Klick auf ein F-Icon kann das zugehörige Flash-Element gestartet werden.
   Nun geht’s den LayerAds an den Kragen. Zum einen wird die Datei urlfilter.ini (MacOS unter /Users/<username>/Library/Preferences/Opera Preferences zu finden, Windows C:\Dokumente und Einstellungen\<Username>\Anwendungsdaten\Opera\Opera\profile), um die Einträge aus der von ad-flitzer zur Verfügung gestellten urlfilter.ini ergänzt. Zum anderen soll es helfen, die folgenden Einträge in die hosts Datei einzufügen (MacOS /private/etc/hosts, Windoze %SystemRoot%\system32\drivers\etc\hosts).

127.0.0.1	ilead.track.it
127.0.0.1	www.layer-ads.de
127.0.0.1	layer-ads.de
127.0.0.1	www.sponsorads.de
127.0.0.1	sponsorads.de
127.0.0.1	www.way2cash.eu
127.0.0.1	www.ad4cash.de
127.0.0.1	www.adpark.de
127.0.0.1	www.adspin.de
127.0.0.1	www.gigacash.de
127.0.0.1	www.propaid.de
127.0.0.1	www.scash.de
127.0.0.1	ad.zanox.com
127.0.0.1	bin-layer.de
127.0.0.1	zanox-affiliate.de
127.0.0.1	binlayer.de

Damit sollte sich zumindest die Zahl nerviger Werbeeinblendungen reduzieren lassen. Und wer nicht weiß, was er mit den hier genannten Maßnahmen in seinem System tut, sollte es einfach lassen. ;) Alle Angaben ohne Gewähr!

Opera mit anderem Torrent-Client

Damit ich selber nicht noch einmal suchen muß, hier eine kurze Beschreibung wie Opera dazu bewegt werden kann, einen anderen...

Damit ich selber nicht noch einmal suchen muß, hier eine kurze Beschreibung wie Opera dazu bewegt werden kann, einen anderen Torrent-Client als den eingebauten anzusteuern. Menü Tools » Preferences » Advanced » Download aufrufen. Neuen MIME-Typ application/x-bittorrent hinzufügen, Dateiendung torrent wählen, abschließend unter “open with other application” den bevorzugten Torrent-Client eintragen. Ok and Enjoy!