Я пытаюсь заставить простой скрипт на python периодически запускаться на arch linux с использованием cron, но когда я запускаю его в cron, он ведет себя иначе, чем почему я запускаю его в терминале.
Скрипт загружает обои из картинки дня НАСА и делает их моими, используя программу "feh".Когда я запускаю скрипт в терминале, все нормально, но когда я запускаю его в cron, он загружает файл, но не делает его обоями.
Буду признателен за любую помощь.
#!/usr/bin/env python
import time
import os
import requests
import tempfile
from bs4 import BeautifulSoup
WALLPAPER_LOCATION = "/home/user/.wallpaper.jpg"
def main():
if os.path.exists(WALLPAPER_LOCATION):
os.remove(WALLPAPER_LOCATION)
website = "https://apod.nasa.gov/apod/astropix.html"
html_txt = getHTML(website)
img_url = get_image_URL(html_txt)
downloadFile(img_url, WALLPAPER_LOCATION)
os.system("/usr/bin/feh --bg-scale " + WALLPAPER_LOCATION)
def downloadFile(url, filepath):
with open(filepath, 'wb') as handle:
response = requests.get(url, stream=True)
if not response.ok:
print(response)
for block in response.iter_content(1024):
if not block:
break
handle.write(block)
def getHTML(url):
html_txt = ""
temp_html_file = tempfile.NamedTemporaryFile()
downloadFile(url, temp_html_file.name)
with open(temp_html_file.name, "r") as reader:
html_txt = reader.read()
return html_txt
def get_image_URL(html_doc):
base_url = "https://apod.nasa.gov/apod/"
soup = BeautifulSoup(html_doc, "html.parser")
return base_url + soup.findAll('img')[0]["src"]
if __name__== "__main__":
main()