【问题标题】:Control Dropbox, Google Drive, and/or SugarSync with my application.使用我的应用程序控制 Dropbox、Google Drive 和/或 SugarSync。
【发布时间】:2013-01-06 13:54:39
【问题描述】:

如何控制我想让程序一次暂停和同步一个程序的实例,这样它们就不会相互干扰,但是我如何暂停、恢复或检查状态。

我浏览了 dropbox api,看起来您主要可以做的是上传、下载等,但我如何才能真正控制 Dropbox 实例或制作一个程序来自己同步呢?

我可以在 Python 或 C++ 中做到这一点

【问题讨论】:

  • 使用 Dropbox,您可以尝试使用带宽:dropbox.com/help/26/en
  • “保管箱实例”是什么意思?您是否试图控制您机器上的 Dropbox 应用程序?
  • @abarnert 是的,如果有办法暂停并继续使用 API,或者我必须创建自己的客户端。

标签: c++ python sdk dropbox


【解决方案1】:

Dropbox API 是您从您自己的 客户端与服务交互的方式,而不是您自动化他们的 桌面客户端应用程序(集成到 Finder/探险家/等)。

编写您自己的客户端来替换他们的客户端可能并非不可能,或者甚至可能编写一个与他们的客户端共存的客户端(您可以将他们的客户端永久设置为“暂停同步”,而您的客户端只会处理同步事情的一面......虽然你会失去在本地存储更改时自动触发同步的好处,而是必须轮询更改或设置并行文件系统监视)。由于 API 是围绕 Web 服务构建的,因此 C++ 对于该语言来说是一个非常糟糕的选择,尤其是因为 Python 有预先构建的包装器。

但无论如何,我很确定这不是你想要做的。您想要的只是控制普通桌面客户端,并告诉它何时暂停或恢复同步,对吗?

Web API(以及包装它的 SDK)不可能帮助您。您必须使用适合您平台的工具来自动化客户端应用程序。而且,由于客户端没有自动化控制界面,你必须通过自动化 GUI 来实现。

Mac OS X 有一种通过系统事件 UI 脚本执行此操作的高级方法,您可以通过ScriptingBridgeappscript 从 Python 访问它,或者通过 C++... Windows 只有一种较低级别的方法来执行此操作,即手动合成 WM_* 消息,您可以通过 pywin32 从 Python 或通过本机 Win32 API 从 C++ 完成。

但是,无论哪种方式,这都会很痛苦。例如,最简单的 Python appscript 解决方案可能看起来像这样(未经测试):

sysev = appscript.app('System Events')
dropbox = sysev.application_processes['Dropbox']
menu = dropbox.menu_bars[1].menu_bar_items[-1].menus[1]
item = menu.items['Pause Syncing']
item.click()

Windows 等价物会更加混乱,包括发送 WM_* 消息以获取菜单、拆分结构等。

使用更高级别的 GUI 自动化工具要容易得多。 Mac OS X 内置了 Automator。创建一个工作流程,单击记录,下拉 Dropbox 菜单,单击“暂停同步”项,单击停止,就完成了。 Actions 可能是最相似的 windows 工具,但还有很多其他选项,比如 AutoIt,可能会更好。

那么,在创建了 Automator 动作或 AutoIt 脚本之后,与 Python 或 C++ 相比,如何触发?好吧,你可能不需要。您已经有了一些可以双击或从 shell 运行的东西。如果你想用 Python 封装它,你可以,例如,通过 subprocess 模块(在 Mac 上使用 open 命令,在 Windows 上使用 shell=True)。

同时,请记住,现代版本的 OS X 和 Windows 不允许应用随意控制彼此。在 OS X 上,您必须在“系统偏好设置”的“辅助功能”窗格中“启用辅助设备的访问权限”;在 Windows 上……它随着每个新版本的变化而变化,我没有跟上。

【讨论】:

  • 非常有用的信息非常感谢,我想这并不像我想象的那么容易,但也不是不可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多