remove python and instructions
parent
619d9fcea2
commit
4acfe44e7c
|
@ -1,8 +1,5 @@
|
||||||
__pycache__/
|
|
||||||
.vscode/
|
|
||||||
*.egg-info/
|
|
||||||
build/
|
|
||||||
*.elf
|
*.elf
|
||||||
|
*.exe
|
||||||
*.sum
|
*.sum
|
||||||
live/
|
live/
|
||||||
*.list
|
*.list
|
||||||
|
|
109
README.mdown
109
README.mdown
|
@ -4,7 +4,7 @@ Elder Scrolls Online addon manager and a Tamriel Trade Centre price table update
|
||||||
|
|
||||||
[MIT License](LICENSE)
|
[MIT License](LICENSE)
|
||||||
|
|
||||||
It is recommended that you back up your ESO live profile before using `eso-banana` in case you want to revert back.
|
It is recommended that you back up your ESO live profile before using `banana` in case you want to revert back.
|
||||||
|
|
||||||
On Windows, press `Windows Key + e` to open a file explorer and enter the following path in the address bar:
|
On Windows, press `Windows Key + e` to open a file explorer and enter the following path in the address bar:
|
||||||
|
|
||||||
|
@ -41,27 +41,18 @@ Make sure to include the `www.` indicator that ESOUI requires for some stupid re
|
||||||
|
|
||||||
# Windows Installation
|
# Windows Installation
|
||||||
|
|
||||||
Install the latest Python 3 using the installer provided by [python.org](https://www.python.org/downloads/windows/).
|
0. Download the latest `banana.exe` release for [Windows](https://git.joyo.dev/eso/banana/releases/).
|
||||||
When the python installer asks, [add python to PATH](https://docs.python.org/3/using/windows.html#installation-steps).
|
|
||||||
|
|
||||||
Open [Windows Terminal](https://www.microsoft.com/en-US/p/windows-terminal/9n0dx20hk701) or any windows command prompt and navigate to this project.
|
1. Add the executable to the [user's path](https://www.wikihow.com/Change-the-PATH-Environment-Variable-on-Windows) or replace "banana.exe" with the full path to where the executable is stored.
|
||||||
Use the Python package manager PIP to install `eso-banana`.
|
|
||||||
|
2. Run the executable from the commandline with `banana.exe -h` for usage.
|
||||||
|
|
||||||
|
# Windows Optional
|
||||||
|
|
||||||
|
To schedule a periodic background run of `banana`, open Powershell as a user and enter the following commands.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cd .\banana\
|
$Command = (Get-Command "banana.exe").Source
|
||||||
pip install .
|
|
||||||
```
|
|
||||||
|
|
||||||
Once the project is installed to python's packages you may invoke the addon script with the following command:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
eso-banana-script.exe
|
|
||||||
```
|
|
||||||
|
|
||||||
To schedule a periodic background run of `eso-banana`, open Powershell as a user and enter the following commands.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
$Command = (Get-Command "eso-banana-script.exe").Source
|
|
||||||
$Action = New-ScheduledTaskAction -Execute $Command -Argument "--log"
|
$Action = New-ScheduledTaskAction -Execute $Command -Argument "--log"
|
||||||
$Trigger = New-ScheduledTaskTrigger -Daily -At 11am
|
$Trigger = New-ScheduledTaskTrigger -Daily -At 11am
|
||||||
$Settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -StartWhenAvailable -RunOnlyIfIdle
|
$Settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -StartWhenAvailable -RunOnlyIfIdle
|
||||||
|
@ -76,7 +67,7 @@ TaskPath TaskName State
|
||||||
\ eso-banana Ready
|
\ eso-banana Ready
|
||||||
```
|
```
|
||||||
|
|
||||||
# Windows Unschedule
|
## Windows Unschedule
|
||||||
|
|
||||||
Only run the following command if you wish to remove scheduled run of `eso-banana`.
|
Only run the following command if you wish to remove scheduled run of `eso-banana`.
|
||||||
|
|
||||||
|
@ -88,7 +79,7 @@ Unregister-ScheduledTask eso-banana
|
||||||
|
|
||||||
Press enter to confirm removal.
|
Press enter to confirm removal.
|
||||||
|
|
||||||
# Steam Deck Installation
|
# SteamOS Installation
|
||||||
|
|
||||||
The following instructions are for arch linux system installed with the Steam Deck.
|
The following instructions are for arch linux system installed with the Steam Deck.
|
||||||
|
|
||||||
|
@ -96,103 +87,57 @@ The following instructions are for arch linux system installed with the Steam De
|
||||||
|
|
||||||
> From the STEAM menu, select Power, then Switch to Desktop
|
> From the STEAM menu, select Power, then Switch to Desktop
|
||||||
|
|
||||||
1. Once you've become familiar with desktop mode, open a terminal and enter the following commands to install python.
|
1. Download the latest `banana.elf` release for [SteamOS](https://git.joyo.dev/eso/banana/releases/).
|
||||||
|
|
||||||
```
|
2. Set executable with `chmod +x banana.elf` and add the executable to `~/.local/bin/` or any directory in the user's $PATH environment.
|
||||||
sudo btrfs property set -ts / ro false
|
|
||||||
sudo pacman-key --init
|
|
||||||
sudo pacman-key --populate archlinux
|
|
||||||
sudo pacman -S python-pip
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Run the following commands to download this project and install the scheduled service.
|
- optionally replace "banana.elf" with the full path to where the executable is stored.
|
||||||
|
|
||||||
```
|
3. Run the executable from the commandline with `banana.elf -h` for usage.
|
||||||
wget https://joyo.dev/eso/banana/archive/master.tar.gz -O banana.tgz
|
|
||||||
tar xvf banana.tgz
|
|
||||||
cd ./banana/
|
|
||||||
pip install .
|
|
||||||
cp banana.timer banana.service /etc/systemd/system/
|
|
||||||
sudo systemctl enable banana.timer
|
|
||||||
sudo systemctl enable banana.service
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Now that `eso-banana-script` has been installed, run it once to create the `addons.list` file.
|
Note: banana will create and `addons.list` file which can be edited to include additional adddon URLs at the following path:
|
||||||
If the mentioned command is missing your may need to restart the TTY.
|
|
||||||
|
|
||||||
4. The created file can be edited with vim to include additional adddon URLs at the following path.
|
`$EDITOR "~/.steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/addons.list"`
|
||||||
|
|
||||||
`vim "~/.steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/addons.list"`
|
5. To return to [Gaming Mode](https://help.steampowered.com/en/faqs/view/671A-4453-E8D2-323C):
|
||||||
|
|
||||||
It will look similar to the following:
|
|
||||||
|
|
||||||
```
|
|
||||||
https://www.esoui.com/downloads/info7-LibAddonMenu.html
|
|
||||||
https://www.esoui.com/downloads/info1245-TamrielTradeCentre.html
|
|
||||||
https://www.esoui.com/downloads/info1146-LibCustomMenu.html
|
|
||||||
```
|
|
||||||
|
|
||||||
Add the ESOUI url for each additional addon you wish to keep updated.
|
|
||||||
Make sure to include the `www.` indicator that ESOUI requires for some stupid reason.
|
|
||||||
|
|
||||||
5. Run `eso-banana-script` once more to download and install the additional addons.
|
|
||||||
|
|
||||||
6. To return to [Gaming Mode](https://help.steampowered.com/en/faqs/view/671A-4453-E8D2-323C):
|
|
||||||
|
|
||||||
> ...there's a shortcut link to 'Return to Gaming Mode'.
|
> ...there's a shortcut link to 'Return to Gaming Mode'.
|
||||||
> Select that to get back to standard Steam Deck UI.
|
> Select that to get back to standard Steam Deck UI.
|
||||||
> You can also go through the system menus to Log Off to get back.
|
> You can also go through the system menus to Log Off to get back.
|
||||||
|
|
||||||
# Steam Deck Unschedule
|
# SteamOS Optional
|
||||||
|
|
||||||
Only run the following command if you wish to remove scheduled run of `eso-banana`.
|
|
||||||
|
|
||||||
```
|
|
||||||
systemctl list-timers --all
|
|
||||||
sudo systemctl disable banana.timer
|
|
||||||
```
|
|
||||||
|
|
||||||
# Linux Installation
|
|
||||||
|
|
||||||
The following instructions are for any linux system using systemd.
|
|
||||||
Using your distros package management system, install python3-pip.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt install python3-pip
|
|
||||||
```
|
|
||||||
|
|
||||||
Because systemd is cancer you will need to edit the `banana.service` file to include your user's home path.
|
Because systemd is cancer you will need to edit the `banana.service` file to include your user's home path.
|
||||||
In the unlikely event that the script is not installed to `~/.local/bin/eso-banana-script`, open a new terminal and use the results from `which eso-banana-script`.
|
In the unlikely event that the script is not installed to `~/.local/bin/banana.elf`, open a new terminal and use the results from `which banana.elf`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Run banana daily and on boot.
|
Description=Run ESO banana daily and on boot.
|
||||||
Wants=banana.timer
|
Wants=banana.timer
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/home/user_name_here/.local/bin/eso-banana-script
|
ExecStart=/home/user_name_here/.local/bin/banana.elf
|
||||||
User=deck
|
User=deck
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, install `eso-banana` using pip and install the systemd timer and service to run `eso-banana` everyday.
|
Finally, install the systemd timer and service to run `banana` everyday.
|
||||||
|
|
||||||
```
|
```
|
||||||
cd ./banana/
|
cd ./banana/
|
||||||
pip install .
|
|
||||||
cp banana.timer banana.service /etc/systemd/system/
|
cp banana.timer banana.service /etc/systemd/system/
|
||||||
sudo systemctl enable banana.timer
|
sudo systemctl enable banana.timer
|
||||||
sudo systemctl enable banana.service
|
sudo systemctl enable banana.service
|
||||||
```
|
```
|
||||||
|
|
||||||
# Linux Unschedule
|
## SteamOS Unschedule
|
||||||
|
|
||||||
Only run the following command if you wish to remove scheduled run of `eso-banana`.
|
Only run the following command if you wish to remove scheduled run of `banana`.
|
||||||
|
|
||||||
```
|
```
|
||||||
systemctl list-timers --all
|
systemctl list-timers --all
|
||||||
sudo systemctl disable banana.timer
|
sudo systemctl disable banana.timer
|
||||||
```
|
```
|
||||||
|
|
388
banana.py
388
banana.py
|
@ -1,388 +0,0 @@
|
||||||
from argparse import ArgumentParser
|
|
||||||
from io import BytesIO
|
|
||||||
from packaging import version
|
|
||||||
from pathlib import Path
|
|
||||||
from pathlib import Path
|
|
||||||
from platform import system
|
|
||||||
from shutil import rmtree, copytree
|
|
||||||
from tempfile import TemporaryDirectory
|
|
||||||
from typing import Tuple
|
|
||||||
from zipfile import ZipFile
|
|
||||||
import logging
|
|
||||||
import re
|
|
||||||
import requests
|
|
||||||
|
|
||||||
config_template = """https://www.esoui.com/downloads/info7-LibAddonMenu.html
|
|
||||||
https://www.esoui.com/downloads/info1245-TamrielTradeCentre.html
|
|
||||||
https://www.esoui.com/downloads/info1146-LibCustomMenu.html
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def config_new(path: Path):
|
|
||||||
path.touch(exist_ok=True)
|
|
||||||
|
|
||||||
with path.open("w") as file_open:
|
|
||||||
file_open.write(config_template)
|
|
||||||
|
|
||||||
def live_to_esoui(*, path: Path, esoui_uris: list):
|
|
||||||
live_name, live_version, live_path = parsing_live(path)
|
|
||||||
|
|
||||||
if not live_path:
|
|
||||||
return
|
|
||||||
|
|
||||||
esoui_name, esoui_version, esoui_uri = None, None, None
|
|
||||||
|
|
||||||
for _name, _version, _uri in esoui_uris:
|
|
||||||
if _name in live_name:
|
|
||||||
esoui_name, esoui_version, esoui_uri = _name, _version, _uri
|
|
||||||
break
|
|
||||||
|
|
||||||
if live_name in _name:
|
|
||||||
esoui_name, esoui_version, esoui_uri = _name, _version, _uri
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
if not esoui_name:
|
|
||||||
rmtree(live_path)
|
|
||||||
logging.info(f"{live_name} addon removed from: {live_path}")
|
|
||||||
return
|
|
||||||
|
|
||||||
if esoui_version == live_version:
|
|
||||||
logging.info(f"{live_name} is already up to date.")
|
|
||||||
return
|
|
||||||
|
|
||||||
response = requests.get(esoui_uri)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
temp_dir = TemporaryDirectory()
|
|
||||||
temp_path = Path(temp_dir.name)
|
|
||||||
|
|
||||||
zip_file = ZipFile(BytesIO(response.content))
|
|
||||||
zip_file.extractall(temp_path)
|
|
||||||
|
|
||||||
rmtree(live_path)
|
|
||||||
|
|
||||||
for each in temp_path.iterdir():
|
|
||||||
copytree(each, live_path)
|
|
||||||
|
|
||||||
logging.info(
|
|
||||||
f"{live_name} updated from {live_version} to {esoui_version} at {live_path}"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def esoui_to_live(*, esoui_uris: list, live_path: Path):
|
|
||||||
for addon_name, addon_version, esoui_dowload_uri in esoui_uris:
|
|
||||||
match = None
|
|
||||||
|
|
||||||
for each in live_path.iterdir():
|
|
||||||
if addon_name in each.name:
|
|
||||||
match = each
|
|
||||||
break
|
|
||||||
|
|
||||||
if each.name in addon_name:
|
|
||||||
match = each
|
|
||||||
break
|
|
||||||
|
|
||||||
if match:
|
|
||||||
logging.debug(f"{addon_name} already installed.")
|
|
||||||
continue
|
|
||||||
|
|
||||||
response = requests.get(esoui_dowload_uri)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
temp_dir = TemporaryDirectory()
|
|
||||||
temp_path = Path(temp_dir.name)
|
|
||||||
|
|
||||||
zip_file = ZipFile(BytesIO(response.content))
|
|
||||||
zip_file.extractall(temp_path)
|
|
||||||
|
|
||||||
for each in temp_path.iterdir():
|
|
||||||
live_dest = live_path.joinpath(each.name)
|
|
||||||
|
|
||||||
if live_dest.exists():
|
|
||||||
continue
|
|
||||||
|
|
||||||
copytree(each, live_dest)
|
|
||||||
|
|
||||||
logging.info(f"{addon_name} installed {addon_version} at {live_dest}")
|
|
||||||
|
|
||||||
|
|
||||||
esoui_prefix = re.compile("https://www.esoui.com/downloads/info[0-9]+\-")
|
|
||||||
esoui_version_html = re.compile('<div\s+id="version">Version:\s+[^<]+')
|
|
||||||
esoui_version_split = re.compile('<div\s+id="version">Version:\s+')
|
|
||||||
esoui_download = re.compile('https://cdn.esoui.com/downloads/file[^"]*')
|
|
||||||
live_version = re.compile("##\s+Version:\s+.*")
|
|
||||||
live_version_split = re.compile("##\s+Version:\s+")
|
|
||||||
|
|
||||||
|
|
||||||
def esoui_parse(url: str) -> Tuple[str, version.Version, str]:
|
|
||||||
addon_name = esoui_prefix.split(url)[1]
|
|
||||||
addon_name = addon_name.split(".html")[0]
|
|
||||||
|
|
||||||
response = requests.get(url)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
version_line = esoui_version_html.search(response.text).group(0)
|
|
||||||
_version = esoui_version_split.split(version_line)[1]
|
|
||||||
try:
|
|
||||||
_version = version.parse(_version)
|
|
||||||
except version.InvalidVersion:
|
|
||||||
_version = version.parse("1")
|
|
||||||
|
|
||||||
esoui_page_url = url.replace("info", "download").replace(".html", "")
|
|
||||||
|
|
||||||
response = requests.get(esoui_page_url)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
esoui_dowload_uri = esoui_download.search(response.text).group(0)
|
|
||||||
response = requests.head(esoui_dowload_uri)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
return addon_name, _version, esoui_dowload_uri
|
|
||||||
|
|
||||||
|
|
||||||
def parsing_live(path: Path):
|
|
||||||
if not path.is_dir():
|
|
||||||
logging.error(f"unexpected file object {path}, ignoring")
|
|
||||||
return
|
|
||||||
|
|
||||||
meta_file = path.joinpath(f"{path.stem}.txt")
|
|
||||||
|
|
||||||
if not meta_file.exists():
|
|
||||||
for meta_file in path.glob("*.txt"):
|
|
||||||
if not meta_file.stem in path.stem:
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
|
||||||
with meta_file.open("r") as file_open:
|
|
||||||
meta_data = file_open.read()
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
with meta_file.open("r", encoding="latin-1") as file_open:
|
|
||||||
meta_data = file_open.read()
|
|
||||||
|
|
||||||
addon_name = meta_file.stem
|
|
||||||
result = live_version.search(meta_data)
|
|
||||||
|
|
||||||
if result:
|
|
||||||
_version = result.group(0)
|
|
||||||
_version = live_version_split.split(_version)[1]
|
|
||||||
try:
|
|
||||||
_version = version.parse(_version)
|
|
||||||
except version.InvalidVersion:
|
|
||||||
_version = version.parse("0")
|
|
||||||
else:
|
|
||||||
_version = version.parse("0")
|
|
||||||
|
|
||||||
return addon_name, _version, path
|
|
||||||
|
|
||||||
def eso_live_path_get():
|
|
||||||
if system() == "Windows":
|
|
||||||
eso_live_path = Path.home().joinpath(
|
|
||||||
"Documents\Elder Scrolls Online\live"
|
|
||||||
)
|
|
||||||
if eso_live_path.exists:
|
|
||||||
return eso_live_path
|
|
||||||
|
|
||||||
else:
|
|
||||||
eso_live_path = Path.home().joinpath(
|
|
||||||
".steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"
|
|
||||||
)
|
|
||||||
|
|
||||||
if eso_live_path.exists():
|
|
||||||
return eso_live_path
|
|
||||||
|
|
||||||
eso_live_path = Path.home().joinpath(
|
|
||||||
".var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live"
|
|
||||||
)
|
|
||||||
|
|
||||||
if eso_live_path.exists():
|
|
||||||
return eso_live_path
|
|
||||||
|
|
||||||
raise Exception("Unable to find `steamuser/Documents/Elder Scrolls Online/live`, specify the full path and contact maintainer to see if they'll add it.")
|
|
||||||
|
|
||||||
def unlisted_remove():
|
|
||||||
parser = ArgumentParser(
|
|
||||||
description="Visit https://www.esoui.com/ to search for addons and their dependencies URLs. Edit addons.yaml in the ESO live path and add the URL for each addon for installation. "
|
|
||||||
)
|
|
||||||
parser.add_argument("-v", "--verbose", action="count", help="verbose logging")
|
|
||||||
parser.add_argument("-l", "--log", action="store_true")
|
|
||||||
parser.add_argument("-p", "--eso_live_path")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.eso_live_path:
|
|
||||||
args.eso_live_path = Path(args.eso_live_path)
|
|
||||||
else:
|
|
||||||
args.eso_live_path = eso_live_path_get()
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
level = logging.DEBUG
|
|
||||||
format = "%(asctime)s %(filename)s:%(lineno)d %(message)s"
|
|
||||||
else:
|
|
||||||
level = logging.INFO
|
|
||||||
format = "%(asctime)s %(message)s"
|
|
||||||
|
|
||||||
if args.log:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
filename=args.eso_live_path.joinpath("banana.log"),
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
)
|
|
||||||
|
|
||||||
logging.info(args)
|
|
||||||
|
|
||||||
|
|
||||||
config_path = Path(args.eso_live_path).joinpath("addons.list")
|
|
||||||
|
|
||||||
if not config_path.exists():
|
|
||||||
config_new(config_path)
|
|
||||||
logging.info(f'addons list created at "{config_path}"')
|
|
||||||
|
|
||||||
with config_path.open("r") as file_open:
|
|
||||||
config_current = [line.rstrip('\n') for line in file_open]
|
|
||||||
|
|
||||||
config_current = filter(None, config_current)
|
|
||||||
live_path = args.eso_live_path.joinpath("AddOns")
|
|
||||||
live_path.mkdir(parents=True, exist_ok=True)
|
|
||||||
esoui_uris = list()
|
|
||||||
|
|
||||||
for url in config_current:
|
|
||||||
esoui = esoui_parse(url)
|
|
||||||
if esoui:
|
|
||||||
esoui_uris.append(esoui)
|
|
||||||
|
|
||||||
for child in live_path.iterdir():
|
|
||||||
live_to_esoui(path=child, esoui_uris=esoui_uris)
|
|
||||||
|
|
||||||
esoui_to_live(esoui_uris=esoui_uris, live_path=live_path)
|
|
||||||
ttc_update(live_path=live_path)
|
|
||||||
|
|
||||||
def periodical_script():
|
|
||||||
parser = ArgumentParser(
|
|
||||||
description="Visit https://www.esoui.com/ to search for addons and their dependencies URLs. Edit addons.yaml in the ESO live path and add the URL for each addon for installation. "
|
|
||||||
)
|
|
||||||
parser.add_argument("-v", "--verbose", action="count", help="verbose logging")
|
|
||||||
parser.add_argument("-l", "--log", action="store_true")
|
|
||||||
parser.add_argument("-p", "--eso_live_path")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.eso_live_path:
|
|
||||||
args.eso_live_path = Path(args.eso_live_path)
|
|
||||||
else:
|
|
||||||
args.eso_live_path = eso_live_path_get()
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
level = logging.DEBUG
|
|
||||||
format = "%(asctime)s %(filename)s:%(lineno)d %(message)s"
|
|
||||||
else:
|
|
||||||
level = logging.INFO
|
|
||||||
format = "%(asctime)s %(message)s"
|
|
||||||
|
|
||||||
if args.log:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
filename=args.eso_live_path.joinpath("banana.log"),
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
)
|
|
||||||
|
|
||||||
logging.info(args)
|
|
||||||
|
|
||||||
|
|
||||||
config_path = Path(args.eso_live_path).joinpath("addons.list")
|
|
||||||
|
|
||||||
if not config_path.exists():
|
|
||||||
config_new(config_path)
|
|
||||||
logging.info(f'addons list created at "{config_path}"')
|
|
||||||
|
|
||||||
with config_path.open("r") as file_open:
|
|
||||||
config_current = [line.rstrip('\n') for line in file_open]
|
|
||||||
|
|
||||||
config_current = filter(None, config_current)
|
|
||||||
live_path = args.eso_live_path.joinpath("AddOns")
|
|
||||||
live_path.mkdir(parents=True, exist_ok=True)
|
|
||||||
esoui_uris = list()
|
|
||||||
|
|
||||||
for url in config_current:
|
|
||||||
esoui = esoui_parse(url)
|
|
||||||
if esoui:
|
|
||||||
esoui_uris.append(esoui)
|
|
||||||
|
|
||||||
esoui_to_live(esoui_uris=esoui_uris, live_path=live_path)
|
|
||||||
ttc_update(live_path=live_path)
|
|
||||||
|
|
||||||
|
|
||||||
def ttc():
|
|
||||||
parser = ArgumentParser(description="Tamriel Trade Centre price table updater.")
|
|
||||||
parser.add_argument("-v", "--verbose", action="count", help="verbose logging")
|
|
||||||
parser.add_argument("-l", "--log", action="store_true")
|
|
||||||
parser.add_argument("-p", "--eso_live_path")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.eso_live_path:
|
|
||||||
args.eso_live_path = Path(args.eso_live_path)
|
|
||||||
else:
|
|
||||||
args.eso_live_path = eso_live_path_get()
|
|
||||||
|
|
||||||
if args.verbose:
|
|
||||||
level = logging.DEBUG
|
|
||||||
format = "%(asctime)s %(filename)s:%(lineno)d %(message)s"
|
|
||||||
else:
|
|
||||||
level = logging.INFO
|
|
||||||
format = "%(asctime)s %(message)s"
|
|
||||||
|
|
||||||
if args.log:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
filename=args.eso_live_path.joinpath("banana.log"),
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
logging.basicConfig(
|
|
||||||
level=level,
|
|
||||||
format=format,
|
|
||||||
)
|
|
||||||
|
|
||||||
logging.info(args)
|
|
||||||
|
|
||||||
live_path = Path(args.eso_live_path).joinpath("AddOns")
|
|
||||||
|
|
||||||
if not live_path.is_dir():
|
|
||||||
logging.error(f"eso_live_path_invalid_dir {live_path}")
|
|
||||||
return
|
|
||||||
|
|
||||||
ttc_update(live_path=live_path)
|
|
||||||
|
|
||||||
|
|
||||||
price_table_uri = "https://us.tamrieltradecentre.com/download/PriceTable"
|
|
||||||
price_table_name = "TamrielTradeCentre"
|
|
||||||
|
|
||||||
|
|
||||||
def ttc_update(live_path: Path):
|
|
||||||
response = requests.get(price_table_uri)
|
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
temp_dir = TemporaryDirectory()
|
|
||||||
temp_path = Path(temp_dir.name)
|
|
||||||
|
|
||||||
zip_file = ZipFile(BytesIO(response.content))
|
|
||||||
zip_file.extractall(temp_path)
|
|
||||||
|
|
||||||
live_tamriel_trade_centre = live_path.joinpath("TamrielTradeCentre")
|
|
||||||
copytree(temp_path.absolute(), live_tamriel_trade_centre.absolute(), dirs_exist_ok=True)
|
|
||||||
|
|
||||||
logging.info(
|
|
||||||
f"tamriel trade centre price table updated: {live_tamriel_trade_centre}"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
periodical_script()
|
|
|
@ -4,7 +4,7 @@ Wants=banana.timer
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/home/deck/.local/bin/eso-banana-script
|
ExecStart=/home/deck/.local/bin/banana.elf
|
||||||
User=deck
|
User=deck
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|
15
setup.py
15
setup.py
|
@ -1,15 +0,0 @@
|
||||||
from setuptools import setup
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name="eso-banana",
|
|
||||||
version="0.0.2",
|
|
||||||
scripts=["banana.py"],
|
|
||||||
entry_points={
|
|
||||||
"console_scripts": [
|
|
||||||
"eso-banana-script = banana:periodical_script",
|
|
||||||
"eso-ttc = banana:ttc",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
install_requires=["packaging", "requests"],
|
|
||||||
python_requires=">3",
|
|
||||||
)
|
|
Loading…
Reference in New Issue