commit 2cdbc167a45fdf63c4a38108f5b6b48857f9d350
parent c16efd480dc3aaceaa73c23ff3d27d680f78d524
Author: archiveanon <>
Date: Wed, 8 Jan 2025 01:11:57 +0000
Support specifying servers in multi-file uploads
gofile also returns the servers used for a folder, so we can
extract that from an existing result and pass that in.
Diffstat:
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/gofile/api.py b/src/gofile/api.py
@@ -69,6 +69,7 @@ class GofileUploadResult(msgspec.Struct):
file_id: str = msgspec.field(name="id")
file_name: str = msgspec.field(name="name")
md5_hash: str = msgspec.field(name="md5")
+ servers: list[str]
# a guestToken field is provided if no access token was given and no folderID was specified
guest_token: Optional[str] = msgspec.field(default=None, name="guestToken")
@@ -152,13 +153,17 @@ async def upload_single(
async def upload_multiple(
- files: Iterator[pathlib.Path], token: Optional[str] = None, folder_id: Optional[str] = None
+ files: Iterator[io.FileIO],
+ token: Optional[str] = None,
+ folder_id: Optional[str] = None,
+ server: Optional[str] = None,
) -> AsyncIterator[GofileUpload]:
# returns a generator of GofileUpload instances in the same order files were given
first_file, *other_files = files
- upload_server_result = await get_upload_server()
- server = upload_server_result.server
+ if not server:
+ upload_server_result = await get_upload_server()
+ server = upload_server_result.server
first_upload = await upload_single(first_file, token, folder_id, server)