Sophomores's picture
fix: code review issues (P1-P3)
d27caee
Raw
History Blame Contribute Delete
1.81 kB
"""Entry point: python -m gemini_web2api"""
import argparse
import os
from .config import CONFIG, load_config, find_config
from .models import MODELS
from .gemini import HAS_HTTPX
from .server import GeminiHandler, ThreadedServer
from . import __version__
def main():
parser = argparse.ArgumentParser(description="Gemini Web to OpenAI API")
parser.add_argument("--port", type=int, default=None)
parser.add_argument("--config", type=str, default=None)
parser.add_argument("--cookie-file", type=str, default=None)
parser.add_argument("--proxy", type=str, default=None, help="HTTP proxy, e.g. http://127.0.0.1:7890")
parser.add_argument("--version", action="version", version=f"gemini-web2api {__version__}")
args = parser.parse_args()
config_path = args.config or os.environ.get("GEMINI_WEB2API_CONFIG") or find_config()
if config_path:
load_config(config_path)
if args.port:
CONFIG["port"] = args.port
if args.cookie_file:
CONFIG["cookie_file"] = args.cookie_file
if args.proxy:
CONFIG["proxy"] = args.proxy
port = CONFIG["port"]
server = ThreadedServer((CONFIG["host"], port), GeminiHandler)
print(f"gemini-web2api v{__version__}")
print(f" Listening: http://0.0.0.0:{port}")
print(f" Base URL: http://localhost:{port}/v1")
print(f" Models: {', '.join(MODELS.keys())}")
print(f" Cookie: {'yes' if CONFIG.get('cookie_file') else 'none (anonymous)'}")
print(f" Proxy: {CONFIG.get('proxy') or 'system env'}")
print(f" Streaming: {'httpx (true streaming)' if HAS_HTTPX else 'urllib (buffered)'}")
print()
try:
server.serve_forever()
except KeyboardInterrupt:
print("\nStopped.")
server.shutdown()
if __name__ == "__main__":
main()