jkphl / edropub
编辑器 → Dropbox → Leanpub 编辑和发布工作流程
Requires
- php: >=5.3.0
- dropbox/dropbox-sdk: 1.1.*
- michelf/php-markdown: >=1.4.0
This package is auto-updated.
Last update: 2024-09-23 00:13:36 UTC
README
是一个 PHP 命令行脚本,它通过使用 Dropbox 作为中间/交换平台,在 Editorially 和 Leanpub 之间建立了一个简单的发布工作流程。
涉及的平台
Editiorially 是一个专注于协作写作的在线编辑器,使用 Markdown 作为其主要格式,并支持导出到 Dropbox。
Leanpub 是一个用于电子书的出版和分发平台,它也使用 Markdown 作为源格式,并支持与 Dropbox 同步。
遗憾的是,目前 Editorially 和 Dropbox 都没有对 webhooks 或其他类型的主动触发器提供支持,因此需要使用外部 轮询机制 来检测和处理 Markdown 文件的变化。这就是 edropub 发挥作用的地方。它可以安装在任何外部服务器上,例如通过 cronjob 定期调用。它处理您的 Markdown 文件的修改,并可以触发 Leanpub 书籍的预览创建或发布。
要求
edropub 使用 Dropbox SDK for PHP 5.3+,这意味着以下要求
- PHP 5.3+,具有 64 位整数(因此我个人无法在 Windows 上使其工作)。
- 启用 SSL 的 PHP cURL 扩展(通常内置)。
- 不得使用
mbstring.func_overload
来重载 PHP 的标准字符串函数。
安装
要安装 edropub,切换到您喜欢的目录,并克隆 GitHub 仓库
cd /path/to/somewhere
git clone https://github.com/jkphl/edropub.git
这将安装 edropub 到子目录 edropub
中。要安装 edropub 的依赖项,只需使用 Composer
cd edropub
composer install
设置/配置
要使发布工作流程运行,您必须满足一些先决条件
Dropbox
首先,创建一个用于发布工作流程的 Dropbox 账户。我建议为每本书使用一个专用账户(每个账户都有专用电子邮件地址)。
接下来,访问 Dropbox 应用程序控制台 并 创建一个 Dropbox API 应用程序。确保您的应用程序
- 可以存储 文件和数据存储,
- 不是限制在其自己的私有文件夹中,
- 并且支持 特定文件类型,
- 特别是 文本文件 和 图像。
最后,我建议您给您的应用起名为 edropub,以避免混淆。应用创建后,您将在应用的“设置”标签页中获得一个 应用密钥 和一个 应用密钥。您稍后会需要它们来 配置 edropub。
Editorially
对于 Editorially,我建议创建一个专用账户(只需使用与Dropbox相同的电子邮件地址即可)。切换到您的账户设置中的 发布 选项卡,并将您之前创建的Dropbox 链接到账户。这样,您就可以在在线编辑器中直接将文档发布到Dropbox。
Leanpub
在 Leanpub 上注册并创建一本新书。您需要输入您书籍的 URL路径。这个字符串也被称为 书籍的slug。您稍后需要它来 配置 edropub 的访问设置。
在书籍的 设置 选项卡中,选择 写作 子菜单,并在那里 激活Dropbox同步。您将收到一封邀请您接受Dropbox文件夹邀请的电子邮件。显然,您会接受的。 ;)
最后,切换到您的Leanpub 仪表板 并选择 账户 选项卡。在页面底部,激活 Leanpub API。您将获得一个 API密钥,您还需要它来 配置 edropub 的访问设置。
首次运行
在您第一次运行 edropub 之前,您需要配置它并完成设置。将文件 config/config.dist.json
复制到 config/config.json
,并在其中填写您的Dropbox API密钥和密钥。该文件看起来像这样
{ "key": "k5u3epqu3gz0wbx", "secret": "aswrzb2svqubdop" }
在下一步中,您必须创建一个Dropbox 访问令牌。切换到您的安装目录,并首次运行 edropub
cd /path/to/edropub
php -f edropub
您将被要求打开一个特定的URL(使用您的浏览器)并确认 edropub 可以访问您的Dropbox。只需遵循屏幕上的说明。
访问配置
因此,将生成文件 config/access.json
。它看起来像这样
{ "access_token": "emJgqzpDA50AAAAAAAAAAWfdy2-EKShmo24INuWwuMLqGGrsYzIgCIFYIeqddxaj", "editorially_prefix": "/Apps/Editorially", "leanpub_book_slug": "/<YOUR_BOOKS_SLUG>", "leanpub_api_key": "<YOUR_ACCOUNT_API_KEY>", "leanpub_trigger": "preview" }
此配置文件中的这些是可能选项
请填写您的 leanpub_book_slug
和 leanpub_api_key
,并根据您的需要可选地指定 leanpub_trigger
。
运行edropub
一旦您完成 配置访问参数,您就可以通过在命令行中调用它来使用 edropub
php -f /path/to/edropub.phps
edropub 使用 Dropbox delta API 仅处理自上次调用以来发生的您的Dropbox更改。但是,您可以通过将 reset
作为参数传递给命令来强制 edropub 从头开始并重新处理所有Markdown文件
php -f /path/to/edropub.phps -- reset
例如,每15分钟调用 edropub 的 crontab条目可能如下所示
*/15 * * * * /usr/bin/php -f /path/to/edropub.phps
已知问题
目前,edropub 仅支持处理 一本书。您需要为每本书都有一个单独的 edropub 安装/配置才能发布。
法律
版权所有 © 2014 Joschi Kuphal joschi@kuphal.net / @jkphl
edropub 采用 MIT 许可协议 许可。