使用 PyImgur 记录的上传方式,上传拒绝出现在图库中
Using PyImgur's documented way to upload, uploadsrefuse to show up in gallery
我使用 PyImgur 文档中的这段代码:
import pyimgur
CLIENT_ID = "xxx"
PATH = "image.jpg"
im = pyimgur.Imgur(CLIENT_ID)
uploaded_image = im.upload_image(PATH, title="Uploaded with PyImgur")
print(uploaded_image.title)
print(uploaded_image.link)
print(uploaded_image.size)
print(uploaded_image.type)
但它没有出现在我的图库中
问题是所有 API 的工作方式(不仅是 imgur API
)。
CLIENT_ID
授予对 API 的访问权限,但仅限于匿名用户。
具有相同 CLIENT_ID
的程序可以被不同的用户使用(不仅仅是你),每个用户都必须允许访问 his/her 数据。
第一个程序必须生成特殊的 URL 到 imgur.com
(我不确定它是否需要 CLIENT_SECRET
)
im = pyimgur.Imgur(CLIENT_ID)#, client_secret=CLIENT_SECRET)
auth_url = im.authorization_url('pin')
接下来您必须在网络浏览器中打开此 URL,它会要求您登录 imgur.com
,并且可能会询问您是否允许此程序访问您的数据。如果您允许,它将显示您必须在程序
中使用的唯一编号 pin
的页面
access_token, refresh_token = im.exchange_pin(pin)
然后程序将可以访问您的数据并将其上传到您的帐户 - 直到您关闭程序。
这也为您提供了 access_token
(就像一个数字中的登录名和密码)程序可以在重新启动程序后使用它来访问您的数据 - 因此您不必再次登录 imgur.com
并复制 pin
.
出于安全原因 access_token
会在 60 分钟后过期,因此您还会得到 refresh_token
(永不过期)程序必须每 60 分钟使用一次来生成新的 access_token
。
im = pyimgur.Imgur(CLIENT_ID, access_token=access_token, refresh_token=refresh_token)
现在它会在重新启动程序后将图像上传到您的帐户。
最少的工作代码。
我使用 try/except
从文件加载 access_token
、refresh_token
或打开网页 pin
生成 access_token
、refresh_token
.我在 Google API 的一些示例中看到了这种方法(但它使用 pickle
将标记保存在文件中)。
import pyimgur
import webbrowser
CLIENT_ID = "123456789012345"
#CLIENT_SECRET = 'xxxyyyzzz'
# access to user data
try:
# try to loading access_token, refresh_token from file
with open('tokens.txt') as f:
access_token, refresh_token = f.read().strip().split()
# run with access_token, refresh_token
im = pyimgur.Imgur(CLIENT_ID, access_token=access_token, refresh_token=refresh_token)
except FileNotFoundError as ex:
# ask for new access_token, refresh_token when file doesn't exists
# run without access_token, refresh_token
im = pyimgur.Imgur(CLIENT_ID) #, client_secret=CLIENT_SECRET)
# generate url
auth_url = im.authorization_url('pin')
# open url in web browser
webbrowser.open(auth_url)
# ask for `pin` from web page
pin = input("What is the pin? ")
# get access_token, refresh_token
access_token, refresh_token = im.exchange_pin(pin)
# save access_token, refresh_token in file
with open('tokens.txt', 'w') as f:
f.write(f'{access_token} {refresh_token}')
# upload image
PATH = "lenna.png"
uploaded_image = im.upload_image(PATH, title="Uploaded with PyImgur")
print('[upload] title:', uploaded_image.title)
print('[upload] link :', uploaded_image.link)
print('[upload] size :', uploaded_image.size)
print('[upload] type :', uploaded_image.type)
# share with community - to see image (as post) on imgur's main page
uploaded_image.submit_to_gallery(title='Shared with PyImgur')
这会将图片添加到用户帐户,但无法添加到所选相册。有 upload_image(..., album=...)
但它需要相册的 ID,而不是它的名称。使用 im.search_gallery(query)
我什至可以获得相册的 ID,但我总是收到错误消息,我无法更改相册中相册中的信息。
编辑:
此代码将图像添加到您的帐户,您可以获得它的 link 并将此 link 通过邮件、即时消息发送给其他人或将 link 放在某些论坛上,或使用它在您自己的网页上显示图像
...但这不会在 Imgur 的主页上发送它 - 它不会 "share to community"
。
你必须添加
uploaded_image.submit_to_gallery(title='Title of your post')
然后人们可以在 Imgur's main page 上看到它并投票。
我在上面的代码中添加了这一行。
PyImgur 源代码:Image.submit_to_gallery(), Album.submit_to_gallery()
当您允许您的程序访问您的数据时,您应该会在 Apps Used
中看到您的程序,您可以使用 revoke access
来禁止程序访问您的数据
我对我的应用程序使用 Client ID
furas-imgur
所以在允许访问我的数据后我在 Apps Used
中看到 furas-imgur
我使用 PyImgur 文档中的这段代码:
import pyimgur
CLIENT_ID = "xxx"
PATH = "image.jpg"
im = pyimgur.Imgur(CLIENT_ID)
uploaded_image = im.upload_image(PATH, title="Uploaded with PyImgur")
print(uploaded_image.title)
print(uploaded_image.link)
print(uploaded_image.size)
print(uploaded_image.type)
但它没有出现在我的图库中
问题是所有 API 的工作方式(不仅是 imgur API
)。
CLIENT_ID
授予对 API 的访问权限,但仅限于匿名用户。
具有相同 CLIENT_ID
的程序可以被不同的用户使用(不仅仅是你),每个用户都必须允许访问 his/her 数据。
第一个程序必须生成特殊的 URL 到 imgur.com
(我不确定它是否需要 CLIENT_SECRET
)
im = pyimgur.Imgur(CLIENT_ID)#, client_secret=CLIENT_SECRET)
auth_url = im.authorization_url('pin')
接下来您必须在网络浏览器中打开此 URL,它会要求您登录 imgur.com
,并且可能会询问您是否允许此程序访问您的数据。如果您允许,它将显示您必须在程序
pin
的页面
access_token, refresh_token = im.exchange_pin(pin)
然后程序将可以访问您的数据并将其上传到您的帐户 - 直到您关闭程序。
这也为您提供了 access_token
(就像一个数字中的登录名和密码)程序可以在重新启动程序后使用它来访问您的数据 - 因此您不必再次登录 imgur.com
并复制 pin
.
出于安全原因 access_token
会在 60 分钟后过期,因此您还会得到 refresh_token
(永不过期)程序必须每 60 分钟使用一次来生成新的 access_token
。
im = pyimgur.Imgur(CLIENT_ID, access_token=access_token, refresh_token=refresh_token)
现在它会在重新启动程序后将图像上传到您的帐户。
最少的工作代码。
我使用 try/except
从文件加载 access_token
、refresh_token
或打开网页 pin
生成 access_token
、refresh_token
.我在 Google API 的一些示例中看到了这种方法(但它使用 pickle
将标记保存在文件中)。
import pyimgur
import webbrowser
CLIENT_ID = "123456789012345"
#CLIENT_SECRET = 'xxxyyyzzz'
# access to user data
try:
# try to loading access_token, refresh_token from file
with open('tokens.txt') as f:
access_token, refresh_token = f.read().strip().split()
# run with access_token, refresh_token
im = pyimgur.Imgur(CLIENT_ID, access_token=access_token, refresh_token=refresh_token)
except FileNotFoundError as ex:
# ask for new access_token, refresh_token when file doesn't exists
# run without access_token, refresh_token
im = pyimgur.Imgur(CLIENT_ID) #, client_secret=CLIENT_SECRET)
# generate url
auth_url = im.authorization_url('pin')
# open url in web browser
webbrowser.open(auth_url)
# ask for `pin` from web page
pin = input("What is the pin? ")
# get access_token, refresh_token
access_token, refresh_token = im.exchange_pin(pin)
# save access_token, refresh_token in file
with open('tokens.txt', 'w') as f:
f.write(f'{access_token} {refresh_token}')
# upload image
PATH = "lenna.png"
uploaded_image = im.upload_image(PATH, title="Uploaded with PyImgur")
print('[upload] title:', uploaded_image.title)
print('[upload] link :', uploaded_image.link)
print('[upload] size :', uploaded_image.size)
print('[upload] type :', uploaded_image.type)
# share with community - to see image (as post) on imgur's main page
uploaded_image.submit_to_gallery(title='Shared with PyImgur')
这会将图片添加到用户帐户,但无法添加到所选相册。有 upload_image(..., album=...)
但它需要相册的 ID,而不是它的名称。使用 im.search_gallery(query)
我什至可以获得相册的 ID,但我总是收到错误消息,我无法更改相册中相册中的信息。
编辑:
此代码将图像添加到您的帐户,您可以获得它的 link 并将此 link 通过邮件、即时消息发送给其他人或将 link 放在某些论坛上,或使用它在您自己的网页上显示图像
...但这不会在 Imgur 的主页上发送它 - 它不会 "share to community"
。
你必须添加
uploaded_image.submit_to_gallery(title='Title of your post')
然后人们可以在 Imgur's main page 上看到它并投票。
我在上面的代码中添加了这一行。
PyImgur 源代码:Image.submit_to_gallery(), Album.submit_to_gallery()
当您允许您的程序访问您的数据时,您应该会在 Apps Used
中看到您的程序,您可以使用 revoke access
来禁止程序访问您的数据
我对我的应用程序使用 Client ID
furas-imgur
所以在允许访问我的数据后我在 Apps Used
furas-imgur