【问题标题】:Applescript to Delete Watched TV Shows from iTunes LibraryApplescript 从 iTunes 资料库中删除已观看的电视节目
【发布时间】:2015-08-04 23:13:36
【问题描述】:

以下是我尝试对实际代码执行的操作:
如果(电视节目文件夹中有多个剧集,并且至少有一集被标记为未观看){ 删除观看的剧集 }

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

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

【问题讨论】:

    标签: applescript itunes


    【解决方案1】:

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

    由于您的要求有点模棱两可

    …至少有一集被标记为未观看
    并且
    ……单集……即使该节目被标记为已观看或未观看

    如果至少有一个未观看的剧集,脚本将删除播放列表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
    

    【讨论】:

    • 感谢@vadian 帮助我解决这个问题。使用测试脚本是天才。我很欣赏你这么体贴。使用测试脚本时,我收到以下错误:“错误”iTunes 出现错误:无法获取源 ID 64 的用户播放列表 ID 5271 的每个曲目的数据库 ID。”来自每个曲目的数据库 ID 的编号 -1728源 id 为 64"的用户播放列表 id 5271"
    • 我用当前版本的 iTunes (12.2.1) 测试了脚本,播放列表“电视节目”是否有不同的名称?或者可能是播放列表“已购买”具有不同的标识符
    • 另外,我想澄清一下。我正试图去一个地方,我的图书馆里的每个电视节目总是有 1 集。即使那个节目已经看过了。这样做的原因是因为它可以帮助我跟踪我在赛季中的位置。如果我查看 iTunes 资料库并看到我有《老友记》第 3 季第 2 集作为最新一集(即使我看过),我知道要导入第 3 季第 3 集。一旦我上传第 3 集,我想要脚本删除第 2 集。这样,我在图书馆里总是有 1 集,即使它被观看了。希望这有助于解决问题。
    • 我也在使用 iTunes 12.1.1。如果有帮助,您可以删除包含已购买电视节目的脚本部分。我没有,也不打算得到它们。我在原帖中提到它的唯一原因是解释我只使用进口节目,而不是购买的节目。有什么想法吗?
    • 再次感谢@vadian,非常感谢您的帮助。最后一个更改有效,但它列出的显示我正在观看。代码中的逻辑是否可以更改为仅删除完全观看的节目?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多