From 360e342bc2b13d672e76bc8fafe27f000b499d94 Mon Sep 17 00:00:00 2001
From: Zotify <zotify@localhost>
Date: Sat, 17 Feb 2024 17:59:23 +1300
Subject: [PATCH] changes

---
 CHANGELOG.md                     |  11 +-
 LICENCE                          |   2 +-
 Pipfile                          |  18 ++
 Pipfile.lock                     | 414 ++++++++++++++++++++++++++++
 README.md                        |  59 ++--
 assets/banner.png                | Bin 0 -> 112613 bytes
 requirements_dev.txt             |   1 +
 setup.cfg                        |   9 +-
 zotify/__init__.py               | 110 ++++----
 zotify/__main__.py               |   7 +-
 zotify/app.py                    | 444 ++++++++++++-------------------
 zotify/collections.py            |  95 +++++++
 zotify/config.py                 |  26 +-
 zotify/file.py                   |   3 +-
 zotify/loader.py                 |   8 +-
 zotify/{printer.py => logger.py} |  14 +-
 zotify/playable.py               |  80 +++---
 zotify/utils.py                  |  85 +++---
 18 files changed, 923 insertions(+), 463 deletions(-)
 create mode 100644 Pipfile
 create mode 100644 Pipfile.lock
 create mode 100644 assets/banner.png
 create mode 100644 zotify/collections.py
 rename zotify/{printer.py => logger.py} (85%)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 788a032..b1830b7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,8 +2,6 @@
 
 ## v1.0.0
 
-An unexpected reboot.
-
 ### BREAKING CHANGES AHEAD
 
 - Most components have been completely rewritten to address some fundamental design issues with the previous codebase, This update will provide a better base for new features in the future.
@@ -12,7 +10,7 @@ An unexpected reboot.
 
 ### Changes
 
-- Genre metadata available for tracks downloaded from an album
+- Genre metadata available for all tracks
 - Boolean command line options are now set like `--save-metadata` or `--no-save-metadata` for True or False
 - Setting `--config` (formerly `--config-location`) can be set to "None" to not use any config file
 - Search result selector now accepts both comma-seperated and hyphen-seperated values at the same time
@@ -24,10 +22,12 @@ An unexpected reboot.
 - The output template used is now based on track info rather than search result category
 - Search queries with spaces no longer need to be in quotes
 - File metadata no longer uses sanitized file metadata, this will result in more accurate metadata.
-- Replaced ffmpy with custom implementation
+- Replaced ffmpy with custom implementation providing more tags
+- Fixed artist download missing some tracks
 
 ### Additions
 
+- New library location for playlists `playlist_library`
 - Added new command line arguments
   - `--library`/`-l` overrides both `music_library` and `podcast_library` options similar to `--output`/`-o`
   - `--category`/`-c` will limit search results to a certain type, accepted values are "album", "artist", "playlist", "track", "show", "episode". Accepts multiple choices.
@@ -52,13 +52,13 @@ An unexpected reboot.
   - `{album_artist}`
   - `{album_artists}`
   - `{duration}` (milliseconds)
+  - `{explicit}`
   - `{isrc}`
   - `{licensor}`
   - `{popularity}`
   - `{release_date}`
   - `{track_number}`
 - Genre information is now more accurate and is always enabled
-- New library location for playlists `playlist_library`
 - Added download option for "liked episodes" `--liked-episodes`/`-le`
 - Added `save_metadata` option to fully disable writing track metadata
 - Added support for ReplayGain
@@ -79,6 +79,7 @@ An unexpected reboot.
 - Removed `print_api_errors` because API errors are now treated like regular errors
 - Removed the following config options due to their corresponding features being removed:
   - `bulk_wait_time`
+  - `chunk_size`
   - `download_real_time`
   - `md_allgenres`
   - `md_genredelimiter`
diff --git a/LICENCE b/LICENCE
index d3ba069..c012b87 100644
--- a/LICENCE
+++ b/LICENCE
@@ -1,4 +1,4 @@
-Copyright (c) 2022 Zotify Contributors
+Copyright (c) 2024 Zotify Contributors
 
 This software is provided 'as-is', without any express or implied
 warranty. In no event will the authors be held liable for any damages
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000..2fc6f0d
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,18 @@
+[[source]]
+url = "https://pypi.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+librespot = {git = "git+https://github.com/kokarare1212/librespot-python"}
+music-tag = {git = "git+https://zotify.xyz/zotify/music-tag"}
+mutagen = "*"
+pillow = "*"
+pwinput = "*"
+requests = "*"
+tqdm = "*"
+
+[dev-packages]
+
+[requires]
+python_version = "3.11"
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000..4eb010d
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,414 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "dfbc5e27f802eeeddf2967a8d8d280346f8e3b4e4759b4bea10f59dbee08a0ee"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "3.11"
+        },
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "certifi": {
+            "hashes": [
+                "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f",
+                "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"
+            ],
+            "markers": "python_version >= '3.6'",
+            "version": "==2024.2.2"
+        },
+        "charset-normalizer": {
+            "hashes": [
+                "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027",
+                "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087",
+                "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786",
+                "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8",
+                "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09",
+                "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185",
+                "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574",
+                "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e",
+                "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519",
+                "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898",
+                "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269",
+                "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3",
+                "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f",
+                "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6",
+                "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8",
+                "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a",
+                "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73",
+                "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc",
+                "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714",
+                "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2",
+                "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc",
+                "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce",
+                "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d",
+                "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e",
+                "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6",
+                "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269",
+                "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96",
+                "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d",
+                "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a",
+                "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4",
+                "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77",
+                "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d",
+                "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0",
+                "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed",
+                "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068",
+                "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac",
+                "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25",
+                "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8",
+                "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab",
+                "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26",
+                "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2",
+                "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db",
+                "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f",
+                "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5",
+                "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99",
+                "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c",
+                "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d",
+                "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811",
+                "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa",
+                "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a",
+                "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03",
+                "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b",
+                "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04",
+                "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c",
+                "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001",
+                "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458",
+                "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389",
+                "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99",
+                "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985",
+                "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537",
+                "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238",
+                "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f",
+                "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d",
+                "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796",
+                "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a",
+                "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143",
+                "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8",
+                "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c",
+                "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5",
+                "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5",
+                "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711",
+                "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4",
+                "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6",
+                "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c",
+                "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7",
+                "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4",
+                "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b",
+                "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae",
+                "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12",
+                "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c",
+                "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae",
+                "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8",
+                "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887",
+                "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b",
+                "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4",
+                "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f",
+                "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5",
+                "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33",
+                "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519",
+                "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"
+            ],
+            "markers": "python_full_version >= '3.7.0'",
+            "version": "==3.3.2"
+        },
+        "defusedxml": {
+            "hashes": [
+                "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69",
+                "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"
+            ],
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
+            "version": "==0.7.1"
+        },
+        "idna": {
+            "hashes": [
+                "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca",
+                "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"
+            ],
+            "markers": "python_version >= '3.5'",
+            "version": "==3.6"
+        },
+        "ifaddr": {
+            "hashes": [
+                "sha256:085e0305cfe6f16ab12d72e2024030f5d52674afad6911bb1eee207177b8a748",
+                "sha256:cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4"
+            ],
+            "version": "==0.2.0"
+        },
+        "librespot": {
+            "git": "git+https://github.com/kokarare1212/librespot-python",
+            "ref": "f56533f9b56e62b28bac6c57d0710620aeb6a5dd"
+        },
+        "music-tag": {
+            "git": "git+https://zotify.xyz/zotify/music-tag",
+            "ref": "5c73ddf11a6d65d6575c0e1bb8cce8413f46a433"
+        },
+        "mutagen": {
+            "hashes": [
+                "sha256:719fadef0a978c31b4cf3c956261b3c58b6948b32023078a2117b1de09f0fc99",
+                "sha256:edd96f50c5907a9539d8e5bba7245f62c9f520aef333d13392a79a4f70aca719"
+            ],
+            "index": "pypi",
+            "markers": "python_version >= '3.7'",
+            "version": "==1.47.0"
+        },
+        "pillow": {
+            "hashes": [
+                "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8",
+                "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39",
+                "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac",
+                "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869",
+                "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e",
+                "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04",
+                "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9",
+                "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e",
+                "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe",
+                "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef",
+                "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56",
+                "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa",
+                "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f",
+                "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f",
+                "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e",
+                "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a",
+                "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2",
+                "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2",
+                "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5",
+                "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a",
+                "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2",
+                "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213",
+                "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563",
+                "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591",
+                "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c",
+                "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2",
+                "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb",
+                "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757",
+                "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0",
+                "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452",
+                "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad",
+                "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01",
+                "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f",
+                "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5",
+                "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61",
+                "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e",
+                "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b",
+                "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068",
+                "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9",
+                "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588",
+                "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483",
+                "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f",
+                "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67",
+                "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7",
+                "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311",
+                "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6",
+                "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72",
+                "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6",
+                "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129",
+                "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13",
+                "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67",
+                "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c",
+                "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516",
+                "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e",
+                "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e",
+                "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364",
+                "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023",
+                "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1",
+                "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04",
+                "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d",
+                "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a",
+                "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7",
+                "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb",
+                "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4",
+                "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e",
+                "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1",
+                "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48",
+                "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"
+            ],
+            "index": "pypi",
+            "markers": "python_version >= '3.8'",
+            "version": "==10.2.0"
+        },
+        "protobuf": {
+            "hashes": [
+                "sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf",
+                "sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f",
+                "sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f",
+                "sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7",
+                "sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996",
+                "sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067",
+                "sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c",
+                "sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7",
+                "sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9",
+                "sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c",
+                "sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739",
+                "sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91",
+                "sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c",
+                "sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153",
+                "sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9",
+                "sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388",
+                "sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e",
+                "sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab",
+                "sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde",
+                "sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531",
+                "sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8",
+                "sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7",
+                "sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20",
+                "sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3"
+            ],
+            "markers": "python_version >= '3.7'",
+            "version": "==3.20.1"
+        },
+        "pwinput": {
+            "hashes": [
+                "sha256:ca1a8bd06e28872d751dbd4132d8637127c25b408ea3a349377314a5491426f3"
+            ],
+            "index": "pypi",
+            "version": "==1.0.3"
+        },
+        "pycryptodomex": {
+            "hashes": [
+                "sha256:0daad007b685db36d977f9de73f61f8da2a7104e20aca3effd30752fd56f73e1",
+                "sha256:108e5f1c1cd70ffce0b68739c75734437c919d2eaec8e85bffc2c8b4d2794305",
+                "sha256:19764605feea0df966445d46533729b645033f134baeb3ea26ad518c9fdf212c",
+                "sha256:1be97461c439a6af4fe1cf8bf6ca5936d3db252737d2f379cc6b2e394e12a458",
+                "sha256:25cd61e846aaab76d5791d006497134602a9e451e954833018161befc3b5b9ed",
+                "sha256:2a47bcc478741b71273b917232f521fd5704ab4b25d301669879e7273d3586cc",
+                "sha256:59af01efb011b0e8b686ba7758d59cf4a8263f9ad35911bfe3f416cee4f5c08c",
+                "sha256:5dcac11031a71348faaed1f403a0debd56bf5404232284cf8c761ff918886ebc",
+                "sha256:62a5ec91388984909bb5398ea49ee61b68ecb579123694bffa172c3b0a107079",
+                "sha256:645bd4ca6f543685d643dadf6a856cc382b654cc923460e3a10a49c1b3832aeb",
+                "sha256:653b29b0819605fe0898829c8ad6400a6ccde096146730c2da54eede9b7b8baa",
+                "sha256:69138068268127cd605e03438312d8f271135a33140e2742b417d027a0539427",
+                "sha256:6e186342cfcc3aafaad565cbd496060e5a614b441cacc3995ef0091115c1f6c5",
+                "sha256:76bd15bb65c14900d98835fcd10f59e5e0435077431d3a394b60b15864fddd64",
+                "sha256:7805830e0c56d88f4d491fa5ac640dfc894c5ec570d1ece6ed1546e9df2e98d6",
+                "sha256:7a710b79baddd65b806402e14766c721aee8fb83381769c27920f26476276c1e",
+                "sha256:7a7a8f33a1f1fb762ede6cc9cbab8f2a9ba13b196bfaf7bc6f0b39d2ba315a43",
+                "sha256:82ee7696ed8eb9a82c7037f32ba9b7c59e51dda6f105b39f043b6ef293989cb3",
+                "sha256:88afd7a3af7ddddd42c2deda43d53d3dfc016c11327d0915f90ca34ebda91499",
+                "sha256:8af1a451ff9e123d0d8bd5d5e60f8e3315c3a64f3cdd6bc853e26090e195cdc8",
+                "sha256:8ee606964553c1a0bc74057dd8782a37d1c2bc0f01b83193b6f8bb14523b877b",
+                "sha256:91852d4480a4537d169c29a9d104dda44094c78f1f5b67bca76c29a91042b623",
+                "sha256:9c682436c359b5ada67e882fec34689726a09c461efd75b6ea77b2403d5665b7",
+                "sha256:bc3ee1b4d97081260d92ae813a83de4d2653206967c4a0a017580f8b9548ddbc",
+                "sha256:bca649483d5ed251d06daf25957f802e44e6bb6df2e8f218ae71968ff8f8edc4",
+                "sha256:c39778fd0548d78917b61f03c1fa8bfda6cfcf98c767decf360945fe6f97461e",
+                "sha256:cbe71b6712429650e3883dc81286edb94c328ffcd24849accac0a4dbcc76958a",
+                "sha256:d00fe8596e1cc46b44bf3907354e9377aa030ec4cd04afbbf6e899fc1e2a7781",
+                "sha256:d3584623e68a5064a04748fb6d76117a21a7cb5eaba20608a41c7d0c61721794",
+                "sha256:e48217c7901edd95f9f097feaa0388da215ed14ce2ece803d3f300b4e694abea",
+                "sha256:f2e497413560e03421484189a6b65e33fe800d3bd75590e6d78d4dfdb7accf3b",
+                "sha256:ff5c9a67f8a4fba4aed887216e32cbc48f2a6fb2673bb10a99e43be463e15913"
+            ],
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
+            "version": "==3.20.0"
+        },
+        "pyogg": {
+            "hashes": [
+                "sha256:40f79b288b3a667309890885f4cf53371163b7dae17eb17567fb24ab467eca26",
+                "sha256:794db340fb5833afb4f493b40f91e3e0f594606fd4b31aea0ebf5be2de9da964",
+                "sha256:8294b34aa59c90200c4630c2cc4a5b84407209141e8e5d069d7a5be358e94262"
+            ],
+            "version": "==0.6.14a1"
+        },
+        "requests": {
+            "hashes": [
+                "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f",
+                "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
+            ],
+            "index": "pypi",
+            "markers": "python_version >= '3.7'",
+            "version": "==2.31.0"
+        },
+        "tqdm": {
+            "hashes": [
+                "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386",
+                "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"
+            ],
+            "index": "pypi",
+            "markers": "python_version >= '3.7'",
+            "version": "==4.66.1"
+        },
+        "urllib3": {
+            "hashes": [
+                "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20",
+                "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"
+            ],
+            "markers": "python_version >= '3.8'",
+            "version": "==2.2.0"
+        },
+        "websocket-client": {
+            "hashes": [
+                "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6",
+                "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"
+            ],
+            "markers": "python_version >= '3.8'",
+            "version": "==1.7.0"
+        },
+        "zeroconf": {
+            "hashes": [
+                "sha256:0251034ed1d57eeb4e08782b22cc51e2455da7552b592bfad69a5761e69241c7",
+                "sha256:02e3b6d1c1df87e8bc450de3f973ab9f4cfd1b4c0a3fb9e933d84580a1d61263",
+                "sha256:08eb87b0500ddc7c148fe3db3913e9d07d5495d756d7d75683f2dee8d7a09dc5",
+                "sha256:10e8d23cee434077a10ceec4b419b9de8c84ede7f42b64e735d0f0b7708b0c66",
+                "sha256:14f0bef6b4f7bd0caf80f207acd1e399e8d8a37e12266d80871a2ed6c9ee3b16",
+                "sha256:18ff5b28e8935e5399fe47ece323e15816bc2ea4111417c41fc09726ff056cd2",
+                "sha256:194cf1465a756c3090e23ef2a5bd3341caa8d36eef486054daa8e532a4e24ac8",
+                "sha256:1a57e0c4a94276ec690d2ecf1edeea158aaa3a7f38721af6fa572776dda6c8ad",
+                "sha256:2389e3a61e99bf74796da7ebc3001b90ecd4e6286f392892b1211748e5b19853",
+                "sha256:24b0a46c5f697cd6a0b27678ea65a3222b95f1804be6b38c6f5f1a7ce8b5cded",
+                "sha256:28d906fc0779badb2183f5b20dbcc7e508cce53a13e63ba4d9477381c9f77463",
+                "sha256:2907784c8c88795bf1b74cc9b6a4051e37a519ae2caaa7307787d466bc57884c",
+                "sha256:34c3379d899361cd9d6b573ea9ac1eba53e2306eb28f94353b58c4703f0e74ae",
+                "sha256:3768ab13a8d7f0df85e40e766edd9e2aef28710a350dc4b15e1f2c5dd1326f00",
+                "sha256:38bfd08c9191716d65e6ac52741442ee918bfe2db43993aa4d3b365966c0ab48",
+                "sha256:3a49aaff22bc576680b4bcb3c7de896587f6ab4adaa788bedbc468dd0ad28cce",
+                "sha256:3b167b9e47f3fec8cc28a8f73a9e47c563ceb6681c16dcbe2c7d41e084cee755",
+                "sha256:3bc16228495e67ec990668970e815b341160258178c21b7716400c5e7a78976a",
+                "sha256:3f49ec4e8d5bd860e9958e88e8b312e31828f5cb2203039390c551f3fb0b45dd",
+                "sha256:434344df3037df08bad7422d5d36a415f30ddcc29ac1ad0cc0160b4976b782b5",
+                "sha256:4713e5cd986f9467494e5b47b0149ac0ffd7ad630d78cd6f6d2555b199e5a653",
+                "sha256:4865ef65b7eb7eee1a38c05bf7e91dd8182ef2afb1add65440f99e8dd43836d2",
+                "sha256:52b65e5eeacae121695bcea347cc9ad7da5556afcd3765c461e652ca3e8a84e9",
+                "sha256:551c04799325c890f2baa347e82cd2c3fb1d01b14940d7695f27c49cd2413b0c",
+                "sha256:5d777b177cb472f7996b9d696b81337bfb846dbe454b8a34a8e33704d3a435b0",
+                "sha256:6a041468c428622798193f0006831237aa749ee23e26b5b79e457618484457ef",
+                "sha256:6c55a1627290ba0718022fb63cf5a25d773c52b00319ef474dd443ebe92efab1",
+                "sha256:7c4235f45defd43bb2402ff8d3c7ff5d740e671bfd926852541c282ebef992bc",
+                "sha256:8642d374481d8cc7be9e364b82bcd11bda4a095c24c5f9f5754017a118496b77",
+                "sha256:90c431e99192a044a5e0217afd7ca0ca9824af93190332e6f7baf4da5375f331",
+                "sha256:9a7f3b9a580af6bf74a7c435b80925dfeb065c987dffaf4d957d578366a80b2c",
+                "sha256:9dfa3d8827efffebec61b108162eeb76b0fe170a8379f9838be441f61b4557fd",
+                "sha256:a3f1d959e3a57afa6b383eb880048929473507b1cc0e8b5e1a72ddf0fc1bbb77",
+                "sha256:a613827f97ca49e2b4b6d6eb7e61a0485afe23447978a60f42b981a45c2b25fd",
+                "sha256:a984c93aa413a594f048ef7166f0d9be73b0cd16dfab1395771b7c0607e07817",
+                "sha256:b843d5e2d2e576efeab59e382907bca1302f20eb33ee1a0a485e90d017b1088a",
+                "sha256:bdb1a2a67e34059e69aaead600525e91c126c46502ada1c7fc3d2c082cc8ad27",
+                "sha256:bf9ec50ffdf4e179c035f96a106a5c510d5295c5fb7e2e69dd4cda7b7f42f8bf",
+                "sha256:c10158396d6875f790bfb5600391d44edcbf52ac4d148e19baab3e8bb7825f76",
+                "sha256:c3f0f87e47e4d5a9bcfcfc1ce29d0e9127a5cab63e839cc6f845c563f29d765c",
+                "sha256:c75bb2c1e472723067c7ec986ea510350c335bf8e73ad12617fc6a9ec765dc4b",
+                "sha256:cb2879708357cac9805d20944973f3d50b472c703b8eaadd9bf136024c5539b4",
+                "sha256:cc7a76103b03f47d2aa02206f74cc8b2120f4bac02936ccee5d6f29290f5bde5",
+                "sha256:ce67d8dab4d88bcd1e5975d08235590fc5b9f31b2e2b7993ee1680810e67e56d",
+                "sha256:d08170123f5c04480bd7a82122b46c5afdb91553a9cef7d686d3fb9c369a9204",
+                "sha256:d4baa0450b9b0f1bd8acc25c2970d4e49e54726cbc437b81ffb65e5ffb6bd321",
+                "sha256:d5d92987c3669edbfa9f911a8ef1c46cfd2c3e51971fc80c215f99212b81d4b1",
+                "sha256:e0d1357940b590466bc72ac605e6ad3f7f05b2e1475b6896ec8e4c61e4d23034",
+                "sha256:e7d51df61579862414ac544f2892ea3c91a6b45dd728d4fb6260d65bf6f1ef0f",
+                "sha256:f74149a22a6a27e4c039f6477188dcbcb910acd60529dab5c114ff6265d40ba7",
+                "sha256:fdcb9cb0555c7947f29a4d5c05c98e260a04f37d6af31aede1e981bf1bdf8691"
+            ],
+            "markers": "python_version >= '3.7' and python_version < '4.0'",
+            "version": "==0.131.0"
+        }
+    },
+    "develop": {}
+}
diff --git a/README.md b/README.md
index 923e565..a50d527 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,12 @@
-# STILL IN DEVELOPMENT, NOT RECOMMENDED FOR GENERAL USE!
-
-![Logo banner](https://s1.fileditch.ch/hOwJhfeCFEsYFRWUWaz.png)
+![Logo banner](./assets/banner.png)
 
 # Zotify
 
 A customizable music and podcast downloader. \
 Formerly ZSp‌otify.
 
-Available on [zotify.xyz](https://zotify.xyz/zotify/zotify) and [GitHub](https://github.com/zotify-dev/zotify).
+Available on [zotify.xyz](https://zotify.xyz/zotify/zotify) and [GitHub](https://github.com/zotify-dev/zotify). \
+Built on [Librespot](https://github.com/kokarare1212/librespot-python).
 
 ## Features
 
@@ -48,23 +47,23 @@ Downloads specified items. Accepts any combination of track, album, playlist, ep
 
 <details><summary>All configuration options</summary>
 
-| Config key              | Command line argument     | Description                                         |
-| ----------------------- | ------------------------- | --------------------------------------------------- |
-| path_credentials        | --path-credentials        | Path to credentials file                            |
-| path_archive            | --path-archive            | Path to track archive file                          |
-| music_library           | --music-library           | Path to root of music library                       |
-| podcast_library         | --podcast-library         | Path to root of podcast library                     |
-| mixed_playlist_library  | --mixed-playlist-library  | Path to root of mixed content playlist library      |
-| output_album            | --output-album            | File layout for saved albums                        |
-| output_playlist_track   | --output-playlist-track   | File layout for tracks in a playlist                |
-| output_playlist_episode | --output-playlist-episode | File layout for episodes in a playlist              |
-| output_podcast          | --output-podcast          | File layout for saved podcasts                      |
-| download_quality        | --download-quality        | Audio download quality (auto for highest available) |
-| audio_format            | --audio-format            | Audio format of final track output                  |
-| transcode_bitrate       | --transcode-bitrate       | Transcoding bitrate (-1 to use download rate)       |
-| ffmpeg_path             | --ffmpeg-path             | Path to ffmpeg binary                               |
-| ffmpeg_args             | --ffmpeg-args             | Additional ffmpeg arguments when transcoding        |
-| save_credentials        | --save-credentials        | Save login credentials to a file                    |
+| Config key              | Command line argument     | Description                                         | Default                                                    |
+| ----------------------- | ------------------------- | --------------------------------------------------- | ---------------------------------------------------------- |
+| path_credentials        | --path-credentials        | Path to credentials file                            |                                                            |
+| path_archive            | --path-archive            | Path to track archive file                          |                                                            |
+| music_library           | --music-library           | Path to root of music library                       |                                                            |
+| podcast_library         | --podcast-library         | Path to root of podcast library                     |                                                            |
+| mixed_playlist_library  | --mixed-playlist-library  | Path to root of mixed content playlist library      |                                                            |
+| output_album            | --output-album            | File layout for saved albums                        | {album_artist}/{album}/{track_number}. {artists} - {title} |
+| output_playlist_track   | --output-playlist-track   | File layout for tracks in a playlist                | {playlist}/{playlist_number}. {artists} - {title}          |
+| output_playlist_episode | --output-playlist-episode | File layout for episodes in a playlist              | {playlist}/{playlist_number}. {episode_number} - {title}   |
+| output_podcast          | --output-podcast          | File layout for saved podcasts                      | {podcast}/{episode_number} - {title}                       |
+| download_quality        | --download-quality        | Audio download quality (auto for highest available) |                                                            |
+| audio_format            | --audio-format            | Audio format of final track output                  |                                                            |
+| transcode_bitrate       | --transcode-bitrate       | Transcoding bitrate (-1 to use download rate)       |                                                            |
+| ffmpeg_path             | --ffmpeg-path             | Path to ffmpeg binary                               |                                                            |
+| ffmpeg_args             | --ffmpeg-args             | Additional ffmpeg arguments when transcoding        |                                                            |
+| save_credentials        | --save-credentials        | Save login credentials to a file                    |                                                            |
 | save_subtitles          | --save-subtitles          |
 | save_artist_genres      | --save-arist-genres       |
 
@@ -91,9 +90,9 @@ Zotify can be used as a user-friendly library for saving music, podcasts, lyrics
 Here's a very simple example of downloading a track and its metadata:
 
 ```python
-import zotify
+from zotify import Session
 
-session = zotify.Session.from_userpass(username="username", password="password")
+session = Session.from_userpass(username="username", password="password")
 track = session.get_track("4cOdK2wGLETKBW3PvgPWqT")
 output = track.create_output("./Music", "{artist} - {title}")
 
@@ -113,20 +112,14 @@ All new contributions should follow this principle to keep the program consisten
 
 ## Will my account get banned if I use this tool?
 
-No user has reported their account getting banned after using Zotify
+There have been no confirmed cases of accounts getting banned as a result of using Zotify.
 However, it is still a possiblity and it is recommended you use Zotify with a burner account where possible.
 
-Consider using [Exportify](https://github.com/watsonbox/exportify) to keep backups of your playlists.
+Consider using [Exportify](https://watsonbox.github.io/exportify/) to keep backups of your playlists.
 
 ## Disclaimer
 
 Using Zotify violates Sp‌otify user guidelines and may get your account suspended.
 
-Zotify is intended to be used in compliance with DMCA, Section 1201, for educational, private and fair use, or any simlar laws in other regions. \
-Zotify contributors cannot be held liable for damages caused by the use of this tool. See the [LICENSE](./LICENCE) file for more details.
-
-## Acknowledgements
-
-- [Librespot-Python](https://github.com/kokarare1212/librespot-python) does most of the heavy lifting, it's used for authentication, fetching track data, and audio streaming.
-- [music-tag](https://github.com/KristoforMaynard/music-tag) is used for writing metadata into the downloaded files.
-- [FFmpeg](https://ffmpeg.org/) is used for transcoding audio.
+Zotify is intended to be used in compliance with DMCA, Section 1201, for educational, private and fair use, or any simlar laws in other regions.
+Zotify contributors are not liable for damages caused by the use of this tool. See the [LICENSE](./LICENCE) file for more details.
diff --git a/assets/banner.png b/assets/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1d63dbbedd240a7a01e499820c6f077068f3ae1
GIT binary patch
literal 112613
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
A3;+NC

literal 0
HcmV?d00001

diff --git a/requirements_dev.txt b/requirements_dev.txt
index 624c4eb..7caa5e4 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -2,5 +2,6 @@ black
 flake8
 mypy
 pre-commit
+types-protobuf
 types-requests
 wheel
diff --git a/setup.cfg b/setup.cfg
index 8db7ba7..94867d4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
 [metadata]
 name = zotify
-version = 0.9.2
+version = 0.9.4
 author = Zotify Contributors
 description = A highly customizable music and podcast downloader
 long_description = file: README.md
@@ -33,6 +33,10 @@ console_scripts =
 
 [flake8]
 max-line-length = 160
+ignore =
+    E701
+    E704
+    W503
 
 [mypy]
 warn_unused_configs = True
@@ -43,6 +47,9 @@ ignore_missing_imports = True
 [mypy-music_tag]
 ignore_missing_imports = True
 
+[mypy-mutagen.*]
+ignore_missing_imports = True
+
 [mypy-pwinput]
 ignore_missing_imports = True
 
diff --git a/zotify/__init__.py b/zotify/__init__.py
index 981d092..01148a3 100644
--- a/zotify/__init__.py
+++ b/zotify/__init__.py
@@ -3,24 +3,25 @@ from __future__ import annotations
 from pathlib import Path
 
 from librespot.audio.decoders import VorbisOnlyAudioQuality
-from librespot.core import ApiClient, PlayableContentFeeder
+from librespot.core import ApiClient, ApResolver, PlayableContentFeeder
 from librespot.core import Session as LibrespotSession
 from librespot.metadata import EpisodeId, PlayableId, TrackId
 from pwinput import pwinput
 from requests import HTTPError, get
 
+from zotify.loader import Loader
 from zotify.playable import Episode, Track
-from zotify.utils import API_URL, Quality
+from zotify.utils import Quality
+
+API_URL = "https://api.sp" + "otify.com/v1/"
 
 
 class Api(ApiClient):
-    def __init__(self, session: LibrespotSession, language: str = "en"):
+    def __init__(self, session: Session):
         super(Api, self).__init__(session)
         self.__session = session
-        self.__language = language
 
     def __get_token(self) -> str:
-        """Returns user's API token"""
         return (
             self.__session.tokens()
             .get_token(
@@ -40,25 +41,25 @@ class Api(ApiClient):
         offset: int = 0,
     ) -> dict:
         """
-        Requests data from api
+        Requests data from API
         Args:
-            url: API url and to get data from
+            url: API URL and to get data from
             params: parameters to be sent in the request
             limit: The maximum number of items in the response
             offset: The offset of the items returned
         Returns:
-            Dictionary representation of json response
+            Dictionary representation of JSON response
         """
         headers = {
             "Authorization": f"Bearer {self.__get_token()}",
             "Accept": "application/json",
-            "Accept-Language": self.__language,
+            "Accept-Language": self.__session.language(),
             "app-platform": "WebPlayer",
         }
         params["limit"] = limit
         params["offset"] = offset
 
-        response = get(url, headers=headers, params=params)
+        response = get(API_URL + url, headers=headers, params=params)
         data = response.json()
 
         try:
@@ -69,30 +70,39 @@ class Api(ApiClient):
             return data
 
 
-class Session:
+class Session(LibrespotSession):
     def __init__(
-        self,
-        librespot_session: LibrespotSession,
-        language: str = "en",
+        self, session_builder: LibrespotSession.Builder, language: str = "en"
     ) -> None:
         """
         Authenticates user, saves credentials to a file and generates api token.
         Args:
-            session_builder: An instance of the Librespot Session.Builder
+            session_builder: An instance of the Librespot Session builder
             langauge: ISO 639-1 language code
         """
-        self.__session = librespot_session
-        self.__language = language
-        self.__api = Api(self.__session, language)
-        self.__country = self.api().invoke_url(API_URL + "me")["country"]
+        with Loader("Logging in..."):
+            super(Session, self).__init__(
+                LibrespotSession.Inner(
+                    session_builder.device_type,
+                    session_builder.device_name,
+                    session_builder.preferred_locale,
+                    session_builder.conf,
+                    session_builder.device_id,
+                ),
+                ApResolver.get_random_accesspoint(),
+            )
+            self.connect()
+            self.authenticate(session_builder.login_credentials)
+            self.__api = Api(self)
+            self.__language = language
 
     @staticmethod
-    def from_file(cred_file: Path, langauge: str = "en") -> Session:
+    def from_file(cred_file: Path, language: str = "en") -> Session:
         """
         Creates session using saved credentials file
         Args:
             cred_file: Path to credentials file
-            langauge: ISO 639-1 language code for API responses
+            language: ISO 639-1 language code for API responses
         Returns:
             Zotify session
         """
@@ -102,12 +112,12 @@ class Session:
             .build()
         )
         session = LibrespotSession.Builder(conf).stored_file(str(cred_file))
-        return Session(session.create(), langauge)
+        return Session(session, language)
 
     @staticmethod
     def from_userpass(
-        username: str = "",
-        password: str = "",
+        username: str,
+        password: str,
         save_file: Path | None = None,
         language: str = "en",
     ) -> Session:
@@ -117,15 +127,10 @@ class Session:
             username: Account username
             password: Account password
             save_file: Path to save login credentials to, optional.
-            langauge: ISO 639-1 language code for API responses
+            language: ISO 639-1 language code for API responses
         Returns:
             Zotify session
         """
-        username = input("Username: ") if username == "" else username
-        password = (
-            pwinput(prompt="Password: ", mask="*") if password == "" else password
-        )
-
         builder = LibrespotSession.Configuration.Builder()
         if save_file:
             save_file.parent.mkdir(parents=True, exist_ok=True)
@@ -136,21 +141,35 @@ class Session:
         session = LibrespotSession.Builder(builder.build()).user_pass(
             username, password
         )
-        return Session(session.create(), language)
+        return Session(session, language)
+
+    @staticmethod
+    def from_prompt(save_file: Path | None = None, language: str = "en") -> Session:
+        """
+        Creates a session with username + password supplied from CLI prompt
+        Args:
+            save_file: Path to save login credentials to, optional.
+            language: ISO 639-1 language code for API responses
+        Returns:
+            Zotify session
+        """
+        username = input("Username: ")
+        password = pwinput(prompt="Password: ", mask="*")
+        return Session.from_userpass(username, password, save_file, language)
 
     def __get_playable(
         self, playable_id: PlayableId, quality: Quality
     ) -> PlayableContentFeeder.LoadedStream:
         if quality.value is None:
             quality = Quality.VERY_HIGH if self.is_premium() else Quality.HIGH
-        return self.__session.content_feeder().load(
+        return self.content_feeder().load(
             playable_id,
             VorbisOnlyAudioQuality(quality.value),
             False,
             None,
         )
 
-    def get_track(self, track_id: TrackId, quality: Quality = Quality.AUTO) -> Track:
+    def get_track(self, track_id: str, quality: Quality = Quality.AUTO) -> Track:
         """
         Gets track/episode data and audio stream
         Args:
@@ -159,9 +178,11 @@ class Session:
         Returns:
             Track object
         """
-        return Track(self.__get_playable(track_id, quality), self.api())
+        return Track(
+            self.__get_playable(TrackId.from_base62(track_id), quality), self.api()
+        )
 
-    def get_episode(self, episode_id: EpisodeId) -> Episode:
+    def get_episode(self, episode_id: str) -> Episode:
         """
         Gets track/episode data and audio stream
         Args:
@@ -169,20 +190,19 @@ class Session:
         Returns:
             Episode object
         """
-        return Episode(self.__get_playable(episode_id, Quality.NORMAL), self.api())
+        return Episode(
+            self.__get_playable(EpisodeId.from_base62(episode_id), Quality.NORMAL),
+            self.api(),
+        )
 
-    def api(self) -> ApiClient:
+    def api(self) -> Api:
         """Returns API Client"""
         return self.__api
 
-    def country(self) -> str:
-        """Returns two letter country code of user's account"""
-        return self.__country
+    def language(self) -> str:
+        """Returns session language"""
+        return self.__language
 
     def is_premium(self) -> bool:
         """Returns users premium account status"""
-        return self.__session.get_user_attribute("type") == "premium"
-
-    def clone(self) -> Session:
-        """Creates a copy of the session for use in a parallel thread"""
-        return Session(self.__session, self.__language)
+        return self.get_user_attribute("type") == "premium"
diff --git a/zotify/__main__.py b/zotify/__main__.py
index adbb088..6250003 100644
--- a/zotify/__main__.py
+++ b/zotify/__main__.py
@@ -7,7 +7,7 @@ from zotify.app import App
 from zotify.config import CONFIG_PATHS, CONFIG_VALUES
 from zotify.utils import OptionalOrFalse, SimpleHelpFormatter
 
-VERSION = "0.9.3"
+VERSION = "0.9.4"
 
 
 def main():
@@ -25,7 +25,7 @@ def main():
     parser.add_argument(
         "--debug",
         action="store_true",
-        help="Don't hide tracebacks",
+        help="Display full tracebacks",
     )
     parser.add_argument(
         "--config",
@@ -138,8 +138,9 @@ def main():
             from traceback import format_exc
 
             print(format_exc().splitlines()[-1])
+            exit(1)
         except KeyboardInterrupt:
-            print("goodbye")
+            exit(130)
 
 
 if __name__ == "__main__":
diff --git a/zotify/app.py b/zotify/app.py
index e3569e0..691dc91 100644
--- a/zotify/app.py
+++ b/zotify/app.py
@@ -1,47 +1,33 @@
 from argparse import Namespace
-from enum import Enum
 from pathlib import Path
-from typing import Any, NamedTuple
-
-from librespot.metadata import (
-    AlbumId,
-    ArtistId,
-    EpisodeId,
-    PlayableId,
-    PlaylistId,
-    ShowId,
-    TrackId,
-)
-from librespot.util import bytes_to_hex
+from typing import Any
 
 from zotify import Session
+from zotify.collections import Album, Artist, Collection, Episode, Playlist, Show, Track
 from zotify.config import Config
 from zotify.file import TranscodingError
 from zotify.loader import Loader
-from zotify.printer import PrintChannel, Printer
-from zotify.utils import API_URL, AudioFormat, MetadataEntry, b62_to_hex
+from zotify.logger import LogChannel, Logger
+from zotify.utils import (
+    AudioFormat,
+    CollectionType,
+    PlayableType,
+)
 
 
-class ParseError(ValueError):
-    ...
-
-
-class PlayableType(Enum):
-    TRACK = "track"
-    EPISODE = "episode"
-
-
-class PlayableData(NamedTuple):
-    type: PlayableType
-    id: PlayableId
-    library: Path
-    output: str
-    metadata: list[MetadataEntry] = []
+class ParseError(ValueError): ...
 
 
 class Selection:
     def __init__(self, session: Session):
         self.__session = session
+        self.__items: list[dict[str, Any]] = []
+        self.__print_labels = {
+            "album": ("name", "artists"),
+            "playlist": ("name", "owner"),
+            "track": ("title", "artists", "album"),
+            "show": ("title", "creator"),
+        }
 
     def search(
         self,
@@ -57,54 +43,55 @@ class Selection:
     ) -> list[str]:
         categories = ",".join(category)
         with Loader("Searching..."):
+            country = self.__session.api().invoke_url("me")["country"]
             resp = self.__session.api().invoke_url(
-                API_URL + "search",
+                "search",
                 {
                     "q": search_text,
                     "type": categories,
                     "include_external": "audio",
-                    "market": self.__session.country(),
+                    "market": country,
                 },
                 limit=10,
                 offset=0,
             )
 
         count = 0
-        links = []
-        for c in categories.split(","):
-            label = c + "s"
-            if len(resp[label]["items"]) > 0:
+        for cat in categories.split(","):
+            label = cat + "s"
+            items = resp[label]["items"]
+            if len(items) > 0:
                 print(f"\n### {label.capitalize()} ###")
-                for item in resp[label]["items"]:
-                    links.append(item)
-                    self.__print(count + 1, item)
-                    count += 1
-        return self.__get_selection(links)
+                try:
+                    self.__print(count, items, *self.__print_labels[cat])
+                except KeyError:
+                    self.__print(count, items, "name")
+                count += len(items)
+                self.__items.extend(items)
+        return self.__get_selection()
 
     def get(self, category: str, name: str = "", content: str = "") -> list[str]:
         with Loader("Fetching items..."):
-            r = self.__session.api().invoke_url(f"{API_URL}me/{category}", limit=50)
+            r = self.__session.api().invoke_url(f"me/{category}", limit=50)
             if content != "":
                 r = r[content]
             resp = r["items"]
 
-        items = []
         for i in range(len(resp)):
             try:
                 item = resp[i][name]
             except KeyError:
                 item = resp[i]
-            items.append(item)
+            self.__items.append(item)
             self.__print(i + 1, item)
-        return self.__get_selection(items)
+        return self.__get_selection()
 
     @staticmethod
     def from_file(file_path: Path) -> list[str]:
         with open(file_path, "r", encoding="utf-8") as f:
             return [line.strip() for line in f.readlines()]
 
-    @staticmethod
-    def __get_selection(items: list[dict[str, Any]]) -> list[str]:
+    def __get_selection(self) -> list[str]:
         print("\nResults to save (eg: 1,2,5 1-3)")
         selection = ""
         while len(selection) == 0:
@@ -115,64 +102,40 @@ class Selection:
             if "-" in i:
                 split = i.split("-")
                 for x in range(int(split[0]), int(split[1]) + 1):
-                    ids.append(items[x - 1]["uri"])
+                    ids.append(self.__items[x - 1]["uri"])
             else:
-                ids.append(items[int(i) - 1]["uri"])
+                ids.append(self.__items[int(i) - 1]["uri"])
         return ids
 
-    def __print(self, i: int, item: dict[str, Any]) -> None:
-        match item["type"]:
-            case "album":
-                self.__print_album(i, item)
-            case "playlist":
-                self.__print_playlist(i, item)
-            case "track":
-                self.__print_track(i, item)
-            case "show":
-                self.__print_show(i, item)
-            case _:
-                print(
-                    "{:<2} {:<77}".format(i, self.__fix_string_length(item["name"], 77))
+    def __print(self, count: int, items: list[dict[str, Any]], *args: str) -> None:
+        arg_range = range(len(args))
+        category_str = "   " + " ".join("{:<38}" for _ in arg_range)
+        print(category_str.format(*[s.upper() for s in list(args)]))
+        for item in items:
+            count += 1
+            fmt_str = "{:<2} ".format(count) + " ".join("{:<38}" for _ in arg_range)
+            fmt_vals: list[str] = []
+            for arg in args:
+                match arg:
+                    case "artists":
+                        fmt_vals.append(
+                            ", ".join([artist["name"] for artist in item["artists"]])
+                        )
+                    case "owner":
+                        fmt_vals.append(item["owner"]["display_name"])
+                    case "album":
+                        fmt_vals.append(item["album"]["name"])
+                    case "creator":
+                        fmt_vals.append(item["publisher"])
+                    case "title":
+                        fmt_vals.append(item["name"])
+                    case _:
+                        fmt_vals.append(item[arg])
+            print(
+                fmt_str.format(
+                    *(self.__fix_string_length(fmt_vals[x], 38) for x in arg_range),
                 )
-
-    def __print_album(self, i: int, item: dict[str, Any]) -> None:
-        artists = ", ".join([artist["name"] for artist in item["artists"]])
-        print(
-            "{:<2} {:<38} {:<38}".format(
-                i,
-                self.__fix_string_length(item["name"], 38),
-                self.__fix_string_length(artists, 38),
             )
-        )
-
-    def __print_playlist(self, i: int, item: dict[str, Any]) -> None:
-        print(
-            "{:<2} {:<38} {:<38}".format(
-                i,
-                self.__fix_string_length(item["name"], 38),
-                self.__fix_string_length(item["owner"]["display_name"], 38),
-            )
-        )
-
-    def __print_track(self, i: int, item: dict[str, Any]) -> None:
-        artists = ", ".join([artist["name"] for artist in item["artists"]])
-        print(
-            "{:<2} {:<38} {:<38} {:<38}".format(
-                i,
-                self.__fix_string_length(item["name"], 38),
-                self.__fix_string_length(artists, 38),
-                self.__fix_string_length(item["album"]["name"], 38),
-            )
-        )
-
-    def __print_show(self, i: int, item: dict[str, Any]) -> None:
-        print(
-            "{:<2} {:<38} {:<38}".format(
-                i,
-                self.__fix_string_length(item["name"], 38),
-                self.__fix_string_length(item["publisher"], 38),
-            )
-        )
 
     @staticmethod
     def __fix_string_length(text: str, max_length: int) -> str:
@@ -182,42 +145,48 @@ class Selection:
 
 
 class App:
-    __playable_list: list[PlayableData] = []
-
     def __init__(self, args: Namespace):
         self.__config = Config(args)
-        Printer(self.__config)
+        Logger(self.__config)
 
+        # Check options
         if self.__config.audio_format == AudioFormat.VORBIS and (
             self.__config.ffmpeg_args != "" or self.__config.ffmpeg_path != ""
         ):
-            Printer.print(
-                PrintChannel.WARNINGS,
+            Logger.log(
+                LogChannel.WARNINGS,
                 "FFmpeg options will be ignored since no transcoding is required",
             )
 
-        with Loader("Logging in..."):
-            if (
-                args.username != "" and args.password != ""
-            ) or not self.__config.credentials.is_file():
-                self.__session = Session.from_userpass(
-                    args.username,
-                    args.password,
-                    self.__config.credentials,
-                    self.__config.language,
-                )
-            else:
-                self.__session = Session.from_file(
-                    self.__config.credentials, self.__config.language
-                )
+        # Create session
+        if args.username != "" and args.password != "":
+            self.__session = Session.from_userpass(
+                args.username,
+                args.password,
+                self.__config.credentials,
+                self.__config.language,
+            )
+        elif self.__config.credentials.is_file():
+            self.__session = Session.from_file(
+                self.__config.credentials, self.__config.language
+            )
+        else:
+            self.__session = Session.from_prompt(
+                self.__config.credentials, self.__config.language
+            )
 
+        # Get items to download
         ids = self.get_selection(args)
         with Loader("Parsing input..."):
             try:
-                self.parse(ids)
+                collections = self.parse(ids)
             except ParseError as e:
-                Printer.print(PrintChannel.ERRORS, str(e))
-        self.download_all()
+                Logger.log(LogChannel.ERRORS, str(e))
+        if len(collections) > 0:
+            self.download_all(collections)
+        else:
+            Logger.log(LogChannel.WARNINGS, "there is nothing to do")
+        exit(0)
 
     def get_selection(self, args: Namespace) -> list[str]:
         selection = Selection(self.__session)
@@ -240,17 +209,14 @@ class App:
             elif args.urls:
                 return args.urls
         except (FileNotFoundError, ValueError):
-            Printer.print(PrintChannel.WARNINGS, "there is nothing to do")
+            Logger.log(LogChannel.WARNINGS, "there is nothing to do")
         except KeyboardInterrupt:
-            Printer.print(PrintChannel.WARNINGS, "\nthere is nothing to do")
-        exit()
+            Logger.log(LogChannel.WARNINGS, "\nthere is nothing to do")
+            exit(130)
+        exit(0)
 
-    def parse(self, links: list[str]) -> None:
-        """
-        Parses list of selected tracks/playlists/shows/etc...
-        Args:
-            links: List of links
-        """
+    def parse(self, links: list[str]) -> list[Collection]:
+        collections: list[Collection] = []
         for link in links:
             link = link.rsplit("?", 1)[0]
             try:
@@ -262,152 +228,92 @@ class App:
 
             match id_type:
                 case "album":
-                    self.__parse_album(b62_to_hex(_id))
+                    collections.append(Album(self.__session, _id))
                 case "artist":
-                    self.__parse_artist(b62_to_hex(_id))
+                    collections.append(Artist(self.__session, _id))
                 case "show":
-                    self.__parse_show(b62_to_hex(_id))
+                    collections.append(Show(self.__session, _id))
                 case "track":
-                    self.__parse_track(b62_to_hex(_id))
+                    collections.append(Track(self.__session, _id))
                 case "episode":
-                    self.__parse_episode(b62_to_hex(_id))
+                    collections.append(Episode(self.__session, _id))
                 case "playlist":
-                    self.__parse_playlist(_id)
+                    collections.append(Playlist(self.__session, _id))
                 case _:
-                    raise ParseError(f'Unknown content type "{id_type}"')
+                    raise ParseError(f'Unsupported content type "{id_type}"')
+        return collections
 
-    def __parse_album(self, hex_id: str) -> None:
-        album = self.__session.api().get_metadata_4_album(AlbumId.from_hex(hex_id))
-        for disc in album.disc:
-            for track in disc.track:
-                self.__playable_list.append(
-                    PlayableData(
-                        PlayableType.TRACK,
-                        TrackId.from_hex(bytes_to_hex(track.gid)),
-                        self.__config.music_library,
-                        self.__config.output_album,
-                    )
-                )
-
-    def __parse_artist(self, hex_id: str) -> None:
-        artist = self.__session.api().get_metadata_4_artist(ArtistId.from_hex(hex_id))
-        for album_group in artist.album_group and artist.single_group:
-            album = self.__session.api().get_metadata_4_album(
-                AlbumId.from_hex(album_group.album[0].gid)
-            )
-            for disc in album.disc:
-                for track in disc.track:
-                    self.__playable_list.append(
-                        PlayableData(
-                            PlayableType.TRACK,
-                            TrackId.from_hex(bytes_to_hex(track.gid)),
-                            self.__config.music_library,
-                            self.__config.output_album,
-                        )
-                    )
-
-    def __parse_playlist(self, b62_id: str) -> None:
-        playlist = self.__session.api().get_playlist(PlaylistId(b62_id))
-        for item in playlist.contents.items:
-            split = item.uri.split(":")
-            playable_type = PlayableType(split[1])
-            id_map = {PlayableType.TRACK: TrackId, PlayableType.EPISODE: EpisodeId}
-            playable_id = id_map[playable_type].from_base62(split[2])
-            self.__playable_list.append(
-                PlayableData(
-                    playable_type,
-                    playable_id,
-                    self.__config.playlist_library,
-                    self.__config.get(f"output_playlist_{playable_type.value}"),
-                )
-            )
-
-    def __parse_show(self, hex_id: str) -> None:
-        show = self.__session.api().get_metadata_4_show(ShowId.from_hex(hex_id))
-        for episode in show.episode:
-            self.__playable_list.append(
-                PlayableData(
-                    PlayableType.EPISODE,
-                    EpisodeId.from_hex(bytes_to_hex(episode.gid)),
-                    self.__config.podcast_library,
-                    self.__config.output_podcast,
-                )
-            )
-
-    def __parse_track(self, hex_id: str) -> None:
-        self.__playable_list.append(
-            PlayableData(
-                PlayableType.TRACK,
-                TrackId.from_hex(hex_id),
-                self.__config.music_library,
-                self.__config.output_album,
-            )
-        )
-
-    def __parse_episode(self, hex_id: str) -> None:
-        self.__playable_list.append(
-            PlayableData(
-                PlayableType.EPISODE,
-                EpisodeId.from_hex(hex_id),
-                self.__config.podcast_library,
-                self.__config.output_podcast,
-            )
-        )
-
-    def get_playable_list(self) -> list[PlayableData]:
-        """Returns list of Playable items"""
-        return self.__playable_list
-
-    def download_all(self) -> None:
+    def download_all(self, collections: list[Collection]) -> None:
         """Downloads playable to local file"""
-        for playable in self.__playable_list:
-            self.__download(playable)
+        for collection in collections:
+            for i in range(len(collection.playables)):
+                playable = collection.playables[i]
 
-    def __download(self, playable: PlayableData) -> None:
-        if playable.type == PlayableType.TRACK:
-            with Loader("Fetching track..."):
-                track = self.__session.get_track(
-                    playable.id, self.__config.download_quality
-                )
-        elif playable.type == PlayableType.EPISODE:
-            with Loader("Fetching episode..."):
-                track = self.__session.get_episode(playable.id)
-        else:
-            Printer.print(
-                PrintChannel.SKIPS,
-                f'Download Error: Unknown playable content "{playable.type}"',
-            )
-            return
-
-        output = track.create_output(playable.library, playable.output)
-        file = track.write_audio_stream(
-            output,
-            self.__config.chunk_size,
-        )
-
-        if playable.type == PlayableType.TRACK and self.__config.lyrics_file:
-            with Loader("Fetching lyrics..."):
-                try:
-                    track.get_lyrics().save(output)
-                except FileNotFoundError as e:
-                    Printer.print(PrintChannel.SKIPS, str(e))
-
-        Printer.print(PrintChannel.DOWNLOADS, f"\nDownloaded {track.name}")
-
-        if self.__config.audio_format != AudioFormat.VORBIS:
-            try:
-                with Loader(PrintChannel.PROGRESS, "Converting audio..."):
-                    file.transcode(
-                        self.__config.audio_format,
-                        self.__config.transcode_bitrate,
-                        True,
-                        self.__config.ffmpeg_path,
-                        self.__config.ffmpeg_args.split(),
+                # Get track data
+                if playable.type == PlayableType.TRACK:
+                    with Loader("Fetching track..."):
+                        track = self.__session.get_track(
+                            playable.id, self.__config.download_quality
+                        )
+                elif playable.type == PlayableType.EPISODE:
+                    with Loader("Fetching episode..."):
+                        track = self.__session.get_episode(playable.id)
+                else:
+                    Logger.log(
+                        LogChannel.SKIPS,
+                        f'Download Error: Unknown playable content "{playable.type}"',
                     )
-            except TranscodingError as e:
-                Printer.print(PrintChannel.ERRORS, str(e))
+                    return
 
-        if self.__config.save_metadata:
-            with Loader("Writing metadata..."):
-                file.write_metadata(track.metadata)
-                file.write_cover_art(track.get_cover_art(self.__config.artwork_size))
+                # Create download location and generate file name
+                match collection.type():
+                    case CollectionType.PLAYLIST:
+                        # TODO: add playlist name to track metadata
+                        library = self.__config.playlist_library
+                        template = (
+                            self.__config.output_playlist_track
+                            if playable.type == PlayableType.TRACK
+                            else self.__config.output_playlist_episode
+                        )
+                    case CollectionType.SHOW | CollectionType.EPISODE:
+                        library = self.__config.podcast_library
+                        template = self.__config.output_podcast
+                    case _:
+                        library = self.__config.music_library
+                        template = self.__config.output_album
+                output = track.create_output(
+                    library, template, self.__config.replace_existing
+                )
+
+                file = track.write_audio_stream(output)
+
+                # Download lyrics
+                if playable.type == PlayableType.TRACK and self.__config.lyrics_file:
+                    with Loader("Fetching lyrics..."):
+                        try:
+                            track.get_lyrics().save(output)
+                        except FileNotFoundError as e:
+                            Logger.log(LogChannel.SKIPS, str(e))
+                Logger.log(LogChannel.DOWNLOADS, f"\nDownloaded {track.name}")
+
+                # Transcode audio
+                if self.__config.audio_format != AudioFormat.VORBIS:
+                    try:
+                        with Loader(LogChannel.PROGRESS, "Converting audio..."):
+                            file.transcode(
+                                self.__config.audio_format,
+                                self.__config.transcode_bitrate,
+                                True,
+                                self.__config.ffmpeg_path,
+                                self.__config.ffmpeg_args.split(),
+                            )
+                    except TranscodingError as e:
+                        Logger.log(LogChannel.ERRORS, str(e))
+
+                # Write metadata
+                if self.__config.save_metadata:
+                    with Loader("Writing metadata..."):
+                        file.write_metadata(track.metadata)
+                        file.write_cover_art(
+                            track.get_cover_art(self.__config.artwork_size)
+                        )
diff --git a/zotify/collections.py b/zotify/collections.py
new file mode 100644
index 0000000..d43a3ed
--- /dev/null
+++ b/zotify/collections.py
@@ -0,0 +1,95 @@
+from librespot.metadata import (
+    AlbumId,
+    ArtistId,
+    PlaylistId,
+    ShowId,
+)
+
+from zotify import Session
+from zotify.utils import CollectionType, PlayableData, PlayableType, bytes_to_base62
+
+
+class Collection:
+    playables: list[PlayableData] = []
+
+    def type(self) -> CollectionType:
+        return CollectionType(self.__class__.__name__.lower())
+
+
+class Album(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        album = session.api().get_metadata_4_album(AlbumId.from_base62(b62_id))
+        for disc in album.disc:
+            for track in disc.track:
+                self.playables.append(
+                    PlayableData(
+                        PlayableType.TRACK,
+                        bytes_to_base62(track.gid),
+                    )
+                )
+
+
+class Artist(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        artist = session.api().get_metadata_4_artist(ArtistId.from_base62(b62_id))
+        for album_group in (
+            artist.album_group
+            and artist.single_group
+            and artist.compilation_group
+            and artist.appears_on_group
+        ):
+            album = session.api().get_metadata_4_album(
+                AlbumId.from_hex(album_group.album[0].gid)
+            )
+            for disc in album.disc:
+                for track in disc.track:
+                    self.playables.append(
+                        PlayableData(
+                            PlayableType.TRACK,
+                            bytes_to_base62(track.gid),
+                        )
+                    )
+
+
+class Show(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        show = session.api().get_metadata_4_show(ShowId.from_base62(b62_id))
+        for episode in show.episode:
+            self.playables.append(
+                PlayableData(PlayableType.EPISODE, bytes_to_base62(episode.gid))
+            )
+
+
+class Playlist(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        playlist = session.api().get_playlist(PlaylistId(b62_id))
+        # self.name = playlist.title
+        for item in playlist.contents.items:
+            split = item.uri.split(":")
+            playable_type = split[1]
+            if playable_type == "track":
+                self.playables.append(
+                    PlayableData(
+                        PlayableType.TRACK,
+                        split[2],
+                    )
+                )
+            elif playable_type == "episode":
+                self.playables.append(
+                    PlayableData(
+                        PlayableType.EPISODE,
+                        split[2],
+                    )
+                )
+            else:
+                raise ValueError("Unknown playable content", playable_type)
+
+
+class Track(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        self.playables.append(PlayableData(PlayableType.TRACK, b62_id))
+
+
+class Episode(Collection):
+    def __init__(self, session: Session, b62_id: str):
+        self.playables.append(PlayableData(PlayableType.EPISODE, b62_id))
diff --git a/zotify/config.py b/zotify/config.py
index c2d1a68..b6dcf53 100644
--- a/zotify/config.py
+++ b/zotify/config.py
@@ -10,7 +10,6 @@ from zotify.utils import AudioFormat, ImageSize, Quality
 ALL_ARTISTS = "all_artists"
 ARTWORK_SIZE = "artwork_size"
 AUDIO_FORMAT = "audio_format"
-CHUNK_SIZE = "chunk_size"
 CREATE_PLAYLIST_FILE = "create_playlist_file"
 CREDENTIALS = "credentials"
 DOWNLOAD_QUALITY = "download_quality"
@@ -64,8 +63,8 @@ CONFIG_PATHS = {
 OUTPUT_PATHS = {
     "album": "{album_artist}/{album}/{track_number}. {artists} - {title}",
     "podcast": "{podcast}/{episode_number} - {title}",
-    "playlist_track": "{playlist}/{playlist_number}. {artists} - {title}",
-    "playlist_episode": "{playlist}/{playlist_number}. {episode_number} - {title}",
+    "playlist_track": "{playlist}/{artists} - {title}",
+    "playlist_episode": "{playlist}/{episode_number} - {title}",
 }
 
 CONFIG_VALUES = {
@@ -222,12 +221,6 @@ CONFIG_VALUES = {
         "args": ["--skip-duplicates"],
         "help": "Skip downloading existing track to different album",
     },
-    CHUNK_SIZE: {
-        "default": 16384,
-        "type": int,
-        "args": ["--chunk-size"],
-        "help": "Number of bytes read at a time during download",
-    },
     PRINT_DOWNLOADS: {
         "default": False,
         "type": bool,
@@ -265,7 +258,6 @@ class Config:
     __config_file: Path | None
     artwork_size: ImageSize
     audio_format: AudioFormat
-    chunk_size: int
     credentials: Path
     download_quality: Quality
     ffmpeg_args: str
@@ -274,13 +266,13 @@ class Config:
     language: str
     lyrics_file: bool
     output_album: str
-    output_liked: str
     output_podcast: str
     output_playlist_track: str
     output_playlist_episode: str
     playlist_library: Path
     podcast_library: Path
     print_progress: bool
+    replace_existing: bool
     save_metadata: bool
     transcode_bitrate: int
 
@@ -323,14 +315,14 @@ class Config:
 
         # "library" arg overrides all *_library options
         if args.library:
-            self.music_library = args.library
-            self.playlist_library = args.library
-            self.podcast_library = args.library
+            print("args.library")
+            self.music_library = Path(args.library).expanduser().resolve()
+            self.playlist_library = Path(args.library).expanduser().resolve()
+            self.podcast_library = Path(args.library).expanduser().resolve()
 
         # "output" arg overrides all output_* options
         if args.output:
             self.output_album = args.output
-            self.output_liked = args.output
             self.output_podcast = args.output
             self.output_playlist_track = args.output
             self.output_playlist_episode = args.output
@@ -338,10 +330,10 @@ class Config:
     @staticmethod
     def __parse_arg_value(key: str, value: Any) -> Any:
         config_type = CONFIG_VALUES[key]["type"]
-        if type(value) == config_type:
+        if type(value) is config_type:
             return value
         elif config_type == Path:
-            return Path(value).expanduser()
+            return Path(value).expanduser().resolve()
         elif config_type == AudioFormat:
             return AudioFormat[value.upper()]
         elif config_type == ImageSize.from_string:
diff --git a/zotify/file.py b/zotify/file.py
index 4cf1bfc..960f376 100644
--- a/zotify/file.py
+++ b/zotify/file.py
@@ -8,8 +8,7 @@ from mutagen.oggvorbis import OggVorbisHeaderError
 from zotify.utils import AudioFormat, MetadataEntry
 
 
-class TranscodingError(RuntimeError):
-    ...
+class TranscodingError(RuntimeError): ...
 
 
 class LocalFile:
diff --git a/zotify/loader.py b/zotify/loader.py
index 9eb3885..364a147 100644
--- a/zotify/loader.py
+++ b/zotify/loader.py
@@ -8,7 +8,7 @@ from sys import platform
 from threading import Thread
 from time import sleep
 
-from zotify.printer import Printer
+from zotify.logger import Logger
 
 
 class Loader:
@@ -50,7 +50,7 @@ class Loader:
         for c in cycle(self.steps):
             if self.done:
                 break
-            Printer.print_loader(f"\r {c} {self.desc} ")
+            Logger.print_loader(f"\r {c} {self.desc} ")
             sleep(self.timeout)
 
     def __enter__(self) -> None:
@@ -59,10 +59,10 @@ class Loader:
     def stop(self) -> None:
         self.done = True
         cols = get_terminal_size((80, 20)).columns
-        Printer.print_loader("\r" + " " * cols)
+        Logger.print_loader("\r" + " " * cols)
 
         if self.end != "":
-            Printer.print_loader(f"\r{self.end}")
+            Logger.print_loader(f"\r{self.end}")
 
     def __exit__(self, exc_type, exc_value, tb) -> None:
         # handle exceptions with those variables ^
diff --git a/zotify/printer.py b/zotify/logger.py
similarity index 85%
rename from zotify/printer.py
rename to zotify/logger.py
index 901e1ff..46c9112 100644
--- a/zotify/printer.py
+++ b/zotify/logger.py
@@ -13,7 +13,7 @@ from zotify.config import (
 )
 
 
-class PrintChannel(Enum):
+class LogChannel(Enum):
     SKIPS = PRINT_SKIPS
     PROGRESS = PRINT_PROGRESS
     ERRORS = PRINT_ERRORS
@@ -21,7 +21,7 @@ class PrintChannel(Enum):
     DOWNLOADS = PRINT_DOWNLOADS
 
 
-class Printer:
+class Logger:
     __config: Config
 
     @classmethod
@@ -29,15 +29,15 @@ class Printer:
         cls.__config = config
 
     @classmethod
-    def print(cls, channel: PrintChannel, msg: str) -> None:
+    def log(cls, channel: LogChannel, msg: str) -> None:
         """
         Prints a message to console if the print channel is enabled
         Args:
-            channel: PrintChannel to print to
-            msg: Message to print
+            channel: LogChannel to print to
+            msg: Message to log
         """
         if cls.__config.get(channel.value):
-            if channel == PrintChannel.ERRORS:
+            if channel == LogChannel.ERRORS:
                 print(msg, file=stderr)
             else:
                 print(msg)
@@ -76,7 +76,7 @@ class Printer:
         """
         Prints animated loading symbol
         Args:
-            msg: Message to print
+            msg: Message to display
         """
         if cls.__config.print_progress:
             print(msg, flush=True, end="")
diff --git a/zotify/playable.py b/zotify/playable.py
index dd312db..e2da87a 100644
--- a/zotify/playable.py
+++ b/zotify/playable.py
@@ -3,37 +3,40 @@ from pathlib import Path
 from typing import Any
 
 from librespot.core import PlayableContentFeeder
+from librespot.metadata import AlbumId
 from librespot.structure import GeneralAudioStream
 from librespot.util import bytes_to_hex
 from requests import get
 
 from zotify.file import LocalFile
-from zotify.printer import Printer
+from zotify.logger import Logger
 from zotify.utils import (
-    IMG_URL,
-    LYRICS_URL,
     AudioFormat,
     ImageSize,
     MetadataEntry,
+    PlayableType,
     bytes_to_base62,
     fix_filename,
 )
 
+IMG_URL = "https://i.s" + "cdn.co/image/"
+LYRICS_URL = "https://sp" + "client.wg.sp" + "otify.com/color-lyrics/v2/track/"
+
 
 class Lyrics:
     def __init__(self, lyrics: dict, **kwargs):
-        self.lines = []
-        self.sync_type = lyrics["syncType"]
+        self.__lines = []
+        self.__sync_type = lyrics["syncType"]
         for line in lyrics["lines"]:
-            self.lines.append(line["words"] + "\n")
-        if self.sync_type == "line_synced":
-            self.lines_synced = []
+            self.__lines.append(line["words"] + "\n")
+        if self.__sync_type == "line_synced":
+            self.__lines_synced = []
             for line in lyrics["lines"]:
                 timestamp = int(line["start_time_ms"])
                 ts_minutes = str(floor(timestamp / 60000)).zfill(2)
                 ts_seconds = str(floor((timestamp % 60000) / 1000)).zfill(2)
                 ts_millis = str(floor(timestamp % 1000))[:2].zfill(2)
-                self.lines_synced.append(
+                self.__lines_synced.append(
                     f"[{ts_minutes}:{ts_seconds}.{ts_millis}]{line.words}\n"
                 )
 
@@ -44,21 +47,24 @@ class Lyrics:
             location: path to target lyrics file
             prefer_synced: Use line synced lyrics if available
         """
-        if self.sync_type == "line_synced" and prefer_synced:
+        if self.__sync_type == "line_synced" and prefer_synced:
             with open(f"{path}.lrc", "w+", encoding="utf-8") as f:
-                f.writelines(self.lines_synced)
+                f.writelines(self.__lines_synced)
         else:
             with open(f"{path}.txt", "w+", encoding="utf-8") as f:
-                f.writelines(self.lines[:-1])
+                f.writelines(self.__lines[:-1])
 
 
 class Playable:
     cover_images: list[Any]
+    input_stream: GeneralAudioStream
     metadata: list[MetadataEntry]
     name: str
-    input_stream: GeneralAudioStream
+    type: PlayableType
 
-    def create_output(self, library: Path, output: str, replace: bool = False) -> Path:
+    def create_output(
+        self, library: Path = Path("./"), output: str = "{title}", replace: bool = False
+    ) -> Path:
         """
         Creates save directory for the output file
         Args:
@@ -68,9 +74,11 @@ class Playable:
         Returns:
             File path for the track
         """
-        for m in self.metadata:
-            if m.output is not None:
-                output = output.replace("{" + m.name + "}", fix_filename(m.output))
+        for meta in self.metadata:
+            if meta.string is not None:
+                output = output.replace(
+                    "{" + meta.name + "}", fix_filename(meta.string)
+                )
         file_path = library.joinpath(output).expanduser()
         if file_path.exists() and not replace:
             raise FileExistsError("File already downloaded")
@@ -81,18 +89,16 @@ class Playable:
     def write_audio_stream(
         self,
         output: Path,
-        chunk_size: int = 128 * 1024,
     ) -> LocalFile:
         """
         Writes audio stream to file
         Args:
             output: File path of saved audio stream
-            chunk_size: maximum number of bytes to read at a time
         Returns:
             LocalFile object
         """
         file = f"{output}.ogg"
-        with open(file, "wb") as f, Printer.progress(
+        with open(file, "wb") as f, Logger.progress(
             desc=self.name,
             total=self.input_stream.size,
             unit="B",
@@ -103,7 +109,7 @@ class Playable:
         ) as p_bar:
             chunk = None
             while chunk != b"":
-                chunk = self.input_stream.stream().read(chunk_size)
+                chunk = self.input_stream.stream().read(1024)
                 p_bar.update(f.write(chunk))
         return LocalFile(Path(file), AudioFormat.VORBIS)
 
@@ -121,8 +127,6 @@ class Playable:
 
 
 class Track(PlayableContentFeeder.LoadedStream, Playable):
-    lyrics: Lyrics
-
     def __init__(self, track: PlayableContentFeeder.LoadedStream, api):
         super(Track, self).__init__(
             track.track,
@@ -131,8 +135,10 @@ class Track(PlayableContentFeeder.LoadedStream, Playable):
             track.metrics,
         )
         self.__api = api
+        self.__lyrics: Lyrics
         self.cover_images = self.album.cover_group.image
         self.metadata = self.__default_metadata()
+        self.type = PlayableType.TRACK
 
     def __getattr__(self, name):
         try:
@@ -142,6 +148,10 @@ class Track(PlayableContentFeeder.LoadedStream, Playable):
 
     def __default_metadata(self) -> list[MetadataEntry]:
         date = self.album.date
+        if not hasattr(self.album, "genre"):
+            self.track.album = self.__api().get_metadata_4_album(
+                AlbumId.from_hex(bytes_to_hex(self.album.gid))
+            )
         return [
             MetadataEntry("album", self.album.name),
             MetadataEntry("album_artist", [a.name for a in self.album.artist]),
@@ -155,6 +165,7 @@ class Track(PlayableContentFeeder.LoadedStream, Playable):
             MetadataEntry("popularity", int(self.popularity * 255) / 100),
             MetadataEntry("track_number", self.number, str(self.number).zfill(2)),
             MetadataEntry("title", self.name),
+            MetadataEntry("year", date.year),
             MetadataEntry(
                 "replaygain_track_gain", self.normalization_data.track_gain_db, ""
             ),
@@ -169,21 +180,21 @@ class Track(PlayableContentFeeder.LoadedStream, Playable):
             ),
         ]
 
-    def get_lyrics(self) -> Lyrics:
+    def lyrics(self) -> Lyrics:
         """Returns track lyrics if available"""
         if not self.track.has_lyrics:
             raise FileNotFoundError(
                 f"No lyrics available for {self.track.artist[0].name} - {self.track.name}"
             )
         try:
-            return self.lyrics
+            return self.__lyrics
         except AttributeError:
-            self.lyrics = Lyrics(
+            self.__lyrics = Lyrics(
                 self.__api.invoke_url(LYRICS_URL + bytes_to_base62(self.track.gid))[
                     "lyrics"
                 ]
             )
-            return self.lyrics
+            return self.__lyrics
 
 
 class Episode(PlayableContentFeeder.LoadedStream, Playable):
@@ -197,6 +208,7 @@ class Episode(PlayableContentFeeder.LoadedStream, Playable):
         self.__api = api
         self.cover_images = self.episode.cover_image.image
         self.metadata = self.__default_metadata()
+        self.type = PlayableType.EPISODE
 
     def __getattr__(self, name):
         try:
@@ -216,23 +228,21 @@ class Episode(PlayableContentFeeder.LoadedStream, Playable):
             MetadataEntry("title", self.name),
         ]
 
-    def write_audio_stream(
-        self, output: Path, chunk_size: int = 128 * 1024
-    ) -> LocalFile:
+    def write_audio_stream(self, output: Path) -> LocalFile:
         """
-        Writes audio stream to file
+        Writes audio stream to file.
+        Uses external source if available for faster download.
         Args:
             output: File path of saved audio stream
-            chunk_size: maximum number of bytes to read at a time
         Returns:
             LocalFile object
         """
         if not bool(self.external_url):
-            return super().write_audio_stream(output, chunk_size)
+            return super().write_audio_stream(output)
         file = f"{output}.{self.external_url.rsplit('.', 1)[-1]}"
         with get(self.external_url, stream=True) as r, open(
             file, "wb"
-        ) as f, Printer.progress(
+        ) as f, Logger.progress(
             desc=self.name,
             total=self.input_stream.size,
             unit="B",
@@ -241,6 +251,6 @@ class Episode(PlayableContentFeeder.LoadedStream, Playable):
             position=0,
             leave=False,
         ) as p_bar:
-            for chunk in r.iter_content(chunk_size=chunk_size):
+            for chunk in r.iter_content(chunk_size=1024):
                 p_bar.update(f.write(chunk))
         return LocalFile(Path(file))
diff --git a/zotify/utils.py b/zotify/utils.py
index 01d5236..62dfc22 100644
--- a/zotify/utils.py
+++ b/zotify/utils.py
@@ -7,12 +7,8 @@ from sys import stderr
 from typing import Any, NamedTuple
 
 from librespot.audio.decoders import AudioQuality
-from librespot.util import Base62, bytes_to_hex
-from requests import get
+from librespot.util import Base62
 
-API_URL = "https://api.sp" + "otify.com/v1/"
-IMG_URL = "https://i.s" + "cdn.co/image/"
-LYRICS_URL = "https://sp" + "client.wg.sp" + "otify.com/color-lyrics/v2/track/"
 BASE62 = Base62.create_instance_with_inverted_character_set()
 
 
@@ -74,30 +70,47 @@ class ImageSize(IntEnum):
 class MetadataEntry:
     name: str
     value: Any
-    output: str
+    string: str
 
-    def __init__(self, name: str, value: Any, output_value: str | None = None):
+    def __init__(self, name: str, value: Any, string_value: str | None = None):
         """
         Holds metadata entries
         args:
             name: name of metadata key
             value: Value to use in metadata tags
-            output_value: Value when used in output formatting, if none is provided
+            string_value: Value when used in output formatting, if none is provided
             will use value from previous argument.
         """
         self.name = name
 
-        if type(value) == list:
+        if isinstance(value, tuple):
             value = "\0".join(value)
         self.value = value
 
-        if output_value is None:
-            output_value = self.value
-        elif output_value == "":
-            output_value = None
-        if type(output_value) == list:
-            output_value = ", ".join(output_value)
-        self.output = str(output_value)
+        if string_value is None:
+            string_value = self.value
+        if isinstance(string_value, list):
+            string_value = ", ".join(string_value)
+        self.string = str(string_value)
+
+
+class CollectionType(Enum):
+    ALBUM = "album"
+    ARTIST = "artist"
+    SHOW = "show"
+    PLAYLIST = "playlist"
+    TRACK = "track"
+    EPISODE = "episode"
+
+
+class PlayableType(Enum):
+    TRACK = "track"
+    EPISODE = "episode"
+
+
+class PlayableData(NamedTuple):
+    type: PlayableType
+    id: str
 
 
 class SimpleHelpFormatter(HelpFormatter):
@@ -147,7 +160,14 @@ class OptionalOrFalse(Action):
         setattr(
             namespace,
             self.dest,
-            True if not option_string.startswith("--no-") else False,
+            (
+                True
+                if not (
+                    option_string.startswith("--no-")
+                    or option_string.startswith("--dont-")
+                )
+                else False
+            ),
         )
 
 
@@ -172,29 +192,12 @@ def fix_filename(filename: str, substitute: str = "_", platform: str = PLATFORM)
     return sub(regex, substitute, str(filename), flags=IGNORECASE)
 
 
-def download_cover_art(images: list, size: ImageSize) -> bytes:
-    """
-    Returns image data of cover art
-    Args:
-        images: list of retrievable images
-        size: Desired size in pixels of cover art, can be 640, 300, or 64
-    Returns:
-        Image data of cover art
-    """
-    return get(images[size.value]["url"]).content
-
-
-def str_to_bool(value: str) -> bool:
-    if value.lower() in ["yes", "y", "true"]:
-        return True
-    if value.lower() in ["no", "n", "false"]:
-        return False
-    raise TypeError("Not a boolean: " + value)
-
-
 def bytes_to_base62(id: bytes) -> str:
+    """
+    Converts bytes to base62
+    Args:
+        id: bytes
+    Returns:
+        base62
+    """
     return BASE62.encode(id, 22).decode()
-
-
-def b62_to_hex(base62: str) -> str:
-    return bytes_to_hex(BASE62.decode(base62.encode(), 16))