From e21e42e832e4ac633a9d48f6e30c34a9011008bc Mon Sep 17 00:00:00 2001 From: alyx Date: Sat, 25 Nov 2023 22:31:49 -0500 Subject: Main interface done. Up next: docs, logging, and polish --- src/bbss/friends.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/bbss/friends.py') diff --git a/src/bbss/friends.py b/src/bbss/friends.py index cd5e7cf..d0aa884 100644 --- a/src/bbss/friends.py +++ b/src/bbss/friends.py @@ -1,4 +1,6 @@ from .lists import BaseListFile, ListFileEntry, parse_listfile +from .site import Site +from . import DEFAULT_PATHS from dataclasses import dataclass from typing import cast, Optional from collections.abc import Sequence @@ -28,13 +30,19 @@ class FriendListFileEntry(ListFileEntry): self.__setattr__('scheme', m.group('scheme') or None) self.__setattr__('domain', m.group('domain')) self.__setattr__('path', m.group('path').removesuffix('/')) - self.__setattr__('url', (self.scheme if self.scheme else 'https') + '://' + self.domain + (self.path if self.path else '/BBSS') + '/') + self.__setattr__('url', (self.scheme if self.scheme else 'https') + '://' + self.domain + (self.path if self.path is not None else "")) def exists(self) -> bool: - return requests.head(self.url).ok + if self.path is not None: + return requests.head(self.url + "/sizes.txt").ok or requests.head(self.url + "/88x31/list.txt").ok + else: + for default in DEFAULT_PATHS: + if requests.head(default + "sizes.txt").ok or requests.head(default + "/88x31/list.txt").ok: + return True + return False - def get(self) -> requests.Response: - return requests.get(self.url) + def get(self) -> Site: + return Site(self.domain, self.path, scheme = self.scheme) class FriendListFile(BaseListFile[FriendListFileEntry]): def __init__(self, contents: str): -- cgit v1.2.3-54-g00ecf