代码之家  ›  专栏  ›  技术社区  ›  Grant Edwards

从iTunes库中删除观看的电视节目的Applescript

  •  0
  • Grant Edwards  · 技术社区  · 9 年前

    下面是我试图用实际代码做的事情:
    如果(tvshow文件夹中有多集,并且至少有一集被标记为未观看){ 删除观看的剧集 }

    我的目标是在TVShow文件夹中始终保留一集。即使该节目被标记为观看或未观看。删除发生的唯一条件是有多集,其中一集被标记为未观看。我需要这个脚本在iTunes中的所有电视节目上运行。这将使我的iTunes帐户变小,并自动删除我观看的节目。有人知道如何做到这一点吗?我对Applescript很陌生。

    顺便说一下,如果重要的话,我所指的电视节目是我在iTunes商店外添加到iTunes库中的节目。此脚本不会删除购买的电视节目。我感谢任何帮助!

    1 回复  |  直到 9 年前
        1
  •  0
  •   vadian    9 年前

    提供删除某些内容的脚本总是非常危险的。

    因为你的请求有点模棱两可

    至少有一集被标记为未观看

    一集,即使该节目被标记为观看或未观看

    脚本将删除播放列表中所有观看的剧集 TV Shows 如果至少有一集未播出。
    所有未播出的剧集 删除。

    有两个脚本,一个用于测试,另一个用于删除。


    脚本#1没有删除任何内容 但是显示应该被删除的项目的列表。

    tell application "iTunes"
        set watchedEpisodes to tracks of playlist "TV Shows" whose unplayed is false and played count > 0
        set unwatchedEpisodes to tracks of playlist "TV Shows" whose unplayed is true
        if (count unwatchedEpisodes) > 0 then
            set trackNames to {}
            repeat with anEpisode in watchedEpisodes
                set end of trackNames to ((name of anEpisode) as text) & " of show " & show of anEpisode
            end repeat
    
            set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}
            display dialog trackNames as text
            set AppleScript's text item delimiters to TID
        end if
    end tell
    

    请仔细检查输出


    脚本#2删除符合条件的项目

    tell application "iTunes"
        set watchedEpisodes to tracks of playlist "TV Shows" whose unplayed is false and played count > 0
        set unwatchedEpisodes to tracks of playlist "TV Shows" whose unplayed is true
    
        if (count unwatchedEpisodes) > 0 then
            repeat with anEpisode in watchedEpisodes
                delete anEpisode
            end repeat
        end if
    end tell