websurfer/main.py
2026-11-07 16:58:29 +01:00

35 lines
1.1 KiB
Python

import argparse
import asyncio
import os
import sys
from crawler import Crawler, CrawlerConfig
async def run_cli():
config = CrawlerConfig.from_env_or_prompt()
crawler = Crawler(config)
await crawler.run()
def main():
parser = argparse.ArgumentParser(description="Clickduck - Web Crawler & Link Explorer")
parser.add_argument("--web", action="store_true", help="Launch the Web Frontend dashboard")
parser.add_argument("--host", type=str, default=os.getenv("HOST", "127.0.0.1"), help="Host IP for web UI (default: 127.0.0.1 or $HOST)")
parser.add_argument("--port", type=int, default=int(os.getenv("PORT", "8000")), help="Port for web UI (default: 8000 or $PORT)")
args = parser.parse_args()
if args.web:
from web import run_server
run_server(host=args.host, port=args.port)
else:
try:
asyncio.run(run_cli())
except KeyboardInterrupt:
print("\nCrawling interrupted by user.")
sys.exit(0)
if __name__ == "__main__":
if sys.platform == "win32":
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
main()