download & install folder

This commit is contained in:
admin 2024-01-11 09:41:51 +01:00
parent cdd0e4070d
commit d470dfac31
5 changed files with 38 additions and 60 deletions

1
.gitignore vendored
View file

@ -13,3 +13,4 @@ downloaded_files/
my_app_github/ my_app_github/
my_app_gitlab/ my_app_gitlab/
data-backup/ data-backup/
.config.json

View file

@ -1,34 +0,0 @@
#!/bin/sh
set -e
display_usage() {
echo "Downloads all of a SourceForge project's files."
echo -e "\nUsage: ./sourceforge-file-download.sh [project name]\n"
}
if [ $# -eq 0 ]
then
display_usage
exit 1
fi
project=$1
echo "Downloading $project's files"
# download all the pages on which direct download links are
# be nice, sleep a second
wget -w 1 -np -m -A download https://sourceforge.net/projects/$project/files/
# find the files (ignore "latest" link, that should be included as another URL already)
find sourceforge.net/ | sed "s#.*${project}/files/##" | grep download$ | grep -v "latest/download" | sed -e "s#^#https://master.dl.sourceforge.net/project/${project}/#" -e "s#/download#?viasf=1#" > urllist
# download each of the extracted URLs, put into $projectname/
while read url; do wget --content-disposition -x -nH --cut-dirs=1 "${url}"; done < urllist
# remove ?viasf=1 suffix
find . -name '*?viasf=1' -print0 | xargs -0 rename --verbose "?viasf=1" ""
# remove temporary files, unless you want to keep them for some reason
rm -ri sourceforge.net/
rm -i urllist

View file

@ -6,19 +6,25 @@ import json_main
import download_gitlab import download_gitlab
import download_github import download_github
data_location = "./data/" download_foler = "."
install_folder = "."
def sanity_check():
# Ensure that the directory structure exists
if not os.path.exists(download_foler):
os.makedirs(download_foler)
# Ensure that the directory structure exists, once again # Ensure that the directory structure exists, once again
if not os.path.exists(data_location): if not os.path.exists(install_folder):
os.makedirs(data_location) os.makedirs(install_folder)
# Check if config.json exists and create it with default values if not # Check if config.json exists and create it with default values if not
if not os.path.isfile(data_location+"config.json"): if not os.path.isfile(download_foler+"config.json"):
default_data = { default_data = {
"first_run": "false", "first_run": "false",
"packages": [] "packages": []
} }
with open(data_location+"config.json", "w") as json_file: with open(download_foler+"config.json", "w") as json_file:
json.dump(default_data, json_file, indent=4) json.dump(default_data, json_file, indent=4)
# Placeholder functions for SourceForge and Gitea # Placeholder functions for SourceForge and Gitea
@ -31,9 +37,12 @@ def download_from_gitea(api_url, project_id, token, destination, progress_bar, v
print("Gita not supported, yet") print("Gita not supported, yet")
# Function to install all packages # Function to install all packages
def install_all_packages(progress_bar, progress_label): def install_all_packages(progress_bar, progress_label,download_location,install_location):
download_foler=download_location
install_folder=install_location
sanity_check()
try: try:
with open(data_location+"config.json", 'r') as file: with open(download_foler+"config.json", 'r') as file:
data = json.load(file) data = json.load(file)
packages = data.get("packages", []) packages = data.get("packages", [])
total_packages = len(packages) total_packages = len(packages)
@ -66,6 +75,6 @@ def install_all_packages(progress_bar, progress_label):
print("Config file not found.") print("Config file not found.")
# Check if the script is executed directly # # Check if the script is executed directly
if __name__ == "__main__": # if __name__ == "__main__":
install_all_packages() # install_all_packages()

View file

@ -6,6 +6,7 @@ import threading
import download_main import download_main
number_of_tabs = 4 number_of_tabs = 4
download_foler = "."
class InstallerGUI: class InstallerGUI:
def __init__(self): def __init__(self):
@ -46,7 +47,7 @@ class UpdaterGUI(Gtk.Box):
def run_installation(self): def run_installation(self):
# Pass the progress bar and label to the install_all_packages function # Pass the progress bar and label to the install_all_packages function
download_main.install_all_packages(self.progress_bar, self.progress_label) download_main.install_all_packages(self.progress_bar, self.progress_label, download_foler,"./data/")
# Glib.idle_add() ? # Glib.idle_add() ?
@ -201,8 +202,9 @@ class MainWindow(Gtk.ApplicationWindow):
self.logo_and_title_box.get_children()[0].set_from_pixbuf(logo_pixbuf) self.logo_and_title_box.get_children()[0].set_from_pixbuf(logo_pixbuf)
# Make the MainWindow class callable as a function # Make the MainWindow class callable as a function
def run_installer(): def run_installer(download_foler_tmp):
app = Gtk.Application(application_id="org.example.customizableapp", download_foler = download_foler_tmp
app = Gtk.Application(application_id="com.spitfire.launcher",
flags=Gio.ApplicationFlags.FLAGS_NONE) flags=Gio.ApplicationFlags.FLAGS_NONE)
app.connect("activate", lambda app: MainWindow(application=app)) app.connect("activate", lambda app: MainWindow(application=app))
app.run() app.run()

View file

@ -16,7 +16,7 @@ def get_temp_folder():
temp_dir = tempfile.gettempdir() temp_dir = tempfile.gettempdir()
# Create a subdirectory inside the temporary directory # Create a subdirectory inside the temporary directory
user_temp_folder = os.path.join(temp_dir, 'my_temp_folder') user_temp_folder = os.path.join(temp_dir, 'SpitfireBrowserTmp')
# Create the directory if it doesn't exist # Create the directory if it doesn't exist
if not os.path.exists(user_temp_folder): if not os.path.exists(user_temp_folder):
@ -83,7 +83,7 @@ def main():
# Skips entier program if is a different system than windows # Skips entier program if is a different system than windows
if sys.platform != 'win32': if sys.platform != 'win32':
from gui_main import run_installer from gui_main import run_installer
run_installer() run_installer(".")
return return
# Replace this with the desired download path # Replace this with the desired download path
@ -127,7 +127,7 @@ def main():
# Run your main application function # Run your main application function
from gui_main import run_installer from gui_main import run_installer
run_installer() run_installer(download_path)
# Schedule the start_download function to run after 100 milliseconds # Schedule the start_download function to run after 100 milliseconds
root.after(100, start_download) root.after(100, start_download)
@ -137,7 +137,7 @@ def main():
else: else:
# Run installer directly if all files are present # Run installer directly if all files are present
from gui_main import run_installer from gui_main import run_installer
run_installer() run_installer(download_path)
if __name__ == "__main__": if __name__ == "__main__":
main() main()