Merge branch 'source/bandcamp' into experimental

This commit is contained in:
Hazel 2024-04-10 14:39:34 +02:00
commit ae905b5fbf
192 changed files with 4692 additions and 7608 deletions

View File

@ -1,81 +0,0 @@
# Details
Date : 2023-03-28 16:46:52
Directory /home/lars/Projects/music-downloader/src
Total : 66 files, 4673 codes, 1082 comments, 1358 blanks, all 7113 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/__init__.py](/src/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | 58 | 0 | 6 | 64 |
| [src/donwload.py](/src/donwload.py) | Python | 9 | 0 | 6 | 15 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | 30 | 0 | 12 | 42 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 24 | 7 | 14 | 45 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 3 | 2 | 3 | 8 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | 122 | 24 | 52 | 198 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 104 | 47 | 38 | 189 |
| [src/music_kraken/not_used_anymore/__init__.py](/src/music_kraken/not_used_anymore/__init__.py) | Python | 0 | 0 | 3 | 3 |
| [src/music_kraken/not_used_anymore/fetch_audio.py](/src/music_kraken/not_used_anymore/fetch_audio.py) | Python | 75 | 12 | 20 | 107 |
| [src/music_kraken/not_used_anymore/fetch_source.py](/src/music_kraken/not_used_anymore/fetch_source.py) | Python | 54 | 1 | 16 | 71 |
| [src/music_kraken/not_used_anymore/metadata/__init__.py](/src/music_kraken/not_used_anymore/metadata/__init__.py) | Python | 6 | 0 | 2 | 8 |
| [src/music_kraken/not_used_anymore/metadata/metadata_fetch.py](/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py) | Python | 257 | 24 | 65 | 346 |
| [src/music_kraken/not_used_anymore/metadata/metadata_search.py](/src/music_kraken/not_used_anymore/metadata/metadata_search.py) | Python | 253 | 40 | 72 | 365 |
| [src/music_kraken/not_used_anymore/metadata/sources/__init__.py](/src/music_kraken/not_used_anymore/metadata/sources/__init__.py) | Python | 3 | 0 | 2 | 5 |
| [src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py](/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py) | Python | 42 | 6 | 12 | 60 |
| [src/music_kraken/not_used_anymore/sources/__init__.py](/src/music_kraken/not_used_anymore/sources/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/not_used_anymore/sources/genius.py](/src/music_kraken/not_used_anymore/sources/genius.py) | Python | 115 | 16 | 42 | 173 |
| [src/music_kraken/not_used_anymore/sources/local_files.py](/src/music_kraken/not_used_anymore/sources/local_files.py) | Python | 40 | 0 | 18 | 58 |
| [src/music_kraken/not_used_anymore/sources/musify.py](/src/music_kraken/not_used_anymore/sources/musify.py) | Python | 136 | 9 | 37 | 182 |
| [src/music_kraken/not_used_anymore/sources/source.py](/src/music_kraken/not_used_anymore/sources/source.py) | Python | 11 | 5 | 8 | 24 |
| [src/music_kraken/not_used_anymore/sources/youtube.py](/src/music_kraken/not_used_anymore/sources/youtube.py) | Python | 71 | 4 | 24 | 99 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 28 | 0 | 8 | 36 |
| [src/music_kraken/objects/album.py](/src/music_kraken/objects/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 85 | 30 | 37 | 152 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | 50 | 10 | 19 | 79 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 25 | 0 | 7 | 32 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 259 | 62 | 60 | 381 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 23 | 0 | 11 | 34 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 66 | 31 | 31 | 128 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 445 | 83 | 95 | 623 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 118 | 17 | 40 | 175 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 29 | 7 | 9 | 45 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 6 | 0 | 5 | 11 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 180 | 32 | 53 | 265 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | 2 | 0 | 2 | 4 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | 14 | 0 | 6 | 20 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | 98 | 8 | 42 | 148 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 441 | 86 | 111 | 638 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 500 | 248 | 135 | 883 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 25 | 16 | 6 | 47 |
| [src/music_kraken/static_files/new_db.sql](/src/music_kraken/static_files/new_db.sql) | SQLite | 72 | 0 | 10 | 82 |
| [src/music_kraken/static_files/temp_database_structure.sql](/src/music_kraken/static_files/temp_database_structure.sql) | SQLite | 135 | 0 | 10 | 145 |
| [src/music_kraken/tagging/__init__.py](/src/music_kraken/tagging/__init__.py) | Python | 8 | 0 | 2 | 10 |
| [src/music_kraken/tagging/id3.py](/src/music_kraken/tagging/id3.py) | Python | 51 | 4 | 20 | 75 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 1 | 1 | 1 | 3 |
| [src/music_kraken/utils/functions.py](/src/music_kraken/utils/functions.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/object_handeling.py](/src/music_kraken/utils/object_handeling.py) | Python | 19 | 0 | 6 | 25 |
| [src/music_kraken/utils/phonetic_compares.py](/src/music_kraken/utils/phonetic_compares.py) | Python | 39 | 2 | 17 | 58 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 62 | 3 | 10 | 75 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 2 | 5 | 2 | 9 |
| [src/music_kraken_cli.py](/src/music_kraken_cli.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken_gtk.py](/src/music_kraken_gtk.py) | Python | 3 | 0 | 2 | 5 |
| [src/musify_search.py](/src/musify_search.py) | Python | 26 | 0 | 11 | 37 |
| [src/python.py](/src/python.py) | Python | 12 | 43 | 6 | 61 |
| [src/test.db](/src/test.db) | Database | 91 | 0 | 1 | 92 |
| [src/test.py](/src/test.py) | Python | 1 | 0 | 0 | 1 |
| [src/tests/__init__.py](/src/tests/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/tests/conftest.py](/src/tests/conftest.py) | Python | 3 | 1 | 2 | 6 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
| [src/try-programming-interface.py](/src/try-programming-interface.py) | Python | 14 | 98 | 22 | 134 |
| [src/try.py](/src/try.py) | Python | 1 | 0 | 3 | 4 |
| [src/try_python.py](/src/try_python.py) | Python | 13 | 20 | 9 | 42 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,55 +0,0 @@
# Diff Details
Date : 2023-03-28 16:46:52
Directory /home/lars/Projects/music-downloader/src
Total : 40 files, 523 codes, 22 comments, 130 blanks, all 675 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | -22 | -3 | -12 | -37 |
| [src/donwload.py](/src/donwload.py) | Python | 9 | 0 | 6 | 15 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | -18 | -4 | -3 | -25 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | -33 | -1 | -11 | -45 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | -18 | 0 | -4 | -22 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | -1 | 1 | 0 | 0 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 20 | -1 | 12 | 31 |
| [src/music_kraken/database/object_cache.py](/src/music_kraken/database/object_cache.py) | Python | -35 | -56 | -16 | -107 |
| [src/music_kraken/database/old_database.py](/src/music_kraken/database/old_database.py) | Python | -432 | -154 | -115 | -701 |
| [src/music_kraken/database/read.py](/src/music_kraken/database/read.py) | Python | 0 | 0 | -1 | -1 |
| [src/music_kraken/database/temp_database.py](/src/music_kraken/database/temp_database.py) | Python | -12 | 0 | -8 | -20 |
| [src/music_kraken/database/write.py](/src/music_kraken/database/write.py) | Python | -210 | -62 | -63 | -335 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 4 | 0 | 1 | 5 |
| [src/music_kraken/objects/album.py](/src/music_kraken/objects/album.py) | Python | 1 | 0 | 0 | 1 |
| [src/music_kraken/objects/artist.py](/src/music_kraken/objects/artist.py) | Python | -18 | 0 | -5 | -23 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 33 | 15 | 13 | 61 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | -3 | -47 | -1 | -51 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 4 | 0 | 0 | 4 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | -3 | -6 | -3 | -12 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 23 | 0 | 11 | 34 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 44 | 16 | 19 | 79 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 108 | 2 | 5 | 115 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 2 | -21 | -1 | -20 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 7 | 0 | 2 | 9 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | -1 | 0 | 0 | -1 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 107 | -36 | 26 | 97 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | 2 | 0 | 2 | 4 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | 14 | 0 | 6 | 20 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | 98 | 8 | 42 | 148 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 100 | 20 | 20 | 140 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 500 | 248 | 135 | 883 |
| [src/music_kraken/target/__init__.py](/src/music_kraken/target/__init__.py) | Python | -4 | 0 | -2 | -6 |
| [src/music_kraken/target/set_target.py](/src/music_kraken/target/set_target.py) | Python | -37 | -7 | -18 | -62 |
| [src/musify_search.py](/src/musify_search.py) | Python | 26 | 0 | 11 | 37 |
| [src/python.py](/src/python.py) | Python | 12 | 43 | 6 | 61 |
| [src/test.py](/src/test.py) | Python | 1 | 0 | 0 | 1 |
| [src/tests/example_data_objects.py](/src/tests/example_data_objects.py) | Python | -36 | -5 | -6 | -47 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@ -1,42 +0,0 @@
"filename", "language", "Python", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", -22, -3, -12, -37
"/home/lars/Projects/music-downloader/src/donwload.py", "Python", 9, 0, 6, 15
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", -18, -4, -3, -25
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", -33, -1, -11, -45
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", -18, 0, -4, -22
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", -1, 1, 0, 0
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 20, -1, 12, 31
"/home/lars/Projects/music-downloader/src/music_kraken/database/object_cache.py", "Python", -35, -56, -16, -107
"/home/lars/Projects/music-downloader/src/music_kraken/database/old_database.py", "Python", -432, -154, -115, -701
"/home/lars/Projects/music-downloader/src/music_kraken/database/read.py", "Python", 0, 0, -1, -1
"/home/lars/Projects/music-downloader/src/music_kraken/database/temp_database.py", "Python", -12, 0, -8, -20
"/home/lars/Projects/music-downloader/src/music_kraken/database/write.py", "Python", -210, -62, -63, -335
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 4, 0, 1, 5
"/home/lars/Projects/music-downloader/src/music_kraken/objects/album.py", "Python", 1, 0, 0, 1
"/home/lars/Projects/music-downloader/src/music_kraken/objects/artist.py", "Python", -18, 0, -5, -23
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 33, 15, 13, 61
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", -3, -47, -1, -51
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 4, 0, 0, 4
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", -3, -6, -3, -12
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 23, 0, 11, 34
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 44, 16, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 108, 2, 5, 115
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 2, -21, -1, -20
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 7, 0, 2, 9
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", -1, 0, 0, -1
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 107, -36, 26, 97
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", 2, 0, 2, 4
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", 14, 0, 6, 20
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", 98, 8, 42, 148
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 100, 20, 20, 140
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 500, 248, 135, 883
"/home/lars/Projects/music-downloader/src/music_kraken/target/__init__.py", "Python", -4, 0, -2, -6
"/home/lars/Projects/music-downloader/src/music_kraken/target/set_target.py", "Python", -37, -7, -18, -62
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 26, 0, 11, 37
"/home/lars/Projects/music-downloader/src/python.py", "Python", 12, 43, 6, 61
"/home/lars/Projects/music-downloader/src/test.py", "Python", 1, 0, 0, 1
"/home/lars/Projects/music-downloader/src/tests/example_data_objects.py", "Python", -36, -5, -6, -47
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 15, 51, 239
"Total", "-", 523, 22, 130, 675
1 filename language Python comment blank total
2 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python -22 -3 -12 -37
3 /home/lars/Projects/music-downloader/src/donwload.py Python 9 0 6 15
4 /home/lars/Projects/music-downloader/src/metal_archives.py Python -18 -4 -3 -25
5 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python -33 -1 -11 -45
6 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python -18 0 -4 -22
7 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python -1 1 0 0
8 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 20 -1 12 31
9 /home/lars/Projects/music-downloader/src/music_kraken/database/object_cache.py Python -35 -56 -16 -107
10 /home/lars/Projects/music-downloader/src/music_kraken/database/old_database.py Python -432 -154 -115 -701
11 /home/lars/Projects/music-downloader/src/music_kraken/database/read.py Python 0 0 -1 -1
12 /home/lars/Projects/music-downloader/src/music_kraken/database/temp_database.py Python -12 0 -8 -20
13 /home/lars/Projects/music-downloader/src/music_kraken/database/write.py Python -210 -62 -63 -335
14 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 4 0 1 5
15 /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py Python 1 0 0 1
16 /home/lars/Projects/music-downloader/src/music_kraken/objects/artist.py Python -18 0 -5 -23
17 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 56 18 111
18 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 33 15 13 61
19 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python -3 -47 -1 -51
20 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 4 0 0 4
21 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python -3 -6 -3 -12
22 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 23 0 11 34
23 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 44 16 19 79
24 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 108 2 5 115
25 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 2 -21 -1 -20
26 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 7 0 2 9
27 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python -1 0 0 -1
28 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 107 -36 26 97
29 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python 2 0 2 4
30 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python 14 0 6 20
31 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python 98 8 42 148
32 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 100 20 20 140
33 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 500 248 135 883
34 /home/lars/Projects/music-downloader/src/music_kraken/target/__init__.py Python -4 0 -2 -6
35 /home/lars/Projects/music-downloader/src/music_kraken/target/set_target.py Python -37 -7 -18 -62
36 /home/lars/Projects/music-downloader/src/musify_search.py Python 26 0 11 37
37 /home/lars/Projects/music-downloader/src/python.py Python 12 43 6 61
38 /home/lars/Projects/music-downloader/src/test.py Python 1 0 0 1
39 /home/lars/Projects/music-downloader/src/tests/example_data_objects.py Python -36 -5 -6 -47
40 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 1 13 95
41 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 15 51 239
42 Total - 523 22 130 675

View File

@ -1,31 +0,0 @@
# Diff Summary
Date : 2023-03-28 16:46:52
Directory /home/lars/Projects/music-downloader/src
Total : 40 files, 523 codes, 22 comments, 130 blanks, all 675 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 40 | 523 | 22 | 130 | 675 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 40 | 523 | 22 | 130 | 675 |
| . (Files) | 6 | 8 | 36 | 8 | 52 |
| music_kraken | 31 | 297 | -25 | 64 | 336 |
| music_kraken (Files) | 1 | -33 | -1 | -11 | -45 |
| music_kraken/database | 8 | -688 | -272 | -195 | -1,155 |
| music_kraken/objects | 13 | 239 | 15 | 59 | 313 |
| music_kraken/pages | 7 | 820 | 240 | 231 | 1,291 |
| music_kraken/pages (Files) | 4 | 706 | 232 | 181 | 1,119 |
| music_kraken/pages/download_center | 3 | 114 | 8 | 50 | 172 |
| music_kraken/target | 2 | -41 | -7 | -20 | -68 |
| tests | 3 | 218 | 11 | 58 | 287 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@ -1,74 +0,0 @@
Date : 2023-03-28 16:46:52
Directory : /home/lars/Projects/music-downloader/src
Total : 40 files, 523 codes, 22 comments, 130 blanks, all 675 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 40 | 523 | 22 | 130 | 675 |
+----------+------------+------------+------------+------------+------------+
Directories
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 40 | 523 | 22 | 130 | 675 |
| . (Files) | 6 | 8 | 36 | 8 | 52 |
| music_kraken | 31 | 297 | -25 | 64 | 336 |
| music_kraken (Files) | 1 | -33 | -1 | -11 | -45 |
| music_kraken/database | 8 | -688 | -272 | -195 | -1,155 |
| music_kraken/objects | 13 | 239 | 15 | 59 | 313 |
| music_kraken/pages | 7 | 820 | 240 | 231 | 1,291 |
| music_kraken/pages (Files) | 4 | 706 | 232 | 181 | 1,119 |
| music_kraken/pages/download_center | 3 | 114 | 8 | 50 | 172 |
| music_kraken/target | 2 | -41 | -7 | -20 | -68 |
| tests | 3 | 218 | 11 | 58 | 287 |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | -22 | -3 | -12 | -37 |
| /home/lars/Projects/music-downloader/src/donwload.py | Python | 9 | 0 | 6 | 15 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | -18 | -4 | -3 | -25 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | -33 | -1 | -11 | -45 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | -18 | 0 | -4 | -22 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | -1 | 1 | 0 | 0 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 20 | -1 | 12 | 31 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/object_cache.py | Python | -35 | -56 | -16 | -107 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/old_database.py | Python | -432 | -154 | -115 | -701 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/read.py | Python | 0 | 0 | -1 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/temp_database.py | Python | -12 | 0 | -8 | -20 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/write.py | Python | -210 | -62 | -63 | -335 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 4 | 0 | 1 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py | Python | 1 | 0 | 0 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/artist.py | Python | -18 | 0 | -5 | -23 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 33 | 15 | 13 | 61 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | -3 | -47 | -1 | -51 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 4 | 0 | 0 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | -3 | -6 | -3 | -12 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 23 | 0 | 11 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 44 | 16 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 108 | 2 | 5 | 115 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 2 | -21 | -1 | -20 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 7 | 0 | 2 | 9 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | -1 | 0 | 0 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 107 | -36 | 26 | 97 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | 2 | 0 | 2 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | 14 | 0 | 6 | 20 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | 98 | 8 | 42 | 148 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 100 | 20 | 20 | 140 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 500 | 248 | 135 | 883 |
| /home/lars/Projects/music-downloader/src/music_kraken/target/__init__.py | Python | -4 | 0 | -2 | -6 |
| /home/lars/Projects/music-downloader/src/music_kraken/target/set_target.py | Python | -37 | -7 | -18 | -62 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 26 | 0 | 11 | 37 |
| /home/lars/Projects/music-downloader/src/python.py | Python | 12 | 43 | 6 | 61 |
| /home/lars/Projects/music-downloader/src/test.py | Python | 1 | 0 | 0 | 1 |
| /home/lars/Projects/music-downloader/src/tests/example_data_objects.py | Python | -36 | -5 | -6 | -47 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| Total | | 523 | 22 | 130 | 675 |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,68 +0,0 @@
"filename", "language", "Python", "SQLite", "Database", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/__init__.py", "Python", 0, 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", 58, 0, 0, 0, 6, 64
"/home/lars/Projects/music-downloader/src/donwload.py", "Python", 9, 0, 0, 0, 6, 15
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", 30, 0, 0, 0, 12, 42
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 24, 0, 0, 7, 14, 45
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 3, 0, 0, 2, 3, 8
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", 0, 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", 122, 0, 0, 24, 52, 198
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 104, 0, 0, 47, 38, 189
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py", "Python", 0, 0, 0, 0, 3, 3
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py", "Python", 75, 0, 0, 12, 20, 107
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py", "Python", 54, 0, 0, 1, 16, 71
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py", "Python", 6, 0, 0, 0, 2, 8
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py", "Python", 257, 0, 0, 24, 65, 346
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py", "Python", 253, 0, 0, 40, 72, 365
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py", "Python", 3, 0, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py", "Python", 42, 0, 0, 6, 12, 60
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py", "Python", 0, 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py", "Python", 115, 0, 0, 16, 42, 173
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py", "Python", 40, 0, 0, 0, 18, 58
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py", "Python", 136, 0, 0, 9, 37, 182
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py", "Python", 11, 0, 0, 5, 8, 24
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py", "Python", 71, 0, 0, 4, 24, 99
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 28, 0, 0, 0, 8, 36
"/home/lars/Projects/music-downloader/src/music_kraken/objects/album.py", "Python", 16, 0, 0, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 0, 0, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 85, 0, 0, 30, 37, 152
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", 50, 0, 0, 10, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 25, 0, 0, 0, 7, 32
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 259, 0, 0, 62, 60, 381
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 23, 0, 0, 0, 11, 34
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 66, 0, 0, 31, 31, 128
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 445, 0, 0, 83, 95, 623
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 118, 0, 0, 17, 40, 175
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 29, 0, 0, 7, 9, 45
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 6, 0, 0, 0, 5, 11
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 180, 0, 0, 32, 53, 265
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", 2, 0, 0, 0, 2, 4
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", 14, 0, 0, 0, 6, 20
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", 98, 0, 0, 8, 42, 148
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 441, 0, 0, 86, 111, 638
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 500, 0, 0, 248, 135, 883
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 25, 0, 0, 16, 6, 47
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql", "SQLite", 0, 72, 0, 0, 10, 82
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql", "SQLite", 0, 135, 0, 0, 10, 145
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py", "Python", 8, 0, 0, 0, 2, 10
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py", "Python", 51, 0, 0, 4, 20, 75
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 1, 0, 0, 1, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py", "Python", 3, 0, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py", "Python", 19, 0, 0, 0, 6, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py", "Python", 39, 0, 0, 2, 17, 58
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 62, 0, 0, 3, 10, 75
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 2, 0, 0, 5, 2, 9
"/home/lars/Projects/music-downloader/src/music_kraken_cli.py", "Python", 3, 0, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken_gtk.py", "Python", 3, 0, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 26, 0, 0, 0, 11, 37
"/home/lars/Projects/music-downloader/src/python.py", "Python", 12, 0, 0, 43, 6, 61
"/home/lars/Projects/music-downloader/src/test.db", "Database", 0, 0, 91, 0, 1, 92
"/home/lars/Projects/music-downloader/src/test.py", "Python", 1, 0, 0, 0, 0, 1
"/home/lars/Projects/music-downloader/src/tests/__init__.py", "Python", 0, 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/tests/conftest.py", "Python", 3, 0, 0, 1, 2, 6
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 0, 0, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 0, 0, 15, 51, 239
"/home/lars/Projects/music-downloader/src/try-programming-interface.py", "Python", 14, 0, 0, 98, 22, 134
"/home/lars/Projects/music-downloader/src/try.py", "Python", 1, 0, 0, 0, 3, 4
"/home/lars/Projects/music-downloader/src/try_python.py", "Python", 13, 0, 0, 20, 9, 42
"Total", "-", 4375, 207, 91, 1082, 1358, 7113
1 filename language Python SQLite Database comment blank total
2 /home/lars/Projects/music-downloader/src/__init__.py Python 0 0 0 0 1 1
3 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python 58 0 0 0 6 64
4 /home/lars/Projects/music-downloader/src/donwload.py Python 9 0 0 0 6 15
5 /home/lars/Projects/music-downloader/src/metal_archives.py Python 30 0 0 0 12 42
6 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 24 0 0 7 14 45
7 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 3 0 0 2 3 8
8 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python 0 0 0 0 1 1
9 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python 122 0 0 24 52 198
10 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 104 0 0 47 38 189
11 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py Python 0 0 0 0 3 3
12 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py Python 75 0 0 12 20 107
13 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py Python 54 0 0 1 16 71
14 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py Python 6 0 0 0 2 8
15 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py Python 257 0 0 24 65 346
16 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py Python 253 0 0 40 72 365
17 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py Python 3 0 0 0 2 5
18 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py Python 42 0 0 6 12 60
19 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py Python 0 0 0 0 1 1
20 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py Python 115 0 0 16 42 173
21 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py Python 40 0 0 0 18 58
22 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py Python 136 0 0 9 37 182
23 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py Python 11 0 0 5 8 24
24 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py Python 71 0 0 4 24 99
25 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 28 0 0 0 8 36
26 /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py Python 16 0 0 6 5 27
27 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 0 0 56 18 111
28 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 85 0 0 30 37 152
29 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python 50 0 0 10 19 79
30 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 25 0 0 0 7 32
31 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 259 0 0 62 60 381
32 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 23 0 0 0 11 34
33 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 66 0 0 31 31 128
34 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 445 0 0 83 95 623
35 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 118 0 0 17 40 175
36 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 29 0 0 7 9 45
37 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 6 0 0 0 5 11
38 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 180 0 0 32 53 265
39 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python 2 0 0 0 2 4
40 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python 14 0 0 0 6 20
41 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python 98 0 0 8 42 148
42 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 441 0 0 86 111 638
43 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 500 0 0 248 135 883
44 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 25 0 0 16 6 47
45 /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql SQLite 0 72 0 0 10 82
46 /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql SQLite 0 135 0 0 10 145
47 /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py Python 8 0 0 0 2 10
48 /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py Python 51 0 0 4 20 75
49 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 1 0 0 1 1 3
50 /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py Python 3 0 0 0 1 4
51 /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py Python 19 0 0 0 6 25
52 /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py Python 39 0 0 2 17 58
53 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 62 0 0 3 10 75
54 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 2 0 0 5 2 9
55 /home/lars/Projects/music-downloader/src/music_kraken_cli.py Python 3 0 0 0 3 6
56 /home/lars/Projects/music-downloader/src/music_kraken_gtk.py Python 3 0 0 0 2 5
57 /home/lars/Projects/music-downloader/src/musify_search.py Python 26 0 0 0 11 37
58 /home/lars/Projects/music-downloader/src/python.py Python 12 0 0 43 6 61
59 /home/lars/Projects/music-downloader/src/test.db Database 0 0 91 0 1 92
60 /home/lars/Projects/music-downloader/src/test.py Python 1 0 0 0 0 1
61 /home/lars/Projects/music-downloader/src/tests/__init__.py Python 0 0 0 0 1 1
62 /home/lars/Projects/music-downloader/src/tests/conftest.py Python 3 0 0 1 2 6
63 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 0 0 1 13 95
64 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 0 0 15 51 239
65 /home/lars/Projects/music-downloader/src/try-programming-interface.py Python 14 0 0 98 22 134
66 /home/lars/Projects/music-downloader/src/try.py Python 1 0 0 0 3 4
67 /home/lars/Projects/music-downloader/src/try_python.py Python 13 0 0 20 9 42
68 Total - 4375 207 91 1082 1358 7113

File diff suppressed because one or more lines are too long

View File

@ -1,41 +0,0 @@
# Summary
Date : 2023-03-28 16:46:52
Directory /home/lars/Projects/music-downloader/src
Total : 66 files, 4673 codes, 1082 comments, 1358 blanks, all 7113 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 63 | 4,375 | 1,082 | 1,337 | 6,794 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
| Database | 1 | 91 | 0 | 1 | 92 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 66 | 4,673 | 1,082 | 1,358 | 7,113 |
| . (Files) | 13 | 261 | 161 | 82 | 504 |
| music_kraken | 49 | 4,155 | 904 | 1,209 | 6,268 |
| music_kraken (Files) | 2 | 27 | 9 | 17 | 53 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,181 | 302 | 340 | 1,823 |
| music_kraken/pages | 8 | 1,266 | 390 | 360 | 2,016 |
| music_kraken/pages (Files) | 5 | 1,152 | 382 | 310 | 1,844 |
| music_kraken/pages/download_center | 3 | 114 | 8 | 50 | 172 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 59 | 4 | 22 | 85 |
| music_kraken/utils | 6 | 126 | 11 | 37 | 174 |
| tests | 4 | 257 | 17 | 67 | 341 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,110 +0,0 @@
Date : 2023-03-28 16:46:52
Directory : /home/lars/Projects/music-downloader/src
Total : 66 files, 4673 codes, 1082 comments, 1358 blanks, all 7113 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 63 | 4,375 | 1,082 | 1,337 | 6,794 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
| Database | 1 | 91 | 0 | 1 | 92 |
+----------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 66 | 4,673 | 1,082 | 1,358 | 7,113 |
| . (Files) | 13 | 261 | 161 | 82 | 504 |
| music_kraken | 49 | 4,155 | 904 | 1,209 | 6,268 |
| music_kraken (Files) | 2 | 27 | 9 | 17 | 53 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,181 | 302 | 340 | 1,823 |
| music_kraken/pages | 8 | 1,266 | 390 | 360 | 2,016 |
| music_kraken/pages (Files) | 5 | 1,152 | 382 | 310 | 1,844 |
| music_kraken/pages/download_center | 3 | 114 | 8 | 50 | 172 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 59 | 4 | 22 | 85 |
| music_kraken/utils | 6 | 126 | 11 | 37 | 174 |
| tests | 4 | 257 | 17 | 67 | 341 |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | 58 | 0 | 6 | 64 |
| /home/lars/Projects/music-downloader/src/donwload.py | Python | 9 | 0 | 6 | 15 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | 30 | 0 | 12 | 42 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 24 | 7 | 14 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 3 | 2 | 3 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | 122 | 24 | 52 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 104 | 47 | 38 | 189 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py | Python | 0 | 0 | 3 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py | Python | 75 | 12 | 20 | 107 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py | Python | 54 | 1 | 16 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py | Python | 6 | 0 | 2 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py | Python | 257 | 24 | 65 | 346 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py | Python | 253 | 40 | 72 | 365 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py | Python | 42 | 6 | 12 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py | Python | 115 | 16 | 42 | 173 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py | Python | 40 | 0 | 18 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py | Python | 136 | 9 | 37 | 182 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py | Python | 11 | 5 | 8 | 24 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py | Python | 71 | 4 | 24 | 99 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 28 | 0 | 8 | 36 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 85 | 30 | 37 | 152 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | 50 | 10 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 25 | 0 | 7 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 259 | 62 | 60 | 381 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 23 | 0 | 11 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 66 | 31 | 31 | 128 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 445 | 83 | 95 | 623 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 118 | 17 | 40 | 175 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 29 | 7 | 9 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 6 | 0 | 5 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 180 | 32 | 53 | 265 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | 2 | 0 | 2 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | 14 | 0 | 6 | 20 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | 98 | 8 | 42 | 148 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 441 | 86 | 111 | 638 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 500 | 248 | 135 | 883 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 25 | 16 | 6 | 47 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql | SQLite | 72 | 0 | 10 | 82 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql | SQLite | 135 | 0 | 10 | 145 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py | Python | 8 | 0 | 2 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py | Python | 51 | 4 | 20 | 75 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 1 | 1 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py | Python | 19 | 0 | 6 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py | Python | 39 | 2 | 17 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 62 | 3 | 10 | 75 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 2 | 5 | 2 | 9 |
| /home/lars/Projects/music-downloader/src/music_kraken_cli.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken_gtk.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 26 | 0 | 11 | 37 |
| /home/lars/Projects/music-downloader/src/python.py | Python | 12 | 43 | 6 | 61 |
| /home/lars/Projects/music-downloader/src/test.db | Database | 91 | 0 | 1 | 92 |
| /home/lars/Projects/music-downloader/src/test.py | Python | 1 | 0 | 0 | 1 |
| /home/lars/Projects/music-downloader/src/tests/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/tests/conftest.py | Python | 3 | 1 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| /home/lars/Projects/music-downloader/src/try-programming-interface.py | Python | 14 | 98 | 22 | 134 |
| /home/lars/Projects/music-downloader/src/try.py | Python | 1 | 0 | 3 | 4 |
| /home/lars/Projects/music-downloader/src/try_python.py | Python | 13 | 20 | 9 | 42 |
| Total | | 4,673 | 1,082 | 1,358 | 7,113 |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,77 +0,0 @@
# Details
Date : 2023-03-30 12:56:39
Directory /home/lars/Projects/music-downloader/src
Total : 62 files, 4737 codes, 921 comments, 1383 blanks, all 7041 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/__init__.py](/src/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 21 | 0 | 12 | 33 |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | 58 | 0 | 6 | 64 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | 30 | 0 | 12 | 42 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 48 | 7 | 19 | 74 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | 122 | 24 | 52 | 198 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 104 | 47 | 38 | 189 |
| [src/music_kraken/not_used_anymore/__init__.py](/src/music_kraken/not_used_anymore/__init__.py) | Python | 0 | 0 | 3 | 3 |
| [src/music_kraken/not_used_anymore/fetch_audio.py](/src/music_kraken/not_used_anymore/fetch_audio.py) | Python | 75 | 12 | 20 | 107 |
| [src/music_kraken/not_used_anymore/fetch_source.py](/src/music_kraken/not_used_anymore/fetch_source.py) | Python | 54 | 1 | 16 | 71 |
| [src/music_kraken/not_used_anymore/metadata/__init__.py](/src/music_kraken/not_used_anymore/metadata/__init__.py) | Python | 6 | 0 | 2 | 8 |
| [src/music_kraken/not_used_anymore/metadata/metadata_fetch.py](/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py) | Python | 257 | 24 | 65 | 346 |
| [src/music_kraken/not_used_anymore/metadata/metadata_search.py](/src/music_kraken/not_used_anymore/metadata/metadata_search.py) | Python | 253 | 40 | 72 | 365 |
| [src/music_kraken/not_used_anymore/metadata/sources/__init__.py](/src/music_kraken/not_used_anymore/metadata/sources/__init__.py) | Python | 3 | 0 | 2 | 5 |
| [src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py](/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py) | Python | 42 | 6 | 12 | 60 |
| [src/music_kraken/not_used_anymore/sources/__init__.py](/src/music_kraken/not_used_anymore/sources/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/not_used_anymore/sources/genius.py](/src/music_kraken/not_used_anymore/sources/genius.py) | Python | 115 | 16 | 42 | 173 |
| [src/music_kraken/not_used_anymore/sources/local_files.py](/src/music_kraken/not_used_anymore/sources/local_files.py) | Python | 40 | 0 | 18 | 58 |
| [src/music_kraken/not_used_anymore/sources/musify.py](/src/music_kraken/not_used_anymore/sources/musify.py) | Python | 136 | 9 | 37 | 182 |
| [src/music_kraken/not_used_anymore/sources/source.py](/src/music_kraken/not_used_anymore/sources/source.py) | Python | 11 | 5 | 8 | 24 |
| [src/music_kraken/not_used_anymore/sources/youtube.py](/src/music_kraken/not_used_anymore/sources/youtube.py) | Python | 71 | 4 | 24 | 99 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 28 | 0 | 8 | 36 |
| [src/music_kraken/objects/album.py](/src/music_kraken/objects/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 84 | 30 | 37 | 151 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | 50 | 10 | 19 | 79 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 25 | 0 | 7 | 32 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 259 | 62 | 60 | 381 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 23 | 0 | 11 | 34 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 66 | 31 | 31 | 128 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 445 | 83 | 95 | 623 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 120 | 17 | 41 | 178 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 29 | 7 | 9 | 45 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 6 | 0 | 5 | 11 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 203 | 32 | 61 | 296 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | 4 | 0 | 2 | 6 |
| [src/music_kraken/pages/download_center/download.py](/src/music_kraken/pages/download_center/download.py) | Python | 33 | 0 | 12 | 45 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | 24 | 1 | 9 | 34 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | 136 | 8 | 54 | 198 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 455 | 86 | 116 | 657 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 509 | 248 | 137 | 894 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 25 | 16 | 6 | 47 |
| [src/music_kraken/static_files/new_db.sql](/src/music_kraken/static_files/new_db.sql) | SQLite | 72 | 0 | 10 | 82 |
| [src/music_kraken/static_files/temp_database_structure.sql](/src/music_kraken/static_files/temp_database_structure.sql) | SQLite | 135 | 0 | 10 | 145 |
| [src/music_kraken/tagging/__init__.py](/src/music_kraken/tagging/__init__.py) | Python | 8 | 0 | 2 | 10 |
| [src/music_kraken/tagging/id3.py](/src/music_kraken/tagging/id3.py) | Python | 51 | 4 | 20 | 75 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 1 | 1 | 1 | 3 |
| [src/music_kraken/utils/functions.py](/src/music_kraken/utils/functions.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/object_handeling.py](/src/music_kraken/utils/object_handeling.py) | Python | 19 | 0 | 6 | 25 |
| [src/music_kraken/utils/phonetic_compares.py](/src/music_kraken/utils/phonetic_compares.py) | Python | 39 | 2 | 17 | 58 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 62 | 3 | 10 | 75 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 2 | 5 | 2 | 9 |
| [src/music_kraken_cli.py](/src/music_kraken_cli.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken_gtk.py](/src/music_kraken_gtk.py) | Python | 3 | 0 | 2 | 5 |
| [src/musify_search.py](/src/musify_search.py) | Python | 26 | 0 | 11 | 37 |
| [src/tests/__init__.py](/src/tests/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/tests/conftest.py](/src/tests/conftest.py) | Python | 3 | 1 | 2 | 6 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_download.py](/src/tests/test_download.py) | Python | 30 | 1 | 12 | 43 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,35 +0,0 @@
# Diff Details
Date : 2023-03-30 12:56:39
Directory /home/lars/Projects/music-downloader/src
Total : 20 files, 64 codes, -161 comments, 25 blanks, all -72 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 21 | 0 | 12 | 33 |
| [src/donwload.py](/src/donwload.py) | Python | -9 | 0 | -6 | -15 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 24 | 0 | 5 | 29 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 0 | -2 | 0 | -2 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | -1 | 0 | 0 | -1 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 2 | 0 | 1 | 3 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 23 | 0 | 8 | 31 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | 2 | 0 | 0 | 2 |
| [src/music_kraken/pages/download_center/download.py](/src/music_kraken/pages/download_center/download.py) | Python | 33 | 0 | 12 | 45 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | 10 | 1 | 3 | 14 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | 38 | 0 | 12 | 50 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 14 | 0 | 5 | 19 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 9 | 0 | 2 | 11 |
| [src/python.py](/src/python.py) | Python | -12 | -43 | -6 | -61 |
| [src/test.db](/src/test.db) | Database | -91 | 0 | -1 | -92 |
| [src/test.py](/src/test.py) | Python | -1 | 0 | 0 | -1 |
| [src/tests/test_download.py](/src/tests/test_download.py) | Python | 30 | 1 | 12 | 43 |
| [src/try-programming-interface.py](/src/try-programming-interface.py) | Python | -14 | -98 | -22 | -134 |
| [src/try.py](/src/try.py) | Python | -1 | 0 | -3 | -4 |
| [src/try_python.py](/src/try_python.py) | Python | -13 | -20 | -9 | -42 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@ -1,22 +0,0 @@
"filename", "language", "Python", "Database", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 21, 0, 0, 12, 33
"/home/lars/Projects/music-downloader/src/donwload.py", "Python", -9, 0, 0, -6, -15
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 24, 0, 0, 5, 29
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 0, 0, -2, 0, -2
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", -1, 0, 0, 0, -1
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 2, 0, 0, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 23, 0, 0, 8, 31
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", 2, 0, 0, 0, 2
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py", "Python", 33, 0, 0, 12, 45
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", 10, 0, 1, 3, 14
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", 38, 0, 0, 12, 50
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 14, 0, 0, 5, 19
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 9, 0, 0, 2, 11
"/home/lars/Projects/music-downloader/src/python.py", "Python", -12, 0, -43, -6, -61
"/home/lars/Projects/music-downloader/src/test.db", "Database", 0, -91, 0, -1, -92
"/home/lars/Projects/music-downloader/src/test.py", "Python", -1, 0, 0, 0, -1
"/home/lars/Projects/music-downloader/src/tests/test_download.py", "Python", 30, 0, 1, 12, 43
"/home/lars/Projects/music-downloader/src/try-programming-interface.py", "Python", -14, 0, -98, -22, -134
"/home/lars/Projects/music-downloader/src/try.py", "Python", -1, 0, 0, -3, -4
"/home/lars/Projects/music-downloader/src/try_python.py", "Python", -13, 0, -20, -9, -42
"Total", "-", 155, -91, -161, 25, -72
1 filename language Python Database comment blank total
2 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 21 0 0 12 33
3 /home/lars/Projects/music-downloader/src/donwload.py Python -9 0 0 -6 -15
4 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 24 0 0 5 29
5 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 0 0 -2 0 -2
6 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python -1 0 0 0 -1
7 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 2 0 0 1 3
8 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 23 0 0 8 31
9 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python 2 0 0 0 2
10 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py Python 33 0 0 12 45
11 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python 10 0 1 3 14
12 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python 38 0 0 12 50
13 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 14 0 0 5 19
14 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 9 0 0 2 11
15 /home/lars/Projects/music-downloader/src/python.py Python -12 0 -43 -6 -61
16 /home/lars/Projects/music-downloader/src/test.db Database 0 -91 0 -1 -92
17 /home/lars/Projects/music-downloader/src/test.py Python -1 0 0 0 -1
18 /home/lars/Projects/music-downloader/src/tests/test_download.py Python 30 0 1 12 43
19 /home/lars/Projects/music-downloader/src/try-programming-interface.py Python -14 0 -98 -22 -134
20 /home/lars/Projects/music-downloader/src/try.py Python -1 0 0 -3 -4
21 /home/lars/Projects/music-downloader/src/try_python.py Python -13 0 -20 -9 -42
22 Total - 155 -91 -161 25 -72

View File

@ -1,30 +0,0 @@
# Diff Summary
Date : 2023-03-30 12:56:39
Directory /home/lars/Projects/music-downloader/src
Total : 20 files, 64 codes, -161 comments, 25 blanks, all -72 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 19 | 155 | -161 | 26 | 20 |
| Database | 1 | -91 | 0 | -1 | -92 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 20 | 64 | -161 | 25 | -72 |
| . (Files) | 8 | -120 | -161 | -35 | -316 |
| music_kraken | 11 | 154 | -1 | 48 | 201 |
| music_kraken (Files) | 2 | 24 | -2 | 5 | 27 |
| music_kraken/objects | 2 | 1 | 0 | 1 | 2 |
| music_kraken/pages | 7 | 129 | 1 | 42 | 172 |
| music_kraken/pages (Files) | 3 | 46 | 0 | 15 | 61 |
| music_kraken/pages/download_center | 4 | 83 | 1 | 27 | 111 |
| tests | 1 | 30 | 1 | 12 | 43 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@ -1,53 +0,0 @@
Date : 2023-03-30 12:56:39
Directory : /home/lars/Projects/music-downloader/src
Total : 20 files, 64 codes, -161 comments, 25 blanks, all -72 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 19 | 155 | -161 | 26 | 20 |
| Database | 1 | -91 | 0 | -1 | -92 |
+----------+------------+------------+------------+------------+------------+
Directories
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 20 | 64 | -161 | 25 | -72 |
| . (Files) | 8 | -120 | -161 | -35 | -316 |
| music_kraken | 11 | 154 | -1 | 48 | 201 |
| music_kraken (Files) | 2 | 24 | -2 | 5 | 27 |
| music_kraken/objects | 2 | 1 | 0 | 1 | 2 |
| music_kraken/pages | 7 | 129 | 1 | 42 | 172 |
| music_kraken/pages (Files) | 3 | 46 | 0 | 15 | 61 |
| music_kraken/pages/download_center | 4 | 83 | 1 | 27 | 111 |
| tests | 1 | 30 | 1 | 12 | 43 |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 21 | 0 | 12 | 33 |
| /home/lars/Projects/music-downloader/src/donwload.py | Python | -9 | 0 | -6 | -15 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 24 | 0 | 5 | 29 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 0 | -2 | 0 | -2 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | -1 | 0 | 0 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 2 | 0 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 23 | 0 | 8 | 31 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | 2 | 0 | 0 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py | Python | 33 | 0 | 12 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | 10 | 1 | 3 | 14 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | 38 | 0 | 12 | 50 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 14 | 0 | 5 | 19 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 9 | 0 | 2 | 11 |
| /home/lars/Projects/music-downloader/src/python.py | Python | -12 | -43 | -6 | -61 |
| /home/lars/Projects/music-downloader/src/test.db | Database | -91 | 0 | -1 | -92 |
| /home/lars/Projects/music-downloader/src/test.py | Python | -1 | 0 | 0 | -1 |
| /home/lars/Projects/music-downloader/src/tests/test_download.py | Python | 30 | 1 | 12 | 43 |
| /home/lars/Projects/music-downloader/src/try-programming-interface.py | Python | -14 | -98 | -22 | -134 |
| /home/lars/Projects/music-downloader/src/try.py | Python | -1 | 0 | -3 | -4 |
| /home/lars/Projects/music-downloader/src/try_python.py | Python | -13 | -20 | -9 | -42 |
| Total | | 64 | -161 | 25 | -72 |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,64 +0,0 @@
"filename", "language", "Python", "SQLite", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 21, 0, 0, 12, 33
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", 58, 0, 0, 6, 64
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", 30, 0, 0, 12, 42
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 48, 0, 7, 19, 74
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", 122, 0, 24, 52, 198
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 104, 0, 47, 38, 189
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py", "Python", 0, 0, 0, 3, 3
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py", "Python", 75, 0, 12, 20, 107
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py", "Python", 54, 0, 1, 16, 71
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py", "Python", 6, 0, 0, 2, 8
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py", "Python", 257, 0, 24, 65, 346
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py", "Python", 253, 0, 40, 72, 365
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py", "Python", 42, 0, 6, 12, 60
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py", "Python", 115, 0, 16, 42, 173
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py", "Python", 40, 0, 0, 18, 58
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py", "Python", 136, 0, 9, 37, 182
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py", "Python", 11, 0, 5, 8, 24
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py", "Python", 71, 0, 4, 24, 99
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 28, 0, 0, 8, 36
"/home/lars/Projects/music-downloader/src/music_kraken/objects/album.py", "Python", 16, 0, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 0, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 84, 0, 30, 37, 151
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", 50, 0, 10, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 25, 0, 0, 7, 32
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 259, 0, 62, 60, 381
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 23, 0, 0, 11, 34
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 66, 0, 31, 31, 128
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 445, 0, 83, 95, 623
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 120, 0, 17, 41, 178
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 29, 0, 7, 9, 45
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 6, 0, 0, 5, 11
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 203, 0, 32, 61, 296
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", 4, 0, 0, 2, 6
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py", "Python", 33, 0, 0, 12, 45
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", 24, 0, 1, 9, 34
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", 136, 0, 8, 54, 198
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 455, 0, 86, 116, 657
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 509, 0, 248, 137, 894
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 25, 0, 16, 6, 47
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql", "SQLite", 0, 72, 0, 10, 82
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql", "SQLite", 0, 135, 0, 10, 145
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py", "Python", 8, 0, 0, 2, 10
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py", "Python", 51, 0, 4, 20, 75
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 1, 0, 1, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py", "Python", 19, 0, 0, 6, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py", "Python", 39, 0, 2, 17, 58
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 62, 0, 3, 10, 75
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 2, 0, 5, 2, 9
"/home/lars/Projects/music-downloader/src/music_kraken_cli.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken_gtk.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 26, 0, 0, 11, 37
"/home/lars/Projects/music-downloader/src/tests/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/tests/conftest.py", "Python", 3, 0, 1, 2, 6
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 0, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_download.py", "Python", 30, 0, 1, 12, 43
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 0, 15, 51, 239
"Total", "-", 4530, 207, 921, 1383, 7041
1 filename language Python SQLite comment blank total
2 /home/lars/Projects/music-downloader/src/__init__.py Python 0 0 0 1 1
3 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 21 0 0 12 33
4 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python 58 0 0 6 64
5 /home/lars/Projects/music-downloader/src/metal_archives.py Python 30 0 0 12 42
6 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 48 0 7 19 74
7 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 3 0 0 3 6
8 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python 0 0 0 1 1
9 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python 122 0 24 52 198
10 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 104 0 47 38 189
11 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py Python 0 0 0 3 3
12 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py Python 75 0 12 20 107
13 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py Python 54 0 1 16 71
14 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py Python 6 0 0 2 8
15 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py Python 257 0 24 65 346
16 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py Python 253 0 40 72 365
17 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py Python 3 0 0 2 5
18 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py Python 42 0 6 12 60
19 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py Python 0 0 0 1 1
20 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py Python 115 0 16 42 173
21 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py Python 40 0 0 18 58
22 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py Python 136 0 9 37 182
23 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py Python 11 0 5 8 24
24 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py Python 71 0 4 24 99
25 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 28 0 0 8 36
26 /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py Python 16 0 6 5 27
27 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 0 56 18 111
28 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 84 0 30 37 151
29 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python 50 0 10 19 79
30 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 25 0 0 7 32
31 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 259 0 62 60 381
32 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 23 0 0 11 34
33 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 66 0 31 31 128
34 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 445 0 83 95 623
35 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 120 0 17 41 178
36 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 29 0 7 9 45
37 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 6 0 0 5 11
38 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 203 0 32 61 296
39 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python 4 0 0 2 6
40 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py Python 33 0 0 12 45
41 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python 24 0 1 9 34
42 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python 136 0 8 54 198
43 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 455 0 86 116 657
44 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 509 0 248 137 894
45 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 25 0 16 6 47
46 /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql SQLite 0 72 0 10 82
47 /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql SQLite 0 135 0 10 145
48 /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py Python 8 0 0 2 10
49 /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py Python 51 0 4 20 75
50 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 1 0 1 1 3
51 /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py Python 3 0 0 1 4
52 /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py Python 19 0 0 6 25
53 /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py Python 39 0 2 17 58
54 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 62 0 3 10 75
55 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 2 0 5 2 9
56 /home/lars/Projects/music-downloader/src/music_kraken_cli.py Python 3 0 0 3 6
57 /home/lars/Projects/music-downloader/src/music_kraken_gtk.py Python 3 0 0 2 5
58 /home/lars/Projects/music-downloader/src/musify_search.py Python 26 0 0 11 37
59 /home/lars/Projects/music-downloader/src/tests/__init__.py Python 0 0 0 1 1
60 /home/lars/Projects/music-downloader/src/tests/conftest.py Python 3 0 1 2 6
61 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 0 1 13 95
62 /home/lars/Projects/music-downloader/src/tests/test_download.py Python 30 0 1 12 43
63 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 0 15 51 239
64 Total - 4530 207 921 1383 7041

File diff suppressed because one or more lines are too long

View File

@ -1,40 +0,0 @@
# Summary
Date : 2023-03-30 12:56:39
Directory /home/lars/Projects/music-downloader/src
Total : 62 files, 4737 codes, 921 comments, 1383 blanks, all 7041 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 60 | 4,530 | 921 | 1,363 | 6,814 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 62 | 4,737 | 921 | 1,383 | 7,041 |
| . (Files) | 7 | 141 | 0 | 47 | 188 |
| music_kraken | 50 | 4,309 | 903 | 1,257 | 6,469 |
| music_kraken (Files) | 2 | 51 | 7 | 22 | 80 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,182 | 302 | 341 | 1,825 |
| music_kraken/pages | 9 | 1,395 | 391 | 402 | 2,188 |
| music_kraken/pages (Files) | 5 | 1,198 | 382 | 325 | 1,905 |
| music_kraken/pages/download_center | 4 | 197 | 9 | 77 | 283 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 59 | 4 | 22 | 85 |
| music_kraken/utils | 6 | 126 | 11 | 37 | 174 |
| tests | 5 | 287 | 18 | 79 | 384 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,105 +0,0 @@
Date : 2023-03-30 12:56:39
Directory : /home/lars/Projects/music-downloader/src
Total : 62 files, 4737 codes, 921 comments, 1383 blanks, all 7041 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 60 | 4,530 | 921 | 1,363 | 6,814 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
+----------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 62 | 4,737 | 921 | 1,383 | 7,041 |
| . (Files) | 7 | 141 | 0 | 47 | 188 |
| music_kraken | 50 | 4,309 | 903 | 1,257 | 6,469 |
| music_kraken (Files) | 2 | 51 | 7 | 22 | 80 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,182 | 302 | 341 | 1,825 |
| music_kraken/pages | 9 | 1,395 | 391 | 402 | 2,188 |
| music_kraken/pages (Files) | 5 | 1,198 | 382 | 325 | 1,905 |
| music_kraken/pages/download_center | 4 | 197 | 9 | 77 | 283 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 59 | 4 | 22 | 85 |
| music_kraken/utils | 6 | 126 | 11 | 37 | 174 |
| tests | 5 | 287 | 18 | 79 | 384 |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 21 | 0 | 12 | 33 |
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | 58 | 0 | 6 | 64 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | 30 | 0 | 12 | 42 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 48 | 7 | 19 | 74 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | 122 | 24 | 52 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 104 | 47 | 38 | 189 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py | Python | 0 | 0 | 3 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py | Python | 75 | 12 | 20 | 107 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py | Python | 54 | 1 | 16 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py | Python | 6 | 0 | 2 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py | Python | 257 | 24 | 65 | 346 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py | Python | 253 | 40 | 72 | 365 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py | Python | 42 | 6 | 12 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py | Python | 115 | 16 | 42 | 173 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py | Python | 40 | 0 | 18 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py | Python | 136 | 9 | 37 | 182 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py | Python | 11 | 5 | 8 | 24 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py | Python | 71 | 4 | 24 | 99 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 28 | 0 | 8 | 36 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 84 | 30 | 37 | 151 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | 50 | 10 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 25 | 0 | 7 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 259 | 62 | 60 | 381 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 23 | 0 | 11 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 66 | 31 | 31 | 128 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 445 | 83 | 95 | 623 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 120 | 17 | 41 | 178 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 29 | 7 | 9 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 6 | 0 | 5 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 203 | 32 | 61 | 296 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | 4 | 0 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py | Python | 33 | 0 | 12 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | 24 | 1 | 9 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | 136 | 8 | 54 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 455 | 86 | 116 | 657 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 509 | 248 | 137 | 894 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 25 | 16 | 6 | 47 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql | SQLite | 72 | 0 | 10 | 82 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql | SQLite | 135 | 0 | 10 | 145 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py | Python | 8 | 0 | 2 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py | Python | 51 | 4 | 20 | 75 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 1 | 1 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py | Python | 19 | 0 | 6 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py | Python | 39 | 2 | 17 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 62 | 3 | 10 | 75 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 2 | 5 | 2 | 9 |
| /home/lars/Projects/music-downloader/src/music_kraken_cli.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken_gtk.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 26 | 0 | 11 | 37 |
| /home/lars/Projects/music-downloader/src/tests/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/tests/conftest.py | Python | 3 | 1 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_download.py | Python | 30 | 1 | 12 | 43 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| Total | | 4,737 | 921 | 1,383 | 7,041 |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,81 +0,0 @@
# Details
Date : 2023-04-05 09:31:17
Directory /home/lars/Projects/music-downloader/src
Total : 66 files, 5256 codes, 1000 comments, 1543 blanks, all 7799 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/__init__.py](/src/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 37 | 0 | 17 | 54 |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | 58 | 0 | 6 | 64 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | 30 | 0 | 12 | 42 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 86 | 12 | 28 | 126 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | 122 | 24 | 52 | 198 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 104 | 47 | 38 | 189 |
| [src/music_kraken/not_used_anymore/__init__.py](/src/music_kraken/not_used_anymore/__init__.py) | Python | 0 | 0 | 3 | 3 |
| [src/music_kraken/not_used_anymore/fetch_audio.py](/src/music_kraken/not_used_anymore/fetch_audio.py) | Python | 75 | 12 | 20 | 107 |
| [src/music_kraken/not_used_anymore/fetch_source.py](/src/music_kraken/not_used_anymore/fetch_source.py) | Python | 54 | 1 | 16 | 71 |
| [src/music_kraken/not_used_anymore/metadata/__init__.py](/src/music_kraken/not_used_anymore/metadata/__init__.py) | Python | 6 | 0 | 2 | 8 |
| [src/music_kraken/not_used_anymore/metadata/metadata_fetch.py](/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py) | Python | 257 | 24 | 65 | 346 |
| [src/music_kraken/not_used_anymore/metadata/metadata_search.py](/src/music_kraken/not_used_anymore/metadata/metadata_search.py) | Python | 253 | 40 | 72 | 365 |
| [src/music_kraken/not_used_anymore/metadata/sources/__init__.py](/src/music_kraken/not_used_anymore/metadata/sources/__init__.py) | Python | 3 | 0 | 2 | 5 |
| [src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py](/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py) | Python | 42 | 6 | 12 | 60 |
| [src/music_kraken/not_used_anymore/sources/__init__.py](/src/music_kraken/not_used_anymore/sources/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/not_used_anymore/sources/genius.py](/src/music_kraken/not_used_anymore/sources/genius.py) | Python | 115 | 16 | 42 | 173 |
| [src/music_kraken/not_used_anymore/sources/local_files.py](/src/music_kraken/not_used_anymore/sources/local_files.py) | Python | 40 | 0 | 18 | 58 |
| [src/music_kraken/not_used_anymore/sources/musify.py](/src/music_kraken/not_used_anymore/sources/musify.py) | Python | 136 | 9 | 37 | 182 |
| [src/music_kraken/not_used_anymore/sources/source.py](/src/music_kraken/not_used_anymore/sources/source.py) | Python | 11 | 5 | 8 | 24 |
| [src/music_kraken/not_used_anymore/sources/youtube.py](/src/music_kraken/not_used_anymore/sources/youtube.py) | Python | 71 | 4 | 24 | 99 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 29 | 0 | 8 | 37 |
| [src/music_kraken/objects/album.py](/src/music_kraken/objects/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 91 | 31 | 39 | 161 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | 50 | 10 | 19 | 79 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 25 | 0 | 7 | 32 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 261 | 62 | 61 | 384 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 23 | 0 | 11 | 34 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 62 | 31 | 31 | 124 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 436 | 93 | 99 | 628 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 120 | 17 | 41 | 178 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 58 | 11 | 21 | 90 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 6 | 0 | 5 | 11 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 428 | 44 | 103 | 575 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | 4 | 0 | 2 | 6 |
| [src/music_kraken/pages/download_center/download.py](/src/music_kraken/pages/download_center/download.py) | Python | 33 | 0 | 13 | 46 |
| [src/music_kraken/pages/download_center/multiple_options.py](/src/music_kraken/pages/download_center/multiple_options.py) | Python | 69 | 0 | 31 | 100 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | 24 | 1 | 9 | 34 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | 85 | 23 | 38 | 146 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 451 | 83 | 117 | 651 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 564 | 259 | 155 | 978 |
| [src/music_kraken/pages/support_classes/__init__.py](/src/music_kraken/pages/support_classes/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/pages/support_classes/default_target.py](/src/music_kraken/pages/support_classes/default_target.py) | Python | 55 | 0 | 15 | 70 |
| [src/music_kraken/pages/support_classes/download_result.py](/src/music_kraken/pages/support_classes/download_result.py) | Python | 51 | 0 | 15 | 66 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 25 | 16 | 6 | 47 |
| [src/music_kraken/static_files/new_db.sql](/src/music_kraken/static_files/new_db.sql) | SQLite | 72 | 0 | 10 | 82 |
| [src/music_kraken/static_files/temp_database_structure.sql](/src/music_kraken/static_files/temp_database_structure.sql) | SQLite | 135 | 0 | 10 | 145 |
| [src/music_kraken/tagging/__init__.py](/src/music_kraken/tagging/__init__.py) | Python | 5 | 0 | 2 | 7 |
| [src/music_kraken/tagging/id3.py](/src/music_kraken/tagging/id3.py) | Python | 60 | 4 | 24 | 88 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 1 | 1 | 1 | 3 |
| [src/music_kraken/utils/functions.py](/src/music_kraken/utils/functions.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/object_handeling.py](/src/music_kraken/utils/object_handeling.py) | Python | 19 | 0 | 6 | 25 |
| [src/music_kraken/utils/phonetic_compares.py](/src/music_kraken/utils/phonetic_compares.py) | Python | 39 | 2 | 17 | 58 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 75 | 27 | 17 | 119 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 10 | 5 | 7 | 22 |
| [src/music_kraken_cli.py](/src/music_kraken_cli.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken_gtk.py](/src/music_kraken_gtk.py) | Python | 3 | 0 | 2 | 5 |
| [src/musify_search.py](/src/musify_search.py) | Python | 38 | 0 | 14 | 52 |
| [src/tests/__init__.py](/src/tests/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/tests/conftest.py](/src/tests/conftest.py) | Python | 3 | 1 | 2 | 6 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_download.py](/src/tests/test_download.py) | Python | 30 | 1 | 12 | 43 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,37 +0,0 @@
# Diff Details
Date : 2023-04-05 09:31:17
Directory /home/lars/Projects/music-downloader/src
Total : 22 files, 519 codes, 79 comments, 160 blanks, all 758 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 16 | 0 | 5 | 21 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 38 | 5 | 9 | 52 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 1 | 0 | 0 | 1 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 7 | 1 | 2 | 10 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 2 | 0 | 1 | 3 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | -4 | 0 | 0 | -4 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | -9 | 10 | 4 | 5 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 29 | 4 | 12 | 45 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 225 | 12 | 42 | 279 |
| [src/music_kraken/pages/download_center/download.py](/src/music_kraken/pages/download_center/download.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/pages/download_center/multiple_options.py](/src/music_kraken/pages/download_center/multiple_options.py) | Python | 69 | 0 | 31 | 100 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | -51 | 15 | -16 | -52 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | -4 | -3 | 1 | -6 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 55 | 11 | 18 | 84 |
| [src/music_kraken/pages/support_classes/__init__.py](/src/music_kraken/pages/support_classes/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/pages/support_classes/default_target.py](/src/music_kraken/pages/support_classes/default_target.py) | Python | 55 | 0 | 15 | 70 |
| [src/music_kraken/pages/support_classes/download_result.py](/src/music_kraken/pages/support_classes/download_result.py) | Python | 51 | 0 | 15 | 66 |
| [src/music_kraken/tagging/__init__.py](/src/music_kraken/tagging/__init__.py) | Python | -3 | 0 | 0 | -3 |
| [src/music_kraken/tagging/id3.py](/src/music_kraken/tagging/id3.py) | Python | 9 | 0 | 4 | 13 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 13 | 24 | 7 | 44 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 8 | 0 | 5 | 13 |
| [src/musify_search.py](/src/musify_search.py) | Python | 12 | 0 | 3 | 15 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@ -1,24 +0,0 @@
"filename", "language", "Python", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 16, 0, 5, 21
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 38, 5, 9, 52
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 1, 0, 0, 1
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 7, 1, 2, 10
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 2, 0, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", -4, 0, 0, -4
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", -9, 10, 4, 5
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 29, 4, 12, 45
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 225, 12, 42, 279
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py", "Python", 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py", "Python", 69, 0, 31, 100
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", -51, 15, -16, -52
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", -4, -3, 1, -6
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 55, 11, 18, 84
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py", "Python", 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py", "Python", 55, 0, 15, 70
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py", "Python", 51, 0, 15, 66
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py", "Python", -3, 0, 0, -3
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py", "Python", 9, 0, 4, 13
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 13, 24, 7, 44
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 8, 0, 5, 13
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 12, 0, 3, 15
"Total", "-", 519, 79, 160, 758
1 filename language Python comment blank total
2 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 16 0 5 21
3 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 38 5 9 52
4 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 1 0 0 1
5 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 7 1 2 10
6 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 2 0 1 3
7 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python -4 0 0 -4
8 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python -9 10 4 5
9 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 29 4 12 45
10 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 225 12 42 279
11 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py Python 0 0 1 1
12 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py Python 69 0 31 100
13 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python -51 15 -16 -52
14 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python -4 -3 1 -6
15 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 55 11 18 84
16 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py Python 0 0 1 1
17 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py Python 55 0 15 70
18 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py Python 51 0 15 66
19 /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py Python -3 0 0 -3
20 /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py Python 9 0 4 13
21 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 13 24 7 44
22 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 8 0 5 13
23 /home/lars/Projects/music-downloader/src/musify_search.py Python 12 0 3 15
24 Total - 519 79 160 758

View File

@ -1,31 +0,0 @@
# Diff Summary
Date : 2023-04-05 09:31:17
Directory /home/lars/Projects/music-downloader/src
Total : 22 files, 519 codes, 79 comments, 160 blanks, all 758 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 22 | 519 | 79 | 160 | 758 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 22 | 519 | 79 | 160 | 758 |
| . (Files) | 2 | 28 | 0 | 8 | 36 |
| music_kraken | 20 | 491 | 79 | 152 | 722 |
| music_kraken (Files) | 1 | 38 | 5 | 9 | 52 |
| music_kraken/objects | 6 | 26 | 15 | 19 | 60 |
| music_kraken/pages | 9 | 400 | 35 | 108 | 543 |
| music_kraken/pages (Files) | 3 | 276 | 20 | 61 | 357 |
| music_kraken/pages/download_center | 3 | 18 | 15 | 16 | 49 |
| music_kraken/pages/support_classes | 3 | 106 | 0 | 31 | 137 |
| music_kraken/tagging | 2 | 6 | 0 | 4 | 10 |
| music_kraken/utils | 2 | 21 | 24 | 12 | 57 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@ -1,56 +0,0 @@
Date : 2023-04-05 09:31:17
Directory : /home/lars/Projects/music-downloader/src
Total : 22 files, 519 codes, 79 comments, 160 blanks, all 758 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 22 | 519 | 79 | 160 | 758 |
+----------+------------+------------+------------+------------+------------+
Directories
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 22 | 519 | 79 | 160 | 758 |
| . (Files) | 2 | 28 | 0 | 8 | 36 |
| music_kraken | 20 | 491 | 79 | 152 | 722 |
| music_kraken (Files) | 1 | 38 | 5 | 9 | 52 |
| music_kraken/objects | 6 | 26 | 15 | 19 | 60 |
| music_kraken/pages | 9 | 400 | 35 | 108 | 543 |
| music_kraken/pages (Files) | 3 | 276 | 20 | 61 | 357 |
| music_kraken/pages/download_center | 3 | 18 | 15 | 16 | 49 |
| music_kraken/pages/support_classes | 3 | 106 | 0 | 31 | 137 |
| music_kraken/tagging | 2 | 6 | 0 | 4 | 10 |
| music_kraken/utils | 2 | 21 | 24 | 12 | 57 |
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 16 | 0 | 5 | 21 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 38 | 5 | 9 | 52 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 1 | 0 | 0 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 7 | 1 | 2 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 2 | 0 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | -4 | 0 | 0 | -4 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | -9 | 10 | 4 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 29 | 4 | 12 | 45 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 225 | 12 | 42 | 279 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py | Python | 69 | 0 | 31 | 100 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | -51 | 15 | -16 | -52 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | -4 | -3 | 1 | -6 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 55 | 11 | 18 | 84 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py | Python | 55 | 0 | 15 | 70 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py | Python | 51 | 0 | 15 | 66 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py | Python | -3 | 0 | 0 | -3 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py | Python | 9 | 0 | 4 | 13 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 13 | 24 | 7 | 44 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 8 | 0 | 5 | 13 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 12 | 0 | 3 | 15 |
| Total | | 519 | 79 | 160 | 758 |
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,68 +0,0 @@
"filename", "language", "Python", "SQLite", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 37, 0, 0, 17, 54
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", 58, 0, 0, 6, 64
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", 30, 0, 0, 12, 42
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 86, 0, 12, 28, 126
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", 122, 0, 24, 52, 198
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 104, 0, 47, 38, 189
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py", "Python", 0, 0, 0, 3, 3
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py", "Python", 75, 0, 12, 20, 107
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py", "Python", 54, 0, 1, 16, 71
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py", "Python", 6, 0, 0, 2, 8
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py", "Python", 257, 0, 24, 65, 346
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py", "Python", 253, 0, 40, 72, 365
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py", "Python", 42, 0, 6, 12, 60
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py", "Python", 115, 0, 16, 42, 173
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py", "Python", 40, 0, 0, 18, 58
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py", "Python", 136, 0, 9, 37, 182
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py", "Python", 11, 0, 5, 8, 24
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py", "Python", 71, 0, 4, 24, 99
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 29, 0, 0, 8, 37
"/home/lars/Projects/music-downloader/src/music_kraken/objects/album.py", "Python", 16, 0, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 0, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 91, 0, 31, 39, 161
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", 50, 0, 10, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 25, 0, 0, 7, 32
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 261, 0, 62, 61, 384
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 23, 0, 0, 11, 34
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 62, 0, 31, 31, 124
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 436, 0, 93, 99, 628
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 120, 0, 17, 41, 178
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 58, 0, 11, 21, 90
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 6, 0, 0, 5, 11
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 428, 0, 44, 103, 575
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", 4, 0, 0, 2, 6
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py", "Python", 33, 0, 0, 13, 46
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py", "Python", 69, 0, 0, 31, 100
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", 24, 0, 1, 9, 34
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", 85, 0, 23, 38, 146
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 451, 0, 83, 117, 651
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 564, 0, 259, 155, 978
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py", "Python", 55, 0, 0, 15, 70
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py", "Python", 51, 0, 0, 15, 66
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 25, 0, 16, 6, 47
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql", "SQLite", 0, 72, 0, 10, 82
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql", "SQLite", 0, 135, 0, 10, 145
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py", "Python", 5, 0, 0, 2, 7
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py", "Python", 60, 0, 4, 24, 88
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 1, 0, 1, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py", "Python", 19, 0, 0, 6, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py", "Python", 39, 0, 2, 17, 58
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 75, 0, 27, 17, 119
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 10, 0, 5, 7, 22
"/home/lars/Projects/music-downloader/src/music_kraken_cli.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken_gtk.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 38, 0, 0, 14, 52
"/home/lars/Projects/music-downloader/src/tests/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/tests/conftest.py", "Python", 3, 0, 1, 2, 6
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 0, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_download.py", "Python", 30, 0, 1, 12, 43
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 0, 15, 51, 239
"Total", "-", 5049, 207, 1000, 1543, 7799
1 filename language Python SQLite comment blank total
2 /home/lars/Projects/music-downloader/src/__init__.py Python 0 0 0 1 1
3 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 37 0 0 17 54
4 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python 58 0 0 6 64
5 /home/lars/Projects/music-downloader/src/metal_archives.py Python 30 0 0 12 42
6 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 86 0 12 28 126
7 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 3 0 0 3 6
8 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python 0 0 0 1 1
9 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python 122 0 24 52 198
10 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 104 0 47 38 189
11 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py Python 0 0 0 3 3
12 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py Python 75 0 12 20 107
13 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py Python 54 0 1 16 71
14 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py Python 6 0 0 2 8
15 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py Python 257 0 24 65 346
16 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py Python 253 0 40 72 365
17 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py Python 3 0 0 2 5
18 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py Python 42 0 6 12 60
19 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py Python 0 0 0 1 1
20 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py Python 115 0 16 42 173
21 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py Python 40 0 0 18 58
22 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py Python 136 0 9 37 182
23 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py Python 11 0 5 8 24
24 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py Python 71 0 4 24 99
25 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 29 0 0 8 37
26 /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py Python 16 0 6 5 27
27 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 0 56 18 111
28 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 91 0 31 39 161
29 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python 50 0 10 19 79
30 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 25 0 0 7 32
31 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 261 0 62 61 384
32 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 23 0 0 11 34
33 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 62 0 31 31 124
34 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 436 0 93 99 628
35 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 120 0 17 41 178
36 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 58 0 11 21 90
37 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 6 0 0 5 11
38 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 428 0 44 103 575
39 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python 4 0 0 2 6
40 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py Python 33 0 0 13 46
41 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py Python 69 0 0 31 100
42 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python 24 0 1 9 34
43 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python 85 0 23 38 146
44 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 451 0 83 117 651
45 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 564 0 259 155 978
46 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py Python 0 0 0 1 1
47 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py Python 55 0 0 15 70
48 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py Python 51 0 0 15 66
49 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 25 0 16 6 47
50 /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql SQLite 0 72 0 10 82
51 /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql SQLite 0 135 0 10 145
52 /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py Python 5 0 0 2 7
53 /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py Python 60 0 4 24 88
54 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 1 0 1 1 3
55 /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py Python 3 0 0 1 4
56 /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py Python 19 0 0 6 25
57 /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py Python 39 0 2 17 58
58 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 75 0 27 17 119
59 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 10 0 5 7 22
60 /home/lars/Projects/music-downloader/src/music_kraken_cli.py Python 3 0 0 3 6
61 /home/lars/Projects/music-downloader/src/music_kraken_gtk.py Python 3 0 0 2 5
62 /home/lars/Projects/music-downloader/src/musify_search.py Python 38 0 0 14 52
63 /home/lars/Projects/music-downloader/src/tests/__init__.py Python 0 0 0 1 1
64 /home/lars/Projects/music-downloader/src/tests/conftest.py Python 3 0 1 2 6
65 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 0 1 13 95
66 /home/lars/Projects/music-downloader/src/tests/test_download.py Python 30 0 1 12 43
67 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 0 15 51 239
68 Total - 5049 207 1000 1543 7799

File diff suppressed because one or more lines are too long

View File

@ -1,41 +0,0 @@
# Summary
Date : 2023-04-05 09:31:17
Directory /home/lars/Projects/music-downloader/src
Total : 66 files, 5256 codes, 1000 comments, 1543 blanks, all 7799 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 64 | 5,049 | 1,000 | 1,523 | 7,572 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 66 | 5,256 | 1,000 | 1,543 | 7,799 |
| . (Files) | 7 | 169 | 0 | 55 | 224 |
| music_kraken | 54 | 4,800 | 982 | 1,409 | 7,191 |
| music_kraken (Files) | 2 | 89 | 12 | 31 | 132 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,208 | 317 | 360 | 1,885 |
| music_kraken/pages | 13 | 1,795 | 426 | 510 | 2,731 |
| music_kraken/pages (Files) | 5 | 1,474 | 402 | 386 | 2,262 |
| music_kraken/pages/download_center | 5 | 215 | 24 | 93 | 332 |
| music_kraken/pages/support_classes | 3 | 106 | 0 | 31 | 137 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 65 | 4 | 26 | 95 |
| music_kraken/utils | 6 | 147 | 35 | 49 | 231 |
| tests | 5 | 287 | 18 | 79 | 384 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,110 +0,0 @@
Date : 2023-04-05 09:31:17
Directory : /home/lars/Projects/music-downloader/src
Total : 66 files, 5256 codes, 1000 comments, 1543 blanks, all 7799 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 64 | 5,049 | 1,000 | 1,523 | 7,572 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
+----------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 66 | 5,256 | 1,000 | 1,543 | 7,799 |
| . (Files) | 7 | 169 | 0 | 55 | 224 |
| music_kraken | 54 | 4,800 | 982 | 1,409 | 7,191 |
| music_kraken (Files) | 2 | 89 | 12 | 31 | 132 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 12 | 1,208 | 317 | 360 | 1,885 |
| music_kraken/pages | 13 | 1,795 | 426 | 510 | 2,731 |
| music_kraken/pages (Files) | 5 | 1,474 | 402 | 386 | 2,262 |
| music_kraken/pages/download_center | 5 | 215 | 24 | 93 | 332 |
| music_kraken/pages/support_classes | 3 | 106 | 0 | 31 | 137 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/tagging | 2 | 65 | 4 | 26 | 95 |
| music_kraken/utils | 6 | 147 | 35 | 49 | 231 |
| tests | 5 | 287 | 18 | 79 | 384 |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 37 | 0 | 17 | 54 |
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | 58 | 0 | 6 | 64 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | 30 | 0 | 12 | 42 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 86 | 12 | 28 | 126 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | 122 | 24 | 52 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 104 | 47 | 38 | 189 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py | Python | 0 | 0 | 3 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py | Python | 75 | 12 | 20 | 107 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py | Python | 54 | 1 | 16 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py | Python | 6 | 0 | 2 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py | Python | 257 | 24 | 65 | 346 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py | Python | 253 | 40 | 72 | 365 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py | Python | 42 | 6 | 12 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py | Python | 115 | 16 | 42 | 173 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py | Python | 40 | 0 | 18 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py | Python | 136 | 9 | 37 | 182 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py | Python | 11 | 5 | 8 | 24 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py | Python | 71 | 4 | 24 | 99 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 29 | 0 | 8 | 37 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 91 | 31 | 39 | 161 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | 50 | 10 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 25 | 0 | 7 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 261 | 62 | 61 | 384 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 23 | 0 | 11 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 62 | 31 | 31 | 124 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 436 | 93 | 99 | 628 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 120 | 17 | 41 | 178 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 58 | 11 | 21 | 90 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 6 | 0 | 5 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 428 | 44 | 103 | 575 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | 4 | 0 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py | Python | 33 | 0 | 13 | 46 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py | Python | 69 | 0 | 31 | 100 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | 24 | 1 | 9 | 34 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | 85 | 23 | 38 | 146 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 451 | 83 | 117 | 651 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 564 | 259 | 155 | 978 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py | Python | 55 | 0 | 15 | 70 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py | Python | 51 | 0 | 15 | 66 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 25 | 16 | 6 | 47 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql | SQLite | 72 | 0 | 10 | 82 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql | SQLite | 135 | 0 | 10 | 145 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py | Python | 5 | 0 | 2 | 7 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py | Python | 60 | 4 | 24 | 88 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 1 | 1 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py | Python | 19 | 0 | 6 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py | Python | 39 | 2 | 17 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 75 | 27 | 17 | 119 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 10 | 5 | 7 | 22 |
| /home/lars/Projects/music-downloader/src/music_kraken_cli.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken_gtk.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 38 | 0 | 14 | 52 |
| /home/lars/Projects/music-downloader/src/tests/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/tests/conftest.py | Python | 3 | 1 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_download.py | Python | 30 | 1 | 12 | 43 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| Total | | 5,256 | 1,000 | 1,543 | 7,799 |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,104 +0,0 @@
# Details
Date : 2023-05-24 11:17:57
Directory /home/lars/Projects/music-downloader/src
Total : 89 files, 6536 codes, 1157 comments, 1980 blanks, all 9673 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/__init__.py](/src/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 43 | 2 | 18 | 63 |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | 58 | 0 | 6 | 64 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | 30 | 0 | 12 | 42 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 189 | 21 | 60 | 270 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 88 | 3 | 21 | 112 |
| [src/music_kraken/audio/__init__.py](/src/music_kraken/audio/__init__.py) | Python | 7 | 0 | 3 | 10 |
| [src/music_kraken/audio/codec.py](/src/music_kraken/audio/codec.py) | Python | 25 | 0 | 8 | 33 |
| [src/music_kraken/audio/metadata.py](/src/music_kraken/audio/metadata.py) | Python | 60 | 4 | 24 | 88 |
| [src/music_kraken/connection/__init__.py](/src/music_kraken/connection/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/connection/connection.py](/src/music_kraken/connection/connection.py) | Python | 162 | 1 | 30 | 193 |
| [src/music_kraken/connection/rotating.py](/src/music_kraken/connection/rotating.py) | Python | 27 | 3 | 14 | 44 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | 122 | 24 | 52 | 198 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 104 | 47 | 38 | 189 |
| [src/music_kraken/download/__init__.py](/src/music_kraken/download/__init__.py) | Python | 2 | 0 | 1 | 3 |
| [src/music_kraken/download/download.py](/src/music_kraken/download/download.py) | Python | 35 | 0 | 14 | 49 |
| [src/music_kraken/download/multiple_options.py](/src/music_kraken/download/multiple_options.py) | Python | 69 | 0 | 31 | 100 |
| [src/music_kraken/download/page_attributes.py](/src/music_kraken/download/page_attributes.py) | Python | 21 | 1 | 10 | 32 |
| [src/music_kraken/download/search.py](/src/music_kraken/download/search.py) | Python | 130 | 24 | 56 | 210 |
| [src/music_kraken/not_used_anymore/__init__.py](/src/music_kraken/not_used_anymore/__init__.py) | Python | 0 | 0 | 3 | 3 |
| [src/music_kraken/not_used_anymore/fetch_audio.py](/src/music_kraken/not_used_anymore/fetch_audio.py) | Python | 75 | 12 | 20 | 107 |
| [src/music_kraken/not_used_anymore/fetch_source.py](/src/music_kraken/not_used_anymore/fetch_source.py) | Python | 54 | 1 | 16 | 71 |
| [src/music_kraken/not_used_anymore/metadata/__init__.py](/src/music_kraken/not_used_anymore/metadata/__init__.py) | Python | 6 | 0 | 2 | 8 |
| [src/music_kraken/not_used_anymore/metadata/metadata_fetch.py](/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py) | Python | 257 | 24 | 65 | 346 |
| [src/music_kraken/not_used_anymore/metadata/metadata_search.py](/src/music_kraken/not_used_anymore/metadata/metadata_search.py) | Python | 253 | 40 | 72 | 365 |
| [src/music_kraken/not_used_anymore/metadata/sources/__init__.py](/src/music_kraken/not_used_anymore/metadata/sources/__init__.py) | Python | 3 | 0 | 2 | 5 |
| [src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py](/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py) | Python | 42 | 6 | 12 | 60 |
| [src/music_kraken/not_used_anymore/sources/__init__.py](/src/music_kraken/not_used_anymore/sources/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/not_used_anymore/sources/genius.py](/src/music_kraken/not_used_anymore/sources/genius.py) | Python | 115 | 16 | 42 | 173 |
| [src/music_kraken/not_used_anymore/sources/local_files.py](/src/music_kraken/not_used_anymore/sources/local_files.py) | Python | 40 | 0 | 18 | 58 |
| [src/music_kraken/not_used_anymore/sources/musify.py](/src/music_kraken/not_used_anymore/sources/musify.py) | Python | 136 | 9 | 37 | 182 |
| [src/music_kraken/not_used_anymore/sources/source.py](/src/music_kraken/not_used_anymore/sources/source.py) | Python | 11 | 5 | 8 | 24 |
| [src/music_kraken/not_used_anymore/sources/youtube.py](/src/music_kraken/not_used_anymore/sources/youtube.py) | Python | 71 | 4 | 24 | 99 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 14 | 0 | 5 | 19 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 91 | 31 | 39 | 161 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | 50 | 10 | 19 | 79 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 25 | 0 | 7 | 32 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 261 | 62 | 61 | 384 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 28 | 0 | 13 | 41 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 65 | 33 | 33 | 131 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 473 | 113 | 115 | 701 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 90 | 16 | 32 | 138 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 63 | 15 | 23 | 101 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 357 | 34 | 103 | 494 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 432 | 90 | 127 | 649 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 629 | 289 | 187 | 1,105 |
| [src/music_kraken/pages/preset.py](/src/music_kraken/pages/preset.py) | Python | 43 | 1 | 16 | 60 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 25 | 16 | 6 | 47 |
| [src/music_kraken/static_files/new_db.sql](/src/music_kraken/static_files/new_db.sql) | SQLite | 72 | 0 | 10 | 82 |
| [src/music_kraken/static_files/temp_database_structure.sql](/src/music_kraken/static_files/temp_database_structure.sql) | SQLite | 135 | 0 | 10 | 145 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 2 | 1 | 2 | 5 |
| [src/music_kraken/utils/config/__init__.py](/src/music_kraken/utils/config/__init__.py) | Python | 7 | 0 | 4 | 11 |
| [src/music_kraken/utils/config/audio.py](/src/music_kraken/utils/config/audio.py) | Python | 152 | 15 | 28 | 195 |
| [src/music_kraken/utils/config/base_classes.py](/src/music_kraken/utils/config/base_classes.py) | Python | 136 | 35 | 61 | 232 |
| [src/music_kraken/utils/config/config.py](/src/music_kraken/utils/config/config.py) | Python | 92 | 16 | 30 | 138 |
| [src/music_kraken/utils/config/connection.py](/src/music_kraken/utils/config/connection.py) | Python | 81 | 2 | 15 | 98 |
| [src/music_kraken/utils/config/logging.py](/src/music_kraken/utils/config/logging.py) | Python | 104 | 4 | 17 | 125 |
| [src/music_kraken/utils/config/misc.py](/src/music_kraken/utils/config/misc.py) | Python | 40 | 0 | 9 | 49 |
| [src/music_kraken/utils/config/paths.py](/src/music_kraken/utils/config/paths.py) | Python | 40 | 0 | 13 | 53 |
| [src/music_kraken/utils/enums/__init__.py](/src/music_kraken/utils/enums/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/utils/enums/album.py](/src/music_kraken/utils/enums/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/utils/enums/source.py](/src/music_kraken/utils/enums/source.py) | Python | 40 | 1 | 8 | 49 |
| [src/music_kraken/utils/exception/__init__.py](/src/music_kraken/utils/exception/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/utils/exception/config.py](/src/music_kraken/utils/exception/config.py) | Python | 14 | 8 | 7 | 29 |
| [src/music_kraken/utils/functions.py](/src/music_kraken/utils/functions.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/object_handeling.py](/src/music_kraken/utils/object_handeling.py) | Python | 19 | 0 | 6 | 25 |
| [src/music_kraken/utils/path_manager/__init__.py](/src/music_kraken/utils/path_manager/__init__.py) | Python | 2 | 0 | 2 | 4 |
| [src/music_kraken/utils/path_manager/config_directory.py](/src/music_kraken/utils/path_manager/config_directory.py) | Python | 4 | 0 | 4 | 8 |
| [src/music_kraken/utils/path_manager/locations.py](/src/music_kraken/utils/path_manager/locations.py) | Python | 16 | 0 | 9 | 25 |
| [src/music_kraken/utils/path_manager/music_directory.py](/src/music_kraken/utils/path_manager/music_directory.py) | Python | 36 | 9 | 14 | 59 |
| [src/music_kraken/utils/phonetic_compares.py](/src/music_kraken/utils/phonetic_compares.py) | Python | 39 | 2 | 17 | 58 |
| [src/music_kraken/utils/regex.py](/src/music_kraken/utils/regex.py) | Python | 1 | 0 | 2 | 3 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 63 | 22 | 21 | 106 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 16 | 5 | 11 | 32 |
| [src/music_kraken/utils/support_classes/__init__.py](/src/music_kraken/utils/support_classes/__init__.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/support_classes/default_target.py](/src/music_kraken/utils/support_classes/default_target.py) | Python | 56 | 0 | 15 | 71 |
| [src/music_kraken/utils/support_classes/download_result.py](/src/music_kraken/utils/support_classes/download_result.py) | Python | 69 | 0 | 21 | 90 |
| [src/music_kraken/utils/support_classes/query.py](/src/music_kraken/utils/support_classes/query.py) | Python | 24 | 0 | 9 | 33 |
| [src/music_kraken_cli.py](/src/music_kraken_cli.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken_gtk.py](/src/music_kraken_gtk.py) | Python | 3 | 0 | 2 | 5 |
| [src/musify_search.py](/src/musify_search.py) | Python | 38 | 0 | 14 | 52 |
| [src/tests/__init__.py](/src/tests/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/tests/conftest.py](/src/tests/conftest.py) | Python | 3 | 1 | 2 | 6 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_download.py](/src/tests/test_download.py) | Python | 30 | 1 | 12 | 43 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,76 +0,0 @@
# Diff Details
Date : 2023-05-24 11:17:57
Directory /home/lars/Projects/music-downloader/src
Total : 61 files, 1280 codes, 157 comments, 437 blanks, all 1874 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 6 | 2 | 1 | 9 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 103 | 9 | 32 | 144 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 85 | 3 | 18 | 106 |
| [src/music_kraken/audio/__init__.py](/src/music_kraken/audio/__init__.py) | Python | 7 | 0 | 3 | 10 |
| [src/music_kraken/audio/codec.py](/src/music_kraken/audio/codec.py) | Python | 25 | 0 | 8 | 33 |
| [src/music_kraken/audio/metadata.py](/src/music_kraken/audio/metadata.py) | Python | 60 | 4 | 24 | 88 |
| [src/music_kraken/connection/__init__.py](/src/music_kraken/connection/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/connection/connection.py](/src/music_kraken/connection/connection.py) | Python | 162 | 1 | 30 | 193 |
| [src/music_kraken/connection/rotating.py](/src/music_kraken/connection/rotating.py) | Python | 27 | 3 | 14 | 44 |
| [src/music_kraken/download/__init__.py](/src/music_kraken/download/__init__.py) | Python | 2 | 0 | 1 | 3 |
| [src/music_kraken/download/download.py](/src/music_kraken/download/download.py) | Python | 35 | 0 | 14 | 49 |
| [src/music_kraken/download/multiple_options.py](/src/music_kraken/download/multiple_options.py) | Python | 69 | 0 | 31 | 100 |
| [src/music_kraken/download/page_attributes.py](/src/music_kraken/download/page_attributes.py) | Python | 21 | 1 | 10 | 32 |
| [src/music_kraken/download/search.py](/src/music_kraken/download/search.py) | Python | 130 | 24 | 56 | 210 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | -15 | 0 | -3 | -18 |
| [src/music_kraken/objects/album.py](/src/music_kraken/objects/album.py) | Python | -16 | -6 | -5 | -27 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 5 | 0 | 2 | 7 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 3 | 2 | 2 | 7 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 37 | 20 | 16 | 73 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | -30 | -1 | -9 | -40 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 5 | 4 | 2 | 11 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | -3 | 0 | -4 | -7 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | -71 | -10 | 0 | -81 |
| [src/music_kraken/pages/download_center/__init__.py](/src/music_kraken/pages/download_center/__init__.py) | Python | -4 | 0 | -2 | -6 |
| [src/music_kraken/pages/download_center/download.py](/src/music_kraken/pages/download_center/download.py) | Python | -33 | 0 | -13 | -46 |
| [src/music_kraken/pages/download_center/multiple_options.py](/src/music_kraken/pages/download_center/multiple_options.py) | Python | -69 | 0 | -31 | -100 |
| [src/music_kraken/pages/download_center/page_attributes.py](/src/music_kraken/pages/download_center/page_attributes.py) | Python | -24 | -1 | -9 | -34 |
| [src/music_kraken/pages/download_center/search.py](/src/music_kraken/pages/download_center/search.py) | Python | -85 | -23 | -38 | -146 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | -19 | 7 | 10 | -2 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 65 | 30 | 32 | 127 |
| [src/music_kraken/pages/preset.py](/src/music_kraken/pages/preset.py) | Python | 43 | 1 | 16 | 60 |
| [src/music_kraken/pages/support_classes/__init__.py](/src/music_kraken/pages/support_classes/__init__.py) | Python | 0 | 0 | -1 | -1 |
| [src/music_kraken/pages/support_classes/default_target.py](/src/music_kraken/pages/support_classes/default_target.py) | Python | -55 | 0 | -15 | -70 |
| [src/music_kraken/pages/support_classes/download_result.py](/src/music_kraken/pages/support_classes/download_result.py) | Python | -51 | 0 | -15 | -66 |
| [src/music_kraken/tagging/__init__.py](/src/music_kraken/tagging/__init__.py) | Python | -5 | 0 | -2 | -7 |
| [src/music_kraken/tagging/id3.py](/src/music_kraken/tagging/id3.py) | Python | -60 | -4 | -24 | -88 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/utils/config/__init__.py](/src/music_kraken/utils/config/__init__.py) | Python | 7 | 0 | 4 | 11 |
| [src/music_kraken/utils/config/audio.py](/src/music_kraken/utils/config/audio.py) | Python | 152 | 15 | 28 | 195 |
| [src/music_kraken/utils/config/base_classes.py](/src/music_kraken/utils/config/base_classes.py) | Python | 136 | 35 | 61 | 232 |
| [src/music_kraken/utils/config/config.py](/src/music_kraken/utils/config/config.py) | Python | 92 | 16 | 30 | 138 |
| [src/music_kraken/utils/config/connection.py](/src/music_kraken/utils/config/connection.py) | Python | 81 | 2 | 15 | 98 |
| [src/music_kraken/utils/config/logging.py](/src/music_kraken/utils/config/logging.py) | Python | 104 | 4 | 17 | 125 |
| [src/music_kraken/utils/config/misc.py](/src/music_kraken/utils/config/misc.py) | Python | 40 | 0 | 9 | 49 |
| [src/music_kraken/utils/config/paths.py](/src/music_kraken/utils/config/paths.py) | Python | 40 | 0 | 13 | 53 |
| [src/music_kraken/utils/enums/__init__.py](/src/music_kraken/utils/enums/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/utils/enums/album.py](/src/music_kraken/utils/enums/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/utils/enums/source.py](/src/music_kraken/utils/enums/source.py) | Python | 40 | 1 | 8 | 49 |
| [src/music_kraken/utils/exception/__init__.py](/src/music_kraken/utils/exception/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/utils/exception/config.py](/src/music_kraken/utils/exception/config.py) | Python | 14 | 8 | 7 | 29 |
| [src/music_kraken/utils/path_manager/__init__.py](/src/music_kraken/utils/path_manager/__init__.py) | Python | 2 | 0 | 2 | 4 |
| [src/music_kraken/utils/path_manager/config_directory.py](/src/music_kraken/utils/path_manager/config_directory.py) | Python | 4 | 0 | 4 | 8 |
| [src/music_kraken/utils/path_manager/locations.py](/src/music_kraken/utils/path_manager/locations.py) | Python | 16 | 0 | 9 | 25 |
| [src/music_kraken/utils/path_manager/music_directory.py](/src/music_kraken/utils/path_manager/music_directory.py) | Python | 36 | 9 | 14 | 59 |
| [src/music_kraken/utils/regex.py](/src/music_kraken/utils/regex.py) | Python | 1 | 0 | 2 | 3 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | -12 | -5 | 4 | -13 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 6 | 0 | 4 | 10 |
| [src/music_kraken/utils/support_classes/__init__.py](/src/music_kraken/utils/support_classes/__init__.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/support_classes/default_target.py](/src/music_kraken/utils/support_classes/default_target.py) | Python | 56 | 0 | 15 | 71 |
| [src/music_kraken/utils/support_classes/download_result.py](/src/music_kraken/utils/support_classes/download_result.py) | Python | 69 | 0 | 21 | 90 |
| [src/music_kraken/utils/support_classes/query.py](/src/music_kraken/utils/support_classes/query.py) | Python | 24 | 0 | 9 | 33 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@ -1,63 +0,0 @@
"filename", "language", "Python", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 6, 2, 1, 9
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 103, 9, 32, 144
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 85, 3, 18, 106
"/home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py", "Python", 7, 0, 3, 10
"/home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py", "Python", 25, 0, 8, 33
"/home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py", "Python", 60, 4, 24, 88
"/home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py", "Python", 1, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py", "Python", 162, 1, 30, 193
"/home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py", "Python", 27, 3, 14, 44
"/home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py", "Python", 2, 0, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/download/download.py", "Python", 35, 0, 14, 49
"/home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py", "Python", 69, 0, 31, 100
"/home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py", "Python", 21, 1, 10, 32
"/home/lars/Projects/music-downloader/src/music_kraken/download/search.py", "Python", 130, 24, 56, 210
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", -15, 0, -3, -18
"/home/lars/Projects/music-downloader/src/music_kraken/objects/album.py", "Python", -16, -6, -5, -27
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 5, 0, 2, 7
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 3, 2, 2, 7
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 37, 20, 16, 73
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", -30, -1, -9, -40
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 5, 4, 2, 11
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", -3, 0, -4, -7
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", -71, -10, 0, -81
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py", "Python", -4, 0, -2, -6
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py", "Python", -33, 0, -13, -46
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py", "Python", -69, 0, -31, -100
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py", "Python", -24, -1, -9, -34
"/home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py", "Python", -85, -23, -38, -146
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", -19, 7, 10, -2
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 65, 30, 32, 127
"/home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py", "Python", 43, 1, 16, 60
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py", "Python", 0, 0, -1, -1
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py", "Python", -55, 0, -15, -70
"/home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py", "Python", -51, 0, -15, -66
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py", "Python", -5, 0, -2, -7
"/home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py", "Python", -60, -4, -24, -88
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 1, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py", "Python", 7, 0, 4, 11
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py", "Python", 152, 15, 28, 195
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py", "Python", 136, 35, 61, 232
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py", "Python", 92, 16, 30, 138
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py", "Python", 81, 2, 15, 98
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py", "Python", 104, 4, 17, 125
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py", "Python", 40, 0, 9, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py", "Python", 40, 0, 13, 53
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py", "Python", 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py", "Python", 16, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py", "Python", 40, 1, 8, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py", "Python", 1, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py", "Python", 14, 8, 7, 29
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py", "Python", 2, 0, 2, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py", "Python", 4, 0, 4, 8
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py", "Python", 16, 0, 9, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py", "Python", 36, 9, 14, 59
"/home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py", "Python", 1, 0, 2, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", -12, -5, 4, -13
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 6, 0, 4, 10
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py", "Python", 3, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py", "Python", 56, 0, 15, 71
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py", "Python", 69, 0, 21, 90
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py", "Python", 24, 0, 9, 33
"Total", "-", 1280, 157, 437, 1874
1 filename language Python comment blank total
2 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 6 2 1 9
3 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 103 9 32 144
4 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 85 3 18 106
5 /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py Python 7 0 3 10
6 /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py Python 25 0 8 33
7 /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py Python 60 4 24 88
8 /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py Python 1 0 1 2
9 /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py Python 162 1 30 193
10 /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py Python 27 3 14 44
11 /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py Python 2 0 1 3
12 /home/lars/Projects/music-downloader/src/music_kraken/download/download.py Python 35 0 14 49
13 /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py Python 69 0 31 100
14 /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py Python 21 1 10 32
15 /home/lars/Projects/music-downloader/src/music_kraken/download/search.py Python 130 24 56 210
16 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python -15 0 -3 -18
17 /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py Python -16 -6 -5 -27
18 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 5 0 2 7
19 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 3 2 2 7
20 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 37 20 16 73
21 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python -30 -1 -9 -40
22 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 5 4 2 11
23 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python -3 0 -4 -7
24 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python -71 -10 0 -81
25 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py Python -4 0 -2 -6
26 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py Python -33 0 -13 -46
27 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py Python -69 0 -31 -100
28 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py Python -24 -1 -9 -34
29 /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py Python -85 -23 -38 -146
30 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python -19 7 10 -2
31 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 65 30 32 127
32 /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py Python 43 1 16 60
33 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py Python 0 0 -1 -1
34 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py Python -55 0 -15 -70
35 /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py Python -51 0 -15 -66
36 /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py Python -5 0 -2 -7
37 /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py Python -60 -4 -24 -88
38 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 1 0 1 2
39 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py Python 7 0 4 11
40 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py Python 152 15 28 195
41 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py Python 136 35 61 232
42 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py Python 92 16 30 138
43 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py Python 81 2 15 98
44 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py Python 104 4 17 125
45 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py Python 40 0 9 49
46 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py Python 40 0 13 53
47 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py Python 0 0 1 1
48 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py Python 16 6 5 27
49 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py Python 40 1 8 49
50 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py Python 1 0 1 2
51 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py Python 14 8 7 29
52 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py Python 2 0 2 4
53 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py Python 4 0 4 8
54 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py Python 16 0 9 25
55 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py Python 36 9 14 59
56 /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py Python 1 0 2 3
57 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python -12 -5 4 -13
58 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 6 0 4 10
59 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py Python 3 0 1 4
60 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py Python 56 0 15 71
61 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py Python 69 0 21 90
62 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py Python 24 0 9 33
63 Total - 1280 157 437 1874

View File

@ -1,40 +0,0 @@
# Diff Summary
Date : 2023-05-24 11:17:57
Directory /home/lars/Projects/music-downloader/src
Total : 61 files, 1280 codes, 157 comments, 437 blanks, all 1874 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 61 | 1,280 | 157 | 437 | 1,874 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 61 | 1,280 | 157 | 437 | 1,874 |
| . (Files) | 1 | 6 | 2 | 1 | 9 |
| music_kraken | 60 | 1,274 | 155 | 436 | 1,865 |
| music_kraken (Files) | 2 | 188 | 12 | 50 | 250 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/connection | 3 | 190 | 4 | 45 | 239 |
| music_kraken/download | 5 | 257 | 25 | 112 | 394 |
| music_kraken/objects | 7 | -11 | 19 | 5 | 13 |
| music_kraken/pages | 13 | -306 | 4 | -70 | -372 |
| music_kraken/pages (Files) | 5 | 15 | 28 | 54 | 97 |
| music_kraken/pages/download_center | 5 | -215 | -24 | -93 | -332 |
| music_kraken/pages/support_classes | 3 | -106 | 0 | -31 | -137 |
| music_kraken/tagging | 2 | -65 | -4 | -26 | -95 |
| music_kraken/utils | 25 | 929 | 91 | 285 | 1,305 |
| music_kraken/utils (Files) | 4 | -4 | -5 | 11 | 2 |
| music_kraken/utils/config | 8 | 652 | 72 | 177 | 901 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 2 | 15 | 8 | 8 | 31 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 4 | 152 | 0 | 46 | 198 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@ -1,104 +0,0 @@
Date : 2023-05-24 11:17:57
Directory : /home/lars/Projects/music-downloader/src
Total : 61 files, 1280 codes, 157 comments, 437 blanks, all 1874 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 61 | 1,280 | 157 | 437 | 1,874 |
+----------+------------+------------+------------+------------+------------+
Directories
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 61 | 1,280 | 157 | 437 | 1,874 |
| . (Files) | 1 | 6 | 2 | 1 | 9 |
| music_kraken | 60 | 1,274 | 155 | 436 | 1,865 |
| music_kraken (Files) | 2 | 188 | 12 | 50 | 250 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/connection | 3 | 190 | 4 | 45 | 239 |
| music_kraken/download | 5 | 257 | 25 | 112 | 394 |
| music_kraken/objects | 7 | -11 | 19 | 5 | 13 |
| music_kraken/pages | 13 | -306 | 4 | -70 | -372 |
| music_kraken/pages (Files) | 5 | 15 | 28 | 54 | 97 |
| music_kraken/pages/download_center | 5 | -215 | -24 | -93 | -332 |
| music_kraken/pages/support_classes | 3 | -106 | 0 | -31 | -137 |
| music_kraken/tagging | 2 | -65 | -4 | -26 | -95 |
| music_kraken/utils | 25 | 929 | 91 | 285 | 1,305 |
| music_kraken/utils (Files) | 4 | -4 | -5 | 11 | 2 |
| music_kraken/utils/config | 8 | 652 | 72 | 177 | 901 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 2 | 15 | 8 | 8 | 31 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 4 | 152 | 0 | 46 | 198 |
+-------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 6 | 2 | 1 | 9 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 103 | 9 | 32 | 144 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 85 | 3 | 18 | 106 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py | Python | 7 | 0 | 3 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py | Python | 25 | 0 | 8 | 33 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py | Python | 60 | 4 | 24 | 88 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py | Python | 162 | 1 | 30 | 193 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py | Python | 27 | 3 | 14 | 44 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py | Python | 2 | 0 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/download.py | Python | 35 | 0 | 14 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py | Python | 69 | 0 | 31 | 100 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py | Python | 21 | 1 | 10 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/search.py | Python | 130 | 24 | 56 | 210 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | -15 | 0 | -3 | -18 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/album.py | Python | -16 | -6 | -5 | -27 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 5 | 0 | 2 | 7 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 3 | 2 | 2 | 7 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 37 | 20 | 16 | 73 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | -30 | -1 | -9 | -40 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 5 | 4 | 2 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | -3 | 0 | -4 | -7 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | -71 | -10 | 0 | -81 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/__init__.py | Python | -4 | 0 | -2 | -6 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/download.py | Python | -33 | 0 | -13 | -46 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/multiple_options.py | Python | -69 | 0 | -31 | -100 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/page_attributes.py | Python | -24 | -1 | -9 | -34 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/download_center/search.py | Python | -85 | -23 | -38 | -146 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | -19 | 7 | 10 | -2 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 65 | 30 | 32 | 127 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py | Python | 43 | 1 | 16 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/__init__.py | Python | 0 | 0 | -1 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/default_target.py | Python | -55 | 0 | -15 | -70 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/support_classes/download_result.py | Python | -51 | 0 | -15 | -66 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/__init__.py | Python | -5 | 0 | -2 | -7 |
| /home/lars/Projects/music-downloader/src/music_kraken/tagging/id3.py | Python | -60 | -4 | -24 | -88 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py | Python | 7 | 0 | 4 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py | Python | 152 | 15 | 28 | 195 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py | Python | 136 | 35 | 61 | 232 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py | Python | 92 | 16 | 30 | 138 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py | Python | 81 | 2 | 15 | 98 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py | Python | 104 | 4 | 17 | 125 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py | Python | 40 | 0 | 9 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py | Python | 40 | 0 | 13 | 53 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py | Python | 40 | 1 | 8 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py | Python | 14 | 8 | 7 | 29 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py | Python | 2 | 0 | 2 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py | Python | 4 | 0 | 4 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py | Python | 16 | 0 | 9 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py | Python | 36 | 9 | 14 | 59 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py | Python | 1 | 0 | 2 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | -12 | -5 | 4 | -13 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 6 | 0 | 4 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py | Python | 56 | 0 | 15 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py | Python | 69 | 0 | 21 | 90 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py | Python | 24 | 0 | 9 | 33 |
| Total | | 1,280 | 157 | 437 | 1,874 |
+-------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,91 +0,0 @@
"filename", "language", "Python", "SQLite", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 43, 0, 2, 18, 63
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", 58, 0, 0, 6, 64
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", 30, 0, 0, 12, 42
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 189, 0, 21, 60, 270
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 88, 0, 3, 21, 112
"/home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py", "Python", 7, 0, 0, 3, 10
"/home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py", "Python", 25, 0, 0, 8, 33
"/home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py", "Python", 60, 0, 4, 24, 88
"/home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py", "Python", 1, 0, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py", "Python", 162, 0, 1, 30, 193
"/home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py", "Python", 27, 0, 3, 14, 44
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", 122, 0, 24, 52, 198
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 104, 0, 47, 38, 189
"/home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py", "Python", 2, 0, 0, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/download/download.py", "Python", 35, 0, 0, 14, 49
"/home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py", "Python", 69, 0, 0, 31, 100
"/home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py", "Python", 21, 0, 1, 10, 32
"/home/lars/Projects/music-downloader/src/music_kraken/download/search.py", "Python", 130, 0, 24, 56, 210
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py", "Python", 0, 0, 0, 3, 3
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py", "Python", 75, 0, 12, 20, 107
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py", "Python", 54, 0, 1, 16, 71
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py", "Python", 6, 0, 0, 2, 8
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py", "Python", 257, 0, 24, 65, 346
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py", "Python", 253, 0, 40, 72, 365
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py", "Python", 42, 0, 6, 12, 60
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py", "Python", 115, 0, 16, 42, 173
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py", "Python", 40, 0, 0, 18, 58
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py", "Python", 136, 0, 9, 37, 182
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py", "Python", 11, 0, 5, 8, 24
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py", "Python", 71, 0, 4, 24, 99
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 14, 0, 0, 5, 19
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 0, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 91, 0, 31, 39, 161
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", 50, 0, 10, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 25, 0, 0, 7, 32
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 261, 0, 62, 61, 384
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 28, 0, 0, 13, 41
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 65, 0, 33, 33, 131
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 473, 0, 113, 115, 701
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 90, 0, 16, 32, 138
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 63, 0, 15, 23, 101
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 357, 0, 34, 103, 494
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 432, 0, 90, 127, 649
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 629, 0, 289, 187, 1105
"/home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py", "Python", 43, 0, 1, 16, 60
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 25, 0, 16, 6, 47
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql", "SQLite", 0, 72, 0, 10, 82
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql", "SQLite", 0, 135, 0, 10, 145
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 2, 0, 1, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py", "Python", 7, 0, 0, 4, 11
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py", "Python", 152, 0, 15, 28, 195
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py", "Python", 136, 0, 35, 61, 232
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py", "Python", 92, 0, 16, 30, 138
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py", "Python", 81, 0, 2, 15, 98
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py", "Python", 104, 0, 4, 17, 125
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py", "Python", 40, 0, 0, 9, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py", "Python", 40, 0, 0, 13, 53
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py", "Python", 16, 0, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py", "Python", 40, 0, 1, 8, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py", "Python", 1, 0, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py", "Python", 14, 0, 8, 7, 29
"/home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py", "Python", 19, 0, 0, 6, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py", "Python", 2, 0, 0, 2, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py", "Python", 4, 0, 0, 4, 8
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py", "Python", 16, 0, 0, 9, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py", "Python", 36, 0, 9, 14, 59
"/home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py", "Python", 39, 0, 2, 17, 58
"/home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py", "Python", 1, 0, 0, 2, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 63, 0, 22, 21, 106
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 16, 0, 5, 11, 32
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py", "Python", 56, 0, 0, 15, 71
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py", "Python", 69, 0, 0, 21, 90
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py", "Python", 24, 0, 0, 9, 33
"/home/lars/Projects/music-downloader/src/music_kraken_cli.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken_gtk.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 38, 0, 0, 14, 52
"/home/lars/Projects/music-downloader/src/tests/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/tests/conftest.py", "Python", 3, 0, 1, 2, 6
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 0, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_download.py", "Python", 30, 0, 1, 12, 43
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 0, 15, 51, 239
"Total", "-", 6329, 207, 1157, 1980, 9673
1 filename language Python SQLite comment blank total
2 /home/lars/Projects/music-downloader/src/__init__.py Python 0 0 0 1 1
3 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 43 0 2 18 63
4 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python 58 0 0 6 64
5 /home/lars/Projects/music-downloader/src/metal_archives.py Python 30 0 0 12 42
6 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 189 0 21 60 270
7 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 88 0 3 21 112
8 /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py Python 7 0 0 3 10
9 /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py Python 25 0 0 8 33
10 /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py Python 60 0 4 24 88
11 /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py Python 1 0 0 1 2
12 /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py Python 162 0 1 30 193
13 /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py Python 27 0 3 14 44
14 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python 0 0 0 1 1
15 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python 122 0 24 52 198
16 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 104 0 47 38 189
17 /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py Python 2 0 0 1 3
18 /home/lars/Projects/music-downloader/src/music_kraken/download/download.py Python 35 0 0 14 49
19 /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py Python 69 0 0 31 100
20 /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py Python 21 0 1 10 32
21 /home/lars/Projects/music-downloader/src/music_kraken/download/search.py Python 130 0 24 56 210
22 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py Python 0 0 0 3 3
23 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py Python 75 0 12 20 107
24 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py Python 54 0 1 16 71
25 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py Python 6 0 0 2 8
26 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py Python 257 0 24 65 346
27 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py Python 253 0 40 72 365
28 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py Python 3 0 0 2 5
29 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py Python 42 0 6 12 60
30 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py Python 0 0 0 1 1
31 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py Python 115 0 16 42 173
32 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py Python 40 0 0 18 58
33 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py Python 136 0 9 37 182
34 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py Python 11 0 5 8 24
35 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py Python 71 0 4 24 99
36 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 14 0 0 5 19
37 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 0 56 18 111
38 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 91 0 31 39 161
39 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python 50 0 10 19 79
40 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 25 0 0 7 32
41 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 261 0 62 61 384
42 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 28 0 0 13 41
43 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 65 0 33 33 131
44 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 473 0 113 115 701
45 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 90 0 16 32 138
46 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 63 0 15 23 101
47 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 3 0 0 1 4
48 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 357 0 34 103 494
49 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 432 0 90 127 649
50 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 629 0 289 187 1105
51 /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py Python 43 0 1 16 60
52 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 25 0 16 6 47
53 /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql SQLite 0 72 0 10 82
54 /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql SQLite 0 135 0 10 145
55 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 2 0 1 2 5
56 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py Python 7 0 0 4 11
57 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py Python 152 0 15 28 195
58 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py Python 136 0 35 61 232
59 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py Python 92 0 16 30 138
60 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py Python 81 0 2 15 98
61 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py Python 104 0 4 17 125
62 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py Python 40 0 0 9 49
63 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py Python 40 0 0 13 53
64 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py Python 0 0 0 1 1
65 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py Python 16 0 6 5 27
66 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py Python 40 0 1 8 49
67 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py Python 1 0 0 1 2
68 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py Python 14 0 8 7 29
69 /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py Python 3 0 0 1 4
70 /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py Python 19 0 0 6 25
71 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py Python 2 0 0 2 4
72 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py Python 4 0 0 4 8
73 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py Python 16 0 0 9 25
74 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py Python 36 0 9 14 59
75 /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py Python 39 0 2 17 58
76 /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py Python 1 0 0 2 3
77 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 63 0 22 21 106
78 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 16 0 5 11 32
79 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py Python 3 0 0 1 4
80 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py Python 56 0 0 15 71
81 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py Python 69 0 0 21 90
82 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py Python 24 0 0 9 33
83 /home/lars/Projects/music-downloader/src/music_kraken_cli.py Python 3 0 0 3 6
84 /home/lars/Projects/music-downloader/src/music_kraken_gtk.py Python 3 0 0 2 5
85 /home/lars/Projects/music-downloader/src/musify_search.py Python 38 0 0 14 52
86 /home/lars/Projects/music-downloader/src/tests/__init__.py Python 0 0 0 1 1
87 /home/lars/Projects/music-downloader/src/tests/conftest.py Python 3 0 1 2 6
88 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 0 1 13 95
89 /home/lars/Projects/music-downloader/src/tests/test_download.py Python 30 0 1 12 43
90 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 0 15 51 239
91 Total - 6329 207 1157 1980 9673

File diff suppressed because one or more lines are too long

View File

@ -1,46 +0,0 @@
# Summary
Date : 2023-05-24 11:17:57
Directory /home/lars/Projects/music-downloader/src
Total : 89 files, 6536 codes, 1157 comments, 1980 blanks, all 9673 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 87 | 6,329 | 1,157 | 1,960 | 9,446 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 89 | 6,536 | 1,157 | 1,980 | 9,673 |
| . (Files) | 7 | 175 | 2 | 56 | 233 |
| music_kraken | 77 | 6,074 | 1,137 | 1,845 | 9,056 |
| music_kraken (Files) | 2 | 277 | 24 | 81 | 382 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/connection | 3 | 190 | 4 | 45 | 239 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/download | 5 | 257 | 25 | 112 | 394 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 11 | 1,197 | 336 | 365 | 1,898 |
| music_kraken/pages | 6 | 1,489 | 430 | 440 | 2,359 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/utils | 28 | 1,076 | 126 | 334 | 1,536 |
| music_kraken/utils (Files) | 7 | 143 | 30 | 60 | 233 |
| music_kraken/utils/config | 8 | 652 | 72 | 177 | 901 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 2 | 15 | 8 | 8 | 31 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 4 | 152 | 0 | 46 | 198 |
| tests | 5 | 287 | 18 | 79 | 384 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,138 +0,0 @@
Date : 2023-05-24 11:17:57
Directory : /home/lars/Projects/music-downloader/src
Total : 89 files, 6536 codes, 1157 comments, 1980 blanks, all 9673 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 87 | 6,329 | 1,157 | 1,960 | 9,446 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
+----------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 89 | 6,536 | 1,157 | 1,980 | 9,673 |
| . (Files) | 7 | 175 | 2 | 56 | 233 |
| music_kraken | 77 | 6,074 | 1,137 | 1,845 | 9,056 |
| music_kraken (Files) | 2 | 277 | 24 | 81 | 382 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/connection | 3 | 190 | 4 | 45 | 239 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/download | 5 | 257 | 25 | 112 | 394 |
| music_kraken/not_used_anymore | 14 | 1,063 | 117 | 322 | 1,502 |
| music_kraken/not_used_anymore (Files) | 3 | 129 | 13 | 39 | 181 |
| music_kraken/not_used_anymore/metadata | 5 | 561 | 70 | 153 | 784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | 516 | 64 | 139 | 719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | 45 | 6 | 14 | 65 |
| music_kraken/not_used_anymore/sources | 6 | 373 | 34 | 130 | 537 |
| music_kraken/objects | 11 | 1,197 | 336 | 365 | 1,898 |
| music_kraken/pages | 6 | 1,489 | 430 | 440 | 2,359 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/utils | 28 | 1,076 | 126 | 334 | 1,536 |
| music_kraken/utils (Files) | 7 | 143 | 30 | 60 | 233 |
| music_kraken/utils/config | 8 | 652 | 72 | 177 | 901 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 2 | 15 | 8 | 8 | 31 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 4 | 152 | 0 | 46 | 198 |
| tests | 5 | 287 | 18 | 79 | 384 |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 43 | 2 | 18 | 63 |
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | 58 | 0 | 6 | 64 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | 30 | 0 | 12 | 42 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 189 | 21 | 60 | 270 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 88 | 3 | 21 | 112 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py | Python | 7 | 0 | 3 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py | Python | 25 | 0 | 8 | 33 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py | Python | 60 | 4 | 24 | 88 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py | Python | 162 | 1 | 30 | 193 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py | Python | 27 | 3 | 14 | 44 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | 122 | 24 | 52 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 104 | 47 | 38 | 189 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py | Python | 2 | 0 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/download.py | Python | 35 | 0 | 14 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py | Python | 69 | 0 | 31 | 100 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py | Python | 21 | 1 | 10 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/search.py | Python | 130 | 24 | 56 | 210 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py | Python | 0 | 0 | 3 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py | Python | 75 | 12 | 20 | 107 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py | Python | 54 | 1 | 16 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py | Python | 6 | 0 | 2 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py | Python | 257 | 24 | 65 | 346 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py | Python | 253 | 40 | 72 | 365 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py | Python | 42 | 6 | 12 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py | Python | 115 | 16 | 42 | 173 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py | Python | 40 | 0 | 18 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py | Python | 136 | 9 | 37 | 182 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py | Python | 11 | 5 | 8 | 24 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py | Python | 71 | 4 | 24 | 99 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 14 | 0 | 5 | 19 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 91 | 31 | 39 | 161 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | 50 | 10 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 25 | 0 | 7 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 261 | 62 | 61 | 384 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 28 | 0 | 13 | 41 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 65 | 33 | 33 | 131 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 473 | 113 | 115 | 701 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 90 | 16 | 32 | 138 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 63 | 15 | 23 | 101 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 357 | 34 | 103 | 494 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 432 | 90 | 127 | 649 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 629 | 289 | 187 | 1,105 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py | Python | 43 | 1 | 16 | 60 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 25 | 16 | 6 | 47 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql | SQLite | 72 | 0 | 10 | 82 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql | SQLite | 135 | 0 | 10 | 145 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 2 | 1 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py | Python | 7 | 0 | 4 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py | Python | 152 | 15 | 28 | 195 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py | Python | 136 | 35 | 61 | 232 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py | Python | 92 | 16 | 30 | 138 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py | Python | 81 | 2 | 15 | 98 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py | Python | 104 | 4 | 17 | 125 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py | Python | 40 | 0 | 9 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py | Python | 40 | 0 | 13 | 53 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py | Python | 40 | 1 | 8 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py | Python | 14 | 8 | 7 | 29 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py | Python | 19 | 0 | 6 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py | Python | 2 | 0 | 2 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py | Python | 4 | 0 | 4 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py | Python | 16 | 0 | 9 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py | Python | 36 | 9 | 14 | 59 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py | Python | 39 | 2 | 17 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py | Python | 1 | 0 | 2 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 63 | 22 | 21 | 106 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 16 | 5 | 11 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py | Python | 56 | 0 | 15 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py | Python | 69 | 0 | 21 | 90 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py | Python | 24 | 0 | 9 | 33 |
| /home/lars/Projects/music-downloader/src/music_kraken_cli.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken_gtk.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 38 | 0 | 14 | 52 |
| /home/lars/Projects/music-downloader/src/tests/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/tests/conftest.py | Python | 3 | 1 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_download.py | Python | 30 | 1 | 12 | 43 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| Total | | 6,536 | 1,157 | 1,980 | 9,673 |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,98 +0,0 @@
# Details
Date : 2023-06-14 07:47:51
Directory /home/lars/Projects/music-downloader/src
Total : 83 files, 5827 codes, 1152 comments, 1825 blanks, all 8804 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/__init__.py](/src/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | 16 | 0 | 6 | 22 |
| [src/create_custom_objects.py](/src/create_custom_objects.py) | Python | 58 | 0 | 6 | 64 |
| [src/metal_archives.py](/src/metal_archives.py) | Python | 30 | 0 | 12 | 42 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | 112 | 6 | 33 | 151 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 98 | 3 | 23 | 124 |
| [src/music_kraken/audio/__init__.py](/src/music_kraken/audio/__init__.py) | Python | 7 | 0 | 3 | 10 |
| [src/music_kraken/audio/codec.py](/src/music_kraken/audio/codec.py) | Python | 25 | 0 | 8 | 33 |
| [src/music_kraken/audio/metadata.py](/src/music_kraken/audio/metadata.py) | Python | 60 | 4 | 24 | 88 |
| [src/music_kraken/cli/__init__.py](/src/music_kraken/cli/__init__.py) | Python | 2 | 0 | 0 | 2 |
| [src/music_kraken/cli/download/__init__.py](/src/music_kraken/cli/download/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/cli/download/shell.py](/src/music_kraken/cli/download/shell.py) | Python | 199 | 86 | 78 | 363 |
| [src/music_kraken/cli/options/__init__.py](/src/music_kraken/cli/options/__init__.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/cli/options/invidious/__init__.py](/src/music_kraken/cli/options/invidious/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/cli/options/invidious/shell.py](/src/music_kraken/cli/options/invidious/shell.py) | Python | 66 | 7 | 28 | 101 |
| [src/music_kraken/connection/__init__.py](/src/music_kraken/connection/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/connection/connection.py](/src/music_kraken/connection/connection.py) | Python | 168 | 1 | 30 | 199 |
| [src/music_kraken/connection/rotating.py](/src/music_kraken/connection/rotating.py) | Python | 27 | 3 | 14 | 44 |
| [src/music_kraken/database/__init__.py](/src/music_kraken/database/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/database/data_models.py](/src/music_kraken/database/data_models.py) | Python | 122 | 24 | 52 | 198 |
| [src/music_kraken/database/database.py](/src/music_kraken/database/database.py) | Python | 104 | 47 | 38 | 189 |
| [src/music_kraken/download/__init__.py](/src/music_kraken/download/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/download/multiple_options.py](/src/music_kraken/download/multiple_options.py) | Python | 69 | 0 | 31 | 100 |
| [src/music_kraken/download/page_attributes.py](/src/music_kraken/download/page_attributes.py) | Python | 67 | 1 | 29 | 97 |
| [src/music_kraken/download/results.py](/src/music_kraken/download/results.py) | Python | 62 | 7 | 26 | 95 |
| [src/music_kraken/download/search.py](/src/music_kraken/download/search.py) | Python | 124 | 24 | 56 | 204 |
| [src/music_kraken/objects/__init__.py](/src/music_kraken/objects/__init__.py) | Python | 14 | 0 | 5 | 19 |
| [src/music_kraken/objects/cache.py](/src/music_kraken/objects/cache.py) | Python | 37 | 56 | 18 | 111 |
| [src/music_kraken/objects/collection.py](/src/music_kraken/objects/collection.py) | Python | 91 | 31 | 39 | 161 |
| [src/music_kraken/objects/formatted_text.py](/src/music_kraken/objects/formatted_text.py) | Python | 50 | 10 | 19 | 79 |
| [src/music_kraken/objects/lyrics.py](/src/music_kraken/objects/lyrics.py) | Python | 25 | 0 | 7 | 32 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 272 | 62 | 63 | 397 |
| [src/music_kraken/objects/option.py](/src/music_kraken/objects/option.py) | Python | 28 | 0 | 13 | 41 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 71 | 35 | 35 | 141 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 480 | 113 | 120 | 713 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 93 | 16 | 33 | 142 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 65 | 15 | 24 | 104 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 4 | 0 | 2 | 6 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | 234 | 46 | 93 | 373 |
| [src/music_kraken/pages/encyclopaedia_metallum.py](/src/music_kraken/pages/encyclopaedia_metallum.py) | Python | 432 | 90 | 127 | 649 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | 576 | 275 | 166 | 1,017 |
| [src/music_kraken/pages/preset.py](/src/music_kraken/pages/preset.py) | Python | 47 | 1 | 17 | 65 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 254 | 45 | 79 | 378 |
| [src/music_kraken/static_files/new_db.sql](/src/music_kraken/static_files/new_db.sql) | SQLite | 72 | 0 | 10 | 82 |
| [src/music_kraken/static_files/temp_database_structure.sql](/src/music_kraken/static_files/temp_database_structure.sql) | SQLite | 135 | 0 | 10 | 145 |
| [src/music_kraken/utils/__init__.py](/src/music_kraken/utils/__init__.py) | Python | 2 | 1 | 2 | 5 |
| [src/music_kraken/utils/config/__init__.py](/src/music_kraken/utils/config/__init__.py) | Python | 7 | 0 | 4 | 11 |
| [src/music_kraken/utils/config/audio.py](/src/music_kraken/utils/config/audio.py) | Python | 152 | 15 | 28 | 195 |
| [src/music_kraken/utils/config/base_classes.py](/src/music_kraken/utils/config/base_classes.py) | Python | 136 | 35 | 61 | 232 |
| [src/music_kraken/utils/config/config.py](/src/music_kraken/utils/config/config.py) | Python | 92 | 16 | 30 | 138 |
| [src/music_kraken/utils/config/connection.py](/src/music_kraken/utils/config/connection.py) | Python | 80 | 2 | 15 | 97 |
| [src/music_kraken/utils/config/logging.py](/src/music_kraken/utils/config/logging.py) | Python | 104 | 4 | 17 | 125 |
| [src/music_kraken/utils/config/misc.py](/src/music_kraken/utils/config/misc.py) | Python | 40 | 0 | 9 | 49 |
| [src/music_kraken/utils/config/paths.py](/src/music_kraken/utils/config/paths.py) | Python | 40 | 0 | 13 | 53 |
| [src/music_kraken/utils/enums/__init__.py](/src/music_kraken/utils/enums/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/utils/enums/album.py](/src/music_kraken/utils/enums/album.py) | Python | 16 | 6 | 5 | 27 |
| [src/music_kraken/utils/enums/source.py](/src/music_kraken/utils/enums/source.py) | Python | 40 | 1 | 8 | 49 |
| [src/music_kraken/utils/exception/__init__.py](/src/music_kraken/utils/exception/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/utils/exception/config.py](/src/music_kraken/utils/exception/config.py) | Python | 14 | 8 | 7 | 29 |
| [src/music_kraken/utils/exception/download.py](/src/music_kraken/utils/exception/download.py) | Python | 8 | 0 | 4 | 12 |
| [src/music_kraken/utils/functions.py](/src/music_kraken/utils/functions.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/object_handeling.py](/src/music_kraken/utils/object_handeling.py) | Python | 19 | 0 | 6 | 25 |
| [src/music_kraken/utils/path_manager/__init__.py](/src/music_kraken/utils/path_manager/__init__.py) | Python | 2 | 0 | 2 | 4 |
| [src/music_kraken/utils/path_manager/config_directory.py](/src/music_kraken/utils/path_manager/config_directory.py) | Python | 4 | 0 | 4 | 8 |
| [src/music_kraken/utils/path_manager/locations.py](/src/music_kraken/utils/path_manager/locations.py) | Python | 16 | 0 | 9 | 25 |
| [src/music_kraken/utils/path_manager/music_directory.py](/src/music_kraken/utils/path_manager/music_directory.py) | Python | 36 | 9 | 14 | 59 |
| [src/music_kraken/utils/phonetic_compares.py](/src/music_kraken/utils/phonetic_compares.py) | Python | 39 | 2 | 17 | 58 |
| [src/music_kraken/utils/regex.py](/src/music_kraken/utils/regex.py) | Python | 1 | 0 | 2 | 3 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 66 | 22 | 22 | 110 |
| [src/music_kraken/utils/string_processing.py](/src/music_kraken/utils/string_processing.py) | Python | 16 | 5 | 11 | 32 |
| [src/music_kraken/utils/support_classes/__init__.py](/src/music_kraken/utils/support_classes/__init__.py) | Python | 4 | 0 | 1 | 5 |
| [src/music_kraken/utils/support_classes/default_target.py](/src/music_kraken/utils/support_classes/default_target.py) | Python | 56 | 0 | 15 | 71 |
| [src/music_kraken/utils/support_classes/download_result.py](/src/music_kraken/utils/support_classes/download_result.py) | Python | 69 | 0 | 21 | 90 |
| [src/music_kraken/utils/support_classes/query.py](/src/music_kraken/utils/support_classes/query.py) | Python | 24 | 0 | 9 | 33 |
| [src/music_kraken/utils/support_classes/thread_classes.py](/src/music_kraken/utils/support_classes/thread_classes.py) | Python | 8 | 0 | 4 | 12 |
| [src/music_kraken_cli.py](/src/music_kraken_cli.py) | Python | 3 | 0 | 3 | 6 |
| [src/music_kraken_gtk.py](/src/music_kraken_gtk.py) | Python | 3 | 0 | 2 | 5 |
| [src/musify_search.py](/src/musify_search.py) | Python | 38 | 0 | 14 | 52 |
| [src/tests/__init__.py](/src/tests/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/tests/conftest.py](/src/tests/conftest.py) | Python | 3 | 1 | 2 | 6 |
| [src/tests/test_building_objects.py](/src/tests/test_building_objects.py) | Python | 81 | 1 | 13 | 95 |
| [src/tests/test_download.py](/src/tests/test_download.py) | Python | 30 | 1 | 12 | 43 |
| [src/tests/test_objects.py](/src/tests/test_objects.py) | Python | 173 | 15 | 51 | 239 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,59 +0,0 @@
# Diff Details
Date : 2023-06-14 07:47:51
Directory /home/lars/Projects/music-downloader/src
Total : 44 files, -709 codes, -5 comments, -155 blanks, all -869 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/actual_donwload.py](/src/actual_donwload.py) | Python | -27 | -2 | -12 | -41 |
| [src/music_kraken/__init__.py](/src/music_kraken/__init__.py) | Python | -77 | -15 | -27 | -119 |
| [src/music_kraken/__main__.py](/src/music_kraken/__main__.py) | Python | 10 | 0 | 2 | 12 |
| [src/music_kraken/cli/__init__.py](/src/music_kraken/cli/__init__.py) | Python | 2 | 0 | 0 | 2 |
| [src/music_kraken/cli/download/__init__.py](/src/music_kraken/cli/download/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/cli/download/shell.py](/src/music_kraken/cli/download/shell.py) | Python | 199 | 86 | 78 | 363 |
| [src/music_kraken/cli/options/__init__.py](/src/music_kraken/cli/options/__init__.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/cli/options/invidious/__init__.py](/src/music_kraken/cli/options/invidious/__init__.py) | Python | 0 | 0 | 1 | 1 |
| [src/music_kraken/cli/options/invidious/shell.py](/src/music_kraken/cli/options/invidious/shell.py) | Python | 66 | 7 | 28 | 101 |
| [src/music_kraken/connection/connection.py](/src/music_kraken/connection/connection.py) | Python | 6 | 0 | 0 | 6 |
| [src/music_kraken/download/__init__.py](/src/music_kraken/download/__init__.py) | Python | -1 | 0 | 0 | -1 |
| [src/music_kraken/download/download.py](/src/music_kraken/download/download.py) | Python | -35 | 0 | -14 | -49 |
| [src/music_kraken/download/page_attributes.py](/src/music_kraken/download/page_attributes.py) | Python | 46 | 0 | 19 | 65 |
| [src/music_kraken/download/results.py](/src/music_kraken/download/results.py) | Python | 62 | 7 | 26 | 95 |
| [src/music_kraken/download/search.py](/src/music_kraken/download/search.py) | Python | -6 | 0 | 0 | -6 |
| [src/music_kraken/not_used_anymore/__init__.py](/src/music_kraken/not_used_anymore/__init__.py) | Python | 0 | 0 | -3 | -3 |
| [src/music_kraken/not_used_anymore/fetch_audio.py](/src/music_kraken/not_used_anymore/fetch_audio.py) | Python | -75 | -12 | -20 | -107 |
| [src/music_kraken/not_used_anymore/fetch_source.py](/src/music_kraken/not_used_anymore/fetch_source.py) | Python | -54 | -1 | -16 | -71 |
| [src/music_kraken/not_used_anymore/metadata/__init__.py](/src/music_kraken/not_used_anymore/metadata/__init__.py) | Python | -6 | 0 | -2 | -8 |
| [src/music_kraken/not_used_anymore/metadata/metadata_fetch.py](/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py) | Python | -257 | -24 | -65 | -346 |
| [src/music_kraken/not_used_anymore/metadata/metadata_search.py](/src/music_kraken/not_used_anymore/metadata/metadata_search.py) | Python | -253 | -40 | -72 | -365 |
| [src/music_kraken/not_used_anymore/metadata/sources/__init__.py](/src/music_kraken/not_used_anymore/metadata/sources/__init__.py) | Python | -3 | 0 | -2 | -5 |
| [src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py](/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py) | Python | -42 | -6 | -12 | -60 |
| [src/music_kraken/not_used_anymore/sources/__init__.py](/src/music_kraken/not_used_anymore/sources/__init__.py) | Python | 0 | 0 | -1 | -1 |
| [src/music_kraken/not_used_anymore/sources/genius.py](/src/music_kraken/not_used_anymore/sources/genius.py) | Python | -115 | -16 | -42 | -173 |
| [src/music_kraken/not_used_anymore/sources/local_files.py](/src/music_kraken/not_used_anymore/sources/local_files.py) | Python | -40 | 0 | -18 | -58 |
| [src/music_kraken/not_used_anymore/sources/musify.py](/src/music_kraken/not_used_anymore/sources/musify.py) | Python | -136 | -9 | -37 | -182 |
| [src/music_kraken/not_used_anymore/sources/source.py](/src/music_kraken/not_used_anymore/sources/source.py) | Python | -11 | -5 | -8 | -24 |
| [src/music_kraken/not_used_anymore/sources/youtube.py](/src/music_kraken/not_used_anymore/sources/youtube.py) | Python | -71 | -4 | -24 | -99 |
| [src/music_kraken/objects/metadata.py](/src/music_kraken/objects/metadata.py) | Python | 11 | 0 | 2 | 13 |
| [src/music_kraken/objects/parents.py](/src/music_kraken/objects/parents.py) | Python | 6 | 2 | 2 | 10 |
| [src/music_kraken/objects/song.py](/src/music_kraken/objects/song.py) | Python | 7 | 0 | 5 | 12 |
| [src/music_kraken/objects/source.py](/src/music_kraken/objects/source.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/objects/target.py](/src/music_kraken/objects/target.py) | Python | 2 | 0 | 1 | 3 |
| [src/music_kraken/pages/__init__.py](/src/music_kraken/pages/__init__.py) | Python | 1 | 0 | 1 | 2 |
| [src/music_kraken/pages/abstract.py](/src/music_kraken/pages/abstract.py) | Python | -123 | 12 | -10 | -121 |
| [src/music_kraken/pages/musify.py](/src/music_kraken/pages/musify.py) | Python | -53 | -14 | -21 | -88 |
| [src/music_kraken/pages/preset.py](/src/music_kraken/pages/preset.py) | Python | 4 | 0 | 1 | 5 |
| [src/music_kraken/pages/youtube.py](/src/music_kraken/pages/youtube.py) | Python | 229 | 29 | 73 | 331 |
| [src/music_kraken/utils/config/connection.py](/src/music_kraken/utils/config/connection.py) | Python | -1 | 0 | 0 | -1 |
| [src/music_kraken/utils/exception/download.py](/src/music_kraken/utils/exception/download.py) | Python | 8 | 0 | 4 | 12 |
| [src/music_kraken/utils/shared.py](/src/music_kraken/utils/shared.py) | Python | 3 | 0 | 1 | 4 |
| [src/music_kraken/utils/support_classes/__init__.py](/src/music_kraken/utils/support_classes/__init__.py) | Python | 1 | 0 | 0 | 1 |
| [src/music_kraken/utils/support_classes/thread_classes.py](/src/music_kraken/utils/support_classes/thread_classes.py) | Python | 8 | 0 | 4 | 12 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@ -1,46 +0,0 @@
"filename", "language", "Python", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", -27, -2, -12, -41
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", -77, -15, -27, -119
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 10, 0, 2, 12
"/home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py", "Python", 2, 0, 0, 2
"/home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py", "Python", 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py", "Python", 199, 86, 78, 363
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py", "Python", 3, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py", "Python", 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py", "Python", 66, 7, 28, 101
"/home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py", "Python", 6, 0, 0, 6
"/home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py", "Python", -1, 0, 0, -1
"/home/lars/Projects/music-downloader/src/music_kraken/download/download.py", "Python", -35, 0, -14, -49
"/home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py", "Python", 46, 0, 19, 65
"/home/lars/Projects/music-downloader/src/music_kraken/download/results.py", "Python", 62, 7, 26, 95
"/home/lars/Projects/music-downloader/src/music_kraken/download/search.py", "Python", -6, 0, 0, -6
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py", "Python", 0, 0, -3, -3
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py", "Python", -75, -12, -20, -107
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py", "Python", -54, -1, -16, -71
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py", "Python", -6, 0, -2, -8
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py", "Python", -257, -24, -65, -346
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py", "Python", -253, -40, -72, -365
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py", "Python", -3, 0, -2, -5
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py", "Python", -42, -6, -12, -60
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py", "Python", 0, 0, -1, -1
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py", "Python", -115, -16, -42, -173
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py", "Python", -40, 0, -18, -58
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py", "Python", -136, -9, -37, -182
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py", "Python", -11, -5, -8, -24
"/home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py", "Python", -71, -4, -24, -99
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 11, 0, 2, 13
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 6, 2, 2, 10
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 7, 0, 5, 12
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 3, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 2, 0, 1, 3
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 1, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", -123, 12, -10, -121
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", -53, -14, -21, -88
"/home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py", "Python", 4, 0, 1, 5
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 229, 29, 73, 331
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py", "Python", -1, 0, 0, -1
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py", "Python", 8, 0, 4, 12
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 3, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py", "Python", 1, 0, 0, 1
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py", "Python", 8, 0, 4, 12
"Total", "-", -709, -5, -155, -869
1 filename language Python comment blank total
2 /home/lars/Projects/music-downloader/src/actual_donwload.py Python -27 -2 -12 -41
3 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python -77 -15 -27 -119
4 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 10 0 2 12
5 /home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py Python 2 0 0 2
6 /home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py Python 0 0 1 1
7 /home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py Python 199 86 78 363
8 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py Python 3 0 1 4
9 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py Python 0 0 1 1
10 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py Python 66 7 28 101
11 /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py Python 6 0 0 6
12 /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py Python -1 0 0 -1
13 /home/lars/Projects/music-downloader/src/music_kraken/download/download.py Python -35 0 -14 -49
14 /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py Python 46 0 19 65
15 /home/lars/Projects/music-downloader/src/music_kraken/download/results.py Python 62 7 26 95
16 /home/lars/Projects/music-downloader/src/music_kraken/download/search.py Python -6 0 0 -6
17 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py Python 0 0 -3 -3
18 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py Python -75 -12 -20 -107
19 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py Python -54 -1 -16 -71
20 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py Python -6 0 -2 -8
21 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py Python -257 -24 -65 -346
22 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py Python -253 -40 -72 -365
23 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py Python -3 0 -2 -5
24 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py Python -42 -6 -12 -60
25 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py Python 0 0 -1 -1
26 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py Python -115 -16 -42 -173
27 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py Python -40 0 -18 -58
28 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py Python -136 -9 -37 -182
29 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py Python -11 -5 -8 -24
30 /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py Python -71 -4 -24 -99
31 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 11 0 2 13
32 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 6 2 2 10
33 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 7 0 5 12
34 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 3 0 1 4
35 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 2 0 1 3
36 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 1 0 1 2
37 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python -123 12 -10 -121
38 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python -53 -14 -21 -88
39 /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py Python 4 0 1 5
40 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 229 29 73 331
41 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py Python -1 0 0 -1
42 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py Python 8 0 4 12
43 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 3 0 1 4
44 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py Python 1 0 0 1
45 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py Python 8 0 4 12
46 Total - -709 -5 -155 -869

View File

@ -1,45 +0,0 @@
# Diff Summary
Date : 2023-06-14 07:47:51
Directory /home/lars/Projects/music-downloader/src
Total : 44 files, -709 codes, -5 comments, -155 blanks, all -869 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 44 | -709 | -5 | -155 | -869 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 44 | -709 | -5 | -155 | -869 |
| . (Files) | 1 | -27 | -2 | -12 | -41 |
| music_kraken | 43 | -682 | -3 | -143 | -828 |
| music_kraken (Files) | 2 | -67 | -15 | -25 | -107 |
| music_kraken/cli | 6 | 270 | 93 | 109 | 472 |
| music_kraken/cli (Files) | 1 | 2 | 0 | 0 | 2 |
| music_kraken/cli/download | 2 | 199 | 86 | 79 | 364 |
| music_kraken/cli/options | 3 | 69 | 7 | 30 | 106 |
| music_kraken/cli/options (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/cli/options/invidious | 2 | 66 | 7 | 29 | 102 |
| music_kraken/connection | 1 | 6 | 0 | 0 | 6 |
| music_kraken/download | 5 | 66 | 7 | 31 | 104 |
| music_kraken/not_used_anymore | 14 | -1,063 | -117 | -322 | -1,502 |
| music_kraken/not_used_anymore (Files) | 3 | -129 | -13 | -39 | -181 |
| music_kraken/not_used_anymore/metadata | 5 | -561 | -70 | -153 | -784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | -516 | -64 | -139 | -719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | -45 | -6 | -14 | -65 |
| music_kraken/not_used_anymore/sources | 6 | -373 | -34 | -130 | -537 |
| music_kraken/objects | 5 | 29 | 2 | 11 | 42 |
| music_kraken/pages | 5 | 58 | 27 | 44 | 129 |
| music_kraken/utils | 5 | 19 | 0 | 9 | 28 |
| music_kraken/utils (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/utils/config | 1 | -1 | 0 | 0 | -1 |
| music_kraken/utils/exception | 1 | 8 | 0 | 4 | 12 |
| music_kraken/utils/support_classes | 2 | 9 | 0 | 4 | 13 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@ -1,92 +0,0 @@
Date : 2023-06-14 07:47:51
Directory : /home/lars/Projects/music-downloader/src
Total : 44 files, -709 codes, -5 comments, -155 blanks, all -869 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 44 | -709 | -5 | -155 | -869 |
+----------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 44 | -709 | -5 | -155 | -869 |
| . (Files) | 1 | -27 | -2 | -12 | -41 |
| music_kraken | 43 | -682 | -3 | -143 | -828 |
| music_kraken (Files) | 2 | -67 | -15 | -25 | -107 |
| music_kraken/cli | 6 | 270 | 93 | 109 | 472 |
| music_kraken/cli (Files) | 1 | 2 | 0 | 0 | 2 |
| music_kraken/cli/download | 2 | 199 | 86 | 79 | 364 |
| music_kraken/cli/options | 3 | 69 | 7 | 30 | 106 |
| music_kraken/cli/options (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/cli/options/invidious | 2 | 66 | 7 | 29 | 102 |
| music_kraken/connection | 1 | 6 | 0 | 0 | 6 |
| music_kraken/download | 5 | 66 | 7 | 31 | 104 |
| music_kraken/not_used_anymore | 14 | -1,063 | -117 | -322 | -1,502 |
| music_kraken/not_used_anymore (Files) | 3 | -129 | -13 | -39 | -181 |
| music_kraken/not_used_anymore/metadata | 5 | -561 | -70 | -153 | -784 |
| music_kraken/not_used_anymore/metadata (Files) | 3 | -516 | -64 | -139 | -719 |
| music_kraken/not_used_anymore/metadata/sources | 2 | -45 | -6 | -14 | -65 |
| music_kraken/not_used_anymore/sources | 6 | -373 | -34 | -130 | -537 |
| music_kraken/objects | 5 | 29 | 2 | 11 | 42 |
| music_kraken/pages | 5 | 58 | 27 | 44 | 129 |
| music_kraken/utils | 5 | 19 | 0 | 9 | 28 |
| music_kraken/utils (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/utils/config | 1 | -1 | 0 | 0 | -1 |
| music_kraken/utils/exception | 1 | 8 | 0 | 4 | 12 |
| music_kraken/utils/support_classes | 2 | 9 | 0 | 4 | 13 |
+--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | -27 | -2 | -12 | -41 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | -77 | -15 | -27 | -119 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 10 | 0 | 2 | 12 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py | Python | 2 | 0 | 0 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py | Python | 199 | 86 | 78 | 363 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py | Python | 66 | 7 | 28 | 101 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py | Python | 6 | 0 | 0 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py | Python | -1 | 0 | 0 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/download.py | Python | -35 | 0 | -14 | -49 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py | Python | 46 | 0 | 19 | 65 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/results.py | Python | 62 | 7 | 26 | 95 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/search.py | Python | -6 | 0 | 0 | -6 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/__init__.py | Python | 0 | 0 | -3 | -3 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_audio.py | Python | -75 | -12 | -20 | -107 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/fetch_source.py | Python | -54 | -1 | -16 | -71 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/__init__.py | Python | -6 | 0 | -2 | -8 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_fetch.py | Python | -257 | -24 | -65 | -346 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/metadata_search.py | Python | -253 | -40 | -72 | -365 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/__init__.py | Python | -3 | 0 | -2 | -5 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/metadata/sources/musicbrainz.py | Python | -42 | -6 | -12 | -60 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/__init__.py | Python | 0 | 0 | -1 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/genius.py | Python | -115 | -16 | -42 | -173 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/local_files.py | Python | -40 | 0 | -18 | -58 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/musify.py | Python | -136 | -9 | -37 | -182 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/source.py | Python | -11 | -5 | -8 | -24 |
| /home/lars/Projects/music-downloader/src/music_kraken/not_used_anymore/sources/youtube.py | Python | -71 | -4 | -24 | -99 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 11 | 0 | 2 | 13 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 6 | 2 | 2 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 7 | 0 | 5 | 12 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 2 | 0 | 1 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | -123 | 12 | -10 | -121 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | -53 | -14 | -21 | -88 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py | Python | 4 | 0 | 1 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 229 | 29 | 73 | 331 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py | Python | -1 | 0 | 0 | -1 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py | Python | 8 | 0 | 4 | 12 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py | Python | 1 | 0 | 0 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py | Python | 8 | 0 | 4 | 12 |
| Total | | -709 | -5 | -155 | -869 |
+--------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

View File

@ -1,85 +0,0 @@
"filename", "language", "Python", "SQLite", "comment", "blank", "total"
"/home/lars/Projects/music-downloader/src/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/actual_donwload.py", "Python", 16, 0, 0, 6, 22
"/home/lars/Projects/music-downloader/src/create_custom_objects.py", "Python", 58, 0, 0, 6, 64
"/home/lars/Projects/music-downloader/src/metal_archives.py", "Python", 30, 0, 0, 12, 42
"/home/lars/Projects/music-downloader/src/music_kraken/__init__.py", "Python", 112, 0, 6, 33, 151
"/home/lars/Projects/music-downloader/src/music_kraken/__main__.py", "Python", 98, 0, 3, 23, 124
"/home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py", "Python", 7, 0, 0, 3, 10
"/home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py", "Python", 25, 0, 0, 8, 33
"/home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py", "Python", 60, 0, 4, 24, 88
"/home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py", "Python", 2, 0, 0, 0, 2
"/home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py", "Python", 199, 0, 86, 78, 363
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py", "Python", 66, 0, 7, 28, 101
"/home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py", "Python", 1, 0, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py", "Python", 168, 0, 1, 30, 199
"/home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py", "Python", 27, 0, 3, 14, 44
"/home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py", "Python", 122, 0, 24, 52, 198
"/home/lars/Projects/music-downloader/src/music_kraken/database/database.py", "Python", 104, 0, 47, 38, 189
"/home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py", "Python", 1, 0, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py", "Python", 69, 0, 0, 31, 100
"/home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py", "Python", 67, 0, 1, 29, 97
"/home/lars/Projects/music-downloader/src/music_kraken/download/results.py", "Python", 62, 0, 7, 26, 95
"/home/lars/Projects/music-downloader/src/music_kraken/download/search.py", "Python", 124, 0, 24, 56, 204
"/home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py", "Python", 14, 0, 0, 5, 19
"/home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py", "Python", 37, 0, 56, 18, 111
"/home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py", "Python", 91, 0, 31, 39, 161
"/home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py", "Python", 50, 0, 10, 19, 79
"/home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py", "Python", 25, 0, 0, 7, 32
"/home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py", "Python", 272, 0, 62, 63, 397
"/home/lars/Projects/music-downloader/src/music_kraken/objects/option.py", "Python", 28, 0, 0, 13, 41
"/home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py", "Python", 71, 0, 35, 35, 141
"/home/lars/Projects/music-downloader/src/music_kraken/objects/song.py", "Python", 480, 0, 113, 120, 713
"/home/lars/Projects/music-downloader/src/music_kraken/objects/source.py", "Python", 93, 0, 16, 33, 142
"/home/lars/Projects/music-downloader/src/music_kraken/objects/target.py", "Python", 65, 0, 15, 24, 104
"/home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py", "Python", 4, 0, 0, 2, 6
"/home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py", "Python", 234, 0, 46, 93, 373
"/home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py", "Python", 432, 0, 90, 127, 649
"/home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py", "Python", 576, 0, 275, 166, 1017
"/home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py", "Python", 47, 0, 1, 17, 65
"/home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py", "Python", 254, 0, 45, 79, 378
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql", "SQLite", 0, 72, 0, 10, 82
"/home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql", "SQLite", 0, 135, 0, 10, 145
"/home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py", "Python", 2, 0, 1, 2, 5
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py", "Python", 7, 0, 0, 4, 11
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py", "Python", 152, 0, 15, 28, 195
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py", "Python", 136, 0, 35, 61, 232
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py", "Python", 92, 0, 16, 30, 138
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py", "Python", 80, 0, 2, 15, 97
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py", "Python", 104, 0, 4, 17, 125
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py", "Python", 40, 0, 0, 9, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py", "Python", 40, 0, 0, 13, 53
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py", "Python", 16, 0, 6, 5, 27
"/home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py", "Python", 40, 0, 1, 8, 49
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py", "Python", 1, 0, 0, 1, 2
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py", "Python", 14, 0, 8, 7, 29
"/home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py", "Python", 8, 0, 0, 4, 12
"/home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py", "Python", 3, 0, 0, 1, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py", "Python", 19, 0, 0, 6, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py", "Python", 2, 0, 0, 2, 4
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py", "Python", 4, 0, 0, 4, 8
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py", "Python", 16, 0, 0, 9, 25
"/home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py", "Python", 36, 0, 9, 14, 59
"/home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py", "Python", 39, 0, 2, 17, 58
"/home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py", "Python", 1, 0, 0, 2, 3
"/home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py", "Python", 66, 0, 22, 22, 110
"/home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py", "Python", 16, 0, 5, 11, 32
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py", "Python", 4, 0, 0, 1, 5
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py", "Python", 56, 0, 0, 15, 71
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py", "Python", 69, 0, 0, 21, 90
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py", "Python", 24, 0, 0, 9, 33
"/home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py", "Python", 8, 0, 0, 4, 12
"/home/lars/Projects/music-downloader/src/music_kraken_cli.py", "Python", 3, 0, 0, 3, 6
"/home/lars/Projects/music-downloader/src/music_kraken_gtk.py", "Python", 3, 0, 0, 2, 5
"/home/lars/Projects/music-downloader/src/musify_search.py", "Python", 38, 0, 0, 14, 52
"/home/lars/Projects/music-downloader/src/tests/__init__.py", "Python", 0, 0, 0, 1, 1
"/home/lars/Projects/music-downloader/src/tests/conftest.py", "Python", 3, 0, 1, 2, 6
"/home/lars/Projects/music-downloader/src/tests/test_building_objects.py", "Python", 81, 0, 1, 13, 95
"/home/lars/Projects/music-downloader/src/tests/test_download.py", "Python", 30, 0, 1, 12, 43
"/home/lars/Projects/music-downloader/src/tests/test_objects.py", "Python", 173, 0, 15, 51, 239
"Total", "-", 5620, 207, 1152, 1825, 8804
1 filename language Python SQLite comment blank total
2 /home/lars/Projects/music-downloader/src/__init__.py Python 0 0 0 1 1
3 /home/lars/Projects/music-downloader/src/actual_donwload.py Python 16 0 0 6 22
4 /home/lars/Projects/music-downloader/src/create_custom_objects.py Python 58 0 0 6 64
5 /home/lars/Projects/music-downloader/src/metal_archives.py Python 30 0 0 12 42
6 /home/lars/Projects/music-downloader/src/music_kraken/__init__.py Python 112 0 6 33 151
7 /home/lars/Projects/music-downloader/src/music_kraken/__main__.py Python 98 0 3 23 124
8 /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py Python 7 0 0 3 10
9 /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py Python 25 0 0 8 33
10 /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py Python 60 0 4 24 88
11 /home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py Python 2 0 0 0 2
12 /home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py Python 0 0 0 1 1
13 /home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py Python 199 0 86 78 363
14 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py Python 3 0 0 1 4
15 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py Python 0 0 0 1 1
16 /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py Python 66 0 7 28 101
17 /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py Python 1 0 0 1 2
18 /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py Python 168 0 1 30 199
19 /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py Python 27 0 3 14 44
20 /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py Python 0 0 0 1 1
21 /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py Python 122 0 24 52 198
22 /home/lars/Projects/music-downloader/src/music_kraken/database/database.py Python 104 0 47 38 189
23 /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py Python 1 0 0 1 2
24 /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py Python 69 0 0 31 100
25 /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py Python 67 0 1 29 97
26 /home/lars/Projects/music-downloader/src/music_kraken/download/results.py Python 62 0 7 26 95
27 /home/lars/Projects/music-downloader/src/music_kraken/download/search.py Python 124 0 24 56 204
28 /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py Python 14 0 0 5 19
29 /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py Python 37 0 56 18 111
30 /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py Python 91 0 31 39 161
31 /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py Python 50 0 10 19 79
32 /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py Python 25 0 0 7 32
33 /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py Python 272 0 62 63 397
34 /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py Python 28 0 0 13 41
35 /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py Python 71 0 35 35 141
36 /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py Python 480 0 113 120 713
37 /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py Python 93 0 16 33 142
38 /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py Python 65 0 15 24 104
39 /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py Python 4 0 0 2 6
40 /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py Python 234 0 46 93 373
41 /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py Python 432 0 90 127 649
42 /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py Python 576 0 275 166 1017
43 /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py Python 47 0 1 17 65
44 /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py Python 254 0 45 79 378
45 /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql SQLite 0 72 0 10 82
46 /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql SQLite 0 135 0 10 145
47 /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py Python 2 0 1 2 5
48 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py Python 7 0 0 4 11
49 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py Python 152 0 15 28 195
50 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py Python 136 0 35 61 232
51 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py Python 92 0 16 30 138
52 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py Python 80 0 2 15 97
53 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py Python 104 0 4 17 125
54 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py Python 40 0 0 9 49
55 /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py Python 40 0 0 13 53
56 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py Python 0 0 0 1 1
57 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py Python 16 0 6 5 27
58 /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py Python 40 0 1 8 49
59 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py Python 1 0 0 1 2
60 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py Python 14 0 8 7 29
61 /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py Python 8 0 0 4 12
62 /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py Python 3 0 0 1 4
63 /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py Python 19 0 0 6 25
64 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py Python 2 0 0 2 4
65 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py Python 4 0 0 4 8
66 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py Python 16 0 0 9 25
67 /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py Python 36 0 9 14 59
68 /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py Python 39 0 2 17 58
69 /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py Python 1 0 0 2 3
70 /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py Python 66 0 22 22 110
71 /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py Python 16 0 5 11 32
72 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py Python 4 0 0 1 5
73 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py Python 56 0 0 15 71
74 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py Python 69 0 0 21 90
75 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py Python 24 0 0 9 33
76 /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py Python 8 0 0 4 12
77 /home/lars/Projects/music-downloader/src/music_kraken_cli.py Python 3 0 0 3 6
78 /home/lars/Projects/music-downloader/src/music_kraken_gtk.py Python 3 0 0 2 5
79 /home/lars/Projects/music-downloader/src/musify_search.py Python 38 0 0 14 52
80 /home/lars/Projects/music-downloader/src/tests/__init__.py Python 0 0 0 1 1
81 /home/lars/Projects/music-downloader/src/tests/conftest.py Python 3 0 1 2 6
82 /home/lars/Projects/music-downloader/src/tests/test_building_objects.py Python 81 0 1 13 95
83 /home/lars/Projects/music-downloader/src/tests/test_download.py Python 30 0 1 12 43
84 /home/lars/Projects/music-downloader/src/tests/test_objects.py Python 173 0 15 51 239
85 Total - 5620 207 1152 1825 8804

File diff suppressed because one or more lines are too long

View File

@ -1,46 +0,0 @@
# Summary
Date : 2023-06-14 07:47:51
Directory /home/lars/Projects/music-downloader/src
Total : 83 files, 5827 codes, 1152 comments, 1825 blanks, all 8804 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Python | 81 | 5,620 | 1,152 | 1,805 | 8,577 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 83 | 5,827 | 1,152 | 1,825 | 8,804 |
| . (Files) | 7 | 148 | 0 | 44 | 192 |
| music_kraken | 71 | 5,392 | 1,134 | 1,702 | 8,228 |
| music_kraken (Files) | 2 | 210 | 9 | 56 | 275 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/cli | 6 | 270 | 93 | 109 | 472 |
| music_kraken/cli (Files) | 1 | 2 | 0 | 0 | 2 |
| music_kraken/cli/download | 2 | 199 | 86 | 79 | 364 |
| music_kraken/cli/options | 3 | 69 | 7 | 30 | 106 |
| music_kraken/cli/options (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/cli/options/invidious | 2 | 66 | 7 | 29 | 102 |
| music_kraken/connection | 3 | 196 | 4 | 45 | 245 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/download | 5 | 323 | 32 | 143 | 498 |
| music_kraken/objects | 11 | 1,226 | 338 | 376 | 1,940 |
| music_kraken/pages | 6 | 1,547 | 457 | 484 | 2,488 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/utils | 30 | 1,095 | 126 | 343 | 1,564 |
| music_kraken/utils (Files) | 7 | 146 | 30 | 61 | 237 |
| music_kraken/utils/config | 8 | 651 | 72 | 177 | 900 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 3 | 23 | 8 | 12 | 43 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 5 | 161 | 0 | 50 | 211 |
| tests | 5 | 287 | 18 | 79 | 384 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@ -1,132 +0,0 @@
Date : 2023-06-14 07:47:51
Directory : /home/lars/Projects/music-downloader/src
Total : 83 files, 5827 codes, 1152 comments, 1825 blanks, all 8804 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
| Python | 81 | 5,620 | 1,152 | 1,805 | 8,577 |
| SQLite | 2 | 207 | 0 | 20 | 227 |
+----------+------------+------------+------------+------------+------------+
Directories
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 83 | 5,827 | 1,152 | 1,825 | 8,804 |
| . (Files) | 7 | 148 | 0 | 44 | 192 |
| music_kraken | 71 | 5,392 | 1,134 | 1,702 | 8,228 |
| music_kraken (Files) | 2 | 210 | 9 | 56 | 275 |
| music_kraken/audio | 3 | 92 | 4 | 35 | 131 |
| music_kraken/cli | 6 | 270 | 93 | 109 | 472 |
| music_kraken/cli (Files) | 1 | 2 | 0 | 0 | 2 |
| music_kraken/cli/download | 2 | 199 | 86 | 79 | 364 |
| music_kraken/cli/options | 3 | 69 | 7 | 30 | 106 |
| music_kraken/cli/options (Files) | 1 | 3 | 0 | 1 | 4 |
| music_kraken/cli/options/invidious | 2 | 66 | 7 | 29 | 102 |
| music_kraken/connection | 3 | 196 | 4 | 45 | 245 |
| music_kraken/database | 3 | 226 | 71 | 91 | 388 |
| music_kraken/download | 5 | 323 | 32 | 143 | 498 |
| music_kraken/objects | 11 | 1,226 | 338 | 376 | 1,940 |
| music_kraken/pages | 6 | 1,547 | 457 | 484 | 2,488 |
| music_kraken/static_files | 2 | 207 | 0 | 20 | 227 |
| music_kraken/utils | 30 | 1,095 | 126 | 343 | 1,564 |
| music_kraken/utils (Files) | 7 | 146 | 30 | 61 | 237 |
| music_kraken/utils/config | 8 | 651 | 72 | 177 | 900 |
| music_kraken/utils/enums | 3 | 56 | 7 | 14 | 77 |
| music_kraken/utils/exception | 3 | 23 | 8 | 12 | 43 |
| music_kraken/utils/path_manager | 4 | 58 | 9 | 29 | 96 |
| music_kraken/utils/support_classes | 5 | 161 | 0 | 50 | 211 |
| tests | 5 | 287 | 18 | 79 | 384 |
+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
| /home/lars/Projects/music-downloader/src/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/actual_donwload.py | Python | 16 | 0 | 6 | 22 |
| /home/lars/Projects/music-downloader/src/create_custom_objects.py | Python | 58 | 0 | 6 | 64 |
| /home/lars/Projects/music-downloader/src/metal_archives.py | Python | 30 | 0 | 12 | 42 |
| /home/lars/Projects/music-downloader/src/music_kraken/__init__.py | Python | 112 | 6 | 33 | 151 |
| /home/lars/Projects/music-downloader/src/music_kraken/__main__.py | Python | 98 | 3 | 23 | 124 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/__init__.py | Python | 7 | 0 | 3 | 10 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/codec.py | Python | 25 | 0 | 8 | 33 |
| /home/lars/Projects/music-downloader/src/music_kraken/audio/metadata.py | Python | 60 | 4 | 24 | 88 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/__init__.py | Python | 2 | 0 | 0 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/download/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/download/shell.py | Python | 199 | 86 | 78 | 363 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/__init__.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/cli/options/invidious/shell.py | Python | 66 | 7 | 28 | 101 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/connection.py | Python | 168 | 1 | 30 | 199 |
| /home/lars/Projects/music-downloader/src/music_kraken/connection/rotating.py | Python | 27 | 3 | 14 | 44 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/data_models.py | Python | 122 | 24 | 52 | 198 |
| /home/lars/Projects/music-downloader/src/music_kraken/database/database.py | Python | 104 | 47 | 38 | 189 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/multiple_options.py | Python | 69 | 0 | 31 | 100 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/page_attributes.py | Python | 67 | 1 | 29 | 97 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/results.py | Python | 62 | 7 | 26 | 95 |
| /home/lars/Projects/music-downloader/src/music_kraken/download/search.py | Python | 124 | 24 | 56 | 204 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/__init__.py | Python | 14 | 0 | 5 | 19 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/cache.py | Python | 37 | 56 | 18 | 111 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/collection.py | Python | 91 | 31 | 39 | 161 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/formatted_text.py | Python | 50 | 10 | 19 | 79 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/lyrics.py | Python | 25 | 0 | 7 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/metadata.py | Python | 272 | 62 | 63 | 397 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/option.py | Python | 28 | 0 | 13 | 41 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/parents.py | Python | 71 | 35 | 35 | 141 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/song.py | Python | 480 | 113 | 120 | 713 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/source.py | Python | 93 | 16 | 33 | 142 |
| /home/lars/Projects/music-downloader/src/music_kraken/objects/target.py | Python | 65 | 15 | 24 | 104 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/__init__.py | Python | 4 | 0 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/abstract.py | Python | 234 | 46 | 93 | 373 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/encyclopaedia_metallum.py | Python | 432 | 90 | 127 | 649 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/musify.py | Python | 576 | 275 | 166 | 1,017 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/preset.py | Python | 47 | 1 | 17 | 65 |
| /home/lars/Projects/music-downloader/src/music_kraken/pages/youtube.py | Python | 254 | 45 | 79 | 378 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/new_db.sql | SQLite | 72 | 0 | 10 | 82 |
| /home/lars/Projects/music-downloader/src/music_kraken/static_files/temp_database_structure.sql | SQLite | 135 | 0 | 10 | 145 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/__init__.py | Python | 2 | 1 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/__init__.py | Python | 7 | 0 | 4 | 11 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/audio.py | Python | 152 | 15 | 28 | 195 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/base_classes.py | Python | 136 | 35 | 61 | 232 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/config.py | Python | 92 | 16 | 30 | 138 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/connection.py | Python | 80 | 2 | 15 | 97 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/logging.py | Python | 104 | 4 | 17 | 125 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/misc.py | Python | 40 | 0 | 9 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/config/paths.py | Python | 40 | 0 | 13 | 53 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/album.py | Python | 16 | 6 | 5 | 27 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/enums/source.py | Python | 40 | 1 | 8 | 49 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/__init__.py | Python | 1 | 0 | 1 | 2 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/config.py | Python | 14 | 8 | 7 | 29 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/exception/download.py | Python | 8 | 0 | 4 | 12 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/functions.py | Python | 3 | 0 | 1 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/object_handeling.py | Python | 19 | 0 | 6 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/__init__.py | Python | 2 | 0 | 2 | 4 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/config_directory.py | Python | 4 | 0 | 4 | 8 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/locations.py | Python | 16 | 0 | 9 | 25 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/path_manager/music_directory.py | Python | 36 | 9 | 14 | 59 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/phonetic_compares.py | Python | 39 | 2 | 17 | 58 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/regex.py | Python | 1 | 0 | 2 | 3 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/shared.py | Python | 66 | 22 | 22 | 110 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/string_processing.py | Python | 16 | 5 | 11 | 32 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/__init__.py | Python | 4 | 0 | 1 | 5 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/default_target.py | Python | 56 | 0 | 15 | 71 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/download_result.py | Python | 69 | 0 | 21 | 90 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/query.py | Python | 24 | 0 | 9 | 33 |
| /home/lars/Projects/music-downloader/src/music_kraken/utils/support_classes/thread_classes.py | Python | 8 | 0 | 4 | 12 |
| /home/lars/Projects/music-downloader/src/music_kraken_cli.py | Python | 3 | 0 | 3 | 6 |
| /home/lars/Projects/music-downloader/src/music_kraken_gtk.py | Python | 3 | 0 | 2 | 5 |
| /home/lars/Projects/music-downloader/src/musify_search.py | Python | 38 | 0 | 14 | 52 |
| /home/lars/Projects/music-downloader/src/tests/__init__.py | Python | 0 | 0 | 1 | 1 |
| /home/lars/Projects/music-downloader/src/tests/conftest.py | Python | 3 | 1 | 2 | 6 |
| /home/lars/Projects/music-downloader/src/tests/test_building_objects.py | Python | 81 | 1 | 13 | 95 |
| /home/lars/Projects/music-downloader/src/tests/test_download.py | Python | 30 | 1 | 12 | 43 |
| /home/lars/Projects/music-downloader/src/tests/test_objects.py | Python | 173 | 15 | 51 | 239 |
| Total | | 5,827 | 1,152 | 1,825 | 8,804 |
+------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+

1
.env.example Normal file
View File

@ -0,0 +1 @@
STAGE=dev

2
.gitignore vendored
View File

@ -16,3 +16,5 @@ venv
.idea/aws.xml .idea/aws.xml
windows windows
.env

View File

@ -1,5 +1,6 @@
<component name="InspectionProjectProfileManager"> <component name="InspectionProjectProfileManager">
<settings> <settings>
<option name="PROJECT_PROFILE" value="Default" />
<option name="USE_PROJECT_PROFILE" value="false" /> <option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" /> <version value="1.0" />
</settings> </settings>

View File

@ -1,4 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.10 (music-downloader)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (music-downloader)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (music-downloader)" project-jdk-type="Python SDK" />
<component name="PythonCompatibilityInspectionAdvertiser">
<option name="version" value="3" />
</component>
</project> </project>

View File

@ -5,6 +5,7 @@
<module fileurl="file://$PROJECT_DIR$/.idea/music-downloader.iml" filepath="$PROJECT_DIR$/.idea/music-downloader.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/music-downloader.iml" filepath="$PROJECT_DIR$/.idea/music-downloader.iml" />
<module fileurl="file://$PROJECT_DIR$/../rythmbox-id3-lyrics-support/.idea/rythmbox-id3-lyrics-support.iml" filepath="$PROJECT_DIR$/../rythmbox-id3-lyrics-support/.idea/rythmbox-id3-lyrics-support.iml" /> <module fileurl="file://$PROJECT_DIR$/../rythmbox-id3-lyrics-support/.idea/rythmbox-id3-lyrics-support.iml" filepath="$PROJECT_DIR$/../rythmbox-id3-lyrics-support/.idea/rythmbox-id3-lyrics-support.iml" />
<module fileurl="file://$PROJECT_DIR$/../forks/sponsorblock.py/.idea/sponsorblock.py.iml" filepath="$PROJECT_DIR$/../forks/sponsorblock.py/.idea/sponsorblock.py.iml" /> <module fileurl="file://$PROJECT_DIR$/../forks/sponsorblock.py/.idea/sponsorblock.py.iml" filepath="$PROJECT_DIR$/../forks/sponsorblock.py/.idea/sponsorblock.py.iml" />
<module fileurl="file://$PROJECT_DIR$/../youtube-dl/.idea/youtube-dl.iml" filepath="$PROJECT_DIR$/../youtube-dl/.idea/youtube-dl.iml" />
</modules> </modules>
</component> </component>
</project> </project>

View File

@ -3,11 +3,13 @@
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/venv/lib/python3.10/site-packages" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/venv/lib/python3.10/site-packages" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="jdk" jdkName="Python 3.10 (music-downloader)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="rythmbox-id3-lyrics-support" /> <orderEntry type="module" module-name="rythmbox-id3-lyrics-support" />
<orderEntry type="module" module-name="sponsorblock.py" /> <orderEntry type="module" module-name="sponsorblock.py" />
<orderEntry type="module" module-name="youtube-dl" />
</component> </component>
</module> </module>

View File

@ -2,6 +2,6 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" /> <mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/../forks/sponsorblock.py" vcs="Git" /> <mapping directory="$PROJECT_DIR$/../youtube-dl" vcs="Git" />
</component> </component>
</project> </project>

View File

@ -14,5 +14,11 @@
"[python]": { "[python]": {
"editor.defaultFormatter": "ms-python.autopep8" "editor.defaultFormatter": "ms-python.autopep8"
}, },
"python.formatting.provider": "none" "python.formatting.provider": "none",
"cSpell.words": [
"Bandcamp",
"dotenv",
"levenshtein",
"OKBLUE"
]
} }

View File

@ -4,9 +4,10 @@
- [Music Kraken](#music-kraken) - [Music Kraken](#music-kraken)
- [Installation](#installation) - [Installation](#installation)
- [Dependencies](#dependencies) - [From source](#from-source)
- [Notes for WSL](#notes-for-wsl) - [Notes for WSL](#notes-for-wsl)
- [Quick-Guide](#quick-guide) - [Quick-Guide](#quick-guide)
- [Query](#query)
- [CONTRIBUTE](#contribute) - [CONTRIBUTE](#contribute)
- [Matrix Space](#matrix-space) - [Matrix Space](#matrix-space)
- [TODO till the next release](#todo-till-the-next-release) - [TODO till the next release](#todo-till-the-next-release)
@ -50,11 +51,6 @@ alias 🥺='sudo'
source ~/.bashrc source ~/.bashrc
music-kraken music-kraken
``` ```
### Dependencies
You will need to install these two programms.
- pandoc
### Notes for WSL ### Notes for WSL
@ -62,35 +58,30 @@ If you choose to run it in WSL, make sure ` ~/.local/bin` is added to your `$PAT
## Quick-Guide ## Quick-Guide
The **Genre** you define at the start is the folder, my programm will download the files into, AS WELL as the value of the ID3 genre field. The **Genre** you define at the start, is the folder my program will download the files into, as well as the value of the ID3 genre field.
When it drops you into the **shell** 2 main things are important: When it drops you into the **shell** 2 main things are important:
1. You search with `s: <query/url>` 1. You search with `s: <query/url>`
2. You choose an option with just the index number of the option 2. You choose an option with just the index number of the option
3. You download with `d: <options/url>`, where the options are comma seperated 3. You download with `d: <options/url>`, where the options are comma separated
4. You support me by making a pr, or starring my repo.
Trust me it WILL make sense, once you see it.
### Query ### Query
The syntax for the query is like really simple. The syntax for the query is really simple.
``` ```mk
> s: #a <any artist> > s: #a <any artist>
searches for the artist <any artist> searches for the artist <any artist>
> s: #a <any artist> #r <any releas> > s: #a <any artist> #r <any release>
searches for the release (album) <any release> by the artist <any artist> searches for the release (album) <any release> by the artist <any artist>
> s: #r <any release> Me #t <any track> > s: #r <any release> Me #t <any track>
searches for the track <any track> from the release <any relaese> searches for the track <any track> from the release <any relaese>
``` ```
For a more detailed guid of the downloading shell, see [here](documentation/shell.md). The escape character is as usual `\`.
LOVE YALL *(except nazis ;-;)*
--- ---
@ -100,18 +91,17 @@ I am happy about every pull request. To contribute look [here](contribute.md).
## Matrix Space ## Matrix Space
<img align="right" src="assets/element_logo.png" width=100> <img align="right" alt="music-kraken logo" src="assets/element_logo.png" width=100>
I decided against creating a discord server, due to piracy communities get often banned from discord. A good and free Alternative are Matrix Spaces. I reccomend the use of the Client [Element](https://element.io/download). It is completely open source. I decided against creating a discord server, due to various communities get often banned from discord. A good and free Alternative are Matrix Spaces. I recommend the use of the Client [Element](https://element.io/download). It is completely open source.
**Click [this link](https://matrix.to/#/#music-kraken:matrix.org) _([https://matrix.to/#/#music-kraken:matrix.org](https://matrix.to/#/#music-kraken:matrix.org))_ to join.** **Click [this invitation](https://matrix.to/#/#music-kraken:matrix.org) _([https://matrix.to/#/#music-kraken:matrix.org](https://matrix.to/#/#music-kraken:matrix.org))_ to join.**
## TODO till the next release ## TODO till the next release
> These Points will most likely be in the changelogs. > These Points will most likely be in the changelogs.
- [x] Update the Documentation of the new cli. - [x] Migrate away from pandoc, to a more lightweight alternative, that can be installed over PiPY.
- [ ] Migrate away from pandoc, to a more lightweight alternative, that can be installed over PiPY.
- [ ] Update the Documentation of the internal structure. _(could be pushed back one release)_ - [ ] Update the Documentation of the internal structure. _(could be pushed back one release)_
--- ---
@ -124,7 +114,7 @@ This application is $100\%$ centered around Data. Thus, the most important thing
- explanation of the [Data Model](#data-model) - explanation of the [Data Model](#data-model)
- how to use the [Data Objects](#data-objects) - how to use the [Data Objects](#data-objects)
- further Dokumentation of *hopefully* [most relevant classes](documentation/objects.md) - further Dokumentation of _hopefully_ [most relevant classes](documentation/objects.md)
- the [old implementation](documentation/old_implementation.md) - the [old implementation](documentation/old_implementation.md)
```mermaid ```mermaid

48
build Executable file
View File

@ -0,0 +1,48 @@
#!/bin/bash
test=false
version_bump="minor"
while getopts ":b:t" opt; do
case ${opt} in
b )
version_bump=$OPTARG
;;
t )
test=true
;;
\? )
echo "Invalid option: $OPTARG" 1>&2
exit 1
;;
: )
echo "Invalid option: $OPTARG requires an argument" 1>&2
exit 1
;;
esac
done
shift $((OPTIND -1))
# install dev dependencies
echo "installing dev dependencies..."
python3 -m pip install -r requirements-dev.txt
# hatch version ${version_bump}
# git add "music_kraken/__init__.py"
# git commit -m "bump: ${version_bump}"
# build the wheels
python3 -m build
# install the newest version
python3 -m pip install .
if [ "$test" = true ];
then
echo "just a test"
twine upload --repository testpypi dist/music_kraken*
python3 -m pip install -i https://test.pypi.org/simple/ music-kraken -U
exit
fi
twine upload dist/music_kraken*

View File

@ -1,71 +0,0 @@
#!/bin/bash
test=true
rm /tmp/music-downloader/*.db
rm /tmp/music-downloader/*.sql
version=$(cut -d@ -f1 version)
echo version: $version
git add .
git commit -am "ready for build $version"
git push
sudo python3 -m pip install -U twine wheel setuptools
python3 setup.py sdist bdist_wheel
sudo python3 -m pip uninstall music-kraken -y
python3 -m pip install dist/music-kraken-$version.tar.gz --user
music-kraken
if [ "$test" = true ];
then
echo "just a test"
twine upload --repository testpypi dist/music_kraken*
python3 -m pip install -i https://test.pypi.org/simple/ music-kraken -U
exit
fi
twine upload dist/music_kraken*
echo "compiling............"
mkdir -p dist/build_files
mkdir -p dist/compiled
pyinstaller --onefile src/music_kraken_cli.py --specpath dist/build_files --workpath dist/build_files --distpath dist/compiled
exit
# https://packaging.python.org/en/latest/tutorials/packaging-projects/
#echo "building............"
#echo "python3 -m pip install --upgrade build"
# python3 -m pip install --upgrade pip
# python3 -m pip install --upgrade build
#echo "python3 -m build"
# python3 -m build
# python3 setup.py sdist bdist_wheel
# python3 setup.py install --user
# echo "python3 -m pip install dist/music_kraken-1.2.2-py3-none-any.whl --user --force-reinstall"
# python3 -m pip install dist/music_kraken-1.2.2.tar.gz --user --force-reinstall
# music-kraken
# open /home/lars/.local/lib/python3.10/site-packages/music_kraken
# echo "uploading............"
#python3 -m pip install --upgrade twine
#twine upload dist/music_kraken*
# twine upload --repository testpypi dist/music_kraken*
exit
echo "pushing............"
git add .
git commit -am "new build and upload"
git push
echo "compiling............"
mkdir -p dist/build_files
mkdir -p dist/compiled
pyinstaller --onefile src/music_kraken_cli.py --specpath dist/build_files --workpath dist/build_files --distpath dist/compiled

View File

@ -0,0 +1,15 @@
import music_kraken
import logging
print("Setting logging-level to DEBUG")
logging.getLogger().setLevel(logging.DEBUG)
if __name__ == "__main__":
commands = [
"s: #a Toxoplasma",
"d: 16",
]
music_kraken.cli.download(genre="test", command_list=commands, process_metadata_anyway=True)
_ = "debug"

View File

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en">
<head>
<title>Music | Only Smile</title>
<meta name="description" content="
Only Smile.
Russia.
">
<link rel="apple-touch-icon" sizes="180x180" href="https://s4.bcbits.com/img/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://s4.bcbits.com/img/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://s4.bcbits.com/img/favicon/favicon-16x16.png">
<link rel="mask-icon" href="https://s4.bcbits.com/img/favicon/safari-pinned-tab.svg" color="#1da0c3">
<meta name="msapplication-TileColor" content="#603cba">
<meta name="theme-color" content="#ffffff">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="title" content="Only Smile">
<meta property="og:title" content="Only Smile">
<meta property="og:type" content="band">
<meta property="og:url" content="https://onlysmile.bandcamp.com">
<meta property="og:site_name" content="Only Smile">
<meta property="og:description" content="">
</head>
<body class="webkit has-menubar invertIconography " lang="en">
<div id="menubar-wrapper" class="header-rework-2018 ">
<!--- Just the search part and login icon etc. --->
</div>
<div id="centerWrapper">
<div id="propOpenWrapper">
<div id="pgBd" class="yui-skin-sam">
<div id="customHeaderWrapper">
<!--- The banner any artist can set --->
</div>
<div class="leftMiddleColumns">
<!--- The list of all albums. --->
<ol id="music-grid" data-edit-callback="/music_reorder" class="editable-grid music-grid columns-2 public">
<li data-item-id="album-4166209375" data-band-id="798628171" class="music-grid-item square first-four" data-bind="css: {'featured': featured()}">
<a href="/album/your-best-friend">
<div class="art">
<img src="https://f4.bcbits.com/img/a3009649372_16.jpg" alt="" />
</div>
<p class="title">
Your best friend
</p>
</a>
</li>
<li data-item-id="album-2060798800" data-band-id="798628171" class="music-grid-item square first-four" data-bind="css: {'featured': featured()}">
<a href="/album/few-words">
<div class="art">
<img src="https://f4.bcbits.com/img/a1197628604_16.jpg" alt="" />
</div>
<p class="title">
Few words...
</p>
</a>
</li>
</ol>
</div>
<div id="rightColumn" class="rightColumn music-page " itemscope itemtype="http://schema.org/MusicGroup">
<!--- Stuff about the artist --->
<div id="bio-container" data-bind="css: {'ko-ready': $data}">
<h3 class="title bio-label hiddenAccess">about</h3>
<p id="band-name-location">
<span class="title">Only Smile</span>
<span class="location secondaryText">Russia</span>
</p>
<ol id="band-links">
<li>
<a target="_blank" rel="nofollow ugc me" referrerpolicy="strict-origin-when-cross-origin" href="https://www.youtube.com/channel/UCZzqXSdk8wnl9qirJTCaANQ">
YouTube
</a>
</li>
</ol>
</div>
<p id="contact-tracker-data" data-band-id="798628171">
<a href="/contact?b=798628171&amp;n=Only%20Smile" title="Send an email to Only Smile">
Contact Only Smile
</a>
</p>
<p>
<a href="https://bandcamp.com/help/downloading?from=tralbum_downloading" target="_blank">
Streaming and
<span id="sidebar-contact-label-break"><br></span>
Download help
</a>
</p>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -19,7 +19,7 @@ Additionally it provides an **Interface** to:
### DatabaseObject.merge() ### DatabaseObject.merge()
To merge the data of two instances of the same type, the attributes defined in `DatabaseObject.COLLECTION_ATTRIBUTES` and `SIMPLE_ATTRIBUTES` are used. To merge the data of two instances of the same type, the attributes defined in `DatabaseObject.COLLECTION_STRING_ATTRIBUTES` and `SIMPLE_STRING_ATTRIBUTES` are used.
The simple attributes just get carried from the other instance, to the self instance. The simple attributes just get carried from the other instance, to the self instance.

View File

@ -10,7 +10,7 @@
> s: r: #a an Artist #r some random Release > s: r: #a an Artist #r some random Release
``` ```
Searches for an url, or an query Searches for an url, or a query
### Query Syntax ### Query Syntax
@ -33,6 +33,10 @@ To download something, you either need a direct link, or you need to have alread
> d: https://musify.club/release/some-random-release-183028492 > d: https://musify.club/release/some-random-release-183028492
``` ```
## Results
If options are printed in **bold** they can be downloaded. Else they may or maybe can't be downloaded
## Misc ## Misc
### Exit ### Exit

67
music_kraken/__init__.py Normal file
View File

@ -0,0 +1,67 @@
import logging
import gc
import sys
from pathlib import Path
from rich.logging import RichHandler
from rich.console import Console
from .utils.shared import DEBUG, DEBUG_LOGGING
from .utils.config import logging_settings, main_settings, read_config
__version__ = "1.13.0"
read_config()
console: Console = Console()
def init_logging():
log_file = main_settings['log_file']
if log_file.is_file():
last_log_file = Path(log_file.parent, "prev." + log_file.name)
with log_file.open("r", encoding="utf-8") as current_file:
with last_log_file.open("w", encoding="utf-8") as last_file:
last_file.write(current_file.read())
rich_handler = RichHandler(rich_tracebacks=True, console=console)
rich_handler.setLevel(logging_settings['log_level'] if not DEBUG_LOGGING else logging.DEBUG)
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
# configure logger default
logging.basicConfig(
level=logging.DEBUG,
format=logging_settings['logging_format'],
datefmt="%Y-%m-%d %H:%M:%S",
handlers=[
file_handler,
rich_handler,
]
)
init_logging()
from . import cli
if DEBUG:
sys.setrecursionlimit(100)
if main_settings['modify_gc']:
"""
At the start I modify the garbage collector to run a bit fewer times.
This should increase speed:
https://mkennedy.codes/posts/python-gc-settings-change-this-and-make-your-app-go-20pc-faster/
"""
# Clean up what might be garbage so far.
gc.collect(2)
allocs, gen1, gen2 = gc.get_threshold()
allocs = 50_000 # Start the GC sequence every 50K not 700 allocations.
gen1 = gen1 * 2
gen2 = gen2 * 2
gc.set_threshold(allocs, gen1, gen2)

View File

@ -79,6 +79,18 @@ def cli():
action="store_true" action="store_true"
) )
parser.add_argument(
"--clear-cache",
help="Deletes the cache.",
action="store_true"
)
parser.add_argument(
"--clean-cache",
help="Deletes the outdated cache. (all expired cached files, and not indexed files)",
action="store_true"
)
arguments = parser.parse_args() arguments = parser.parse_args()
if arguments.verbose or arguments.test: if arguments.verbose or arguments.test:
@ -91,8 +103,13 @@ def cli():
from .utils import shared from .utils import shared
if arguments.r: if arguments.r:
from .utils.config import write_config import os
write_config()
for file in shared.CONFIG_DIRECTORY.iterdir():
if file.is_file():
print(f"Deleting {file}....")
file.unlink()
read_config()
exit() exit()
@ -110,6 +127,14 @@ def cli():
if arguments.frontend: if arguments.frontend:
cli.set_frontend(silent=False) cli.set_frontend(silent=False)
if arguments.clear_cache:
from .cli.options import cache
cache.clear_cache()
if arguments.clean_cache:
from .cli.options import cache
cache.clean_cache()
# getting the genre # getting the genre
genre: str = arguments.genre genre: str = arguments.genre
if arguments.test: if arguments.test:

View File

@ -1,3 +1,4 @@
from pathlib import Path
from typing import List, Tuple from typing import List, Tuple
from tqdm import tqdm from tqdm import tqdm
from ffmpeg_progress_yield import FfmpegProgress from ffmpeg_progress_yield import FfmpegProgress
@ -19,8 +20,7 @@ def correct_codec(target: Target, bitrate_kb: int = main_settings["bitrate"], au
bitrate_b = int(bitrate_kb / 1024) bitrate_b = int(bitrate_kb / 1024)
output_target = Target( output_target = Target(
path=target._path, file_path=Path(str(target.file_path) + "." + audio_format)
file=str(target._file) + "." + audio_format
) )
# get the select thingie # get the select thingie

View File

@ -1,7 +1,6 @@
from ..utils import cli_function from ..utils import cli_function
from ...utils.path_manager import LOCATIONS from ...utils.path_manager import LOCATIONS
from ...utils import shared
from ...utils.config import main_settings from ...utils.config import main_settings
@ -9,9 +8,11 @@ def all_paths():
return { return {
"Temp dir": main_settings["temp_directory"], "Temp dir": main_settings["temp_directory"],
"Music dir": main_settings["music_directory"], "Music dir": main_settings["music_directory"],
"Log file": main_settings["log_file"],
"Conf dir": LOCATIONS.CONFIG_DIRECTORY, "Conf dir": LOCATIONS.CONFIG_DIRECTORY,
"Conf file": LOCATIONS.CONFIG_FILE,
"logging file": main_settings["log_file"],
"FFMPEG bin": main_settings["ffmpeg_binary"], "FFMPEG bin": main_settings["ffmpeg_binary"],
"Cache Dir": main_settings["cache_directory"],
} }

View File

@ -1,3 +1,4 @@
import random
from typing import Set, Type, Dict, List from typing import Set, Type, Dict, List
from pathlib import Path from pathlib import Path
import re import re
@ -6,16 +7,17 @@ from .utils import cli_function
from .options.first_config import initial_config from .options.first_config import initial_config
from ..utils.config import write_config, main_settings from ..utils.config import write_config, main_settings
from ..utils.regex import URL_PATTERN from ..utils.shared import URL_PATTERN
from ..utils.string_processing import fit_to_file_system from ..utils.string_processing import fit_to_file_system
from ..utils.support_classes import Query, DownloadResult from ..utils.support_classes.query import Query
from ..utils.support_classes.download_result import DownloadResult
from ..utils.exception.download import UrlNotFoundException from ..utils.exception.download import UrlNotFoundException
from ..utils.enums.colors import BColors
from ..download.results import Results, Option, PageResults from ..download.results import Results, Option, PageResults
from ..download.page_attributes import Pages from ..download.page_attributes import Pages
from ..pages import Page from ..pages import Page
from ..objects import Song, Album, Artist, DatabaseObject from ..objects import Song, Album, Artist, DatabaseObject
""" """
This is the implementation of the Shell This is the implementation of the Shell
@ -106,6 +108,7 @@ def get_existing_genre() -> List[str]:
return existing_genres return existing_genres
def get_genre(): def get_genre():
existing_genres = get_existing_genre() existing_genres = get_existing_genre()
for i, genre_option in enumerate(existing_genres): for i, genre_option in enumerate(existing_genres):
@ -132,11 +135,10 @@ def get_genre():
def help_message(): def help_message():
print() print()
print(main_settings["happy_messages"]) print(random.choice(main_settings["happy_messages"]))
print() print()
class Downloader: class Downloader:
def __init__( def __init__(
self, self,
@ -164,7 +166,6 @@ class Downloader:
print(f"Downloading to: \"{self.genre}\"") print(f"Downloading to: \"{self.genre}\"")
print() print()
def print_current_options(self): def print_current_options(self):
self.page_dict = dict() self.page_dict = dict()
@ -173,10 +174,12 @@ class Downloader:
page_count = 0 page_count = 0
for option in self.current_results.formated_generator(max_items_per_page=self.max_displayed_options): for option in self.current_results.formated_generator(max_items_per_page=self.max_displayed_options):
if isinstance(option, Option): if isinstance(option, Option):
print(f"{option.index:0{self.option_digits}} {option.music_object.option_string}") color = BColors.BOLD.value if self.pages.is_downloadable(option.music_object) else BColors.GREY.value
print(f"{color}{option.index:0{self.option_digits}} {option.music_object.option_string}{BColors.ENDC.value}")
else: else:
prefix = ALPHABET[page_count % len(ALPHABET)] prefix = ALPHABET[page_count % len(ALPHABET)]
print(f"({prefix}) ------------------------{option.__name__:{PAGE_NAME_FILL}<{MAX_PAGE_LEN}}------------") print(
f"{BColors.HEADER.value}({prefix}) ------------------------{option.__name__:{PAGE_NAME_FILL}<{MAX_PAGE_LEN}}------------{BColors.ENDC.value}")
self.page_dict[prefix] = option self.page_dict[prefix] = option
self.page_dict[option.__name__] = option self.page_dict[option.__name__] = option
@ -284,7 +287,6 @@ class Downloader:
if latest_key is not None: if latest_key is not None:
key_text[latest_key] = new_text key_text[latest_key] = new_text
parsed_query: Query = self._process_parsed(key_text, query) parsed_query: Query = self._process_parsed(key_text, query)
self.set_current_options(self.pages.search(parsed_query)) self.set_current_options(self.pages.search(parsed_query))
@ -294,9 +296,6 @@ class Downloader:
page: Type[Page] page: Type[Page]
music_object: DatabaseObject music_object: DatabaseObject
if self.current_results is not None:
self.current_results.delete_details(index)
try: try:
page, music_object = self.current_results.get_music_object_by_index(index) page, music_object = self.current_results.get_music_object_by_index(index)
except KeyError: except KeyError:
@ -307,11 +306,12 @@ class Downloader:
self.pages.fetch_details(music_object) self.pages.fetch_details(music_object)
print(music_object)
print(music_object.options)
self.set_current_options(PageResults(page, music_object.options)) self.set_current_options(PageResults(page, music_object.options))
self.print_current_options() self.print_current_options()
def download(self, download_str: str, download_all: bool = False) -> bool: def download(self, download_str: str, download_all: bool = False) -> bool:
to_download: List[DatabaseObject] = [] to_download: List[DatabaseObject] = []
@ -340,7 +340,8 @@ class Downloader:
_result_map: Dict[DatabaseObject, DownloadResult] = dict() _result_map: Dict[DatabaseObject, DownloadResult] = dict()
for database_object in to_download: for database_object in to_download:
r = self.pages.download(music_object=database_object, genre=self.genre, download_all=download_all, process_metadata_anyway=self.process_metadata_anyway) r = self.pages.download(music_object=database_object, genre=self.genre, download_all=download_all,
process_metadata_anyway=self.process_metadata_anyway)
_result_map[database_object] = r _result_map[database_object] = r
for music_object, result in _result_map.items(): for music_object, result in _result_map.items():
@ -378,7 +379,7 @@ class Downloader:
return False return False
if processed_input != "help": if processed_input != "help":
print("Invalid input.") print(f"{BColors.WARNING.value}Invalid input.{BColors.ENDC.value}")
help_message() help_message()
return False return False
@ -387,6 +388,7 @@ class Downloader:
if self.process_input(input("> ")): if self.process_input(input("> ")):
return return
@cli_function @cli_function
def download( def download(
genre: str = None, genre: str = None,
@ -400,9 +402,9 @@ def download(
if code == 0: if code == 0:
main_settings["hasnt_yet_started"] = False main_settings["hasnt_yet_started"] = False
write_config() write_config()
print("Restart the programm to use it.") print(f"{BColors.OKGREEN.value}Restart the programm to use it.{BColors.ENDC.value}")
else: else:
print("Something went wrong configuring.") print(f"{BColors.FAIL.value}Something went wrong configuring.{BColors.ENDC.value}")
shell = Downloader(genre=genre, process_metadata_anyway=process_metadata_anyway) shell = Downloader(genre=genre, process_metadata_anyway=process_metadata_anyway)

View File

@ -0,0 +1,26 @@
from logging import getLogger
from ..utils import cli_function
from ...connection.cache import Cache
@cli_function
def clear_cache():
"""
Deletes the cache.
:return:
"""
Cache("main", getLogger("cache")).clear()
print("Cleared cache")
@cli_function
def clean_cache():
"""
Deletes the outdated cache. (all expired cached files, and not indexed files)
:return:
"""
Cache("main", getLogger("cache")).clean()
print("Cleaned cache")

View File

@ -0,0 +1,200 @@
import json
from pathlib import Path
from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import List, Optional
from functools import lru_cache
import logging
from ..utils.config import main_settings
@dataclass
class CacheAttribute:
module: str
name: str
created: datetime
expires: datetime
@property
def id(self):
return f"{self.module}_{self.name}"
@property
def is_valid(self):
if isinstance(self.expires, str):
self.expires = datetime.fromisoformat(self.expires)
return datetime.now() < self.expires
def __eq__(self, other):
return self.__dict__ == other.__dict__
class Cache:
def __init__(self, module: str, logger: logging.Logger):
self.module = module
self.logger: logging.Logger = logger
self._dir = main_settings["cache_directory"]
self.index = Path(self._dir, "index.json")
if not self.index.is_file():
with self.index.open("w") as i:
i.write(json.dumps([]))
self.cached_attributes: List[CacheAttribute] = []
self._id_to_attribute = {}
self._time_fields = {"created", "expires"}
with self.index.open("r") as i:
for c in json.loads(i.read()):
for key in self._time_fields:
c[key] = datetime.fromisoformat(c[key])
ca = CacheAttribute(**c)
self.cached_attributes.append(ca)
self._id_to_attribute[ca.id] = ca
@lru_cache()
def _init_module(self, module: str) -> Path:
"""
:param module:
:return: the module path
"""
r = Path(self._dir, module)
r.mkdir(exist_ok=True)
return r
def _write_index(self, indent: int = 4):
_json = []
for c in self.cached_attributes:
d = c.__dict__
for key in self._time_fields:
d[key] = d[key].isoformat()
_json.append(d)
with self.index.open("w") as f:
f.write(json.dumps(_json, indent=indent))
def _write_attribute(self, cached_attribute: CacheAttribute, write: bool = True) -> bool:
existing_attribute: Optional[CacheAttribute] = self._id_to_attribute.get(cached_attribute.id)
if existing_attribute is not None:
# the attribute exists
if existing_attribute == cached_attribute:
return True
if existing_attribute.is_valid:
return False
existing_attribute.__dict__ = cached_attribute.__dict__
else:
self.cached_attributes.append(cached_attribute)
self._id_to_attribute[cached_attribute.id] = cached_attribute
if write:
self._write_index()
return True
def set(self, content: bytes, name: str, expires_in: float = 10, module: str = ""):
"""
:param content:
:param module:
:param name:
:param expires_in: the unit is days
:return:
"""
if name == "":
return
module = self.module if module == "" else module
module_path = self._init_module(module)
cache_attribute = CacheAttribute(
module=module,
name=name,
created=datetime.now(),
expires=datetime.now() + timedelta(days=expires_in),
)
self._write_attribute(cache_attribute)
cache_path = Path(module_path, name)
with cache_path.open("wb") as content_file:
self.logger.debug(f"writing cache to {cache_path}")
content_file.write(content)
def get(self, name: str) -> Optional[bytes]:
path = Path(self._dir, self.module, name)
if not path.is_file():
return None
# check if it is outdated
existing_attribute: CacheAttribute = self._id_to_attribute[f"{self.module}_{name}"]
if not existing_attribute.is_valid:
return
with path.open("rb") as f:
return f.read()
def clean(self):
keep = set()
for ca in self.cached_attributes.copy():
if ca.name == "":
continue
file = Path(self._dir, ca.module, ca.name)
if not ca.is_valid:
self.logger.debug(f"deleting cache {ca.id}")
file.unlink()
self.cached_attributes.remove(ca)
del self._id_to_attribute[ca.id]
else:
keep.add(file)
# iterate through every module (folder)
for module_path in self._dir.iterdir():
if not module_path.is_dir():
continue
# delete all files not in keep
for path in module_path.iterdir():
if path not in keep:
self.logger.info(f"Deleting cache {path}")
path.unlink()
# delete all empty directories
for path in module_path.iterdir():
if path.is_dir() and not list(path.iterdir()):
self.logger.debug(f"Deleting cache directory {path}")
path.rmdir()
self._write_index()
def clear(self):
"""
delete every file in the cache directory
:return:
"""
for path in self._dir.iterdir():
if path.is_dir():
for file in path.iterdir():
file.unlink()
path.rmdir()
else:
path.unlink()
self.cached_attributes.clear()
self._id_to_attribute.clear()
self._write_index()
def __repr__(self):
return f"<Cache {self.module}>"

View File

@ -1,16 +1,23 @@
import time from __future__ import annotations
from typing import List, Dict, Callable, Optional, Set
from urllib.parse import urlparse, urlunsplit, ParseResult
import logging
import logging
import threading import threading
import time
from typing import List, Dict, Optional, Set
from urllib.parse import urlparse, urlunsplit, ParseResult
import copy
import inspect
import requests import requests
import responses
from tqdm import tqdm from tqdm import tqdm
from .cache import Cache
from .rotating import RotatingProxy from .rotating import RotatingProxy
from ..utils.config import main_settings
from ..utils.support_classes import DownloadResult
from ..objects import Target from ..objects import Target
from ..utils.config import main_settings
from ..utils.support_classes.download_result import DownloadResult
from ..utils.hacking import merge_args
class Connection: class Connection:
@ -18,7 +25,7 @@ class Connection:
self, self,
host: str, host: str,
proxies: List[dict] = None, proxies: List[dict] = None,
tries: int = (len(main_settings["proxies"]) + 1) * 4, tries: int = (len(main_settings["proxies"]) + 1) * main_settings["tries_per_proxy"],
timeout: int = 7, timeout: int = 7,
logger: logging.Logger = logging.getLogger("connection"), logger: logging.Logger = logging.getLogger("connection"),
header_values: Dict[str, str] = None, header_values: Dict[str, str] = None,
@ -26,13 +33,16 @@ class Connection:
semantic_not_found: bool = True, semantic_not_found: bool = True,
sleep_after_404: float = 0.0, sleep_after_404: float = 0.0,
heartbeat_interval=0, heartbeat_interval=0,
module: str = "general",
cache_expiring_duration: float = 10
): ):
if proxies is None: if proxies is None:
proxies = main_settings["proxies"] proxies = main_settings["proxies"]
if header_values is None:
header_values = dict()
self.HEADER_VALUES = header_values self.cache: Cache = Cache(module=module, logger=logger)
self.cache_expiring_duration = cache_expiring_duration
self.HEADER_VALUES = dict() if header_values is None else header_values
self.LOGGER = logger self.LOGGER = logger
self.HOST = urlparse(host) self.HOST = urlparse(host)
@ -48,15 +58,10 @@ class Connection:
self.session.headers = self.get_header(**self.HEADER_VALUES) self.session.headers = self.get_header(**self.HEADER_VALUES)
self.session.proxies = self.rotating_proxy.current_proxy self.session.proxies = self.rotating_proxy.current_proxy
self.session_is_occupied: bool = False
self.heartbeat_thread = None self.heartbeat_thread = None
self.heartbeat_interval = heartbeat_interval self.heartbeat_interval = heartbeat_interval
@property self.lock: bool = False
def user_agent(self) -> str:
return self.session.headers.get("user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36")
def start_heartbeat(self): def start_heartbeat(self):
if self.heartbeat_interval <= 0: if self.heartbeat_interval <= 0:
@ -66,27 +71,21 @@ class Connection:
self.heartbeat_thread.start() self.heartbeat_thread.start()
def heartbeat_failed(self): def heartbeat_failed(self):
self.LOGGER.warning(f"I just died... (The heartbeat failed)") self.LOGGER.warning(f"The hearth couldn't beat.")
def heartbeat(self): def heartbeat(self):
# Your code to send heartbeat requests goes here # Your code to send heartbeat requests goes here
print("the hearth is beating, but it needs to be implemented ;-;\nFuck youuuu for setting heartbeat in the constructor to true, but not implementing the method Connection.hearbeat()") raise NotImplementedError("please implement the heartbeat function.")
def _heartbeat_loop(self, interval: float): def _heartbeat_loop(self, interval: float):
def heartbeat_wrapper(): def heartbeat_wrapper():
self.session_is_occupied = True self.LOGGER.debug(f"The hearth is beating.")
self.LOGGER.debug(f"I am living. (sending a heartbeat)")
self.heartbeat() self.heartbeat()
self.LOGGER.debug(f"finished the heartbeat")
self.session_is_occupied = False
while True: while True:
heartbeat_wrapper() heartbeat_wrapper()
time.sleep(interval) time.sleep(interval)
def base_url(self, url: ParseResult = None): def base_url(self, url: ParseResult = None):
if url is None: if url is None:
url = self.HOST url = self.HOST
@ -95,10 +94,12 @@ class Connection:
def get_header(self, **header_values) -> Dict[str, str]: def get_header(self, **header_values) -> Dict[str, str]:
return { return {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36", "user-agent": main_settings["user_agent"],
"User-Agent": main_settings["user_agent"],
"Connection": "keep-alive", "Connection": "keep-alive",
# "Host": self.HOST.netloc, "Host": self.HOST.netloc,
"Referer": self.base_url(), "Referer": self.base_url(),
"Accept-Language": main_settings["language"],
**header_values **header_values
} }
@ -111,28 +112,76 @@ class Connection:
refer_from_origin: bool, refer_from_origin: bool,
url: ParseResult url: ParseResult
) -> Dict[str, str]: ) -> Dict[str, str]:
if headers is None: headers = self.get_header(**(headers or {}))
headers = dict()
if not refer_from_origin: if not refer_from_origin:
headers["Referer"] = self.base_url(url=url) headers["Referer"] = self.base_url(url=url)
return headers return headers
def _request( def save(self, r: requests.Response, name: str, error: bool = False, **kwargs):
n_kwargs = {}
if error:
n_kwargs["module"] = "failed_requests"
self.cache.set(r.content, name, expires_in=kwargs.get("expires_in", self.cache_expiring_duration), **n_kwargs)
def request(
self, self,
request: Callable,
try_count: int,
accepted_response_codes: set,
url: str, url: str,
timeout: float, timeout: float = None,
headers: dict, headers: Optional[dict] = None,
try_count: int = 0,
accepted_response_codes: set = None,
refer_from_origin: bool = True, refer_from_origin: bool = True,
raw_url: bool = False, raw_url: bool = False,
raw_headers: bool = False,
sleep_after_404: float = None, sleep_after_404: float = None,
is_heartbeat: bool = False, is_heartbeat: bool = False,
disable_cache: bool = None,
method: str = None,
name: str = "",
**kwargs **kwargs
) -> Optional[requests.Response]: ) -> Optional[requests.Response]:
if method is None:
raise AttributeError("method is not set.")
method = method.upper()
headers = dict() if headers is None else headers
disable_cache = headers.get("Cache-Control", "").lower() == "no-cache" if disable_cache is None else disable_cache
accepted_response_codes = self.ACCEPTED_RESPONSE_CODES if accepted_response_codes is None else accepted_response_codes
current_kwargs = copy.copy(locals())
current_kwargs.pop("kwargs")
current_kwargs.update(**kwargs)
parsed_url = urlparse(url)
if not raw_headers:
_headers = copy.copy(self.HEADER_VALUES)
_headers.update(headers)
headers = self._update_headers(
headers=_headers,
refer_from_origin=refer_from_origin,
url=parsed_url
)
else:
headers = headers or {}
request_url = parsed_url.geturl() if not raw_url else url
if name != "" and not disable_cache:
cached = self.cache.get(name)
if cached is not None:
with responses.RequestsMock() as resp:
resp.add(
method=method,
url=request_url,
body=cached,
)
return requests.request(method=method, url=url, timeout=timeout, headers=headers, **kwargs)
if sleep_after_404 is None: if sleep_after_404 is None:
sleep_after_404 = self.sleep_after_404 sleep_after_404 = self.sleep_after_404
if try_count >= self.TRIES: if try_count >= self.TRIES:
@ -141,32 +190,27 @@ class Connection:
if timeout is None: if timeout is None:
timeout = self.TIMEOUT timeout = self.TIMEOUT
parsed_url = urlparse(url) r = None
headers = self._update_headers(
headers=headers,
refer_from_origin=refer_from_origin,
url=parsed_url
)
request_url = parsed_url.geturl() if not raw_url else url
connection_failed = False connection_failed = False
try: try:
if self.session_is_occupied and not is_heartbeat: if self.lock:
self.LOGGER.info(f"Waiting for the heartbeat to finish.") self.LOGGER.info(f"Waiting for the heartbeat to finish.")
while self.session_is_occupied and not is_heartbeat: while self.lock and not is_heartbeat:
pass pass
r: requests.Response = request(request_url, timeout=timeout, headers=headers, **kwargs) self.lock = True
r: requests.Response = requests.request(method=method, url=url, timeout=timeout, headers=headers, **kwargs)
if r.status_code in accepted_response_codes: if r.status_code in accepted_response_codes:
if not disable_cache:
self.save(r, name, **kwargs)
return r return r
if self.SEMANTIC_NOT_FOUND and r.status_code == 404: if self.SEMANTIC_NOT_FOUND and r.status_code == 404:
self.LOGGER.warning(f"Couldn't find url (404): {request_url}") self.LOGGER.warning(f"Couldn't find url (404): {request_url}")
return None return None
# the server rejected the request, or the internet is lacking
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
self.LOGGER.warning(f"Request timed out at \"{request_url}\": ({try_count}-{self.TRIES})") self.LOGGER.warning(f"Request timed out at \"{request_url}\": ({try_count}-{self.TRIES})")
connection_failed = True connection_failed = True
@ -174,130 +218,89 @@ class Connection:
self.LOGGER.warning(f"Couldn't connect to \"{request_url}\": ({try_count}-{self.TRIES})") self.LOGGER.warning(f"Couldn't connect to \"{request_url}\": ({try_count}-{self.TRIES})")
connection_failed = True connection_failed = True
# this is important for thread safety
finally:
self.lock = False
if not connection_failed: if not connection_failed:
self.LOGGER.warning(f"{self.HOST.netloc} responded wit {r.status_code} " self.LOGGER.warning(f"{self.HOST.netloc} responded wit {r.status_code} at {url}. ({try_count}-{self.TRIES})")
f"at {url}. ({try_count}-{self.TRIES})") if r is not None:
self.LOGGER.debug("request headers:\n\t"+ "\n\t".join(f"{k}\t=\t{v}" for k, v in r.request.headers.items()))
self.LOGGER.debug("response headers:\n\t"+ "\n\t".join(f"{k}\t=\t{v}" for k, v in r.headers.items()))
self.LOGGER.debug(r.content) self.LOGGER.debug(r.content)
if name != "":
self.save(r, name, error=True, **kwargs)
if sleep_after_404 != 0: if sleep_after_404 != 0:
self.LOGGER.warning(f"Waiting for {sleep_after_404} seconds.") self.LOGGER.warning(f"Waiting for {sleep_after_404} seconds.")
time.sleep(sleep_after_404) time.sleep(sleep_after_404)
self.rotate() self.rotate()
if self.heartbeat_interval > 0 and self.heartbeat_thread is None: current_kwargs["try_count"] = current_kwargs.get("try_count", 0) + 1
self.start_heartbeat() return Connection.request(**current_kwargs)
return self._request( @merge_args(request)
request=request, def get(self, *args, **kwargs) -> Optional[requests.Response]:
try_count=try_count+1, return self.request(
accepted_response_codes=accepted_response_codes, *args,
url=url, method="GET",
timeout=timeout,
headers=headers,
sleep_after_404=sleep_after_404,
is_heartbeat=is_heartbeat,
**kwargs **kwargs
) )
def get( @merge_args(request)
self,
url: str,
refer_from_origin: bool = True,
stream: bool = False,
accepted_response_codes: set = None,
timeout: float = None,
headers: dict = None,
raw_url: bool = False,
**kwargs
) -> Optional[requests.Response]:
if accepted_response_codes is None:
accepted_response_codes = self.ACCEPTED_RESPONSE_CODES
r = self._request(
request=self.session.get,
try_count=0,
accepted_response_codes=accepted_response_codes,
url=url,
timeout=timeout,
headers=headers,
raw_url=raw_url,
refer_from_origin=refer_from_origin,
stream=stream,
**kwargs
)
if r is None:
self.LOGGER.warning(f"Max attempts ({self.TRIES}) exceeded for: GET:{url}")
return r
def post( def post(
self, self,
url: str, *args,
json: dict = None, json: dict = None,
refer_from_origin: bool = True,
stream: bool = False,
accepted_response_codes: set = None,
timeout: float = None,
headers: dict = None,
raw_url: bool = False,
**kwargs **kwargs
) -> Optional[requests.Response]: ) -> Optional[requests.Response]:
r = self._request( r = self.request(
request=self.session.post, *args,
try_count=0, method="POST",
accepted_response_codes=accepted_response_codes or self.ACCEPTED_RESPONSE_CODES,
url=url,
timeout=timeout,
headers=headers,
refer_from_origin=refer_from_origin,
raw_url=raw_url,
json=json, json=json,
stream=stream,
**kwargs **kwargs
) )
if r is None: if r is None:
self.LOGGER.warning(f"Max attempts ({self.TRIES}) exceeded for: GET:{url}")
self.LOGGER.warning(f"payload: {json}") self.LOGGER.warning(f"payload: {json}")
return r return r
@merge_args(request)
def stream_into( def stream_into(
self, self,
url: str, url: str,
target: Target, target: Target,
description: str = "download", name: str = "download",
refer_from_origin: bool = True,
accepted_response_codes: set = None,
timeout: float = None,
headers: dict = None,
raw_url: bool = False,
chunk_size: int = main_settings["chunk_size"], chunk_size: int = main_settings["chunk_size"],
try_count: int = 0,
progress: int = 0, progress: int = 0,
method: str = "GET",
try_count: int = 0,
accepted_response_codes: set = None,
**kwargs **kwargs
) -> DownloadResult: ) -> DownloadResult:
accepted_response_codes = self.ACCEPTED_RESPONSE_CODES if accepted_response_codes is None else accepted_response_codes
stream_kwargs = copy.copy(locals())
stream_kwargs.update(stream_kwargs.pop("kwargs"))
if "description" in kwargs:
name = kwargs.pop("description")
if progress > 0: if progress > 0:
if headers is None: headers = dict() if headers is None else headers
headers = dict()
headers["Range"] = f"bytes={target.size}-" headers["Range"] = f"bytes={target.size}-"
if accepted_response_codes is None: r = self.request(
accepted_response_codes = self.ACCEPTED_RESPONSE_CODES
r = self._request(
request=self.session.get,
try_count=0,
accepted_response_codes=accepted_response_codes,
url=url, url=url,
timeout=timeout, name=name,
headers=headers, method=method,
raw_url=raw_url,
refer_from_origin=refer_from_origin,
stream=True, stream=True,
accepted_response_codes=accepted_response_codes,
**kwargs **kwargs
) )
if r is None: if r is None:
return DownloadResult(error_message=f"Could not establish connection to: {url}") return DownloadResult(error_message=f"Could not establish a stream from: {url}")
target.create_path() target.create_path()
total_size = int(r.headers.get('content-length')) total_size = int(r.headers.get('content-length'))
@ -311,41 +314,28 @@ class Connection:
> The internationally recommended unit symbol for the kilobyte is kB. > The internationally recommended unit symbol for the kilobyte is kB.
""" """
with tqdm(total=total_size-target.size, unit='B', unit_scale=True, unit_divisor=1024, desc=description) as t: with tqdm(total=total_size, initial=target.size, unit='B', unit_scale=True, unit_divisor=1024, desc=name) as t:
try: try:
for chunk in r.iter_content(chunk_size=chunk_size): for chunk in r.iter_content(chunk_size=chunk_size):
size = f.write(chunk) size = f.write(chunk)
progress += size progress += size
t.update(size) t.update(size)
except requests.exceptions.ConnectionError: except (requests.exceptions.ConnectionError, requests.exceptions.Timeout, requests.exceptions.ChunkedEncodingError):
if try_count >= self.TRIES: if try_count >= self.TRIES:
self.LOGGER.warning(f"Stream timed out at \"{url}\": to many retries, aborting.") self.LOGGER.warning(f"Stream timed out at \"{url}\": to many retries, aborting.")
return DownloadResult(error_message=f"Stream timed out from {url}, reducing the chunksize might help.") return DownloadResult(error_message=f"Stream timed out from {url}, reducing the chunk_size might help.")
self.LOGGER.warning(f"Stream timed out at \"{url}\": ({try_count}-{self.TRIES})") self.LOGGER.warning(f"Stream timed out at \"{url}\": ({try_count}-{self.TRIES})")
retry = True retry = True
try_count += 1
if total_size > progress: if total_size > progress:
retry = True retry = True
if retry: if retry:
self.LOGGER.warning(f"Retrying stream...") self.LOGGER.warning(f"Retrying stream...")
accepted_response_codes.add(206) accepted_response_codes.add(206)
return self.stream_into( return Connection.stream_into(**stream_kwargs)
url = url,
target = target,
description = description,
try_count=try_count+1,
progress=progress,
accepted_response_codes=accepted_response_codes,
timeout=timeout,
headers=headers,
raw_url=raw_url,
refer_from_origin=refer_from_origin,
chunk_size=chunk_size,
**kwargs
)
return DownloadResult() return DownloadResult()

View File

@ -5,24 +5,19 @@ from ..objects import DatabaseObject, Source
from ..utils.config import youtube_settings from ..utils.config import youtube_settings
from ..utils.enums.source import SourcePages from ..utils.enums.source import SourcePages
from ..utils.support_classes import Query, DownloadResult from ..utils.support_classes.download_result import DownloadResult
from ..utils.support_classes.query import Query
from ..utils.exception.download import UrlNotFoundException from ..utils.exception.download import UrlNotFoundException
from ..utils.shared import DEBUG_PAGES from ..utils.shared import DEBUG_PAGES
from ..pages import Page, EncyclopaediaMetallum, Musify, YouTube, YoutubeMusic, INDEPENDENT_DB_OBJECTS from ..pages import Page, EncyclopaediaMetallum, Musify, YouTube, YoutubeMusic, Bandcamp, INDEPENDENT_DB_OBJECTS
if DEBUG_PAGES:
DEBUGGING_PAGE = YoutubeMusic
print(f"Only downloading from page {DEBUGGING_PAGE}.")
ALL_PAGES = {DEBUGGING_PAGE}
AUDIO_PAGES = ALL_PAGES.union(AUDIO_PAGES)
ALL_PAGES: Set[Type[Page]] = { ALL_PAGES: Set[Type[Page]] = {
EncyclopaediaMetallum, EncyclopaediaMetallum,
Musify, Musify,
YoutubeMusic YoutubeMusic,
Bandcamp
} }
if youtube_settings["use_youtube_alongside_youtube_music"]: if youtube_settings["use_youtube_alongside_youtube_music"]:
@ -31,13 +26,22 @@ if youtube_settings["use_youtube_alongside_youtube_music"]:
AUDIO_PAGES: Set[Type[Page]] = { AUDIO_PAGES: Set[Type[Page]] = {
Musify, Musify,
YouTube, YouTube,
YoutubeMusic YoutubeMusic,
Bandcamp
} }
SHADY_PAGES: Set[Type[Page]] = { SHADY_PAGES: Set[Type[Page]] = {
Musify, Musify,
} }
if DEBUG_PAGES:
DEBUGGING_PAGE = Bandcamp
print(f"Only downloading from page {DEBUGGING_PAGE}.")
ALL_PAGES = {DEBUGGING_PAGE}
AUDIO_PAGES = ALL_PAGES.union(AUDIO_PAGES)
class Pages: class Pages:
def __init__(self, exclude_pages: Set[Type[Page]] = None, exclude_shady: bool = False) -> None: def __init__(self, exclude_pages: Set[Type[Page]] = None, exclude_shady: bool = False) -> None:
# initialize all page instances # initialize all page instances
@ -91,11 +95,26 @@ class Pages:
return music_object return music_object
def is_downloadable(self, music_object: DatabaseObject) -> bool:
_page_types = set(self._source_to_page)
for src in music_object.source_collection.source_pages:
if src in self._source_to_page:
_page_types.add(self._source_to_page[src])
audio_pages = self._audio_pages_set.intersection(_page_types)
return len(audio_pages) > 0
def download(self, music_object: DatabaseObject, genre: str, download_all: bool = False, process_metadata_anyway: bool = False) -> DownloadResult: def download(self, music_object: DatabaseObject, genre: str, download_all: bool = False, process_metadata_anyway: bool = False) -> DownloadResult:
if not isinstance(music_object, INDEPENDENT_DB_OBJECTS): if not isinstance(music_object, INDEPENDENT_DB_OBJECTS):
return DownloadResult(error_message=f"{type(music_object).__name__} can't be downloaded.") return DownloadResult(error_message=f"{type(music_object).__name__} can't be downloaded.")
_page_types = set(self._source_to_page[src] for src in music_object.source_collection.source_pages) self.fetch_details(music_object)
_page_types = set(self._source_to_page)
for src in music_object.source_collection.source_pages:
if src in self._source_to_page:
_page_types.add(self._source_to_page[src])
audio_pages = self._audio_pages_set.intersection(_page_types) audio_pages = self._audio_pages_set.intersection(_page_types)
for download_page in audio_pages: for download_page in audio_pages:

View File

@ -27,16 +27,9 @@ class Results:
self._page_by_index = dict() self._page_by_index = dict()
def get_music_object_by_index(self, index: int) -> Tuple[Type[Page], DatabaseObject]: def get_music_object_by_index(self, index: int) -> Tuple[Type[Page], DatabaseObject]:
# if this throws a key error, either the formated generator needs to be iterated, or the option doesn't exist. # if this throws a key error, either the formatted generator needs to be iterated, or the option doesn't exist.
return self._page_by_index[index], self._by_index[index] return self._page_by_index[index], self._by_index[index]
def delete_details(self, exclude_index: int):
for index, music_object in self._by_index.items():
if index == exclude_index:
continue
music_object.strip_details()
class SearchResults(Results): class SearchResults(Results):
def __init__( def __init__(

View File

@ -1,5 +1,5 @@
from typing_extensions import TypeVar
from .option import Options from .option import Options
from .parents import DatabaseObject
from .metadata import Metadata, Mapping as ID3Mapping, ID3Timestamp from .metadata import Metadata, Mapping as ID3Mapping, ID3Timestamp
@ -18,3 +18,8 @@ from .formatted_text import FormattedText
from .collection import Collection from .collection import Collection
from .country import Country from .country import Country
from .contact import Contact
from .parents import OuterProxy
DatabaseObject = TypeVar('T', bound=OuterProxy)

View File

@ -0,0 +1,331 @@
from __future__ import annotations
from collections import defaultdict
from typing import TypeVar, Generic, Dict, Optional, Iterable, List, Iterator, Tuple
from .parents import OuterProxy
T = TypeVar('T', bound=OuterProxy)
class Collection(Generic[T]):
__is_collection__ = True
_data: List[T]
_indexed_values: Dict[str, set]
_indexed_to_objects: Dict[any, list]
shallow_list = property(fget=lambda self: self.data)
def __init__(
self,
data: Optional[Iterable[T]] = None,
sync_on_append: Dict[str, Collection] = None,
contain_given_in_attribute: Dict[str, Collection] = None,
contain_attribute_in_given: Dict[str, Collection] = None,
append_object_to_attribute: Dict[str, T] = None
) -> None:
self._contains_ids = set()
self._data = []
self.parents: List[Collection[T]] = []
self.children: List[Collection[T]] = []
# List of collection attributes that should be modified on append
# Key: collection attribute (str) of appended element
# Value: main collection to sync to
self.contain_given_in_attribute: Dict[str, Collection] = contain_given_in_attribute or {}
self.contain_attribute_in_given: Dict[str, Collection] = contain_attribute_in_given or {}
self.append_object_to_attribute: Dict[str, T] = append_object_to_attribute or {}
self.contain_self_on_append: List[str] = []
self._indexed_values = defaultdict(set)
self._indexed_to_objects = defaultdict(list)
self.extend(data)
def _map_element(self, __object: T, from_map: bool = False):
if __object.id in self._contains_ids:
return
self._contains_ids.add(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
self._indexed_values[name].add(value)
self._indexed_to_objects[value].append(__object)
if not from_map:
for attribute, new_object in self.contain_given_in_attribute.items():
__object.__getattribute__(attribute).contain_collection_inside(new_object)
for attribute, new_object in self.contain_attribute_in_given.items():
new_object.contain_collection_inside(__object.__getattribute__(attribute))
for attribute, new_object in self.append_object_to_attribute.items():
__object.__getattribute__(attribute).append(new_object)
def _unmap_element(self, __object: T):
if __object.id in self._contains_ids:
self._contains_ids.remove(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
if value not in self._indexed_values[name]:
continue
try:
self._indexed_to_objects[value].remove(__object)
except ValueError:
continue
if not len(self._indexed_to_objects[value]):
self._indexed_values[name].remove(value)
def _contained_in_self(self, __object: T) -> bool:
if __object.id in self._contains_ids:
return True
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
return True
return False
def _contained_in_sub(self, __object: T, break_at_first: bool = True) -> List[Collection]:
"""
Gets the collection this object is found in, if it is found in any.
:param __object:
:param break_at_first:
:return:
"""
results = []
if self._contained_in_self(__object):
return [self]
for collection in self.children:
results.extend(collection._contained_in_sub(__object, break_at_first=break_at_first))
if break_at_first:
return results
return results
def _get_root_collections(self) -> List[Collection]:
if not len(self.parents):
return [self]
root_collections = []
for upper_collection in self.parents:
root_collections.extend(upper_collection._get_root_collections())
return root_collections
@property
def _is_root(self) -> bool:
return len(self.parents) <= 0
def _get_parents_of_multiple_contained_children(self, __object: T):
results = []
if len(self.children) < 2 or self._contained_in_self(__object):
return results
count = 0
for collection in self.children:
sub_results = collection._get_parents_of_multiple_contained_children(__object)
if len(sub_results) > 0:
count += 1
results.extend(sub_results)
if count >= 2:
results.append(self)
return results
def merge_into_self(self, __object: T, from_map: bool = False):
"""
1. find existing objects
2. merge into existing object
3. remap existing object
"""
if __object.id in self._contains_ids:
return
existing_object: T = None
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
existing_object = self._indexed_to_objects[value][0]
if existing_object.id == __object.id:
return None
break
if existing_object is None:
return None
existing_object.merge(__object)
# just a check if it really worked
if existing_object.id != __object.id:
raise ValueError("This should NEVER happen. Merging doesn't work.")
self._map_element(existing_object, from_map=from_map)
def contains(self, __object: T) -> bool:
return len(self._contained_in_sub(__object)) > 0
def _append(self, __object: T, from_map: bool = False):
print(self, __object)
self._map_element(__object, from_map=from_map)
self._data.append(__object)
def _find_object_in_self(self, __object: T) -> Optional[T]:
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
return self._indexed_to_objects[value][0]
def _find_object(self, __object: T) -> Tuple[Collection[T], Optional[T]]:
other_object = self._find_object_in_self(__object)
if other_object is not None:
return self, other_object
for c in self.children:
o, other_object = c._find_object(__object)
if other_object is not None:
return o, other_object
return self, None
def append(self, __object: Optional[T], already_is_parent: bool = False, from_map: bool = False):
"""
If an object, that represents the same entity exists in a relevant collection,
merge into this object. (and remap)
Else append to this collection.
:param __object:
:param already_is_parent:
:param from_map:
:return:
"""
if __object is None or __object.id in self._contains_ids:
return
append_to, existing_object = self._find_object(__object)
if existing_object is None:
# append
# print("appending", existing_object, __object)
append_to._data.append(__object)
else:
# merge
append_to._unmap_element(existing_object)
existing_object.merge(__object)
append_to._map_element(__object, from_map=from_map)
"""
exists_in_collection = self._contained_in_sub(__object)
if len(exists_in_collection) and self is exists_in_collection[0]:
# assuming that the object already is contained in the correct collections
if not already_is_parent:
self.merge_into_self(__object, from_map=from_map)
return
if not len(exists_in_collection):
self._append(__object, from_map=from_map)
else:
exists_in_collection[0].merge_into_self(__object, from_map=from_map)
if not already_is_parent or not self._is_root:
for parent_collection in self._get_parents_of_multiple_contained_children(__object):
pass
parent_collection.append(__object, already_is_parent=True, from_map=from_map)
"""
def extend(self, __iterable: Optional[Iterable[T]], from_map: bool = False):
if __iterable is None:
return
for __object in __iterable:
self.append(__object, from_map=from_map)
def sync_with_other_collection(self, equal_collection: Collection):
"""
If two collections always need to have the same values, this can be used.
Internally:
1. import the data from other to self
- _data
- contained_collections
2. replace all refs from the other object, with refs from this object
"""
if equal_collection is self:
return
# don't add the elements from the subelements from the other collection.
# this will be done in the next step.
self.extend(equal_collection._data)
# add all submodules
for equal_sub_collection in equal_collection.children:
self.contain_collection_inside(equal_sub_collection)
def contain_collection_inside(self, sub_collection: Collection):
"""
This collection will ALWAYS contain everything from the passed in collection
"""
if self is sub_collection or sub_collection in self.children:
return
self.children.append(sub_collection)
sub_collection.parents.append(self)
@property
def data(self) -> List[T]:
return [*self._data,
*(__object for collection in self.children for __object in collection.shallow_list)]
def __len__(self) -> int:
return len(self._data) + sum(len(collection) for collection in self.children)
@property
def empty(self) -> bool:
return self.__len__() <= 0
def __iter__(self) -> Iterator[T]:
for element in self._data:
yield element
for c in self.children:
for element in c:
yield element
def __merge__(self, __other: Collection, override: bool = False):
self.extend(__other._data, from_map=True)
def __getitem__(self, item: int):
if item < len(self._data):
return self._data[item]
item = item - len(self._data)
for c in self.children:
if item < len(c):
return c.__getitem__(item)
item = item - len(c._data)
raise IndexError

View File

@ -0,0 +1,38 @@
from typing import Optional, List, Tuple
from ..utils.enums.contact import ContactMethod
from .parents import OuterProxy
class Contact(OuterProxy):
COLLECTION_STRING_ATTRIBUTES = tuple()
SIMPLE_STRING_ATTRIBUTES = {
"contact_method": None,
"value": None,
}
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [
('id', self.id),
('value', self.value),
]
def __init__(self, contact_method: ContactMethod, value: str, **kwargs) -> None:
super().__init__(**kwargs)
self.contact_method: ContactMethod = contact_method
self.value: str = value
@classmethod
def match_url(cls, url: str) -> Optional["Contact"]:
url = url.strip()
if url.startswith("mailto:"):
return cls(ContactMethod.EMAIL, url.replace("mailto:", "", 1))
if url.startswith("tel:"):
return cls(ContactMethod.PHONE, url.replace("tel:", "", 1))
if url.startswith("fax:"):
return cls(ContactMethod.FAX, url.replace("fax:", "", 1))

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,37 @@
import mistune
import html2markdown
class FormattedText:
html = ""
def __init__(
self,
markdown: str = None,
html: str = None
) -> None:
if html is not None:
self.html = html
elif markdown is not None:
self.html = mistune.markdown(markdown)
@property
def is_empty(self) -> bool:
return self.doc is None
def __eq__(self, other) -> False:
if type(other) != type(self):
return False
if self.is_empty and other.is_empty:
return True
return self.doc == other.doc
@property
def markdown(self) -> str:
return html2markdown.convert(self.html)
def __str__(self) -> str:
return self.markdown
plaintext = markdown

View File

@ -0,0 +1,96 @@
from typing import List, TypeVar, Type
from .country import Language
from .lyrics import Lyrics
from .parents import OuterProxy
from .song import Song, Album, Artist, Label
from .source import Source
from .target import Target
T = TypeVar('T', bound=OuterProxy)
ALL_CLASSES: List[Type[T]] = [Song, Album, Artist, Label, Source, Target, Lyrics]
def print_lint_res(missing_values: dict):
print("_default_factories = {")
for key, value in missing_values.items():
print(f'\t"{key}": {value},')
print("}")
# def __init__(self, foo: str, bar) -> None: ...
def lint_type(cls: T):
all_values: dict = {}
missing_values: dict = {}
for key, value in cls.__annotations__.items():
if value is None:
continue
if (not key.islower()) or key.startswith("_") or (key.startswith("__") and key.endswith("__")):
continue
if key in cls._default_factories:
continue
factory = "lambda: None"
if isinstance(value, str):
if value == "SourceCollection":
factory = "SourceCollection"
elif "collection" in value.lower():
factory = "Collection"
elif value.istitle():
factory = value
else:
if value is Language:
factory = 'Language.by_alpha_2("en")'
else:
try:
value()
factory = value.__name__
except TypeError:
pass
missing_values[key] = factory
if len(missing_values) > 0:
print(f"{cls.__name__}:")
print_lint_res(missing_values)
print()
else:
print(f"Everything is fine at {cls.__name__}")
p = []
s = []
for key, value in cls.__annotations__.items():
has_default = key in cls._default_factories
if not isinstance(value, str):
value = value.__name__
if key.endswith("_collection"):
key = key.replace("_collection", "_list")
if isinstance(value, str):
if value.startswith("Collection[") and value.endswith("]"):
value = value.replace("Collection", "List")
if isinstance(value, str) and has_default:
value = value + " = None"
p.append(f'{key}: {value}')
s.append(f'{key}={key}')
p.append("**kwargs")
s.append("**kwargs")
print("# This is automatically generated")
print(f"def __init__(self, {', '.join(p)}) -> None:")
print(f"\tsuper().__init__({', '.join(s)})")
print()
def lint():
for i in ALL_CLASSES:
lint_type(i)
print()

View File

@ -0,0 +1,39 @@
from typing import List
from collections import defaultdict
import pycountry
from .parents import OuterProxy
from .source import Source, SourceCollection
from .formatted_text import FormattedText
from .country import Language
from .metadata import (
Mapping as id3Mapping,
ID3Timestamp,
Metadata
)
class Lyrics(OuterProxy):
text: FormattedText
language: Language
source_collection: SourceCollection
_default_factories = {
"text": FormattedText,
"language": lambda: Language.by_alpha_2("en"),
"source_collection": SourceCollection,
}
# This is automatically generated
def __init__(self, text: FormattedText = None, language: Language = None, source_list: SourceCollection = None,
**kwargs) -> None:
super().__init__(text=text, language=language, source_list=source_list, **kwargs)
@property
def metadata(self) -> Metadata:
return Metadata({
id3Mapping.UNSYNCED_LYRICS: self.text.html
})

View File

@ -0,0 +1,257 @@
from __future__ import annotations
from collections import defaultdict
from typing import TypeVar, Generic, Dict, Optional, Iterable, List
from .parents import OuterProxy
T = TypeVar('T', bound=OuterProxy)
class Collection(Generic[T]):
_data: List[T]
_indexed_values: Dict[str, set]
_indexed_to_objects: Dict[any, list]
shallow_list = property(fget=lambda self: self.data)
def __init__(
self,
data: Optional[Iterable[T]] = None,
sync_on_append: Dict[str, "Collection"] = None,
contain_given_in_attribute: Dict[str, "Collection"] = None,
contain_attribute_in_given: Dict[str, "Collection"] = None,
append_object_to_attribute: Dict[str, T] = None
) -> None:
self._contains_ids = set()
self._data = []
self.upper_collections: List[Collection[T]] = []
self.contained_collections: List[Collection[T]] = []
# List of collection attributes that should be modified on append
# Key: collection attribute (str) of appended element
# Value: main collection to sync to
self.sync_on_append: Dict[str, Collection] = sync_on_append or {}
self.contain_given_in_attribute: Dict[str, Collection] = contain_given_in_attribute or {}
self.contain_attribute_in_given: Dict[str, Collection] = contain_attribute_in_given or {}
self.append_object_to_attribute: Dict[str, T] = append_object_to_attribute or {}
self.contain_self_on_append: List[str] = []
self._indexed_values = defaultdict(set)
self._indexed_to_objects = defaultdict(list)
self.extend(data)
def _map_element(self, __object: T, from_map: bool = False):
self._contains_ids.add(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
self._indexed_values[name].add(value)
self._indexed_to_objects[value].append(__object)
if not from_map:
for attribute, new_object in self.contain_given_in_attribute.items():
__object.__getattribute__(attribute).contain_collection_inside(new_object)
for attribute, new_object in self.contain_given_in_attribute.items():
new_object.contain_collection_inside(__object.__getattribute__(attribute))
for attribute, new_object in self.append_object_to_attribute.items():
__object.__getattribute__(attribute).append(new_object, from_map=True)
def _unmap_element(self, __object: T):
self._contains_ids.remove(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
if value not in self._indexed_values[name]:
continue
try:
self._indexed_to_objects[value].remove(__object)
except ValueError:
continue
if not len(self._indexed_to_objects[value]):
self._indexed_values[name].remove(value)
def _contained_in_self(self, __object: T) -> bool:
if __object.id in self._contains_ids:
return True
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
return True
return False
def _get_root_collections(self) -> List["Collection"]:
if not len(self.upper_collections):
return [self]
root_collections = []
for upper_collection in self.upper_collections:
root_collections.extend(upper_collection._get_root_collections())
return root_collections
@property
def _is_root(self) -> bool:
return len(self.upper_collections) <= 0
def _contained_in_sub(self, __object: T, break_at_first: bool = True) -> List["Collection"]:
results = []
if self._contained_in_self(__object):
return [self]
for collection in self.contained_collections:
results.extend(collection._contained_in_sub(__object, break_at_first=break_at_first))
if break_at_first:
return results
return results
def _get_parents_of_multiple_contained_children(self, __object: T):
results = []
if len(self.contained_collections) < 2 or self._contained_in_self(__object):
return results
count = 0
for collection in self.contained_collections:
sub_results = collection._get_parents_of_multiple_contained_children(__object)
if len(sub_results) > 0:
count += 1
results.extend(sub_results)
if count >= 2:
results.append(self)
return results
def _merge_in_self(self, __object: T, from_map: bool = False):
"""
1. find existing objects
2. merge into existing object
3. remap existing object
"""
if __object.id in self._contains_ids:
return
existing_object: DatabaseObject = None
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
existing_object = self._indexed_to_objects[value][0]
if existing_object.id == __object.id:
return None
break
if existing_object is None:
return None
existing_object.merge(__object, replace_all_refs=True)
# just a check if it really worked
if existing_object.id != __object.id:
raise ValueError("This should NEVER happen. Merging doesn't work.")
self._map_element(existing_object, from_map=from_map)
def contains(self, __object: T) -> bool:
return len(self._contained_in_sub(__object)) > 0
def _append(self, __object: T, from_map: bool = False):
for attribute, to_sync_with in self.sync_on_append.items():
pass
to_sync_with.sync_with_other_collection(__object.__getattribute__(attribute))
self._map_element(__object, from_map=from_map)
self._data.append(__object)
def append(self, __object: Optional[T], already_is_parent: bool = False, from_map: bool = False):
if __object is None:
return
if __object.id in self._contains_ids:
return
exists_in_collection = self._contained_in_sub(__object)
if len(exists_in_collection) and self is exists_in_collection[0]:
# assuming that the object already is contained in the correct collections
if not already_is_parent:
self._merge_in_self(__object, from_map=from_map)
return
if not len(exists_in_collection):
self._append(__object, from_map=from_map)
else:
pass
exists_in_collection[0]._merge_in_self(__object, from_map=from_map)
if not already_is_parent or not self._is_root:
for parent_collection in self._get_parents_of_multiple_contained_children(__object):
pass
parent_collection.append(__object, already_is_parent=True, from_map=from_map)
def extend(self, __iterable: Optional[Iterable[T]]):
if __iterable is None:
return
for __object in __iterable:
self.append(__object)
def sync_with_other_collection(self, equal_collection: "Collection"):
"""
If two collections always need to have the same values, this can be used.
Internally:
1. import the data from other to self
- _data
- contained_collections
2. replace all refs from the other object, with refs from this object
"""
if equal_collection is self:
return
# don't add the elements from the subelements from the other collection.
# this will be done in the next step.
self.extend(equal_collection._data)
# add all submodules
for equal_sub_collection in equal_collection.contained_collections:
self.contain_collection_inside(equal_sub_collection)
# now the ugly part
# replace all refs of the other element with this one
self._risky_merge(equal_collection)
def contain_collection_inside(self, sub_collection: "Collection"):
"""
This collection will ALWAYS contain everything from the passed in collection
"""
if sub_collection in self.contained_collections:
return
self.contained_collections.append(sub_collection)
sub_collection.upper_collections.append(self)
@property
def data(self) -> List[T]:
return [*self._data,
*(__object for collection in self.contained_collections for __object in collection.shallow_list)]
def __len__(self) -> int:
return len(self._data) + sum(len(collection) for collection in self.contained_collections)
def __iter__(self) -> Iterator[T]:
for element in self._data:
yield element

View File

@ -0,0 +1,256 @@
from typing import List, Iterable, Iterator, Optional, TypeVar, Generic, Dict, Type
from collections import defaultdict
from .parents import DatabaseObject
from ..utils.support_classes.hacking import MetaClass
T = TypeVar('T', bound=DatabaseObject)
class Collection(Generic[T]):
_data: List[T]
_indexed_values: Dict[str, set]
_indexed_to_objects: Dict[any, list]
shallow_list = property(fget=lambda self: self.data)
def __init__(
self, data: Optional[Iterable[T]] = None,
sync_on_append: Dict[str, "Collection"] = None,
contain_given_in_attribute: Dict[str, "Collection"] = None,
contain_attribute_in_given: Dict[str, "Collection"] = None,
append_object_to_attribute: Dict[str, DatabaseObject] = None
) -> None:
self._contains_ids = set()
self._data = []
self.upper_collections: List[Collection[T]] = []
self.contained_collections: List[Collection[T]] = []
# List of collection attributes that should be modified on append
# Key: collection attribute (str) of appended element
# Value: main collection to sync to
self.sync_on_append: Dict[str, Collection] = sync_on_append or {}
self.contain_given_in_attribute: Dict[str, Collection] = contain_given_in_attribute or {}
self.contain_attribute_in_given: Dict[str, Collection] = contain_attribute_in_given or {}
self.append_object_to_attribute: Dict[str, DatabaseObject] = append_object_to_attribute or {}
self.contain_self_on_append: List[str] = []
self._indexed_values = defaultdict(set)
self._indexed_to_objects = defaultdict(list)
self.extend(data)
def _map_element(self, __object: T, from_map: bool = False):
self._contains_ids.add(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
self._indexed_values[name].add(value)
self._indexed_to_objects[value].append(__object)
if not from_map:
for attribute, new_object in self.contain_given_in_attribute.items():
__object.__getattribute__(attribute).contain_collection_inside(new_object)
for attribute, new_object in self.contain_given_in_attribute.items():
new_object.contain_collection_inside(__object.__getattribute__(attribute))
for attribute, new_object in self.append_object_to_attribute.items():
__object.__getattribute__(attribute).append(new_object, from_map=True)
def _unmap_element(self, __object: T):
self._contains_ids.remove(__object.id)
for name, value in __object.indexing_values:
if value is None:
continue
if value not in self._indexed_values[name]:
continue
try:
self._indexed_to_objects[value].remove(__object)
except ValueError:
continue
if not len(self._indexed_to_objects[value]):
self._indexed_values[name].remove(value)
def _contained_in_self(self, __object: T) -> bool:
if __object.id in self._contains_ids:
return True
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
return True
return False
def _get_root_collections(self) -> List["Collection"]:
if not len(self.upper_collections):
return [self]
root_collections = []
for upper_collection in self.upper_collections:
root_collections.extend(upper_collection._get_root_collections())
return root_collections
@property
def _is_root(self) -> bool:
return len(self.upper_collections) <= 0
def _contained_in_sub(self, __object: T, break_at_first: bool = True) -> List["Collection"]:
results = []
if self._contained_in_self(__object):
return [self]
for collection in self.contained_collections:
results.extend(collection._contained_in_sub(__object, break_at_first=break_at_first))
if break_at_first:
return results
return results
def _get_parents_of_multiple_contained_children(self, __object: T):
results = []
if len(self.contained_collections) < 2 or self._contained_in_self(__object):
return results
count = 0
for collection in self.contained_collections:
sub_results = collection._get_parents_of_multiple_contained_children(__object)
if len(sub_results) > 0:
count += 1
results.extend(sub_results)
if count >= 2:
results.append(self)
return results
def _merge_in_self(self, __object: T, from_map: bool = False):
"""
1. find existing objects
2. merge into existing object
3. remap existing object
"""
if __object.id in self._contains_ids:
return
existing_object: DatabaseObject = None
for name, value in __object.indexing_values:
if value is None:
continue
if value in self._indexed_values[name]:
existing_object = self._indexed_to_objects[value][0]
if existing_object.id == __object.id:
return None
break
if existing_object is None:
return None
existing_object.merge(__object, replace_all_refs=True)
# just a check if it really worked
if existing_object.id != __object.id:
raise ValueError("This should NEVER happen. Merging doesn't work.")
self._map_element(existing_object, from_map=from_map)
def contains(self, __object: T) -> bool:
return len(self._contained_in_sub(__object)) > 0
def _append(self, __object: T, from_map: bool = False):
for attribute, to_sync_with in self.sync_on_append.items():
pass
to_sync_with.sync_with_other_collection(__object.__getattribute__(attribute))
self._map_element(__object, from_map=from_map)
self._data.append(__object)
def append(self, __object: Optional[T], already_is_parent: bool = False, from_map: bool = False):
if __object is None:
return
if __object.id in self._contains_ids:
return
exists_in_collection = self._contained_in_sub(__object)
if len(exists_in_collection) and self is exists_in_collection[0]:
# assuming that the object already is contained in the correct collections
if not already_is_parent:
self._merge_in_self(__object, from_map=from_map)
return
if not len(exists_in_collection):
self._append(__object, from_map=from_map)
else:
pass
exists_in_collection[0]._merge_in_self(__object, from_map=from_map)
if not already_is_parent or not self._is_root:
for parent_collection in self._get_parents_of_multiple_contained_children(__object):
pass
parent_collection.append(__object, already_is_parent=True, from_map=from_map)
def extend(self, __iterable: Optional[Iterable[T]]):
if __iterable is None:
return
for __object in __iterable:
self.append(__object)
def sync_with_other_collection(self, equal_collection: "Collection"):
"""
If two collections always need to have the same values, this can be used.
Internally:
1. import the data from other to self
- _data
- contained_collections
2. replace all refs from the other object, with refs from this object
"""
if equal_collection is self:
return
# don't add the elements from the subelements from the other collection.
# this will be done in the next step.
self.extend(equal_collection._data)
# add all submodules
for equal_sub_collection in equal_collection.contained_collections:
self.contain_collection_inside(equal_sub_collection)
# now the ugly part
# replace all refs of the other element with this one
self._risky_merge(equal_collection)
def contain_collection_inside(self, sub_collection: "Collection"):
"""
This collection will ALWAYS contain everything from the passed in collection
"""
if sub_collection in self.contained_collections:
return
self.contained_collections.append(sub_collection)
sub_collection.upper_collections.append(self)
@property
def data(self) -> List[T]:
return [*self._data,
*(__object for collection in self.contained_collections for __object in collection.shallow_list)]
def __len__(self) -> int:
return len(self._data) + sum(len(collection) for collection in self.contained_collections)
def __iter__(self) -> Iterator[T]:
for element in self._data:
yield element

View File

@ -0,0 +1,243 @@
from __future__ import annotations
import random
from collections import defaultdict
from functools import lru_cache
from typing import Optional, Dict, Tuple, List, Type, Generic, Any, TypeVar, Set
from .metadata import Metadata
from ..utils import get_unix_time
from ..utils.config import logging_settings, main_settings
from ..utils.shared import HIGHEST_ID
from ..utils.hacking import MetaClass
LOGGER = logging_settings["object_logger"]
P = TypeVar("P", bound="OuterProxy")
class InnerData:
"""
This is the core class, which is used for every Data class.
The attributes are set, and can be merged.
The concept is, that the outer class proxies this class.
If the data in the wrapper class has to be merged, then this class is just replaced and garbage collected.
"""
def __init__(self, **kwargs):
for key, value in kwargs.items():
self.__setattr__(key, value)
def __merge__(self, __other: InnerData, override: bool = False):
"""
TODO
is default is totally ignored
:param __other:
:param override:
:return:
"""
for key, value in __other.__dict__.copy().items():
# just set the other value if self doesn't already have it
if key not in self.__dict__:
self.__setattr__(key, value)
continue
# if the object of value implemented __merge__, it merges
existing = self.__getattribute__(key)
if hasattr(type(existing), "__merge__"):
existing.__merge__(value, override)
continue
# override the existing value if requested
if override:
self.__setattr__(key, value)
class OuterProxy:
"""
Wraps the inner data, and provides apis, to naturally access those values.
"""
_default_factories: dict = {}
_outer_attribute: Set[str] = {"options", "metadata", "indexing_values", "option_string"}
DOWNWARDS_COLLECTION_STRING_ATTRIBUTES = tuple()
UPWARDS_COLLECTION_STRING_ATTRIBUTES = tuple()
TITEL = "id"
def __init__(self, _id: int = None, dynamic: bool = False, **kwargs):
_automatic_id: bool = False
if _id is None and not dynamic:
"""
generates a random integer id
the range is defined in the config
"""
_id = random.randint(0, HIGHEST_ID)
_automatic_id = True
kwargs["automatic_id"] = _automatic_id
kwargs["id"] = _id
kwargs["dynamic"] = dynamic
for name, factory in type(self)._default_factories.items():
if kwargs.get(name, None) is None:
kwargs[name] = factory()
collection_data: Dict[str, list] = {}
for name, value in kwargs.copy().items():
if isinstance(value, list) and name.endswith("_list"):
collection_name = name.replace("_list", "_collection")
collection_data[collection_name] = value
del kwargs[name]
self._fetched_from: dict = {}
self._inner: InnerData = InnerData(**kwargs)
self.__init_collections__()
for name, data_list in collection_data.items():
collection = self._inner.__getattribute__(name)
collection.extend(data_list)
self._inner.__setattr__(name, collection)
def __init_collections__(self):
pass
def __getattribute__(self, __name: str) -> Any:
"""
Returns the attribute of _inner if the attribute exists,
else it returns the attribute of self.
That the _inner gets checked first is essential for the type hints.
:param __name:
:return:
"""
if __name.startswith("_") or __name in self._outer_attribute or __name.isupper():
return object.__getattribute__(self, __name)
_inner: InnerData = super().__getattribute__("_inner")
try:
return _inner.__getattribute__(__name)
except AttributeError:
return super().__getattribute__(__name)
def __setattr__(self, __name, __value):
if not __name.startswith("_") and hasattr(self, "_inner"):
_inner: InnerData = super().__getattribute__("_inner")
return _inner.__setattr__(__name, __value)
return super().__setattr__(__name, __value)
def _add_other_db_objects(self, object_type: Type[OuterProxy], object_list: List[OuterProxy]):
pass
def add_list_of_other_objects(self, object_list: List[OuterProxy]):
d: Dict[Type[OuterProxy], List[OuterProxy]] = defaultdict(list)
for db_object in object_list:
d[type(db_object)].append(db_object)
for key, value in d.items():
self._add_other_db_objects(key, value)
def __hash__(self):
"""
:raise: IsDynamicException
:return:
"""
if self.dynamic:
return id(self._inner)
return self.id
def __eq__(self, other: Any):
return self.__hash__() == other.__hash__()
def merge(self, __other: Optional[OuterProxy], override: bool = False):
"""
1. merges the data of __other in self
2. replaces the data of __other with the data of self
:param __other:
:param override:
:return:
"""
if __other is None:
_ = "debug"
return
self._inner.__merge__(__other._inner, override=override)
__other._inner = self._inner
def mark_as_fetched(self, *url_hash_list: List[str]):
for url_hash in url_hash_list:
self._fetched_from[url_hash] = {
"time": get_unix_time(),
"url": url_hash,
}
def already_fetched_from(self, url_hash: str) -> bool:
res = self._fetched_from.get(url_hash, None)
if res is None:
return False
return get_unix_time() - res["time"] < main_settings["refresh_after"]
@property
def metadata(self) -> Metadata:
"""
This is an interface.
:return:
"""
return Metadata()
@property
def options(self) -> List[P]:
return [self]
@property
def indexing_values(self) -> List[Tuple[str, object]]:
"""
This is an interface.
It is supposed to return a map of the name and values for all important attributes.
This helps in comparing classes for equal data (e.g. being the same song but different attributes)
TODO
Rewrite this approach into a approach, that is centered around statistics, and not binaries.
Instead of: one of this matches, it is the same
This: If enough attributes are similar enough, they are the same
Returns:
List[Tuple[str, object]]: the first element in the tuple is the name of the attribute, the second the value.
"""
return []
@property
@lru_cache()
def all_collections(self):
r = []
for key in self._default_factories:
val = self._inner.__getattribute__(key)
if hasattr(val, "__is_collection__"):
r.append(val)
return r
def __repr__(self):
return f"{type(self).__name__}({', '.join(key + ': ' + str(val) for key, val in self.indexing_values)})"
@property
def title_string(self) -> str:
return str(self.__getattribute__(self.TITEL))

View File

@ -0,0 +1,689 @@
from __future__ import annotations
import random
from collections import defaultdict
from typing import List, Optional, Dict, Tuple, Type, Union
import pycountry
from ..utils.enums.album import AlbumType, AlbumStatus
from .collection import Collection
from .formatted_text import FormattedText
from .lyrics import Lyrics
from .contact import Contact
from .metadata import (
Mapping as id3Mapping,
ID3Timestamp,
Metadata
)
from .option import Options
from .parents import OuterProxy, P
from .source import Source, SourceCollection
from .target import Target
from .country import Language, Country
from ..utils.string_processing import unify
from .parents import OuterProxy as Base
from ..utils.config import main_settings
"""
All Objects dependent
"""
CountryTyping = type(list(pycountry.countries)[0])
OPTION_STRING_DELIMITER = " | "
class Song(Base):
title: str
unified_title: str
isrc: str
length: int
genre: str
note: FormattedText
tracksort: int
source_collection: SourceCollection
target_collection: Collection[Target]
lyrics_collection: Collection[Lyrics]
main_artist_collection: Collection[Artist]
feature_artist_collection: Collection[Artist]
album_collection: Collection[Album]
_default_factories = {
"note": FormattedText,
"length": lambda: 0,
"source_collection": SourceCollection,
"target_collection": Collection,
"lyrics_collection": Collection,
"main_artist_collection": Collection,
"album_collection": Collection,
"feature_artist_collection": Collection,
"title": lambda: "",
"unified_title": lambda: None,
"isrc": lambda: None,
"genre": lambda: None,
"tracksort": lambda: 0,
}
def __init__(self, title: str = "", unified_title: str = None, isrc: str = None, length: int = None,
genre: str = None, note: FormattedText = None, source_list: List[Source] = None,
target_list: List[Target] = None, lyrics_list: List[Lyrics] = None,
main_artist_list: List[Artist] = None, feature_artist_list: List[Artist] = None,
album_list: List[Album] = None, tracksort: int = 0, **kwargs) -> None:
Base.__init__(**locals())
UPWARDS_COLLECTION_STRING_ATTRIBUTES = ("album_collection", "main_artist_collection", "feature_artist_collection")
TITEL = "title"
def __init_collections__(self) -> None:
self.album_collection.contain_given_in_attribute = {
"artist_collection": self.main_artist_collection,
}
self.album_collection.append_object_to_attribute = {
"song_collection": self,
}
self.main_artist_collection.contain_given_in_attribute = {
"main_album_collection": self.album_collection
}
self.feature_artist_collection.append_object_to_attribute = {
"feature_song_collection": self
}
def _add_other_db_objects(self, object_type: Type[OuterProxy], object_list: List[OuterProxy]):
if object_type is Song:
return
if isinstance(object_list, Lyrics):
self.lyrics_collection.extend(object_list)
return
if isinstance(object_list, Artist):
self.main_artist_collection.extend(object_list)
return
if isinstance(object_list, Album):
self.album_collection.extend(object_list)
return
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [
('id', self.id),
('title', self.unified_title),
('isrc', self.isrc),
*[('url', source.url) for source in self.source_collection]
]
@property
def metadata(self) -> Metadata:
metadata = Metadata({
id3Mapping.TITLE: [self.title],
id3Mapping.ISRC: [self.isrc],
id3Mapping.LENGTH: [self.length],
id3Mapping.GENRE: [self.genre],
id3Mapping.TRACKNUMBER: [self.tracksort_str],
id3Mapping.COMMENT: [self.note.markdown],
})
# metadata.merge_many([s.get_song_metadata() for s in self.source_collection]) album sources have no relevant metadata for id3
metadata.merge_many([a.metadata for a in self.album_collection])
metadata.merge_many([a.metadata for a in self.main_artist_collection])
metadata.merge_many([a.metadata for a in self.feature_artist_collection])
metadata.merge_many([lyrics.metadata for lyrics in self.lyrics_collection])
return metadata
def get_artist_credits(self) -> str:
main_artists = ", ".join([artist.name for artist in self.main_artist_collection])
feature_artists = ", ".join([artist.name for artist in self.feature_artist_collection])
if len(feature_artists) == 0:
return main_artists
return f"{main_artists} feat. {feature_artists}"
def __repr__(self) -> str:
return f"Song(\"{self.title}\")"
@property
def option_string(self) -> str:
return f"{self.__repr__()} " \
f"from Album({OPTION_STRING_DELIMITER.join(album.title for album in self.album_collection)}) " \
f"by Artist({OPTION_STRING_DELIMITER.join(artist.name for artist in self.main_artist_collection)}) " \
f"feat. Artist({OPTION_STRING_DELIMITER.join(artist.name for artist in self.feature_artist_collection)})"
@property
def options(self) -> List[P]:
options = self.main_artist_collection.shallow_list
options.extend(self.feature_artist_collection)
options.extend(self.album_collection)
options.append(self)
return options
@property
def tracksort_str(self) -> str:
"""
if the album tracklist is empty, it sets it length to 1, this song has to be on the Album
:returns id3_tracksort: {song_position}/{album.length_of_tracklist}
"""
if len(self.album_collection) == 0:
return f"{self.tracksort}"
return f"{self.tracksort}/{len(self.album_collection[0].song_collection) or 1}"
"""
All objects dependent on Album
"""
class Album(Base):
title: str
unified_title: str
album_status: AlbumStatus
album_type: AlbumType
language: Language
date: ID3Timestamp
barcode: str
albumsort: int
notes: FormattedText
source_collection: SourceCollection
artist_collection: Collection[Artist]
song_collection: Collection[Song]
label_collection: Collection[Label]
_default_factories = {
"title": lambda: None,
"unified_title": lambda: None,
"album_status": lambda: None,
"barcode": lambda: None,
"albumsort": lambda: None,
"album_type": lambda: AlbumType.OTHER,
"language": lambda: Language.by_alpha_2("en"),
"date": ID3Timestamp,
"notes": FormattedText,
"source_collection": SourceCollection,
"artist_collection": Collection,
"song_collection": Collection,
"label_collection": Collection,
}
TITEL = "title"
# This is automatically generated
def __init__(self, title: str = None, unified_title: str = None, album_status: AlbumStatus = None,
album_type: AlbumType = None, language: Language = None, date: ID3Timestamp = None,
barcode: str = None, albumsort: int = None, notes: FormattedText = None,
source_list: List[Source] = None, artist_list: List[Artist] = None, song_list: List[Song] = None,
label_list: List[Label] = None, **kwargs) -> None:
super().__init__(title=title, unified_title=unified_title, album_status=album_status, album_type=album_type,
language=language, date=date, barcode=barcode, albumsort=albumsort, notes=notes,
source_list=source_list, artist_list=artist_list, song_list=song_list, label_list=label_list,
**kwargs)
DOWNWARDS_COLLECTION_STRING_ATTRIBUTES = ("song_collection",)
UPWARDS_COLLECTION_STRING_ATTRIBUTES = ("artist_collection", "label_collection")
def __init_collections__(self):
self.song_collection.contain_attribute_in_given = {
"main_artist_collection": self.artist_collection
}
def _add_other_db_objects(self, object_type: Type[OuterProxy], object_list: List[OuterProxy]):
if object_type is Song:
self.song_collection.extend(object_list)
return
if object_type is Artist:
self.artist_collection.extend(object_list)
return
if object_type is Album:
return
if object_type is Label:
self.label_collection.extend(object_list)
return
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [
('id', self.id),
('title', self.unified_title),
('barcode', self.barcode),
*[('url', source.url) for source in self.source_collection]
]
@property
def metadata(self) -> Metadata:
"""
TODO
- barcode
:return:
"""
return Metadata({
id3Mapping.ALBUM: [self.title],
id3Mapping.COPYRIGHT: [self.copyright],
id3Mapping.LANGUAGE: [self.iso_639_2_lang],
id3Mapping.ALBUM_ARTIST: [a.name for a in self.artist_collection],
id3Mapping.DATE: [self.date.strftime("%d%m")] if self.date.has_year and self.date.has_month else [],
id3Mapping.TIME: [self.date.strftime(("%H%M"))] if self.date.has_hour and self.date.has_minute else [],
id3Mapping.YEAR: [str(self.date.year).zfill(4)] if self.date.has_year else [],
id3Mapping.RELEASE_DATE: [self.date.timestamp],
id3Mapping.ORIGINAL_RELEASE_DATE: [self.date.timestamp],
id3Mapping.ALBUMSORTORDER: [str(self.albumsort)] if self.albumsort is not None else []
})
def __repr__(self):
return f"Album(\"{self.title}\")"
@property
def option_string(self) -> str:
return f"{self.__repr__()} " \
f"by Artist({OPTION_STRING_DELIMITER.join([artist.name for artist in self.artist_collection])}) " \
f"under Label({OPTION_STRING_DELIMITER.join([label.name for label in self.label_collection])})"
@property
def options(self) -> List[P]:
options = [*self.artist_collection, self, *self.song_collection]
return options
def update_tracksort(self):
"""
This updates the tracksort attributes, of the songs in
`self.song_collection`, and sorts the songs, if possible.
It is advised to only call this function, once all the tracks are
added to the songs.
:return:
"""
if self.song_collection.empty:
return
tracksort_map: Dict[int, Song] = {
song.tracksort: song for song in self.song_collection if song.tracksort is not None
}
# place the songs, with set tracksort attribute according to it
for tracksort, song in tracksort_map.items():
index = tracksort - 1
"""
I ONLY modify the `Collection._data` attribute directly,
to bypass the mapping of the attributes, because I will add the item in the next step
"""
"""
but for some reason, neither
`self.song_collection._data.index(song)`
`self.song_collection._data.remove(song)`
get the right object.
I have NO FUCKING CLUE why xD
But I just implemented it myself.
"""
for old_index, temp_song in enumerate(self.song_collection._data):
if song is temp_song:
break
# the list can't be empty
del self.song_collection._data[old_index]
self.song_collection._data.insert(index, song)
# fill in the empty tracksort attributes
for i, song in enumerate(self.song_collection):
if song.tracksort is not None:
continue
song.tracksort = i + 1
def compile(self, merge_into: bool = False):
"""
compiles the recursive structures,
and does depending on the object some other stuff.
no need to override if only the recursive structure should be built.
override self.build_recursive_structures() instead
"""
self.update_tracksort()
self._build_recursive_structures(build_version=random.randint(0, 99999), merge=merge_into)
@property
def copyright(self) -> str:
if self.date is None:
return ""
if self.date.has_year or len(self.label_collection) == 0:
return ""
return f"{self.date.year} {self.label_collection[0].name}"
@property
def iso_639_2_lang(self) -> Optional[str]:
if self.language is None:
return None
return self.language.alpha_3
@property
def is_split(self) -> bool:
"""
A split Album is an Album from more than one Artists
usually half the songs are made by one Artist, the other half by the other one.
In this case split means either that or one artist featured by all songs.
:return:
"""
return len(self.artist_collection) > 1
@property
def album_type_string(self) -> str:
return self.album_type.value
"""
All objects dependent on Artist
"""
class Artist(Base):
name: str
unified_name: str
country: Country
formed_in: ID3Timestamp
notes: FormattedText
lyrical_themes: List[str]
general_genre: str
unformated_location: str
source_collection: SourceCollection
contact_collection: Collection[Contact]
feature_song_collection: Collection[Song]
main_album_collection: Collection[Album]
label_collection: Collection[Label]
_default_factories = {
"name": str,
"unified_name": lambda: None,
"country": lambda: None,
"unformated_location": lambda: None,
"formed_in": ID3Timestamp,
"notes": FormattedText,
"lyrical_themes": list,
"general_genre": lambda: "",
"source_collection": SourceCollection,
"feature_song_collection": Collection,
"main_album_collection": Collection,
"contact_collection": Collection,
"label_collection": Collection,
}
TITEL = "name"
# This is automatically generated
def __init__(self, name: str = "", unified_name: str = None, country: Country = None,
formed_in: ID3Timestamp = None, notes: FormattedText = None, lyrical_themes: List[str] = None,
general_genre: str = None, unformated_location: str = None, source_list: List[Source] = None,
contact_list: List[Contact] = None, feature_song_list: List[Song] = None,
main_album_list: List[Album] = None, label_list: List[Label] = None, **kwargs) -> None:
super().__init__(name=name, unified_name=unified_name, country=country, formed_in=formed_in, notes=notes,
lyrical_themes=lyrical_themes, general_genre=general_genre,
unformated_location=unformated_location, source_list=source_list, contact_list=contact_list,
feature_song_list=feature_song_list, main_album_list=main_album_list, label_list=label_list,
**kwargs)
DOWNWARDS_COLLECTION_STRING_ATTRIBUTES = ("feature_song_collection", "main_album_collection")
UPWARDS_COLLECTION_STRING_ATTRIBUTES = ("label_collection",)
def __init_collections__(self):
self.feature_song_collection.append_object_to_attribute = {
"feature_artist_collection": self
}
self.main_album_collection.append_object_to_attribute = {
"artist_collection": self
}
self.label_collection.append_object_to_attribute = {
"current_artist_collection": self
}
def _add_other_db_objects(self, object_type: Type[OuterProxy], object_list: List[OuterProxy]):
if object_type is Song:
# this doesn't really make sense
# self.feature_song_collection.extend(object_list)
return
if object_type is Artist:
return
if object_type is Album:
self.main_album_collection.extend(object_list)
return
if object_type is Label:
self.label_collection.extend(object_list)
return
@property
def options(self) -> List[P]:
options = [self, *self.main_album_collection.shallow_list, *self.feature_album]
print(options)
return options
def update_albumsort(self):
"""
This updates the albumsort attributes, of the albums in
`self.main_album_collection`, and sorts the albums, if possible.
It is advised to only call this function, once all the albums are
added to the artist.
:return:
"""
if len(self.main_album_collection) <= 0:
return
type_section: Dict[AlbumType, int] = defaultdict(lambda: 2, {
AlbumType.OTHER: 0, # if I don't know it, I add it to the first section
AlbumType.STUDIO_ALBUM: 0,
AlbumType.EP: 0,
AlbumType.SINGLE: 1
}) if main_settings["sort_album_by_type"] else defaultdict(lambda: 0)
sections = defaultdict(list)
# order albums in the previously defined section
album: Album
for album in self.main_album_collection:
sections[type_section[album.album_type]].append(album)
def sort_section(_section: List[Album], last_albumsort: int) -> int:
# album is just a value used in loops
nonlocal album
if main_settings["sort_by_date"]:
_section.sort(key=lambda _album: _album.date, reverse=True)
new_last_albumsort = last_albumsort
for album_index, album in enumerate(_section):
if album.albumsort is None:
album.albumsort = new_last_albumsort = album_index + 1 + last_albumsort
_section.sort(key=lambda _album: _album.albumsort)
return new_last_albumsort
# sort the sections individually
_last_albumsort = 1
for section_index in sorted(sections):
_last_albumsort = sort_section(sections[section_index], _last_albumsort)
# merge all sections again
album_list = []
for section_index in sorted(sections):
album_list.extend(sections[section_index])
# replace the old collection with the new one
self.main_album_collection: Collection = Collection(data=album_list, element_type=Album)
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [
('id', self.id),
('name', self.unified_name),
*[('url', source.url) for source in self.source_collection],
*[('contact', contact.value) for contact in self.contact_collection]
]
@property
def metadata(self) -> Metadata:
metadata = Metadata({
id3Mapping.ARTIST: [self.name]
})
metadata.merge_many([s.get_artist_metadata() for s in self.source_collection])
return metadata
"""
def __str__(self, include_notes: bool = False):
string = self.name or ""
if include_notes:
plaintext_notes = self.notes.get_plaintext()
if plaintext_notes is not None:
string += "\n" + plaintext_notes
return string
"""
def __repr__(self):
return f"Artist(\"{self.name}\")"
@property
def option_string(self) -> str:
return f"{self.__repr__()} " \
f"under Label({OPTION_STRING_DELIMITER.join([label.name for label in self.label_collection])})"
@property
def options(self) -> List[P]:
options = [self]
options.extend(self.main_album_collection)
options.extend(self.feature_song_collection)
return options
@property
def feature_album(self) -> Album:
return Album(
title="features",
album_status=AlbumStatus.UNRELEASED,
album_type=AlbumType.COMPILATION_ALBUM,
is_split=True,
albumsort=666,
dynamic=True,
song_list=self.feature_song_collection.shallow_list
)
def get_all_songs(self) -> List[Song]:
"""
returns a list of all Songs.
probably not that useful, because it is unsorted
"""
collection = self.feature_song_collection.copy()
for album in self.discography:
collection.extend(album.song_collection)
return collection
@property
def discography(self) -> List[Album]:
flat_copy_discography = self.main_album_collection.copy()
flat_copy_discography.append(self.feature_album)
return flat_copy_discography
"""
Label
"""
class Label(Base):
COLLECTION_STRING_ATTRIBUTES = ("album_collection", "current_artist_collection")
DOWNWARDS_COLLECTION_STRING_ATTRIBUTES = COLLECTION_STRING_ATTRIBUTES
name: str
unified_name: str
notes: FormattedText
source_collection: SourceCollection
contact_collection: Collection[Contact]
album_collection: Collection[Album]
current_artist_collection: Collection[Artist]
_default_factories = {
"notes": FormattedText,
"album_collection": Collection,
"current_artist_collection": Collection,
"source_collection": SourceCollection,
"contact_collection": Collection,
"name": lambda: None,
"unified_name": lambda: None,
}
TITEL = "name"
def __init__(self, name: str = None, unified_name: str = None, notes: FormattedText = None,
source_list: List[Source] = None, contact_list: List[Contact] = None,
album_list: List[Album] = None, current_artist_list: List[Artist] = None, **kwargs) -> None:
super().__init__(name=name, unified_name=unified_name, notes=notes, source_list=source_list,
contact_list=contact_list, album_list=album_list, current_artist_list=current_artist_list,
**kwargs)
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [
('id', self.id),
('name', self.unified_name),
*[('url', source.url) for source in self.source_collection]
]
def _add_other_db_objects(self, object_type: Type[OuterProxy], object_list: List[OuterProxy]):
if object_type is Song:
return
if object_type is Artist:
self.current_artist_collection.extend(object_list)
return
if object_type is Album:
self.album_collection.extend(object_list)
return
@property
def options(self) -> List[P]:
options = [self]
options.extend(self.current_artist_collection.shallow_list)
options.extend(self.album_collection.shallow_list)
return options
@property
def option_string(self):
return self.__repr__()

View File

@ -1,47 +1,36 @@
from collections import defaultdict from collections import defaultdict
from enum import Enum from enum import Enum
from typing import List, Dict, Set, Tuple, Optional from typing import List, Dict, Set, Tuple, Optional, Iterable
from urllib.parse import urlparse from urllib.parse import urlparse
from ..utils.enums.source import SourcePages, SourceTypes from ..utils.enums.source import SourcePages, SourceTypes
from ..utils.config import youtube_settings from ..utils.config import youtube_settings
from .metadata import Mapping, Metadata from .metadata import Mapping, Metadata
from .parents import DatabaseObject from .parents import OuterProxy
from .collection import Collection from .collection import Collection
class Source(DatabaseObject): class Source(OuterProxy):
""" url: str
create somehow like that
```python page_enum: SourcePages
# url won't be a valid one due to it being just an example referer_page: SourcePages
Source(src="youtube", url="https://youtu.be/dfnsdajlhkjhsd")
``` audio_url: str
"""
COLLECTION_ATTRIBUTES = tuple() _default_factories = {
SIMPLE_ATTRIBUTES = { "audio_url": lambda: None,
"page_enum": None,
"url": None,
"referer_page": None,
"audio_url": None
} }
def __init__( # This is automatically generated
self, def __init__(self, page_enum: SourcePages, url: str, referer_page: SourcePages = None, audio_url: str = None,
page_enum: SourcePages, **kwargs) -> None:
url: str = None,
id_: str = None,
referer_page: SourcePages = None,
adio_url: str = None
) -> None:
DatabaseObject.__init__(self, id_=id_)
self.page_enum = page_enum if referer_page is None:
self.referer_page = page_enum if referer_page is None else referer_page referer_page = page_enum
self.url = url super().__init__(url=url, page_enum=page_enum, referer_page=referer_page, audio_url=audio_url, **kwargs)
self.audio_url = adio_url
@classmethod @classmethod
def match_url(cls, url: str, referer_page: SourcePages) -> Optional["Source"]: def match_url(cls, url: str, referer_page: SourcePages) -> Optional["Source"]:
@ -97,6 +86,10 @@ class Source(DatabaseObject):
Mapping.ARTIST_WEBPAGE_URL: [self.url] Mapping.ARTIST_WEBPAGE_URL: [self.url]
}) })
@property
def hash_url(self) -> str:
return self.url.strip().lower().lstrip("https://").lstrip("http://")
@property @property
def metadata(self) -> Metadata: def metadata(self) -> Metadata:
return self.get_song_metadata() return self.get_song_metadata()
@ -121,15 +114,15 @@ class Source(DatabaseObject):
class SourceCollection(Collection): class SourceCollection(Collection):
def __init__(self, source_list: List[Source]): def __init__(self, data: Optional[Iterable[Source]] = None, **kwargs):
self._page_to_source_list: Dict[SourcePages, List[Source]] = defaultdict(list) self._page_to_source_list: Dict[SourcePages, List[Source]] = defaultdict(list)
super().__init__(data=source_list, element_type=Source) super().__init__(data=data, **kwargs)
def map_element(self, source: Source): def _map_element(self, __object: Source, **kwargs):
super().map_element(source) super()._map_element(__object, **kwargs)
self._page_to_source_list[source.page_enum].append(source) self._page_to_source_list[__object.page_enum].append(__object)
@property @property
def source_pages(self) -> Set[SourcePages]: def source_pages(self) -> Set[SourcePages]:

View File

@ -1,11 +1,13 @@
from __future__ import annotations
from pathlib import Path from pathlib import Path
from typing import List, Tuple, TextIO from typing import List, Tuple, TextIO, Union
import logging import logging
import requests import requests
from tqdm import tqdm from tqdm import tqdm
from .parents import DatabaseObject from .parents import OuterProxy
from ..utils.config import main_settings, logging_settings from ..utils.config import main_settings, logging_settings
from ..utils.string_processing import fit_to_file_system from ..utils.string_processing import fit_to_file_system
@ -13,7 +15,7 @@ from ..utils.string_processing import fit_to_file_system
LOGGER = logging.getLogger("target") LOGGER = logging.getLogger("target")
class Target(DatabaseObject): class Target(OuterProxy):
""" """
create somehow like that create somehow like that
```python ```python
@ -22,32 +24,26 @@ class Target(DatabaseObject):
``` ```
""" """
SIMPLE_ATTRIBUTES = { file_path: Path
"_file": None,
"_path": None
}
COLLECTION_ATTRIBUTES = tuple()
def __init__( _default_factories = {
self, }
file: str = None,
path: str = None, # This is automatically generated
dynamic: bool = False, def __init__(self, file_path: Union[Path, str], relative_to_music_dir: bool = False, **kwargs) -> None:
relative_to_music_dir: bool = False if not isinstance(file_path, Path):
) -> None: file_path = Path(file_path)
super().__init__(dynamic=dynamic)
self._file: Path = Path(fit_to_file_system(file)) if relative_to_music_dir:
self._path: Path = fit_to_file_system(Path(main_settings["music_directory"], path) if relative_to_music_dir else Path(path)) file_path = Path(main_settings["music_directory"], file_path)
super().__init__(file_path=fit_to_file_system(file_path), **kwargs)
self.is_relative_to_music_dir: bool = relative_to_music_dir self.is_relative_to_music_dir: bool = relative_to_music_dir
def __repr__(self) -> str: def __repr__(self) -> str:
return str(self.file_path) return str(self.file_path)
@property
def file_path(self) -> Path:
return Path(self._path, self._file)
@property @property
def indexing_values(self) -> List[Tuple[str, object]]: def indexing_values(self) -> List[Tuple[str, object]]:
return [('filepath', self.file_path)] return [('filepath', self.file_path)]
@ -68,14 +64,14 @@ class Target(DatabaseObject):
return self.file_path.stat().st_size return self.file_path.stat().st_size
def create_path(self): def create_path(self):
self._path.mkdir(parents=True, exist_ok=True) self.file_path.parent.mkdir(parents=True, exist_ok=True)
def copy_content(self, copy_to: "Target"): def copy_content(self, copy_to: Target):
if not self.exists: if not self.exists:
LOGGER.warning(f"No file exists at: {self.file_path}") LOGGER.warning(f"No file exists at: {self.file_path}")
return return
with self.open("rb") as read_from: with open(self.file_path, "rb") as read_from:
copy_to.create_path() copy_to.create_path()
with open(copy_to.file_path, "wb") as write_to: with open(copy_to.file_path, "wb") as write_to:
write_to.write(read_from.read()) write_to.write(read_from.read())
@ -88,7 +84,7 @@ class Target(DatabaseObject):
total_size = int(r.headers.get('content-length')) total_size = int(r.headers.get('content-length'))
with self.open('wb') as f: with open(self.file_path, 'wb') as f:
try: try:
""" """
https://en.wikipedia.org/wiki/Kilobyte https://en.wikipedia.org/wiki/Kilobyte

View File

@ -2,5 +2,6 @@ from .encyclopaedia_metallum import EncyclopaediaMetallum
from .musify import Musify from .musify import Musify
from .youtube import YouTube from .youtube import YouTube
from .youtube_music import YoutubeMusic from .youtube_music import YoutubeMusic
from .bandcamp import Bandcamp
from .abstract import Page, INDEPENDENT_DB_OBJECTS from .abstract import Page, INDEPENDENT_DB_OBJECTS

Some files were not shown because too many files have changed in this diff Show More