Archive of articles classified as' "Safari"

Back home

Protected: Mactechnews Gallerie Downloader

14/01/2011

This post is password protected. To view it please enter your password below:

No Comments

AppleScript: PixelPipe Uploader

11/01/2011

Mir hat diese Sache aus dem AppleScript-Forum keine Ruhe gelassen auch wenn ein Plug-in für Safari da wohl etwas mehr her gemacht hätte. Zur Zeit ist aber leider nix anderes drin außer AppleScript. Es gibt 2 Versionen von dem Skript, eine als Skript-Datei, die man direkt aus Safari oder einem anderen Browser aus starten kann und eines das via Drag&Drop Dateien zu Pixelpipe hoch lädt. Die Script-Datei holt sich den Link zur einem Bild aus der Zwischenablage, lädt dieses herunter und pumpt es dann hoch auf PixelPipe. Das Programm lädt jede Bild-Datei hoch, die zuvor darauf gezogen wurde... Ich für meinen Teil werde Pixelpipe wohl kaum nutzen, aber in dem Quellcode sind so einige nützliche Sachen drin (URL-Escapeing, Curl-Form-Upload, Keychain-Scripting...)

Skript-Datei und Skript-Programm

DOWNLOAD
hubionmac's PixelPipe Uploader v.0.1
59.6 kB (102 hits)
Read the rest of this article »
No Comments

AppleScript + JavaScript Tutorial mit Video

7/01/2011
Meine Güte ist mir langweilig. AppleScript StepByStep mit Video und Quellcode...
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Safari"

activate

open location "http://www.heise.de/newsticker/"

set mysearch to text returned of (display dialog "Meldungen anzeigen die ... enthalten:" default answer "")

tell document 1

set mylinks to do JavaScript "

var myoutput = new Array();

for (var i=0;i<document.links.length;i++){

if (document.links[i].text.indexOf('" & mysearch & "')>-1 && document.links[i].href.indexOf('/newsticker/meldung/')>-1) {

myoutput.push(document.links[i].href)

}

}

myoutput

"

repeat with mylink in mylinks

my makeNewTab()

do JavaScript "document.location='" & mylink & "'"

end repeat

end tell

end tell


on makeNewTab()

tell application "Safari" to activate

tell application "System Events"

tell process "Safari"

keystroke "t" using command down

end tell

end tell

delay 0.5

end makeNewTab

1 Comment

AppleScript in Google Chrome

6/11/2010
Bei meiner Arbeit nutze ich oft AppleScript in Verbindung mit JavaScript. Viele meiner täglichen Aufgaben müssen über Webseiten abgewickelt werden und wenn es z.B. darum geht ein Web-Formular mit Daten aus Excel oder einem anderen Programm zu füttern oder Daten aus Webseiten zu extrahieren, dann kann so eine AppleScript-JavaScript-Lösung einem schon wirklich einiges an Zeit ersparen. Bisher war hierfür eigentlich nur Safari geeignet, da nur Safari das Ausführen längere JavaScripts via AppleScript unterstützte.
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Safari"

tell document 1

do JavaScript "document.links.length"

end tell

end tell

Aber jetzt hat auch Google Chrome eine Schnittstelle für AppleScript erhalten und kann (wenn auch noch etwas rudimentär) JavaScript-Befehle über AppleScript ausführen.
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Google Chrome"

tell window 1

tell tab 1

execute javascript "document.links.length"

end tell

end tell

end tell

Das Problem was dabei aber noch besteht: Der Aufruf führt das angegeben JavaScript zwar aus, gibt aber an AppleScript nichts aus. Stattdessen erscheint nach dem Ausführen des obigen Codes nur missing value in der Ausgabe. Zur Zeit behelfe ich mir noch damit den Rückgabewert in den Titel des Dokuments zu schreiben und diesen dann via AppleScript auszulesen:
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Google Chrome"

tell window 1

tell tab 1

execute javascript "document.title = document.links.length + 1"

delay 1

get title

end tell

end tell

end tell

Etwas unschön zumal ein delay mit rein muss, da der Titel sich nicht unmittelbar aktualisiert, aber zumindest schon mal ein Anfang, wenn Chrome der auserwählte Web-Browser sein sollte.Kleiner Nachtrag... statt tab 1 kann man auch active tab nutzen
No Comments

Safari: Öffne alle JavaScript Links

5/05/2010
Kann recht praktisch sein, wenn man sich mal alle JavaScript-Dateien zu einer Website anzeigen lassen möchte...
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

tell application "Safari"

tell document 1

--set mybaseURL to do JavaScript "document.URL.slice(0, document.URL.lastIndexOf('/')+1)"

set jslinks to do JavaScript "var jssrcarray = new Array()

for (var i=0;i<document.getElementsByTagName('script').length;i++)

{

jssrcarray.push(document.getElementsByTagName('script')[i].src)

}

jssrcarray

"

repeat with jslink in jslinks

open location jslink

end repeat

end tell

end tell

No Comments

Link Liste zum selber bauen

14/02/2010

Ich war mit der Link-Liste hier noch nie wirklich zufrieden und da ich mit delicious&Co nie wirklich warm geworden bin und meine Links lieber selber horte, habe ich die letzte schlaflose Nacht zu genutzt mit eine kleine Webseite zu basteln, die via xhttp-request (Ajax) eine Text-Datei nachlädt, und die darin enthaltene Link-Liste in schnell durchsuchbare Tabelle umbaut. Und weil sich so eine tab-separierte Liste ja nicht von alleine erstellt, habe ich mir auch noch ein AppleScript gebaut, welches zunächst checkt, in welcher Anwendung ich bin, ggf. gleich die URL der akutellen Seite kopiert, mich noch nach einer Beschreibung und Tags fragt und das ganze mit einem Datumsstempel in eine Text-Datei schreibt =)
So kann ich meine Link-Liste lokal über einen Shortcut pflegen und via Crontab dann regelmäßig auf die Seite hier laden =) Yahooo! Von hinten durch die Brust ins Auge =)!
Der Clou ist halt, dass die Liste unter allen Browsern die ich so einsetze abrufbar ist und das auch, wenn ich mal gerade kein Internet habe... hm, dann machen die Links an sich auch keinen Sinn in dem Moment. SoWhat! Hier also eine Lokale Version der HTML-Link-Liste und das AppleScript zum Speichern (geht davon aus, das beide Datein in ~/Documents liegen) DOWNLOAD
Link Lister v0.1 v.
10.61 KB (139 hits)

No Comments

Safari XY

13/12/2009
compass-copy.pngIch habe in letzter Zeit etwas mit JavaScript-Befehlen in Safari herumgespielt. Dabei bin ich dann auch auf die Idee gekommen mal die Fenster darüber zu verschieben und in der Größe zu verändern.Am Ende ist es doch aber recht dumm, wenn man über irgendwelche Formeln Fenster genau aufteilt, jeder hat da seine eigene praktische Anordnung, warum also diese nicht einmal einrichten und dann immer wieder aufrufen können.Das Skript kommt nun also vollkommen ohne Java-Script aus und funktioniert wie folgt:
Wenn man es das erste Mal mit einer bestimmten Anzahl an offenen Safari-Fenstern öffnet, speichert es deren Position ab.Ruft man das Skript nun später wieder auf, kennt es ja für diese Anzahl an Fenstern deren Position und stellt diese wieder her. Man kann diese Einstellung natürlich auch überschreiben, das bietet der Dialog auch an.So kann man sich für jede x-beliebige Anzahl an Safari-Fenstern, deren Position speichern und wieder herstellen =)Hier also Hubi's Safari XY Skript =) DOWNLOAD
Safari XY v.1.0
(227 hits)
HA, hier ist wohl die bessere Lösung
No Comments

Hubi’s HTML Gallerie

13/12/2009

Das Skript befindet sich zwar noch in der Entwicklung, aber ...mal sehen, was noch kommt =)

Was tut das Skript:

Man wählt zunächst einzelne Bilder oder Ordner die Bilder (oder auch UnterOrdner) mit Bildern enthalten (Drag&Drop auf das Skript)aus. Jeweils im Verzeichnis der Bilder wird eine _Gallery.html Datei mit Thumbnails der Bilder erzeugt. Das besondere daran ist:
    1. dass die Thumbnails als Inline-Grafik in der html-Datei gespeichert sind, und so keine Datei-Wirrwar entsteht.
      Zudem werden beim "rüberfahren" mit der Maus (kein JavaScript sonder pures CSS) noch Infos wie Dateiname, Größe und Auflösung angezeigt...
      und dann wird das ganze auch noch nicht in einer Tabelle, sondern in einem div-Konstrukt angezeigt, und passt sich somit von "Natur aus" dynamisch an die Größe des Browser-Fenster an =)
    1. Beim Aufruf über einen Server verringern sich die einzelnen Verbindungen, es wird einfach eine HTML-Datei geladen, nicht eine HTML-Datei + x-Thumnail-Dateien---- > Unterm Strich müsste es schneller laufen

    Beispiel-HTML-Gallerie

    (Nur die Thumbnails, ohne Verlinkung zu den Originalen...) _gallery

    Download

    (Version 1.1) 17.12.2008 - Jetzt kann das Skript auch PDFs in der Galerie Darstellen, immer die 1. Seite und in der Info wird auch die Anzahl der Seite angegeben =) DOWNLOAD
    Hubi's HTML Gallerie v.1.1
    40.49 KB (201 hits)
    (Version 1.0) DOWNLOAD
    Hubi's HTML Gallerie v.1.0
    37.11 KB (172 hits)
    No Comments

    Adressen im Adressbuch überprüfen mit Postleitzahlen-Seite

    6/12/2009
    Das Skript erhebt zwar nicht den Anspruch fehlerfrei zu sein, zeigt aber schön wie man mit Hilfe von Javascript und Safari arbeiten kann... insbesondere page_loaded Routine kann manchmal recht praktisch sein...? Mit dem Skript kann man eine im Adresse-Buch ausgewählte Adresse mit Hilfe der Postleitzahlen-Seite der Post überprüfen. Stimmt der Ortsname, stimmt der Strassenname...
    Code zum markieren einmal anklicken

    global thewindow

    tell application "Address Book"

    set ts to selection

    if ts ≠ {} then

    repeat with t in the ts

    if (count of addresses of t) = 0 then

    error "Da gib es doch gar keine Anschrift zu prüfen..."

    else

    repeat with i from 1 to count of addresses of t

    set myzip to zip of address i of t

    set mystreet to street of address i of t

    set mycity to city of address i of t

    if ((my search_plz(myzip, "")) = false) then

    tell application "Safari" to close tab 1 of window 1

    repeat with i from 2 to count of every character of mystreet

    set streetslice to (characters 1 through i of mystreet) as text

    if ((my search_plz(myzip, streetslice)) = false) then

    tell application "Safari" to close tab 1 of window 1

    else

    exit repeat

    end if

    end repeat

    end if

    set ca to name of t & return & formatted address of address 1 of t

    set h to my get_search_results()

    repeat until my get_weitere_link() = ""

    if my get_weitere_link() ≠ "" then

    my loadURL(my get_weitere_link())

    my page_loaded(20)

    set tmp to my get_search_results()

    set item 1 of h to item 1 of h & item 1 of tmp

    set item 2 of h to item 2 of h & item 2 of tmp

    -- h = liste aus liste der Orte + liste der Strassen

    end if

    end repeat

    set allok to true

    if item 1 of h does not contain mycity then

    set allok to false

    display dialog "Der Ort " & mycity & " passt nicht zur PLZ " & myzip

    end if

    set foundit to false

    repeat with i from 1 to count of every item of (item 2 of h)

    if mystreet contains (item i of (item 2 of h)) then

    set foundit to true

    exit repeat

    end if

    end repeat

    if foundit = false then

    set allok to false

    display dialog "Der Strassenname " & mystreet & " stimmt nicht...."

    set the clipboard to (choose from list (item 2 of h) with prompt "Wähle einen korrekten Strassennamen aus, der landet dann in der Zwischenablage... kannst den Rest dann selber machen ;-)") as text

    end if

    if allok = true then

    display dialog "Supi, war alles ok bei" & return & return & ca

    else

    display dialog "Hm, die Adresse musst du wohl mal korrigieren" & return & return & ca

    tell application "Safari" to close tab 1 of window 1

    end if

    end repeat

    end if

    end repeat

    end if

    end tell




    on search_plz(theplz, thestreet)

    tell application "Safari"

    (**do JavaScript "window.location.href = \"http://www.postdirekt.de/plzserver/PlzSearchServlet?id=streetsearch&source=12&plz=" & theplz & "&city=&district=&box=&street=&no=&kgs=&lang=de_DE&checked=5EDDB487F8FE81980113A474DCA88486EADD5B1E&pagenumber=1\""**)

    set thewindow to open location "http://www.postdirekt.de/plzserver/PlzSearchServlet?id=streetsearch&source=12&plz=" & theplz & "&city=&district=&box=&street=" & thestreet & "&no=&kgs=&lang=de_DE&checked=5EDDB487F8FE81980113A474DCA88486EADD5B1E&pagenumber=1\""

    my page_loaded(20)

    if text of document 1 contains "Es wurden zu viele Suchergebnisse gefunden" then

    return false

    else

    return true

    end if

    end tell

    end search_plz


    on loadURL(TheURL)

    tell application "Safari"

    tell document 1

    do JavaScript "window.location.href = \"" & TheURL & "\""

    end tell

    end tell

    end loadURL



    on get_weitere_link()

    tell application "Safari"

    tell document 1

    set weiter_link to do JavaScript "


    if (document.getElementsByClassName('pagebutton').length>1)

    {

    var w = document.getElementsByClassName('pagebutton')[1].href;

    }else{

    if (document.getElementsByClassName('pagebutton').length>0)

    {

    if (document.getElementsByClassName('pagebutton')[0].text.indexOf('Weitere')>-1)

    var w = document.getElementsByClassName('pagebutton')[0].href;

    else

    var w = '';

    }else{

    var w= '';

    }

    }

     w;

    "

    return weiter_link

    end tell

    end tell

    end get_weitere_link

    on get_search_results()

    tell application "Safari"

    tell document 1

    set Tabellen_inhalt to do JavaScript "

    function Trim(str){

    return str.replace(/(^\\s*)|(\\s*$)/g, '');

    }

    try{

    var orte = new Array();

    var strassen = new Array();

    Array.prototype.contains = function (element) {

    for (var i = 0; i < this.length; i++) {

    if (this[i] == element) {

    return true;

    }

    }

    return false;

    }

    if (document.getElementById('result_table').rows[0].innerHTML.indexOf('Zustellart')==-1){

    if (document.getElementById('result_table').rows.length>2)

    {


    var strasse_cells_index = 0;

    for (var k=0;k<document.getElementById('result_table').rows[0].cells.length;k++)

    {

    if (document.getElementById('result_table').rows[0].cells[k].innerHTML == 'Straße')

    {

    strasse_cells_index = k;

    break;

    }

    }

    for (var i=1;i<(document.getElementById('result_table').rows.length)-1;i++)

    {

    if (strasse_cells_index == 0)

    {

    var plz = Trim(document.getElementById('result_table').rows[i].cells[0].getElementsByTagName('div')[1].innerHTML.replace(/\\&nbsp;/g,''));

    var ort = Trim(document.getElementById('result_table').rows[i].cells[1].innerHTML.replace('  ','').replace(/\\&nbsp;/g,'').replace(/\\n/g,''));

    var strasse = '';

    }else

    {

    var plz = Trim(document.getElementById('result_table').rows[i].cells[0].getElementsByTagName('div')[1].innerHTML.replace(/\\&nbsp;/g,''));

    var ort = Trim(document.getElementById('result_table').rows[i].cells[1].innerHTML.replace('  ','').replace(/\\&nbsp;/g,'').replace(/\\n/g,''));

    var strasse = document.getElementById('result_table').rows[i].cells[strasse_cells_index].innerHTML.replace(/\\n/g,'');

    strasse = Trim(strasse.slice(0,strasse.indexOf(String.fromCharCode(160))).replace(/\\&nbsp;/g,''))

    }

    if (orte.contains(ort))

    {

    }else{

    orte.push(ort);

    }

    if (strassen.contains(strasse))

    {

    }else{

    strassen.push(strasse);

    }


    }

    }

    }

    var myoutput = [orte,strassen]

    myoutput

    }catch(e)

    {

    alert (e)

    }

    "

    end tell

    end tell

    return Tabellen_inhalt as list

    end get_search_results



    on page_loaded(timeout_value) -- in seconds

    delay 1

    repeat with i from 1 to timeout_value

    tell application "Safari"

    if name of current tab of window 1 is not "Loading" then exit repeat

    end tell

    delay 1

    end repeat

    if i is timeout_value then return false

    tell application "Safari"

    repeat until (do JavaScript "document.readyState" in document 1) is "complete"

    delay 0.5

    end repeat

    end tell

    return true

    end page_loaded

    No Comments

    Ausgewählten Text aus Safari als Email senden

    19/09/2009
    Mit cmd+i kann man ja in Safari die Website als HTML-Email verschicken. Mit dem Skript wird eine Email des ausgewählten Textes erstellt und an eine neue Email eingetragen:
    Code zum markieren einmal anklicken

    tell application "Safari"

    tell document 1

    set selected_text to do JavaScript "var txt = '';

    if (window.getSelection)

    {

        txt = window.getSelection();

    }

    else if (document.getSelection)

    {

        txt = document.getSelection();

    }

    else if (document.selection)

    {

        txt = document.selection.createRange().text;

    }

    else return;

    "

    set siteURL to URL

    end tell

    end tell

    tell application "Mail"

    activate

    make new outgoing message with properties {visible:true, subject:"Something Interesting", content:"" & siteURL & return & return & selected_text}

    end tell


    No Comments