我正在尝试制作一个程序,该程序将.txt
文件与Cloudinary同步。目的是使用HERoku运行代码,并在重新启动测功机时下载断言。问题在于,他们的网站上似乎没有下载功能(很可能是我不知道如何阅读)。
我认为fetch
函数可能是我想要的,但它似乎也用于上传。我也知道有一些功能(可能不是来自Cloudinary)可以使用链接下载。这个解决方案也很好,但是我需要一种方法来获取链接(但是我很确定上传时它会被return
ed),但是问题是我的程序应该首先同步这意味着我无法获取链接作为返回值。我也想知道是否有一种删除文件的方法(如果它们具有相同的名称,那么它们不会被自动替换)。
我做了一个小样本,可以上传文件,并且效果很好:
import cloudinary
import os
from cloudinary import uploader
from signal import signal, SIGINT, SIGTERM
import time
cloudinary.config(
cloud_name = 'not_real',
api_key = '696969696996',
api_secret = 'helloWorld'
)
def downloader():
#something here...
pass
downloader()
def handler(sig, frame):
print(cloudinary.uploader.upload("TEST.txt", resource_type = "raw", public_id = "TEST"))
print("PID: ", os.getpid())
signal(SIGTERM, handler) # to understand when the dyno is getting killed
while True:
print("Doing nothing...")
time.sleep(3600)
再次(简而言之),我想这样做:
任何帮助将不胜感激。
upd:看来通往Cloudinaty .txt
文件的链接打开了一个只有文字的空网页,所以我想我可以这样做
r = requests.get("https://res.cloudinary.com/name/raw/upload/v1589215899/TEST.txt")
print(r.text)
,但我想知道是否有更好的解决方案。
raw
上传到Cloudinary之后,返回包含以下内容的响应:
{
"public_id": "sample.txt",
"version": 1371928603,
"signature": "9088291a2c12202767cfa7c5e874afee72be78cd",
"resource_type": "raw",
"created_at": "2017-06-22T19:16:43Z",
"tags": [],
"bytes": 6144,
"type": "upload",
"etag": "107bf134b5afd11cc7544d60108d87b",
"url": "http://res.cloudinary.com/demo/raw/upload/v1371928603/sample.txt",
"secure_url":
"https://res.cloudinary.com/demo/raw/upload/v1371928603/sample.txt"
"original_filename": "myoriginaltextfile"
}
Cloudinary建议存储public_id
,resource_type
,type
和version
(可以省略),以便稍后可以重新生成Cloudinary URL。 public_id
是资产的唯一标识符。 resource_type
标识它是什么资源,例如image
,video
或raw
。 type
是该资产的delivery type,例如upload
(表示公开),private
和authenticated
仅举几例。 version
是资产上载的时间戳。话虽如此,一旦有了这些资产详细信息,就可以通过直接构建URL或生成图像或视频标签来生成Cloudinary URL。图像/视频标签对原始文件无济于事,因此直接建立URL是可行的方法。 Cloudinary Python SDK(及其任何其他SDK)具有相似的功能,但是可以找到Python here。
cloudinary.utils.cloudinary_url("sample.txt", resource_type = "raw")
# Output: "https://res.cloudinary.com/demo/raw/upload/sample.txt"