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__":
|
if __name__ == "__main__":
|
||||||
commands = [
|
commands = [
|
||||||
"s: #a Crystal F",
|
"s: #a Happy Days",
|
||||||
"10",
|
"d: 7",
|
||||||
"2",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,6 +153,8 @@ class Collection(Generic[T]):
|
|||||||
|
|
||||||
if other is None:
|
if other is None:
|
||||||
return
|
return
|
||||||
|
if not other._inner._has_data:
|
||||||
|
return
|
||||||
if other.id in self._indexed_from_id:
|
if other.id in self._indexed_from_id:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class FormattedText:
|
|||||||
if self.is_empty and other.is_empty:
|
if self.is_empty and other.is_empty:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return self.doc == other.doc
|
return self.html == other.html
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def markdown(self) -> str:
|
def markdown(self) -> str:
|
||||||
|
@ -30,6 +30,8 @@ class InnerData:
|
|||||||
|
|
||||||
_refers_to_instances: set = None
|
_refers_to_instances: set = None
|
||||||
_is_in_collection: set = None
|
_is_in_collection: set = None
|
||||||
|
|
||||||
|
_has_data: bool = False
|
||||||
"""
|
"""
|
||||||
Attribute versions keep track, of if the attribute has been changed.
|
Attribute versions keep track, of if the attribute has been changed.
|
||||||
"""
|
"""
|
||||||
@ -48,9 +50,19 @@ class InnerData:
|
|||||||
for key, value in kwargs.items():
|
for key, value in kwargs.items():
|
||||||
if hasattr(value, "__is_collection__"):
|
if hasattr(value, "__is_collection__"):
|
||||||
value._collection_for[self] = key
|
value._collection_for[self] = key
|
||||||
|
|
||||||
self.__setattr__(key, value)
|
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):
|
def __hash__(self):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ class Song(Base):
|
|||||||
"album_collection": Collection,
|
"album_collection": Collection,
|
||||||
"feature_artist_collection": Collection,
|
"feature_artist_collection": Collection,
|
||||||
|
|
||||||
"title": lambda: "",
|
"title": lambda: None,
|
||||||
"unified_title": lambda: None,
|
"unified_title": lambda: None,
|
||||||
"isrc": lambda: None,
|
"isrc": lambda: None,
|
||||||
"genre": lambda: None,
|
"genre": lambda: None,
|
||||||
|
@ -681,17 +681,20 @@ class Musify(Page):
|
|||||||
anchor: BeautifulSoup = artist_crumb.find("a")
|
anchor: BeautifulSoup = artist_crumb.find("a")
|
||||||
if anchor is not None:
|
if anchor is not None:
|
||||||
href = anchor.get("href")
|
href = anchor.get("href")
|
||||||
artist_source_list: List[Source] = []
|
|
||||||
|
|
||||||
if href is not None:
|
href_parts = href.split("/")
|
||||||
artist_source_list.append(Source(self.SOURCE_TYPE, self.HOST + href.strip()))
|
if not(len(href_parts) <= 1 or href_parts[-2] != "artist"):
|
||||||
|
artist_source_list: List[Source] = []
|
||||||
|
|
||||||
span: BeautifulSoup = anchor.find("span")
|
if href is not None:
|
||||||
if span is not None:
|
artist_source_list.append(Source(self.SOURCE_TYPE, self.HOST + href.strip()))
|
||||||
artist_list.append(Artist(
|
|
||||||
name=span.get_text(strip=True),
|
span: BeautifulSoup = anchor.find("span")
|
||||||
source_list=artist_source_list
|
if span is not None:
|
||||||
))
|
artist_list.append(Artist(
|
||||||
|
name=span.get_text(strip=True),
|
||||||
|
source_list=artist_source_list
|
||||||
|
))
|
||||||
else:
|
else:
|
||||||
self.LOGGER.debug("there are not 4 breadcrumb items, which shouldn't be the case")
|
self.LOGGER.debug("there are not 4 breadcrumb items, which shouldn't be the case")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user