Compare commits
3 Commits
e3d7ed8837
...
2af577c0cd
Author | SHA1 | Date | |
---|---|---|---|
|
2af577c0cd | ||
|
3780f05e58 | ||
|
a0305a7a6e |
22
.vscode/launch.json
vendored
Normal file
22
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python Debugger: Current File",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
{
|
||||
"name": "Python Debugger: Download script",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "development/actual_donwload.py",
|
||||
"console": "integratedTerminal"
|
||||
}
|
||||
]
|
||||
}
|
@ -6,9 +6,8 @@ logging.getLogger().setLevel(logging.DEBUG)
|
||||
|
||||
if __name__ == "__main__":
|
||||
commands = [
|
||||
"s: #a Crystal F",
|
||||
"10",
|
||||
"2",
|
||||
"s: #a Happy Days",
|
||||
"d: 7",
|
||||
]
|
||||
|
||||
|
||||
|
@ -153,6 +153,8 @@ class Collection(Generic[T]):
|
||||
|
||||
if other is None:
|
||||
return
|
||||
if not other._inner._has_data:
|
||||
return
|
||||
if other.id in self._indexed_from_id:
|
||||
return
|
||||
|
||||
|
@ -32,7 +32,7 @@ class FormattedText:
|
||||
if self.is_empty and other.is_empty:
|
||||
return True
|
||||
|
||||
return self.doc == other.doc
|
||||
return self.html == other.html
|
||||
|
||||
@property
|
||||
def markdown(self) -> str:
|
||||
|
@ -30,6 +30,8 @@ class InnerData:
|
||||
|
||||
_refers_to_instances: set = None
|
||||
_is_in_collection: set = None
|
||||
|
||||
_has_data: bool = False
|
||||
"""
|
||||
Attribute versions keep track, of if the attribute has been changed.
|
||||
"""
|
||||
@ -48,9 +50,19 @@ class InnerData:
|
||||
for key, value in kwargs.items():
|
||||
if hasattr(value, "__is_collection__"):
|
||||
value._collection_for[self] = key
|
||||
|
||||
|
||||
self.__setattr__(key, value)
|
||||
|
||||
if self._has_data:
|
||||
continue
|
||||
|
||||
def __setattr__(self, key: str, value):
|
||||
if self._has_data or not hasattr(self, "_default_values"):
|
||||
return super().__setattr__(key, value)
|
||||
|
||||
super().__setattr__("_has_data", not (key in self._default_values and self._default_values[key] == value))
|
||||
return super().__setattr__(key, value)
|
||||
|
||||
def __hash__(self):
|
||||
return self.id
|
||||
|
||||
|
@ -111,7 +111,7 @@ class Song(Base):
|
||||
"album_collection": Collection,
|
||||
"feature_artist_collection": Collection,
|
||||
|
||||
"title": lambda: "",
|
||||
"title": lambda: None,
|
||||
"unified_title": lambda: None,
|
||||
"isrc": lambda: None,
|
||||
"genre": lambda: None,
|
||||
|
@ -681,17 +681,20 @@ class Musify(Page):
|
||||
anchor: BeautifulSoup = artist_crumb.find("a")
|
||||
if anchor is not None:
|
||||
href = anchor.get("href")
|
||||
artist_source_list: List[Source] = []
|
||||
|
||||
if href is not None:
|
||||
artist_source_list.append(Source(self.SOURCE_TYPE, self.HOST + href.strip()))
|
||||
href_parts = href.split("/")
|
||||
if not(len(href_parts) <= 1 or href_parts[-2] != "artist"):
|
||||
artist_source_list: List[Source] = []
|
||||
|
||||
span: BeautifulSoup = anchor.find("span")
|
||||
if span is not None:
|
||||
artist_list.append(Artist(
|
||||
name=span.get_text(strip=True),
|
||||
source_list=artist_source_list
|
||||
))
|
||||
if href is not None:
|
||||
artist_source_list.append(Source(self.SOURCE_TYPE, self.HOST + href.strip()))
|
||||
|
||||
span: BeautifulSoup = anchor.find("span")
|
||||
if span is not None:
|
||||
artist_list.append(Artist(
|
||||
name=span.get_text(strip=True),
|
||||
source_list=artist_source_list
|
||||
))
|
||||
else:
|
||||
self.LOGGER.debug("there are not 4 breadcrumb items, which shouldn't be the case")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user