Commit graph

828 commits

Author SHA1 Message Date
derrod 36c1a9591f [utils] Add helper for packing save data
This helper creates manifests + chunks from
a given directory for uploading to the EOS
save game storage service.
2020-05-12 04:03:03 +02:00
derrod ffe65b5b86 [api] Add method for deleting cloud saves 2020-05-12 04:02:06 +02:00
derrod 6cfe7a74ea [models] Allow initializing ChunkPart values 2020-05-12 04:01:46 +02:00
derrod b0f5ea15a3 [models] return chunk/manifest bytes written 2020-05-12 03:59:21 +02:00
derrod 2945c6c91f [cli/core] Add flags/env vars to override WINE binary/prefix 2020-05-12 02:31:01 +02:00
derrod f9d56b8d0d [cli] Sort savegames by manifest and app name 2020-05-12 02:22:10 +02:00
derrod 8ae0fff1d7 [models] Support __setitem__ in CustomFields 2020-05-09 11:04:57 +02:00
derrod 8328a8ebaa [models] Calculate group_num based on GUID 2020-05-09 11:04:29 +02:00
derrod 17ea65d2da [models] Raise exception when chunk data too large 2020-05-09 11:03:54 +02:00
derrod 2c3bfdfd3a [models] Use random GUID when creating Chunk() 2020-05-09 11:03:14 +02:00
derrod 3257b869e2 [models] Add get_chunk_by_path to CDL 2020-05-09 11:02:31 +02:00
derrod d94d07a26b [models] Support file objects in manifest/chunk serialization 2020-05-09 11:01:54 +02:00
derrod 60845fce48 [models] JSON manifest do not support serialization 2020-05-09 11:00:41 +02:00
derrod ddd115812b [utils] Fix typo in rolling hash function 2020-05-09 11:00:13 +02:00
derrod 3329bdf9af [models] Set default meta feature level to 17 2020-05-09 04:26:44 +02:00
derrod bdd2a14350 [models] Add Chunk serialisation 2020-05-06 19:50:40 +02:00
derrod 5d91b2b59f [utils] Add FRollingHash implementation
Seems to be a variation on CRC-64-ECMA.
This python version is of course very slow.
That should not be a big issue however, since
it is only required for serialising rather
small save game data.
2020-05-06 19:49:45 +02:00
derrod efed0f07da [models] Set default manifest version to 17
This is what EGS currently delivers, and it also
appears there's a shorter header for some lower
versions so for compatibilities' sake just use 17.
2020-05-06 18:26:00 +02:00
derrod d10fa6c65c [models] Support manifest serialization 2020-05-06 18:21:26 +02:00
derrod fb7b9d4548 Update README 2020-05-06 16:06:24 +02:00
derrod 31530692ef [api/cli/core] Add extremely basic support for cloud saves
Currently only supports downloading all saves to a folder,
in the future it should support automatically extracting save
files to the proper directory (at least on Windows).
2020-05-06 15:40:04 +02:00
derrod 693ad3cefc Version 0.0.10 2020-05-05 16:27:14 +02:00
derrod b1ba25e2e0 [downloader] Improve reordering optimizations
With some titles such as Metro Exodus there is
even more duplication across files. While this
change does not manage to reduce the limit to
below the default 1 GiB limit, it does bring
it down by about 512 MiB.
2020-05-05 16:23:51 +02:00
derrod 67859fb4ac [downloader] Clean up unused parameter 2020-05-05 16:13:08 +02:00
derrod ac5856afe1 [utils] Apply reorder opts to Metro Exodus 2020-05-05 16:04:22 +02:00
derrod fefd414b8b [cli] Add --no-install alias for --download-only 2020-05-05 16:03:24 +02:00
derrod 9f7133362c [downloader] Make sure timeout is not None
Hopefully fixes #22
2020-05-05 16:03:12 +02:00
derrod 0e86791237 [downloader] Reformat manager 2020-05-05 13:21:55 +02:00
derrod 6f8da36947 [downloader] Update logging (more debug/cleanup) 2020-05-05 13:21:06 +02:00
Rodney f3afb5b393
Add PyPI link to README 2020-05-04 19:59:57 +02:00
derrod 27f11466d5 Version 0.0.9 2020-05-04 19:51:03 +02:00
derrod e54d13be37 [core] Add warning for EQU8 anti-cheat 2020-05-04 19:50:56 +02:00
derrod 441c619db0 [core] Fix disk space check 2020-05-04 19:50:44 +02:00
derrod 84bb14f252 Bump version to 0.0.8
This is to make sure downstream packages are upgraded
from the broken 0.0.7 release.
2020-05-04 16:33:24 +02:00
derrod 5330c23e68 Add missing dependencies to setup.py 2020-05-04 16:13:33 +02:00
derrod 0b99e56860 Add missing module to setup.py 2020-05-04 16:05:31 +02:00
derrod 8fd7e00683 Fix command name in README 2020-05-04 15:11:19 +02:00
derrod 8e93b4923d Version 0.0.7 2020-05-04 14:30:15 +02:00
derrod 3a08d526d5 [cli] Update CLI descriptions 2020-05-04 14:25:00 +02:00
derrod 4d0ac96bdc [cli/utils] Add aliases to download command
Eventually the "download" command will be changed to
set the --no-install flag by default and "update" will
become --update-only. For now remain backwards compatible
to give people a chance to adjust their scripts and habits.

Fixes #18
2020-05-04 14:21:25 +02:00
derrod bd3095a6be [utils] Add new helper for game specific workaround
In the future we might extend this with other features,
such as specific post-install things that some games
may require to work or preconfigured WINE settings.
2020-05-04 14:08:35 +02:00
derrod df55f18a78 [cli/core/downloader] Increase timeout and make it configurable
Fixes #16
2020-05-04 14:08:26 +02:00
derrod 69383c4788 [cli/core/downloader/utils] Add download reordering optimization
This is an optimization that aims to fix issues with some titles
such as World War Z that have lots of duplicated files resulting
in a very high runtime cache requirement.

The basic idea is to group files that share lots of chunks together
so the data can be removed from the cache sooner.

For most games this has little to no effect. For some titles with heavy
duplication it can reduce the RAM usage significantly however. For
instance the RAM requirements for World War Z are reduced from 5.3 GiB
to 499 MiB.

Partially fixes #17
2020-05-04 14:06:25 +02:00
derrod 3f27ea0296 [downloader] Fix formatting of required cache size
Scientific notation is cool and all but not
particularly useful to most people.
2020-05-02 22:02:53 +02:00
derrod c345662521 REAMDE: Fix wiki urls 2020-05-01 23:44:31 +02:00
derrod 261d0c636f [cli/core] Add some more logging 2020-05-01 19:57:42 +02:00
derrod 20a477d20f [core] Always get all base urls 2020-05-01 19:57:22 +02:00
Rodney 9f2b18fd90
Update README.md 2020-05-01 17:13:01 +02:00
derrod 5eb1b69c05 [models] Fix JSON manifest chunkinfo sha hash
This needs to be bytes() for __repr__() to work.
2020-05-01 15:15:39 +02:00
derrod e976d44fb9 [cli] Fix help metavar for install tags 2020-05-01 15:08:48 +02:00