使用 photos.app 和 applescript 每小时上传随机文件

Upload random file hourly with photos.app and applescript

我的文件夹中有婴儿照片,我想大约每小时(4000 秒而不是 3600 秒)一次上传一张到我所有亲戚在他们的 iPhone、iPad 和 Mac 上都能看到的共享 iCloud 相册。这是我保存为应用程序的 applescript,并选中了保持打开框。我觉得不太对。怎么了?

on idle

set importFolder to "Amac:Users:AbuDavid:Downloads:uploadBABY"
set extensionsList to {"jpg", "png", "tiff"}

tell application "Finder" to set theFiles to some file of importFolder whose name extension is in extensionsList

if (count of theFiles) < 1 then
    display dialog "No images selected!" buttons "OK"
else
    set albumName to "BabyDouDou"
    set timeNow to time string of (current date)
    set today to date string of (current date)
    set albumName to albumName & " " & timeNow & " " & today
    set imageList to theFiles

    tell application "Photos"
        activate
        delay 2
        import imageList into albumName skip check duplicates yes
    end tell

    tell application "Finder" to move theFiles to trash
end if
return 4000


end idle

存在一些问题:

  • Finder 需要关键字 folder——不仅仅是文字字符串——来指定文件夹。
  • some file returns 总是一个文件所以 count 命令失败并且 returns 总是 0.
  • albumName 也是文字字符串,而不是对象说明符。
  • Photos.app 期望导入文件的 alias 说明符而不是 Finder 对象说明符。

试试这个

on idle
  set importFolder to (path to downloads folder as text) & "uploadBABY"
  set extensionsList to {"jpg", "png", "tiff"}

  tell application "Finder" to set theFiles to files of folder importFolder whose name extension is in extensionsList

  if (count theFiles) < 1 then
      display dialog "No images selected!" buttons "OK"
  else
      set theFile to some item of theFiles
      set albumName to "BabyDouDou"
      set timeNow to time string of (current date)
      set today to date string of (current date)
      set albumName to albumName & " " & timeNow & " " & today
      set imageList to {theFile as alias}

      tell application "Photos"
          activate
          delay 2
          if not (exists container albumName) then
              set theAlbum to make new album
              set name of theAlbum to albumName
          else
              set theAlbum to container albumName
          end if
          import imageList into theAlbum skip check duplicates yes
      end tell

      tell application "Finder" to move theFiles to trash
  end if
  return 4000
end idle

做了一个小改动,只删除上传的图片,而不是所有图片。非常感谢。

闲置 将 importFolder 设置为(下载文件夹的路径作为文本)& "uploadBABY" 将 extensionsList 设置为 {"jpg", "png", "tiff"}

tell application "Finder" to set theFiles to files of folder importFolder whose name extension is in extensionsList

if (count theFiles) < 1 then
    display dialog "No images selected!" buttons "OK"
else
    set theFile to some item of theFiles
    set albumName to "testscript"
    set imageList to {theFile as alias}

    tell application "Photos"
        activate
        delay 2
        if not (exists container albumName) then
            set theAlbum to make new album
            set name of theAlbum to albumName
        else
            set theAlbum to container albumName
        end if
        import imageList into theAlbum skip check duplicates yes
    end tell

    tell application "Finder" to move theFile to trash
end if
return 7
end idle