Ошибка загрузки файла: 404 Ошибка клиента: не найден для URL-адреса:Python

Программы на Python
Ответить
Anonymous
 Ошибка загрузки файла: 404 Ошибка клиента: не найден для URL-адреса:

Сообщение Anonymous »

Error при загрузке файла: 404 Client Error: Not Found for url: https://github.com/Waywardfucker/uto-fa ... -v1.45.rar
Ошибка при извлечении архива: [Errno 2] No such file or directory: 'update.rar'
Произошла ошибка при обновлении программы: [WinError 2] Не удается найти указанный файл: 'update.rar'
update.py
import requests
import zipfile
import os
import sys
import shutil
import rarfile

def download_update(url, filename):
try:
response = requests.get(url, stream=True)
response.raise_for_status()
with open(filename, 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
file.write(chunk)
except Exception as e:
print(f"Ошибка при загрузке файла: {e}")

def extract_archive(filename, extract_to):
try:
if filename.endswith('.zip'):
with zipfile.ZipFile(filename, 'r') as zip_ref:
zip_ref.extractall(extract_to)
elif filename.endswith('.rar'):
with rarfile.RarFile(filename, 'r') as rar_ref:
rar_ref.extractall(extract_to)
else:
print(f"Неизвестный формат архива: {filename}")
except Exception as e:
print(f"Ошибка при извлечении архива: {e}")

def update_program(repo_url, version):
try:
archive_url = f"https://github.com/{repo_url}/releases/ ... rsion}.rar"
archive_filename = "update.rar"
download_update(archive_url, archive_filename)

if not os.path.exists("update_dir"):
os.makedirs("update_dir")

extract_archive(archive_filename, "update_dir")

# Копирование файлов из распакованного архива в текущую директорию
for item in os.listdir("update_dir"):
s = os.path.join("update_dir", item)
d = os.path.join(".", item)
if os.path.isdir(s):
shutil.copytree(s, d, dirs_exist_ok=True)
else:
shutil.copy2(s, d)

# Удаление временной директории и архива
shutil.rmtree("update_dir")
os.remove(archive_filename)

print("Программа успешно обновлена.")
os.execv(sys.executable, [sys.executable] + sys.argv)
except Exception as e:
print(f"Произошла ошибка при обновлении программы: {e}")

if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage: update.py ")
sys.exit(1)
update_program(sys.argv[1], sys.argv[2])


uto-farm.py
def check_for_updates():
try:
response = requests.get(LATEST_RELEASE_URL, headers=headers)
response.raise_for_status()
latest_release = response.json()
latest_version = latest_release['tag_name']
if latest_version > CURRENT_VERSION:
repo_url = "Waywardfucker/uto-farm"
subprocess.run(['update.exe', repo_url, latest_version])
sys.exit(0)
else:
print("У вас установлена последняя версия.")
except Exception as e:
print(f"Не удалось проверить наличие обновлений. Произошла ошибка: {e}")

Если сможете помочь, буду очень благодарен, я слишком неопытен и не смог решить проблему самостоятельно, но преодолев свое упрямство, решил обратиться сюда.
Учитываю, что возможно неправильно создаю релизы. Или что-то еще, во всяком случае, сам не могу разобраться.
здесь вводим описание изображения
здесь вводим описание изображения
Раньше пробовал работать только с .exe, но там была та же ошибка и я решил попробовать другие варианты.
введите сюда описание изображения
Я пытался всячески менять код, но каждый раз возникали другие проблемы, в том числе проблема была в наклоне экрана. Вот к какому конечному результату я пришел, я честно говоря запутался, но дело не в этом, все выдает ошибки.
import requests
import zipfile
import os
import sys
import shutil
import rarfile

def download_update(url, filename):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers, stream=True)
response.raise_for_status()
with open(filename, 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
file.write(chunk)
print(f"Файл {filename} успешно загружен.")
except Exception as e:
print(f"Ошибка при загрузке файла: {e}")

def extract_archive(filename, extract_to):
try:
if filename.endswith('.zip'):
with zipfile.ZipFile(filename, 'r') as zip_ref:
zip_ref.extractall(extract_to)
elif filename.endswith('.rar'):
with rarfile.RarFile(filename, 'r') as rar_ref:
rar_ref.extractall(extract_to)
else:
print(f"Неизвестный формат архива: {filename}")
print(f"Архив {filename} успешно распакован в {extract_to}.")
except Exception as e:
print(f"Ошибка при распаковке архива: {e}")

def update_program(repo_url, version):
try:
archive_url = f"https://github.com/{repo_url}/releases/ ... rsion}.rar"
print(f"Загрузка архива с URL: {archive_url}")
archive_filename = "update.rar"
download_update(archive_url, archive_filename)
extract_archive(archive_filename, "update_dir")

# Копирование файлов из распакованного архива в текущую директорию
for item in os.listdir("update_dir"):
s = os.path.join("update_dir", item)
d = os.path.join(".", item)
if os.path.isdir(s):
shutil.copytree(s, d, dirs_exist_ok=True)
else:
shutil.copy2(s, d)
print("Файлы успешно скопированы.")

# Удаление временной директории и архива
shutil.rmtree("update_dir")
os.remove(archive_filename)

# Удаление текущей программы
current_script = sys.argv[0]
os.chmod(current_script, 0o777) # Установка прав доступа
os.remove(current_script)

print("Программа успешно обновлена и текущий скрипт удален.")
os.execv(sys.executable, [sys.executable] + sys.argv)
except Exception as e:
print(f"Произошла ошибка при обновлении программы: {e}")

if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage: update.py ")
sys.exit(1)
update_program(sys.argv[1], sys.argv[2])



Подробнее здесь: https://stackoverflow.com/questions/793 ... nd-for-url
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»