diff options
Diffstat (limited to 'src/bbss/friends.py')
-rw-r--r-- | src/bbss/friends.py | 16 |
1 files changed, 12 insertions, 4 deletions
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): |