d8cabdfdb5
* fix: CI yml name * add: mypy configuraion * add: type annotation to waybackpy modules * add: type annotation to test modules * fix: mypy command * add: types-requests to dev deps * fix: disable max-line-length * fix: move pytest.ini into setup.cfg * add: urllib3 to deps * fix: Retry (ref: https://github.com/python/typeshed/issues/6893) * fix: f-string * fix: shorten long lines * add: staticmethod decorator to no-self-use methods * fix: str(headers)->headers_str * fix: error message * fix: revert "str(headers)->headers_str" and ignore assignment CaseInsensitiveDict with str * fix: mypy error
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from datetime import datetime
|
|
from typing import Dict
|
|
|
|
|
|
class CDXSnapshot(object):
|
|
"""
|
|
Class for the CDX snapshot lines returned by the CDX API,
|
|
Each valid line of the CDX API is casted to an CDXSnapshot object
|
|
by the CDX API interface.
|
|
This provides the end-user the ease of using the data as attributes
|
|
of the CDXSnapshot.
|
|
"""
|
|
|
|
def __init__(self, properties: Dict[str, str]) -> None:
|
|
self.urlkey = properties["urlkey"]
|
|
self.timestamp = properties["timestamp"]
|
|
self.datetime_timestamp = datetime.strptime(self.timestamp, "%Y%m%d%H%M%S")
|
|
self.original = properties["original"]
|
|
self.mimetype = properties["mimetype"]
|
|
self.statuscode = properties["statuscode"]
|
|
self.digest = properties["digest"]
|
|
self.length = properties["length"]
|
|
self.archive_url = (
|
|
f"https://web.archive.org/web/{self.timestamp}/{self.original}"
|
|
)
|
|
|
|
def __str__(self) -> str:
|
|
return (
|
|
f"{self.urlkey} {self.timestamp} {self.original} "
|
|
f"{self.mimetype} {self.statuscode} {self.digest} {self.length}"
|
|
)
|