[GastForen Programmierung/Entwicklung AppleScript Abgeschlossene Downloads automatisch bewegen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Abgeschlossene Downloads automatisch bewegen

AppleScripter alpha
Beiträge gesamt: 26

12. Apr 2015, 21:38
Beitrag # 1 von 12
Bewertung:
(4664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich möchte abgeschlossene Downloads automatisch bewegen. Ich weiß, ich könnte in Safari einfach den Schreibtisch als Download-Ordner angeben, möchte aber, dass der eigentliche Download-Ordner nicht an Sinn verliert und ja ... Das Skript soll später als Ordnerkonfiguration an den Download-Ordner angehangen werden. Bis jetzt bin ich bis hierhin gekommen:

Code
set Downloads to "Macintosh HD:Users:[User]:Downloads" 
set Downloads_AnzahlObjekte to (count (list folder Downloads))
set Schreibtisch to "Macintosh HD:Users:[User]:Desktop"
if Downloads_AnzahlObjekte is not 2 then
tell application "Finder"
move (every file of folder Downloads whose name extension does not contain "download") to folder Schreibtisch
end tell
if Downloads_AnzahlObjekte = 2 then
beep 2
display dialog "Safari-Downloads wurden bewegt." buttons {"OK"} default button {"OK"} with icon ¬
POSIX file "Users/[User]/Library/Mobile Documents/com~apple~CloudDocs/Icon_Downloads bewegen-3.png"
end if
else
tell application "System Events"
quit script
end tell
end if

Selbst wenn sich eine Datei im Download-Ordner befindet und ich das Skript ausführe, passiert nichts. Ich hatte auch schon eine Repeat-Schleife eingebaut, bis die Anzahl der Dateien = 2 ist, allerdings wurde das Skript dann nicht mehr automatisch beendet.
Und ja, ich weiß, dass es mit Automator ganz leicht zu realisieren ist, ich will das Problem mit AppleScript lösen, das muss ja irgendwie gehen.
;)
Weiß jemand wo das Problem liegt oder kann Mir gegebenenfalls an der Lösung des Problems helfen?
Ich nutze OS X 10.10.3.
Danke und LG
:)

(Dieser Beitrag wurde von Hans Haesler am 12. Apr 2015, 21:55 geändert)
X

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

12. Apr 2015, 21:56
Beitrag # 2 von 12
Beitrag ID: #538679
Bewertung:
(4645 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter alpha,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Nicht klar ist, weshalb Du die Objekte im Downloads-Ordner zählst.
Darin können sich auch Ordner befinden. Aber laut Script sollen nur Dateien bewegt werden.

Wozu dient dieser Test?

Code
if Downloads_AnzahlObjekte is not 2 then 

Gruss, Hans


als Antwort auf: [#538678]

Abgeschlossene Downloads automatisch bewegen

AppleScripter alpha
Beiträge gesamt: 26

12. Apr 2015, 22:22
Beitrag # 3 von 12
Beitrag ID: #538680
Bewertung:
(4626 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Hallo AppleScripter alpha,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Nicht klar ist, weshalb Du die Objekte im Downloads-Ordner zählst.
Darin können sich auch Ordner befinden. Aber laut Script sollen nur Dateien bewegt werden.

Wozu dient dieser Test?

Code
if Downloads_AnzahlObjekte is not 2 then 

Gruss, Hans

Danke.
:D
Da ja immer eine .DS_Store-Datei und eine .localized-Datei in einem Ordner vorhanden sind, dachte ich, wenn es mehr als 2 Dateien in dem Ordner sind, sind es nicht nur diese zwei unsichtbaren Dateien, sondern es muss sich mindestens ein weiteres Objekt darin befinden, ob es ein fertiger Download ist oder nicht, wird ja später überprüft (jedenfalls sollte es so sein).


als Antwort auf: [#538679]
(Dieser Beitrag wurde von AppleScripter alpha am 12. Apr 2015, 22:22 geändert)

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

12. Apr 2015, 23:16
Beitrag # 4 von 12
Beitrag ID: #538681
Bewertung:
(4588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter alpha,

eine grosse Bitte: Nicht das gesamte Posting des Vorredners als Zitat wiederholen.
Ausnahmsweise einen Satz zitieren, damit die Antwort verständlicher wird.

Fakt 1: Es gibt Ordner, welche keine unsichtbaren Dateien enthalten. Deshalb kann man nicht grundsätzlich davon ausgehen, dass immer deren zwei vorhanden sind.
Fakt 2: Der Standard-Additions-Befehl list folder wird seit mindestens Snow Leopard (10.6.x) so bezeichnet;

Zitat This command is deprecated; use ‘tell application "System Events" to get the name of every item of folder

"deprecated" bedeutet "veraltet" oder "überholt". Schade, denn man konnte mit dem Zusatz "without invisibles" eventuelle unsichtbare Dateien ausschliessen.

Das Auflisten der Namen mit dem empfohlenen "System Events":

Code
set sourceFolder to (choose folder) as Unicode text 

tell application "System Events"
set allNames to name of every file of folder sourceFolder
end tell

Die unsichtbaren muss man überspringen, indem geprüft wird, dass der Name nicht mit einem Punkt beginnt.

Gruss, Hans


als Antwort auf: [#538680]

Abgeschlossene Downloads automatisch bewegen

AppleScripter alpha
Beiträge gesamt: 26

13. Apr 2015, 17:54
Beitrag # 5 von 12
Beitrag ID: #538720
Bewertung:
(4483 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich habe das Script an den entsprechenden Stellen verbessert, allerdings habe ich statt "file" "item" geschrieben, damit auch Ordner aufgelistet werden. Außerdem habe ich noch mit eingebaut, dass alle Dateien, die auf "download" enden, nicht mit aufgelistet werden.
Code
set Downloads to "Macintosh HD:Users:[User]:Downloads" as Unicode text 
tell application "System Events"
set Downloads_AnzahlObjekte to name of every item in folder Downloads whose name does not start with "." and name extension does not contain "download"
end tell

Beim Ausführen erscheint folgende Fehlermeldung:
Zitat error "„Finder“ hat einen Fehler erhalten: Die Routine kann Objekte dieser Klasse nicht bearbeiten." number -10010

Vielleicht liegt es an dieser Zeile?:
Code
if Downloads_AnzahlObjekte is not {} then 
tell application "Finder"
move every item of Downloads_AnzahlObjekte to folder Schreibtisch
end tell
...
end if

Warum tritt dieser Fehler auf und kann ich noch eine Repeat-Schleife einbauen, bis Downloads_AnzahlObjekte = {}?


als Antwort auf: [#538681]

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

13. Apr 2015, 20:24
Beitrag # 6 von 12
Beitrag ID: #538727
Bewertung:
(4461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter alpha,

zum Definieren der Variablen "Downloads" und "Schreibtisch" ist diese Form besser:

Code
set Downloads to ((path to "cusr") as Unicode text) & "Downloads" 
set Schreibtisch to ((path to "cusr") as Unicode text) & "Desktop"

Das "cusr" ist der four-letter-code von "current user" (= der eingeloggte Benutzer).
Mit diesen Zeilen muss ein hilfsbereites HDS-Mitglied nicht erst seinen Namen eingeben.

Der neue Ansatz kann nicht funktionieren. Weil Ordner keine 'name extension' haben.
Da muss eine andere Lösung her.

Noch zwei Bemerkungen zum Finder-Befehl, welcher die Objekte verschiebt:
1. Grundsätzlich verwendet man einen try-Wickel. Dadurch werden Fehlermeldungen vermieden.
Diese werden hauptsächlich gezeigt, wenn das Objekt am Zielort schon existiert.
Dann geschieht ... nichts, das Objekt bleibt im Quellordner sitzen.
Man könnte im 'on error'-Abschnitt einen Wert hochzählen und am Schluss die Anzahl Probleme melden.
2. Wenn ein Objekt ersetzt werden soll, dann ergänzt man die Zeile mit 'with replacing'.
Dadurch wird ein bestehendes Objekt durch das verschobene überschrieben:

Code
set Downloads to ((path to "cusr") as Unicode text) & "Downloads" 
set Schreibtisch to ((path to "cusr") as Unicode text) & "Desktop"

tell application "Finder"
try
move (every file of folder Downloads whose name extension ¬
does not contain "download") to Schreibtisch with replacing
end try
end tell

Gruss, Hans


als Antwort auf: [#538720]

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

14. Apr 2015, 08:14
Beitrag # 7 von 12
Beitrag ID: #538734
Bewertung:
(4418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter alpha,

es gibt auch eine lesbarere Schreibweise, um den Pfad zu bestimmten Ordnern festzulegen:

Code
set Downloads to path to downloads folder 

Damit erhält man ein Alias zum Ordner "Downloads" des eingeloggten Benutzers.

Wenn ein Ordnername an den Pfad gehängt werden soll, dann kann dieser in Text umgewandelt werden:

Code
set Schreibtisch to (path to desktop folder as Unicode text) & "Test" 

Aber das sieht halt dann nicht mehr so "gelehrt" aus. :-)

Gruss, Hans


als Antwort auf: [#538727]

Abgeschlossene Downloads automatisch bewegen

AppleScripter alpha
Beiträge gesamt: 26

14. Apr 2015, 17:26
Beitrag # 8 von 12
Beitrag ID: #538767
Bewertung:
(4374 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe das Skript editiert, es ist nun wie folgt:
Code
set Downloads to ((path to "cusr") as Unicode text) & "Downloads" 
tell application "System Events"
set Downloads_AnzahlObjekte to name of every item in folder Downloads whose name does not start with "." and name extension does not contain "download"
end tell
set Schreibtisch to ((path to "cusr") as Unicode text) & "Desktop"
if Downloads_AnzahlObjekte is not {} then
move (every item of Downloads_AnzahlObjekte) to Schreibtisch with replacing
beep 2
display dialog "Ihre Safari-Downloads sind abgeschlossen und werden auf Ihren Schreibtisch bewegt." buttons {"OK"} default button {"OK"}
else
tell application "System Events"
quit script
end tell
end if

Die "try"-Befehle habe ich weggelassen, da sonst folgender Fehler nicht ausgegeben wird:
Zitat error "{\"Test\"} kann nicht in Typ reference umgewandelt werden." number -1700 from {"Test"} to reference

Und was ist mit dem "& Test" in Deinem letzen Post, was bringt es?


als Antwort auf: [#538734]
(Dieser Beitrag wurde von AppleScripter alpha am 14. Apr 2015, 17:27 geändert)

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

14. Apr 2015, 20:23
Beitrag # 9 von 12
Beitrag ID: #538773
Bewertung:
(4343 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter alpha,

Zitat Und was ist mit dem "& Test" in Deinem letzen Post, was bringt es?

Damit kann man den Pfad zu einem "offiziellen" Ordner um einen (odere mehrere) Ordnernamen erweitern.

Der Name der Variablen sollte dann angepasst werden. Nur ein Beispiel:

Code
set Zielordner to (path to desktop folder as Unicode text) & "alpha" 

Damit wird der Ordner "alpha", welcher auf dem Schreibtisch liegt, zum Zielordner bestimmt.

Gruss, Hans


als Antwort auf: [#538767]

Abgeschlossene Downloads automatisch bewegen

AppleScripter alpha
Beiträge gesamt: 26

17. Apr 2015, 08:19
Beitrag # 10 von 12
Beitrag ID: #538863
Bewertung:
(4250 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Okay, wenn ich also Ordner C in Ordner B in Ordner A habe, muss der Pfad so lauten?:
Code
set Zielordner to (path to desktop folder as Unicode text) & "A" & "B" & "C" 



als Antwort auf: [#538773]

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

17. Apr 2015, 08:43
Beitrag # 11 von 12
Beitrag ID: #538864
Bewertung:
(4232 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter Alpha,

ja, so ist es. Aber: Du musst auch die Doppelpunkte einfügen.
Ausser jenen vor dem "A" (habe ich nachträglich entfernt).

Code
... & "A" & ":B" & ":C" 

Wie immer gilt: "Probieren geht über Studieren" :-)

Gruss, Hans


als Antwort auf: [#538863]
(Dieser Beitrag wurde von Hans Haesler am 17. Apr 2015, 08:48 geändert)

Abgeschlossene Downloads automatisch bewegen

Hans Haesler
  
Beiträge gesamt: 5826

17. Apr 2015, 09:59
Beitrag # 12 von 12
Beitrag ID: #538869
Bewertung:
(4196 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo AppleScripter Alpha,

man kann die Sache natürlich auch vereinfachen:

Code
... & "A:B:C" 


Gruss, Hans


als Antwort auf: [#538864]
X