Archive of articles classified as' "Safari"
Back homeAppleScript: PixelPipe Uploader
11/01/2011Mir 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
DOWNLOADhubionmac's PixelPipe Uploader v.0.1
59.6 kB (102 hits)
AppleScript + JavaScript Tutorial mit Video
7/01/2011tell 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
AppleScript in Google Chrome
6/11/2010tell application "Safari"
tell document 1
do JavaScript "document.links.length"
end tell
end tell
tell application "Google Chrome"
tell window 1
tell tab 1
execute javascript "document.links.length"
end tell
end tell
end tell
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
Safari: Öffne alle JavaScript Links
5/05/2010tell 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
Link Liste zum selber bauen
14/02/2010Ich 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)
Safari XY
13/12/2009
Ich 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:Safari XY v.1.0
(227 hits) HA, hier ist wohl die bessere Lösung
Hubi’s HTML Gallerie
13/12/2009Das 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:- 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 =)
- 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...) _galleryDownload
(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 =) DOWNLOADHubi'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)
Adressen im Adressbuch überprüfen mit Postleitzahlen-Seite
6/12/2009global 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(/\\ /g,''));
var ort = Trim(document.getElementById('result_table').rows[i].cells[1].innerHTML.replace(' ','').replace(/\\ /g,'').replace(/\\n/g,''));
var strasse = '';
}else
{
var plz = Trim(document.getElementById('result_table').rows[i].cells[0].getElementsByTagName('div')[1].innerHTML.replace(/\\ /g,''));
var ort = Trim(document.getElementById('result_table').rows[i].cells[1].innerHTML.replace(' ','').replace(/\\ /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(/\\ /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
Ausgewählten Text aus Safari als Email senden
19/09/2009tell 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