4

我使用背面来编辑乳胶文档。背页平台具有上传图像文件的功能,然后可以引用并包含在乳胶文档中。

我可以手动将图像上传到背页平台,并从我的乳胶文档中成功使用/引用它们,但我想知道是否有办法通过 API 以编程方式进行上传。

我想我可能需要使用https://github.com/overleaf/filestore但我不确定如何开始。

仅供参考:我的主要用例是通过 Python 执行此操作,特别是 Google Colab 笔记本。

4

2 回答 2

1

不幸的是,Overleaf API目前不允许以编程方式上传到现有项目。它的唯一目的是提供可用于手动单击特制链接的用户启动新项目的链接。相反,您可能想查看 Overleaf 的同步选项之一。目前他们提供 Git/GitHub 和 Dropbox 选项。设置同步后,您可以将文件添加到这些源中,以允许 Overleaf 将它们拉入。

于 2021-01-19T17:55:41.733 回答
1

虽然 Overleaf 没有自己的上传 API,但 Dropbox 有。要使用它将文件放入 Overleaf,

  • 设置Dropbox 同步。为此,您需要一个付费帐户。
  • 使用“完整的 Dropbox 访问权限”让自己成为Dropbox 应用。
  • 将“files.content”权限添加到您的应用。
  • 使用该 Web 控制台获取 OAuth2 令牌,您将在下面传递该令牌。

现在您可以上传文件了!HTTP API 有很好的文档记录,但 Python 至少有一个不错的 SDK。所以对我来说,程序化上传成功了

pip install dropbox
import dropbox
from pathlib import Path
from io import BytesIO
import matplotlib.pyplot as plt

def upload(ax, project, path):
    bs = BytesIO()
    format = path.split('.')[-1]
    ax.figure.savefig(bs, bbox_inches='tight', format=format)

    token = Path('token.txt').read_text()
    dbx = dropbox.Dropbox(token)

    # Will throw an UploadError if it fails
    dbx.files_upload(
        f=bs.getvalue(), 
        path=f'/Apps/Overleaf/{project}/{path}',
        mode=dropbox.files.WriteMode.overwrite)

if __name__ == '__main__':
    fig, ax = plt.subplots()

    upload(ax, 'project_name', 'images/test.png')
于 2021-03-23T20:35:22.210 回答