Tìm và thay thế AppleScript cho iTunes Track Name


1

Tôi đang cố gắng viết một AppleScript để thực hiện các hoạt động tìm và thay thế hàng loạt trên tên theo dõi iTunes. Hiện tại, đây là mã của tôi:

nói với ứng dụng "iTunes"
    đặt sel để chọn cửa sổ trình duyệt phía trước
    nếu sel là {} thì
        thử
            hiển thị hộp thoại "Không có gì được chọn" Các nút {"Thoát"} với biểu tượng 0
        kết thúc thử
        trở về
    kết thúc nếu

    đặt c thành (số lượng chọn)

    đặt hộp thoạiSearchString để hiển thị "Tìm:" câu trả lời mặc định "" - hoàn thành cho đầu vào để tìm kiếm

    đặt hộp thoạiReplocationString để hiển thị "Thay thế bằng:" câu trả lời mặc định "" - hoàn thành cho đầu vào để tìm kiếm

    lặp lại với i từ 1 đến c - đặt các số chuyển động
        đặt thisTrack thành mục i của sel
        đặt songName thành (lấy tên của thisTrack)
        đặt tên của thisTrack thành (findAndReplaceInText (songName, văn bản được trả về của SearchString, văn bản được trả về củaReplocationString))

    kết thúc lặp lại

kết thúc

trên findAndReplaceInText (theText, theSearchString, theReplocationString)
    đặt các dấu phân cách mục văn bản của AppleScript thànhSearchString
    đặt theTextItems cho mỗi mục văn bản của theText
    đặt các dấu phân cách mục văn bản của AppleScript thànhReplocationString
    đặt theText thành theTextItems dưới dạng chuỗi
    đặt các dấu phân cách mục văn bản của AppleScript thành ""
    trả lại
kết thúc findAndReplaceInText

Hiện tại, findAndReplaceInText()hàm trả về lỗi 1708. Tôi đã làm gì sai? Chức năng tìm và thay thế đến từ Apple: Hướng dẫn kịch bản tự động hóa Mac- Thao tác văn bản

Câu trả lời:


1

Về mặt kỹ thuật, tất cả những gì bạn cần làm là đặt mytrước mặt findAndReplaceInText, tuy nhiên phiên bản này là IMO một cách tốt hơn để viết nó.

tell application "iTunes"

    set sel to selection of front browser window
    if sel is {} then
        display dialog "Nothing is selected…" buttons {"Quit"} with icon 0
        return
    end if

    set theSearchString to text returned of (display dialog "Find:" default answer "")
    set theReplacementString to text returned of (display dialog "Replace with:" default answer "")

    repeat with i from 1 to (count of sel)
        set thisTrack to item i of sel
        set name of thisTrack to my findAndReplaceInText((name of thisTrack), theSearchString, theReplacementString)
    end repeat

end tell

on findAndReplaceInText(theText, theSearchString, theReplacementString)
    set AppleScript's text item delimiters to theSearchString
    set theTextItems to every text item of theText
    set AppleScript's text item delimiters to theReplacementString
    set theText to theTextItems as string
    set AppleScript's text item delimiters to ""
    return theText
end findAndReplaceInText

Cũng lưu ý rằng trong khi tập lệnh của bạn thay đổi tên được hiển thị của bài hát, nó không thay đổi nó dưới dạng cấp hệ thống tệp, chỉ là siêu dữ liệu được lưu trữ trong iTunes.


Hoạt động như một cơ duyên, cảm ơn! Tôi đã thêm một hộp thoại lựa chọn để thực hiện tìm và thay thế trong bất kỳ trường siêu dữ liệu nào. Tôi đã sử dụng nó tấn!
willem.hill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.