Pertanyaan Applescript - Bagaimana mengiterasi trek


Saya seorang pemula di applescript. Saya mencoba mempelajarinya dari berbagai sumber, seperti Situs Doug, macscripter dan ini forum

Hanya untuk tujuan pembelajaran, saya mencoba mencetak pada layar semua nama trek menggunakan kode ini:

tell application "iTunes"
    set myTracks to (tracks of library playlist 1)
    repeat with aTrack in myTracks
        get name of aTrack
    end repeat
end tell

Tapi itu hanya mencetak satu nama lagu, mungkin yang terakhir ...

Jadi, bagaimana cara terbaik untuk beralih ke daftar?

TIA,

Bob


5
2018-05-02 22:45


asal


Jawaban:


Kode Anda baik-baik saja; alasan tidak ada yang terjadi adalah semuanya get ... Apakah mencari nilai dan mengembalikannya. Namun, Anda tidak melakukan apa pun dengan nilai yang dikembalikan, sehingga diabaikan, dan hanya iterasi terakhir dari loop mengembalikan apa pun. Anda perlu melakukan sesuatu (apa saja) di dalam lingkaran yang terlihat oleh dunia luar: menetapkan ke variabel, menampilkan dialog, apa pun.

Jika Anda ingin mengumpulkan daftar nama-nama barang, Anda dapat melakukan hal berikut:

tell application "iTunes"
  set trackNames to {}
  repeat with aTrack in tracks of library playlist 1
    set trackNames to trackNames & name of aTrack
  end repeat
end tell

Namun, Anda bisa mengencangkan ini. Salah satu fitur AppleScript yang hebat adalah sama seperti Anda bisa mendapatkan nama sebuah lagu, Anda bisa mendapatkan nama setiap lagu dalam daftar dan mengulanginya:

tell application "iTunes"
  set trackNames to {}
  repeat with aName in name of tracks of library playlist 1
    set trackNames to trackNames & aName
  end repeat
end tell

Tetapi pada titik ini, Anda bahkan tidak memerlukan loop, dan Anda dapat menggunakan yang jauh lebih sederhana

tell application "iTunes" to name of tracks of library playlist 1

Dan sebagai bonus, itu akan menjadi banyak lebih cepat: dalam tes cepat yang saya lakukan, tiga versi mengambil 16,189 detik, 32,656 detik, dan 0,296 detik, masing-masing.


13
2018-05-03 05:02



Saya pikir jawaban Anda valid. Saya yakin hasil di kolom editor skrip Apple hanya mencetak hasil terakhir skrip Anda. Jika Anda melihat di Acara dan membalas, Anda akan melihat jawaban dikembalikan dengan benar oleh skrip Anda.

Saya mencoba sendiri, menggunakan skrip ini:

tell application "iTunes"
set myTracks to (tracks of library playlist 1)

repeat with i from 1 to number of items in myTracks
    get name of item i of myTracks
end repeat

Dapat melihat itu di Balasan:

  • dapatkan nama file track id 4050 dari daftar putar pustaka id 3379 dari id sumber 41

    --> "Le deserteur"
    
  • dapatkan nama file track id 4051 of daftar putar pustaka id 3379 dari id sumber 41

    --> "Le lyon est mort ce soir"
    

Juga, hanya untuk memastikan ini berhasil, Anda dapat mencobanya:

 tell application "iTunes"
    set myTracks to (tracks of library playlist 1)

    repeat with i from 1 to number of items in myTracks
        display dialog name of item i of myTracks as string
    end repeat

end tell

Jadi itu berhasil, Anda hanya perlu melakukan apa yang ingin Anda lakukan sebelum akhir loop Anda.

Juga, saya akan menyarankan dokumentasi Apple resmi: Panduan Bahasa AppleScript. Gratis dan sangat lengkap untuk memulai.

Semoga ini membantu !


4
2018-05-02 23:50