Установить ежедневную картинку на обои - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу использовать API AstroBin, чтобы автоматически установить их картинку дня в качестве обоев для рабочего стола. Я попытался что-то, и это получилось так:

import json
import urllib.request
import urllib

url = 'https://www.astrobin.com/api/v1/imageoftheday/?limit=1&api_key={HIDDEN}&api_secret={HIDDEN}&format=json'
urllib.request.urlretrieve(url, 'C:/Users/Benutzer/Desktop/background/import.json')

with open('C:/Users/Benutzer/Desktop/background/import.json') as file:
    data = json.load(file)
    for o in data['objects']:
        next_json = o['image']
nexturl = 'https://www.astrobin.com'+next_json+'?api_key={HIDDEN}&api_secret={HIDDEN}&format=json'
urllib.request.urlretrieve(nexturl, 'C:/Users/Benutzer/Desktop/background/import.json')
with open('C:/Users/Benutzer/Desktop/background/import.json') as newfile:
    newdata = json.load(newfile)
    picture = newdata["url_real"]
print(picture)
urllib.request.urlretrieve(picture, 'C:/Users/Benutzer/Desktop/background/wp.jpg')

Но когда я запускаю этот код, я получаю это:

C:\Users\Benutzer\Desktop\background>test.py

https://www.astrobin.com/36zjm5/0/rawthumb/real/

Traceback (most recent call last):
  File "C:\Users\Benutzer\Desktop\background\test.py", line 18, in <module>
    urllib.request.urlretrieve(picture, 'C:/Users/Benutzer/Desktop/background/wp.jpg')
  File "C:\Program Files\Python37\lib\urllib\request.py", line 247, in urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python37\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 531, in open
response = meth(req, response)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 563, in error
result = self._call_chain(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 503, in _call_chain
result = func(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 755, in http_error_302
return self.parent.open(new, timeout=req.timeout)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 531, in open
response = meth(req, response)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 569, in error
return self._call_chain(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 503, in _call_chain
result = func(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Я знаю "https://www.astrobin.com/36zjm5/0/rawthumb/real/" использовать перенаправлениена это: "https://cdn.astrobin.com/thumbs/R8aAsADmth0S_16536x16536_wmhqkGbg.jpg"

Как получить ссылку автоматически без использования браузера?

Я обнаружил, что geturl () - это возможное решение?

...