gofile

Module and tool to upload files to gofile.io
git clone https://code.alwayswait.ing/gofile.git
Log | Files | Refs

commit 7bdc3c0cc10624f94e81b8ecca8b2f6af023c131
parent ab6473739c0c724b21282da00ce6c0483a750ed9
Author: archiveanon <>
Date:   Sun,  7 Apr 2024 09:23:22 +0000

Migrate calls to api2

While legacy endpoints are still valid, api2 is now available as
of 2024-03-10.

Diffstat:
Msrc/gofile/api.py | 21+++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/gofile/api.py b/src/gofile/api.py @@ -5,6 +5,7 @@ import collections import enum import os import pathlib +import random import textwrap from typing import Generic, Iterator, Optional, TypeVar @@ -55,6 +56,18 @@ class GofileServerResult(msgspec.Struct): server: Optional[str] = None +class GofileZonedServerResult(msgspec.Struct): + name: Optional[str] = None + zone: Optional[str] = None + + def to_base_server(self): + return GofileServerResult(self.name) + + +class GofileServerListResult(msgspec.Struct): + servers: list[GofileZonedServerResult] + + class GofileUploadResult(msgspec.Struct): download_page: str = msgspec.field(name="downloadPage") code: str = msgspec.field(name="code") @@ -95,7 +108,11 @@ def _gofile_api_post(*args, type: T, **kwargs) -> T: def get_upload_server() -> GofileServerResult: - return _gofile_api_get("https://api.gofile.io/getServer", type=GofileServerResult) + server_list = _gofile_api_get("https://api.gofile.io/servers", type=GofileServerListResult) + + if not server_list.servers: + return GofileServerResult() + return random.choice(server_list.servers).to_base_server() def upload_single( @@ -145,7 +162,7 @@ def upload_single( while True: try: upload_result = _gofile_api_post( - f"https://{server}.gofile.io/uploadFile", + f"https://{server}.gofile.io/contents/uploadfile", data=monitor, headers={"Content-Type": multipart_data.content_type}, type=GofileUploadResult,