From c30078b28785902e9c95ad0d485eae8f1d3be187 Mon Sep 17 00:00:00 2001 From: Dylan Jones Date: Tue, 29 Jan 2019 20:51:21 -0500 Subject: autoupdate --- downloads.txt | 36 ------------------ latest-urls.txt | 7 ++++ pack-location.txt | 1 - prev-downloads.txt | 36 ++++++++++++++++++ update.py | 106 +++++++++++++++++++++++++++++++++++------------------ 5 files changed, 113 insertions(+), 73 deletions(-) delete mode 100644 downloads.txt create mode 100644 latest-urls.txt delete mode 100644 pack-location.txt create mode 100644 prev-downloads.txt diff --git a/downloads.txt b/downloads.txt deleted file mode 100644 index 0e3c6d2..0000000 --- a/downloads.txt +++ /dev/null @@ -1,36 +0,0 @@ -thaumcraft-01.jar https://minecraft.curseforge.com/projects/thaumcraft/files/2629023/download -baubles-01.jar https://minecraft.curseforge.com/projects/baubles/files/2518667/download -ae2-01.jar https://media.forgecdn.net/files/2630/108/appliedenergistics2-rv6-stable-3.jar -tech-reborn-01.jar https://media.forgecdn.net/files/2633/989/TechReborn-1.12.2-2.17.7.840-universal.jar -rftools-01.jar https://media.forgecdn.net/files/2616/385/rftools-1.12-7.56.jar -tinkers-01.jar https://media.forgecdn.net/files/2571/785/TConstruct-1.12.2-2.10.1.87.jar -enderio-01.jar https://media.forgecdn.net/files/2632/831/EnderIO-1.12.2-5.0.37.jar -imersiveengineering-01.jar https://media.forgecdn.net/files/2625/312/ImmersiveEngineering-0.12-86.jar -thermalexpansion-01.jar https://media.forgecdn.net/files/2624/855/ThermalExpansion-1.12.2-5.5.2.39-universal.jar -thermaldynamics-01.jar https://media.forgecdn.net/files/2624/182/ThermalDynamics-1.12.2-2.5.3.16-universal.jar -wirelesscraftingterminal-02.jar https://media.forgecdn.net/files/2619/932/WirelessCraftingTerminal-1.12.2-3.10.82.jar -projectredcore-01.jar https://media.forgecdn.net/files/2572/409/MrTJPCore-1.12.2-2.1.3.35-universal.jar -projectred-01.jar https://media.forgecdn.net/files/2572/421/ProjectRed-1.12.2-4.9.1.92-world.jar -projectredcompat-01.jar https://media.forgecdn.net/files/2572/420/ProjectRed-1.12.2-4.9.1.92-compat.jar -projectredmech-01.jar https://media.forgecdn.net/files/2572/422/ProjectRed-1.12.2-4.9.1.92-mechanical.jar -projectredinteg-01.jar https://media.forgecdn.net/files/2572/427/ProjectRed-1.12.2-4.9.1.92-integration.jar -translocators-01.jar https://media.forgecdn.net/files/2594/249/Translocators-1.12.2-2.5.1.77-universal.jar -opencomputers-02.jar https://minecraft.curseforge.com/projects/opencomputers/files/2638675/download -jei-01.jar https://media.forgecdn.net/files/2635/239/jei_1.12.2-4.13.1.222.jar -thermalfoundation-01.jar https://media.forgecdn.net/files/2623/991/ThermalFoundation-1.12.2-2.6.1.22-universal.jar -chickenchunks-01.jar https://media.forgecdn.net/files/2594/241/ChickenChunks-1.12.2-2.4.1.73-universal.jar -enderstorage-01.jar https://media.forgecdn.net/files/2594/243/EnderStorage-1.12.2-2.4.5.135-universal.jar -codechickenlib-01.jar https://media.forgecdn.net/files/2618/630/CodeChickenLib-1.12.2-3.2.2.353-universal.jar -endercore-01.jar https://media.forgecdn.net/files/2632/476/EnderCore-1.12.2-0.5.43.jar -forgemultipart-01.jar https://media.forgecdn.net/files/2626/992/ForgeMultipart-1.12.2-2.6.0.79-universal.jar -cofhcore-01.jar https://media.forgecdn.net/files/2623/990/CoFHCore-1.12.2-4.6.1.22-universal.jar -mantle-01.jar https://media.forgecdn.net/files/2630/843/Mantle-1.12-1.3.3.39.jar -passwordlib-01.jar https://media.forgecdn.net/files/2616/338/p455w0rdslib-1.12-2.0.35.jar -cofhworld-01.jar https://media.forgecdn.net/files/2623/91/CoFHWorld-1.12.2-1.3.0.6-universal.jar -redstoneflux-01.jar https://media.forgecdn.net/files/2623/90/RedstoneFlux-1.12-2.1.0.6-universal.jar -projectredcore2-01.jar https://media.forgecdn.net/files/2572/423/ProjectRed-1.12.2-4.9.1.92-Base.jar -idklib-01.jar https://media.forgecdn.net/files/2626/982/mcjtylib-1.12-3.0.6.jar -reborncore-01.jar https://media.forgecdn.net/files/2634/706/RebornCore-1.12.2-3.10.4.348-universal.jar -twilightforest-01.jar https://minecraft.curseforge.com/projects/the-twilight-forest/files/2618264/download -connectedtextures-01.jar https://minecraft.curseforge.com/projects/ctm/files/2629306/download -# planarartiface-01.jar https://minecraft.curseforge.com/projects/planarartifice/files/2624612/download diff --git a/latest-urls.txt b/latest-urls.txt new file mode 100644 index 0000000..5314591 --- /dev/null +++ b/latest-urls.txt @@ -0,0 +1,7 @@ +# fill this file with the same as downloads.txt but with links to the latest urls instead +# e.g. +thaumcraft.jar https://minecraft.curseforge.com/projects/thaumcraft/files/latest +baubles.jar https://minecraft.curseforge.com/projects/baubles/files/latest +opencomputers.jar https://minecraft.curseforge.com/projects/opencomputers/files/latest +twilightforest.jar https://minecraft.curseforge.com/projects/the-twilight-forest/files/latest +connectedtextures.jar https://minecraft.curseforge.com/projects/ctm/files/latest diff --git a/pack-location.txt b/pack-location.txt deleted file mode 100644 index cbb7e66..0000000 --- a/pack-location.txt +++ /dev/null @@ -1 +0,0 @@ -/ P A T H / T O / M O D S / F O L D E R diff --git a/prev-downloads.txt b/prev-downloads.txt new file mode 100644 index 0000000..0e3c6d2 --- /dev/null +++ b/prev-downloads.txt @@ -0,0 +1,36 @@ +thaumcraft-01.jar https://minecraft.curseforge.com/projects/thaumcraft/files/2629023/download +baubles-01.jar https://minecraft.curseforge.com/projects/baubles/files/2518667/download +ae2-01.jar https://media.forgecdn.net/files/2630/108/appliedenergistics2-rv6-stable-3.jar +tech-reborn-01.jar https://media.forgecdn.net/files/2633/989/TechReborn-1.12.2-2.17.7.840-universal.jar +rftools-01.jar https://media.forgecdn.net/files/2616/385/rftools-1.12-7.56.jar +tinkers-01.jar https://media.forgecdn.net/files/2571/785/TConstruct-1.12.2-2.10.1.87.jar +enderio-01.jar https://media.forgecdn.net/files/2632/831/EnderIO-1.12.2-5.0.37.jar +imersiveengineering-01.jar https://media.forgecdn.net/files/2625/312/ImmersiveEngineering-0.12-86.jar +thermalexpansion-01.jar https://media.forgecdn.net/files/2624/855/ThermalExpansion-1.12.2-5.5.2.39-universal.jar +thermaldynamics-01.jar https://media.forgecdn.net/files/2624/182/ThermalDynamics-1.12.2-2.5.3.16-universal.jar +wirelesscraftingterminal-02.jar https://media.forgecdn.net/files/2619/932/WirelessCraftingTerminal-1.12.2-3.10.82.jar +projectredcore-01.jar https://media.forgecdn.net/files/2572/409/MrTJPCore-1.12.2-2.1.3.35-universal.jar +projectred-01.jar https://media.forgecdn.net/files/2572/421/ProjectRed-1.12.2-4.9.1.92-world.jar +projectredcompat-01.jar https://media.forgecdn.net/files/2572/420/ProjectRed-1.12.2-4.9.1.92-compat.jar +projectredmech-01.jar https://media.forgecdn.net/files/2572/422/ProjectRed-1.12.2-4.9.1.92-mechanical.jar +projectredinteg-01.jar https://media.forgecdn.net/files/2572/427/ProjectRed-1.12.2-4.9.1.92-integration.jar +translocators-01.jar https://media.forgecdn.net/files/2594/249/Translocators-1.12.2-2.5.1.77-universal.jar +opencomputers-02.jar https://minecraft.curseforge.com/projects/opencomputers/files/2638675/download +jei-01.jar https://media.forgecdn.net/files/2635/239/jei_1.12.2-4.13.1.222.jar +thermalfoundation-01.jar https://media.forgecdn.net/files/2623/991/ThermalFoundation-1.12.2-2.6.1.22-universal.jar +chickenchunks-01.jar https://media.forgecdn.net/files/2594/241/ChickenChunks-1.12.2-2.4.1.73-universal.jar +enderstorage-01.jar https://media.forgecdn.net/files/2594/243/EnderStorage-1.12.2-2.4.5.135-universal.jar +codechickenlib-01.jar https://media.forgecdn.net/files/2618/630/CodeChickenLib-1.12.2-3.2.2.353-universal.jar +endercore-01.jar https://media.forgecdn.net/files/2632/476/EnderCore-1.12.2-0.5.43.jar +forgemultipart-01.jar https://media.forgecdn.net/files/2626/992/ForgeMultipart-1.12.2-2.6.0.79-universal.jar +cofhcore-01.jar https://media.forgecdn.net/files/2623/990/CoFHCore-1.12.2-4.6.1.22-universal.jar +mantle-01.jar https://media.forgecdn.net/files/2630/843/Mantle-1.12-1.3.3.39.jar +passwordlib-01.jar https://media.forgecdn.net/files/2616/338/p455w0rdslib-1.12-2.0.35.jar +cofhworld-01.jar https://media.forgecdn.net/files/2623/91/CoFHWorld-1.12.2-1.3.0.6-universal.jar +redstoneflux-01.jar https://media.forgecdn.net/files/2623/90/RedstoneFlux-1.12-2.1.0.6-universal.jar +projectredcore2-01.jar https://media.forgecdn.net/files/2572/423/ProjectRed-1.12.2-4.9.1.92-Base.jar +idklib-01.jar https://media.forgecdn.net/files/2626/982/mcjtylib-1.12-3.0.6.jar +reborncore-01.jar https://media.forgecdn.net/files/2634/706/RebornCore-1.12.2-3.10.4.348-universal.jar +twilightforest-01.jar https://minecraft.curseforge.com/projects/the-twilight-forest/files/2618264/download +connectedtextures-01.jar https://minecraft.curseforge.com/projects/ctm/files/2629306/download +# planarartiface-01.jar https://minecraft.curseforge.com/projects/planarartifice/files/2624612/download diff --git a/update.py b/update.py index 4e4dad1..40d7c21 100755 --- a/update.py +++ b/update.py @@ -1,41 +1,75 @@ -#!/bin/python3 - -from requests import get -from os import listdir, remove -from shutil import rmtree, copyfileobj +#!/usr/bin/env python3 +import hashlib +import requests +import os +import shutil +import sys +# Initalize from config INSTALL_DIR = "" with open("pack-location.txt", "r") as f: INSTALL_DIR = f.read().strip() -DOWNLOADS = [] -NAMES = set() -FILES = listdir(INSTALL_DIR) - -with open("downloads.txt", "r") as f: - for line in f: - dl = line.strip().split(" ") - if len(line) > 3 and len(dl) == 2 and line[0] != '#': - dl[0] = dl[0].strip() - dl[1] = dl[1].strip() - DOWNLOADS.append(dl) - NAMES.add(dl[0]) - -print("Updating pack...") -for mod in DOWNLOADS: - if mod[0] in FILES: - print("Skipping " + mod[0] + ", already up-to-date") - else: - print("Installing " + mod[0] + " from " + mod[1] + "...") - download_obj = get(mod[1], stream=True) - with open(INSTALL_DIR + "/" + mod[0], "wb") as write_file: - copyfileobj(download_obj.raw, write_file) - print("Done!") - -print("\nRemoving old versions...") -for jar in FILES: - if jar not in NAMES and jar[-4:] == ".jar": - remove(INSTALL_DIR + "/" + jar) - print("Removing '" + jar + "'") - -print("\nFinished updating pack!") + +def apply_updates(): + print("Updating pack...") + # (fname, url) + mods = [] + # Set of jar file names + names = set() + + with open("downloads.txt", "r") as f: + for line in f: + dl = line.strip().split(" ") + if len(line) > 3 and len(dl) == 2 and line[0] != '#': + dl[0] = dl[0].strip() + dl[1] = dl[1].strip() + mods.append(dl) + names.add(dl[0]) + for mod in mods: + if mod[0] in os.listdir(INSTALL_DIR): + print("Skipping " + mod[0] + ", already up to date") + else: + print("Installing " + mod[0] + " from " + mod[1] + "...") + download_obj = requests.get(mod[1], stream=True) + with open(os.path.join(INSTALL_DIR, mod[0]), "wb") as write_file: + shutil.copyfileobj(download_obj.raw, write_file) + print("Done!") + + print("\nRemoving old versions...") + for jar in os.listdir(INSTALL_DIR): + if jar not in names and os.path.splitext(jar)[1] == ".jar": + os.remove(os.path.join(INSTALL_DIR, jar)) + print(f"Removing '{jar}'") + + print("\nFinished updating pack!") + +def find_updates(): + print("Reading update file...") + mods = set() + with open('updates.txt') as f: + for line in f: + mod = line.strip().split() + if len(line) > 3 and len(mod) == 2 and line[0] != '#': + # run strip on each element + mod = tuple(map(lambda x: x.strip(), mod)) + mods.add(mod) + print("Downloading new versions of all mods...") + with open('downloads.txt', 'w') as f: + f.write('# Format: \n') + for mod in mods: + resp = requests.get(mod[1]) + hsh = hashlib.sha1(resp.content) + f.write(f'{mod[0]} {hsh.hexdigest()} {resp.url}\n') + + +if len(sys.argv) < 2: + print(f"Usage: {sys.argv[0]} ") + sys.exit(-1) +elif sys.argv[1] == 'update': + update() +elif sys.argv[1] == 'find_updates': + find_updates() +else: + print(f"Usage: {sys.argv[0]} ") + sys.exit(-1) -- cgit v1.2.3