Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Scriptwidgets •->


Anmeldedatum: 22.02.2007 Beiträge: 14
|
Verfasst am: 24.02.2007 - 08:51 Titel: Table View content |
|
|
Ich bin am verzweifeln, schon seit einer Ewigkeit versuche ich dieses Skript lauffähig zu machen. Es fragt einen nach einem Textfetzen und durchsucht dann die Bibliothek von iTunes nach den Songs die den eingegebenen Text in ihrem Song text enthalten. Das funktioniert auch, aber ich will das nun in einen "Table View" machen. Das geht komischerweise nicht!
Kann mir jemand helfen?
Hier ist das Script:
set cv to text returned of (display dialog "Geben sie den Songfetzen ein" default answer "" with icon 1)
show window "search"
tell application "iTunes"
set y to 1
set x to count of tracks in library playlist 1
end tell
repeat while y < x
tell application "iTunes"
if lyrics of track y in library playlist 1 contains cv then
set the_name to the name of track y of library playlist 1
--set the_data to the_data & the_name & "
--"
set the_data to the_data & ",{\"" & the_name & "\"}"
end if
end tell
set y to y + 1
end repeat
set the_data to the_data & " }"
delay 5
set the_data to the_data as string
set die_songs to the_data as text
die_songs as text
display dialog the_data
set the clipboard to the_data
tell table view 1 of scroll view 1 of window "search"
set the content to die_songs
end tell
set content of the table view 1 of scroll view 1 of window "search" to die_songs |
|
Nach oben |
|
 |
Scriptwidgets •->


Anmeldedatum: 22.02.2007 Beiträge: 14
|
Verfasst am: 25.02.2007 - 09:54 Titel: |
|
|
weiß keiner etwas?  |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 25.02.2007 - 13:38 Titel: Re: Table View content |
|
|
Scriptwidgets hat Folgendes geschrieben: | […] aber ich will das nun in einen "Table View" machen. Das geht komischerweise nicht! |
Hi, Scriptwidgets.
Was heisst denn: "es geht nicht"? Was für ein Fehler taucht auf?
Ausserdem bräucht man zum Testen dein "search"-window.
Aber vielleicht hilft die genaue Fehlermeldung ja schon bei der Fehlersuche.
Gruss, H = ) L G I _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 25.02.2007 - 14:13 Titel: |
|
|
Hast du schon statt "the content" "contents" probiert?
CU
ShooTerKo _________________ "It is a mistake to think you can solve any major problems just with potatoes." - Douglas Adams |
|
Nach oben |
|
 |
Scriptwidgets •->


Anmeldedatum: 22.02.2007 Beiträge: 14
|
Verfasst am: 25.02.2007 - 15:01 Titel: |
|
|
ShooTerKo hat Folgendes geschrieben: | Hast du schon statt "the content" "contents" probiert?
CU
ShooTerKo |
Ja, hab ich. Aber dann geht es überhaupt nicht mehr.
Fehlermeldung:
NSUnknownKeyScriptError (7) |
|
Nach oben |
|
 |
chebfarid •-->


Anmeldedatum: 10.02.2007 Beiträge: 106 Wohnort: Milano
|
Verfasst am: 26.02.2007 - 00:49 Titel: |
|
|
Ciao,
ich habe keine Lyrics in meiner iTunes-Library um Dein Script ausprobieren zu koennen, aber mir scheint, dass das Scriptergebnis ein Textstring ist, den Du in Deinem Tableview abbilden willst. Ohne es in der ASS-Dokumentation ueberprueft zu haben, meine ich mich zu erinnern, dass die Inhaltsdaten fuer einen Tableview eine Liste sein muessen. Macht auch insofern Sinn, als multiple Scriptresultate ebenfalls immer im Listenformat ausgegeben werden.
Wenn Dein Script z.B. in der Variable die_songs folgende Suchergebnisse fuer "Rock" speichert: {"It's Only Rock and Roll But I Like it", "Rock Around the Clock", "I Am a Rock"}, wird diese Liste mit der bereits korrekt in Deinem Code enthaltenen Zeile in den Tableview geschrieben:
Code: | set content of table view 1 of scroll view 1 of window "search" to die_songs |
(Eine Alternative zu dieser Methode ist, den Inhalt eine Tableviews ueber eine data source zu definieren, s. AppleScript Studio Reference, aber ich glaube, in Deinem Fall ist das nicht notwendig)
Good scripting
Farid _________________ Abends lustig morgens triste
Das ist Leben von Artiste |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 26.02.2007 - 02:49 Titel: |
|
|
also, das ergebnis des scripts liefert bei mir:
Code: | ,{"In My Hood"} ... {"Beverly Hills"},{"Buddy Holly"} } |
... fängt also mit einem Komma an. liegts vielleicht daran?
um die fehler-suche mal einzugrenzen: versuche doch zunächst einmal etwas anderes in deinem table view darzustellen, ganz unabhängig von deinem itunes-script. _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
chebfarid •-->


Anmeldedatum: 10.02.2007 Beiträge: 106 Wohnort: Milano
|
Verfasst am: 26.02.2007 - 03:05 Titel: |
|
|
iScript hat Folgendes geschrieben: | also, das ergebnis des scripts liefert bei mir:
Code: | ,{"In My Hood"} ... {"Beverly Hills"},{"Buddy Holly"} } |
... fängt also mit einem Komma an. liegts vielleicht daran? |
Das Komma wird wohl hier kreiert:
Zitat: | if lyrics of track y in library playlist 1 contains cv then
set the_name to the name of track y of library playlist 1
--set the_data to the_data & the_name & "
--"
set the_data to the_data & ",{\"" & the_name & "\"}"
end if |
Ich denke, ein für den Tableview nützlicheres Ergebnis ließe sich so produzieren
Zitat: | set the_data to {}
tell application "iTunes"
if lyrics of track y in library playlist 1 contains cv then
set the_name to the name of track y of library playlist 1
set end of the_data to the_name
end if
end tell
|
Die Liste the_data müßte sich dann ohne Schwierigkeiten in den Tableview einlesen lassen.
Saluti
Farid _________________ Abends lustig morgens triste
Das ist Leben von Artiste |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 26.02.2007 - 03:43 Titel: |
|
|
und die schleife könnt man auch gleich noch etwas galanter gestalten:
Zitat: | set cv to text returned of (display dialog "Geben sie den Songfetzen ein" default answer "" with icon 1)
-- show window "search"
set the_data to {}
tell application "iTunes"
repeat with y from 1 to (count of tracks in library playlist 1)
if (lyrics of track y in library playlist 1) contains cv then
set end of the_data to (the name of track y of library playlist 1)
end if
end repeat
end tell
display dialog the_data
set the clipboard to the_data
|
_________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 26.02.2007 - 09:19 Titel: |
|
|
Ich wollte mal wissen, ob das ganze nicht villeicht auch mit Filtern funktioniert. Allerdings: Bei mir liefert das Script eine Zeitüberschreitung. Ich frage mich, ob es wohl bei anderen funktioniert:
Zitat: | set cv to text returned of (display dialog "Geben sie den Songfetzen ein" default answer "" with icon 1)
-- show window "search"
set the_data to {}
tell application "iTunes"
set the_data to a reference to (every track of playlist 1 whose lyrics contains cv)
repeat with i from 1 to (count of the_data)
set item i of the_data to (the name of item i of the_data)
end repeat
end tell
display dialog the_data
set the clipboard to the_data |
_________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 26.02.2007 - 09:25 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | Ich wollte mal wissen, ob das ganze nicht villeicht auch mit Filtern funktioniert. Allerdings: Bei mir liefert das Script eine Zeitüberschreitung. Ich frage mich, ob es wohl bei anderen funktioniert. |
besonders performant ist es ja nicht, aber es läuft. hängt vielleicht von der grösse der bibliothek ab (bei mir "nur" 4900 songs).
ich hatte mich auch schon gefragt, ob's nicht besser wäre, spotlight zu bemühen, bin mir aber nicht sicher, ob die lyrics dort überhaupt mit geführt werden, und wenn, ob diese gezielt angesprochen werden könnten.
nachtrag: nö, spotlight ist da tump. nix gefunden.
@skeeve: hatte zuerst gar nicht gesehen, das du etwas geändert hattest. also deine version liefert bei mir den fehler:
Zitat: | iTunes got an error: Can't set item 1 of every track of playlist 1 whose lyrics of it contains "blabla" to name of item 1 of every track of playlist 1 whose lyrics of it contains "blabla". (-10006) |
|
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 26.02.2007 - 09:47 Titel: |
|
|
Absolut inperformant. Bei mir sind es 10358 Titel. Allerdings liegt es daran, daß für den Lyrics auf die MP3 Dateien zugegriffen werden muß. Ich habe gerade mal probeweise einen grep nach einem Text laufen lassen:
Code: | grep -lr 'My Sunday feeling is coming on over me' Jethro\ Tull/This\ Was/ |
Das lief ratzfatz. Allerdings wußte ich ja, wo zu suchen ist.
Jetzt lasse ich den grep rekursiv über alles laufen und er ist noch nicht fertig.
Ich hänge hier dann mal an, wie lange er benötigt hat.
Ich denke aber, das Besste würde sein, wenn man so eine Suche öfter benötigt, alle Texte in einer Datenbank, zumindest aber in einer einzigen Text (XML) Datei zu halten und darauf zu suchen. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 26.02.2007 - 09:54 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | 'My Sunday feeling is coming on over me' |
oh, mein gott, und das am montag
die eingedampfte version von Scriptwidgets funktioniert aber, inclusive darstellung im "table view". eine mögliche eingrenzung der suche wäre allerdings sinnvoll. _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 26.02.2007 - 10:04 Titel: |
|
|
iScript hat Folgendes geschrieben: | @skeeve: hatte zuerst gar nicht gesehen, das du etwas geändert hattest. also deine version liefert bei mir den fehler:
Zitat: | iTunes got an error: Can't set item 1 of every track of playlist 1 whose lyrics of it contains "blabla" to name of item 1 of every track of playlist 1 whose lyrics of it contains "blabla". (-10006) |
|
Okay... Dann muß es so geändert werden:
Code: | set the_result to {}
repeat trck in the_data
cop (the name of trck) to the end of the_result
end repeat
|
und dann muß the_result als Ergebnis genommen werden.
Meinen grep habe ich (kurz) nach Auffinden des Ergebnisses abgebrochen:
Code: | time grep -lr 'My Sunday feeling is coming on over me' .
Jethro Tull/This Was/01 My Sunday Feeling.mp3
^C
real 22m49.997s
user 0m59.517s
sys 1m35.067s
|
_________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Scriptwidgets •->


Anmeldedatum: 22.02.2007 Beiträge: 14
|
Verfasst am: 26.02.2007 - 13:52 Titel: |
|
|
iScript hat Folgendes geschrieben: | also, das ergebnis des scripts liefert bei mir:
Code: | ,{"In My Hood"} ... {"Beverly Hills"},{"Buddy Holly"} } |
... fängt also mit einem Komma an. liegts vielleicht daran?
um die fehler-suche mal einzugrenzen: versuche doch zunächst einmal etwas anderes in deinem table view darzustellen, ganz unabhängig von deinem itunes-script. |
hab schon versucht andere Sachen darzustellen. Und es hat funktioniert. Nur bei dem Script hier mit den Variablen geht es nicht. |
|
Nach oben |
|
 |
|