我使用背面来编辑乳胶文档。背页平台具有上传图像文件的功能,然后可以引用并包含在乳胶文档中。
我可以手动将图像上传到背页平台,并从我的乳胶文档中成功使用/引用它们,但我想知道是否有办法通过 API 以编程方式进行上传。
我想我可能需要使用https://github.com/overleaf/filestore但我不确定如何开始。
仅供参考:我的主要用例是通过 Python 执行此操作,特别是 Google Colab 笔记本。
我使用背面来编辑乳胶文档。背页平台具有上传图像文件的功能,然后可以引用并包含在乳胶文档中。
我可以手动将图像上传到背页平台,并从我的乳胶文档中成功使用/引用它们,但我想知道是否有办法通过 API 以编程方式进行上传。
我想我可能需要使用https://github.com/overleaf/filestore但我不确定如何开始。
仅供参考:我的主要用例是通过 Python 执行此操作,特别是 Google Colab 笔记本。
不幸的是,Overleaf API目前不允许以编程方式上传到现有项目。它的唯一目的是提供可用于手动单击特制链接的用户启动新项目的链接。相反,您可能想查看 Overleaf 的同步选项之一。目前他们提供 Git/GitHub 和 Dropbox 选项。设置同步后,您可以将文件添加到这些源中,以允许 Overleaf 将它们拉入。
虽然 Overleaf 没有自己的上传 API,但 Dropbox 有。要使用它将文件放入 Overleaf,
现在您可以上传文件了!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')