fetchtune 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mohammad Reza Maleki
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,310 @@
1
+ Metadata-Version: 2.4
2
+ Name: fetchtune
3
+ Version: 0.1.0
4
+ Summary: Universal music metadata resolver for Python
5
+ Author: Mohammad Reza Maleki
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/momalekiii/fetchtune
8
+ Project-URL: Repository, https://github.com/momalekiii/fetchtune
9
+ Project-URL: Issues, https://github.com/momalekiii/fetchtune/issues
10
+ Keywords: music,metadata,music-metadata,spotify,apple-music,resolver,music-resolver,track,album,artist
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Topic :: Multimedia :: Sound/Audio
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Dynamic: license-file
27
+
28
+ # ๐ŸŽต FetchTune
29
+
30
+ > Universal music metadata resolver for Python.
31
+
32
+ FetchTune is a lightweight Python library and CLI for resolving music URLs into clean, structured metadata.
33
+
34
+ It provides a unified interface for working with music data across different platforms, including tracks, artists, albums, artwork, release dates, durations, and platform information.
35
+
36
+ **Supported:** Spotify ยท Apple Music
37
+
38
+ ---
39
+
40
+ ## โœจ Features
41
+
42
+ | Feature | Status |
43
+ |---|---|
44
+ | Track metadata | โœ… |
45
+ | Artist metadata | โœ… |
46
+ | Album metadata | โœ… |
47
+ | Artwork & images | โœ… |
48
+ | Release date | โœ… |
49
+ | Duration | โœ… |
50
+ | Explicit status | โœ… |
51
+ | Platform IDs & URLs | โœ… |
52
+ | JSON serialization | โœ… |
53
+ | Cross-provider enrichment | โœ… |
54
+ | CLI | โœ… |
55
+ | Interactive URL input | โœ… |
56
+
57
+ ---
58
+
59
+ ## ๐Ÿงฑ Architecture
60
+
61
+ FetchTune uses a provider-based architecture. Each platform has its own provider responsible for resolving and normalizing platform-specific data.
62
+
63
+ ```text
64
+ FetchTune
65
+ โ”‚
66
+ Resolver
67
+ โ”‚
68
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
69
+ โ”‚ โ”‚
70
+ SpotifyProvider AppleProvider
71
+ โ”‚ โ”‚
72
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
73
+ โ”‚
74
+ Models
75
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”
76
+ โ”‚ โ”‚ โ”‚
77
+ Artist Album Track
78
+ ```
79
+
80
+ The core models remain platform-independent, making it possible to add new providers without changing the rest of the library.
81
+
82
+ ---
83
+
84
+ ## ๐Ÿ“ฆ Installation
85
+
86
+ ```bash
87
+ pip install fetchtune
88
+ ```
89
+
90
+ ---
91
+
92
+ ## ๐Ÿš€ Usage
93
+
94
+ ### CLI
95
+
96
+ Pass a supported music URL:
97
+
98
+ ```bash
99
+ fetchtune "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
100
+ ```
101
+
102
+ For JSON output:
103
+
104
+ ```bash
105
+ fetchtune --json "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
106
+ ```
107
+
108
+ ### Python
109
+
110
+ ```python
111
+ from fetchtune import resolve
112
+
113
+ track = resolve(
114
+ "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
115
+ )
116
+
117
+ print(track.title)
118
+ print(track.to_json(indent=2))
119
+ ```
120
+
121
+ ---
122
+
123
+ ## ๐ŸŽต Example
124
+
125
+ FetchTune resolving a real Spotify track:
126
+
127
+ <p align="center">
128
+ <img
129
+ src="https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9"
130
+ width="320"
131
+ alt="Fooroodgah - HEEN's Reinterpretation"
132
+ >
133
+ </p>
134
+
135
+ <h3 align="center">Fooroodgah - HEEN's Reinterpretation</h3>
136
+
137
+ <p align="center">
138
+ <strong>Mehrad Hidden ยท HEEN</strong>
139
+ </p>
140
+
141
+ <p align="center">
142
+ <a href="https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc">
143
+ Open on Spotify โ†—
144
+ </a>
145
+ </p>
146
+
147
+ ### Metadata
148
+
149
+ | Field | Value |
150
+ |---|---|
151
+ | **Title** | `Fooroodgah - HEEN's Reinterpretation` |
152
+ | **Artists** | Mehrad Hidden, HEEN |
153
+ | **Platform** | Spotify |
154
+ | **Track ID** | `4a0yULThaKQTm0hYPGEMOc` |
155
+ | **Release Date** | `2026-08-28` |
156
+ | **Duration** | `3:27` |
157
+ | **Duration (ms)** | `207875` |
158
+ | **Explicit** | `No` |
159
+ | **Album** | `null` |
160
+
161
+ ### Artists
162
+
163
+ | Artist | Spotify ID |
164
+ |---|---|
165
+ | Mehrad Hidden | `0jCVTRvQkILbJvpviTpvd1` |
166
+ | HEEN | `3dt8LORgsqjLP8hAYsFKdY` |
167
+
168
+ ### Artwork
169
+
170
+ | Size | URL |
171
+ |---|---|
172
+ | 640 ร— 640 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9` |
173
+ | 300 ร— 300 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d00001e029a1801fbe63582bc1b0678d9` |
174
+ | 64 ร— 64 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d000048519a1801fbe63582bc1b0678d9` |
175
+
176
+ ### JSON
177
+
178
+ ```json
179
+ {
180
+ "title": "Fooroodgah - HEEN's Reinterpretation",
181
+ "artists": [
182
+ {
183
+ "name": "Mehrad Hidden",
184
+ "id": "0jCVTRvQkILbJvpviTpvd1",
185
+ "url": "https://open.spotify.com/artist/0jCVTRvQkILbJvpviTpvd1"
186
+ },
187
+ {
188
+ "name": "HEEN",
189
+ "id": "3dt8LORgsqjLP8hAYsFKdY",
190
+ "url": "https://open.spotify.com/artist/3dt8LORgsqjLP8hAYsFKdY"
191
+ }
192
+ ],
193
+ "album": null,
194
+ "cover_url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9",
195
+ "images": [
196
+ {
197
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d00001e029a1801fbe63582bc1b0678d9",
198
+ "width": 300,
199
+ "height": 300
200
+ },
201
+ {
202
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d000048519a1801fbe63582bc1b0678d9",
203
+ "width": 64,
204
+ "height": 64
205
+ },
206
+ {
207
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9",
208
+ "width": 640,
209
+ "height": 640
210
+ }
211
+ ],
212
+ "release_date": "2026-08-28T00:00:00Z",
213
+ "duration_ms": 207875,
214
+ "is_explicit": false,
215
+ "platform": "spotify",
216
+ "platform_id": "4a0yULThaKQTm0hYPGEMOc",
217
+ "url": "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
218
+ }
219
+ ```
220
+
221
+ ---
222
+
223
+ ## ๐Ÿ”„ Album Enrichment
224
+
225
+ FetchTune can enrich incomplete track metadata using other providers.
226
+
227
+ For example:
228
+
229
+ ```json
230
+ {
231
+ "album": null
232
+ }
233
+ ```
234
+
235
+ can potentially become:
236
+
237
+ ```json
238
+ {
239
+ "album": {
240
+ "name": "Innerlight EP",
241
+ "id": "1582831419",
242
+ "release_date": "2021-07-30T12:00:00Z",
243
+ "total_tracks": 4
244
+ }
245
+ }
246
+ ```
247
+
248
+ This keeps the final `Track` model useful even when the original platform doesn't provide complete release information.
249
+
250
+ ---
251
+
252
+ ## ๐Ÿงช Testing
253
+
254
+ FetchTune includes tests for providers, models, resolver behavior, URL parsing, artwork handling, matching, enrichment, and serialization.
255
+
256
+ Run the test suite:
257
+
258
+ ```bash
259
+ pytest
260
+ ```
261
+
262
+ Current status:
263
+
264
+ ```text
265
+ 18 passed
266
+ ```
267
+
268
+ ---
269
+
270
+ ## ๐Ÿ› ๏ธ Development
271
+
272
+ ```bash
273
+ git clone https://github.com/momalekiii/fetchtune.git
274
+ cd fetchtune
275
+
276
+ python3 -m venv .venv
277
+ source .venv/bin/activate
278
+
279
+ pip install -e .
280
+ pytest
281
+ ```
282
+
283
+ Build the package:
284
+
285
+ ```bash
286
+ python -m build
287
+ ```
288
+
289
+ Check the distribution:
290
+
291
+ ```bash
292
+ python -m twine check dist/*
293
+ ```
294
+
295
+ ---
296
+
297
+ ## ๐Ÿ“„ License
298
+
299
+ MIT License
300
+
301
+ ---
302
+
303
+ <p align="center">
304
+ <strong>FetchTune</strong>
305
+ <br>
306
+ <sub>Music metadata, resolved.</sub>
307
+ <br><br>
308
+ <sub>ยฉ @momalekiii ยท 2026</sub>
309
+ </p>
310
+ ```
@@ -0,0 +1,283 @@
1
+ # ๐ŸŽต FetchTune
2
+
3
+ > Universal music metadata resolver for Python.
4
+
5
+ FetchTune is a lightweight Python library and CLI for resolving music URLs into clean, structured metadata.
6
+
7
+ It provides a unified interface for working with music data across different platforms, including tracks, artists, albums, artwork, release dates, durations, and platform information.
8
+
9
+ **Supported:** Spotify ยท Apple Music
10
+
11
+ ---
12
+
13
+ ## โœจ Features
14
+
15
+ | Feature | Status |
16
+ |---|---|
17
+ | Track metadata | โœ… |
18
+ | Artist metadata | โœ… |
19
+ | Album metadata | โœ… |
20
+ | Artwork & images | โœ… |
21
+ | Release date | โœ… |
22
+ | Duration | โœ… |
23
+ | Explicit status | โœ… |
24
+ | Platform IDs & URLs | โœ… |
25
+ | JSON serialization | โœ… |
26
+ | Cross-provider enrichment | โœ… |
27
+ | CLI | โœ… |
28
+ | Interactive URL input | โœ… |
29
+
30
+ ---
31
+
32
+ ## ๐Ÿงฑ Architecture
33
+
34
+ FetchTune uses a provider-based architecture. Each platform has its own provider responsible for resolving and normalizing platform-specific data.
35
+
36
+ ```text
37
+ FetchTune
38
+ โ”‚
39
+ Resolver
40
+ โ”‚
41
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
42
+ โ”‚ โ”‚
43
+ SpotifyProvider AppleProvider
44
+ โ”‚ โ”‚
45
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
46
+ โ”‚
47
+ Models
48
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”
49
+ โ”‚ โ”‚ โ”‚
50
+ Artist Album Track
51
+ ```
52
+
53
+ The core models remain platform-independent, making it possible to add new providers without changing the rest of the library.
54
+
55
+ ---
56
+
57
+ ## ๐Ÿ“ฆ Installation
58
+
59
+ ```bash
60
+ pip install fetchtune
61
+ ```
62
+
63
+ ---
64
+
65
+ ## ๐Ÿš€ Usage
66
+
67
+ ### CLI
68
+
69
+ Pass a supported music URL:
70
+
71
+ ```bash
72
+ fetchtune "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
73
+ ```
74
+
75
+ For JSON output:
76
+
77
+ ```bash
78
+ fetchtune --json "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
79
+ ```
80
+
81
+ ### Python
82
+
83
+ ```python
84
+ from fetchtune import resolve
85
+
86
+ track = resolve(
87
+ "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
88
+ )
89
+
90
+ print(track.title)
91
+ print(track.to_json(indent=2))
92
+ ```
93
+
94
+ ---
95
+
96
+ ## ๐ŸŽต Example
97
+
98
+ FetchTune resolving a real Spotify track:
99
+
100
+ <p align="center">
101
+ <img
102
+ src="https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9"
103
+ width="320"
104
+ alt="Fooroodgah - HEEN's Reinterpretation"
105
+ >
106
+ </p>
107
+
108
+ <h3 align="center">Fooroodgah - HEEN's Reinterpretation</h3>
109
+
110
+ <p align="center">
111
+ <strong>Mehrad Hidden ยท HEEN</strong>
112
+ </p>
113
+
114
+ <p align="center">
115
+ <a href="https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc">
116
+ Open on Spotify โ†—
117
+ </a>
118
+ </p>
119
+
120
+ ### Metadata
121
+
122
+ | Field | Value |
123
+ |---|---|
124
+ | **Title** | `Fooroodgah - HEEN's Reinterpretation` |
125
+ | **Artists** | Mehrad Hidden, HEEN |
126
+ | **Platform** | Spotify |
127
+ | **Track ID** | `4a0yULThaKQTm0hYPGEMOc` |
128
+ | **Release Date** | `2026-08-28` |
129
+ | **Duration** | `3:27` |
130
+ | **Duration (ms)** | `207875` |
131
+ | **Explicit** | `No` |
132
+ | **Album** | `null` |
133
+
134
+ ### Artists
135
+
136
+ | Artist | Spotify ID |
137
+ |---|---|
138
+ | Mehrad Hidden | `0jCVTRvQkILbJvpviTpvd1` |
139
+ | HEEN | `3dt8LORgsqjLP8hAYsFKdY` |
140
+
141
+ ### Artwork
142
+
143
+ | Size | URL |
144
+ |---|---|
145
+ | 640 ร— 640 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9` |
146
+ | 300 ร— 300 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d00001e029a1801fbe63582bc1b0678d9` |
147
+ | 64 ร— 64 | `https://image-cdn-ak.spotifycdn.com/image/ab67616d000048519a1801fbe63582bc1b0678d9` |
148
+
149
+ ### JSON
150
+
151
+ ```json
152
+ {
153
+ "title": "Fooroodgah - HEEN's Reinterpretation",
154
+ "artists": [
155
+ {
156
+ "name": "Mehrad Hidden",
157
+ "id": "0jCVTRvQkILbJvpviTpvd1",
158
+ "url": "https://open.spotify.com/artist/0jCVTRvQkILbJvpviTpvd1"
159
+ },
160
+ {
161
+ "name": "HEEN",
162
+ "id": "3dt8LORgsqjLP8hAYsFKdY",
163
+ "url": "https://open.spotify.com/artist/3dt8LORgsqjLP8hAYsFKdY"
164
+ }
165
+ ],
166
+ "album": null,
167
+ "cover_url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9",
168
+ "images": [
169
+ {
170
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d00001e029a1801fbe63582bc1b0678d9",
171
+ "width": 300,
172
+ "height": 300
173
+ },
174
+ {
175
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d000048519a1801fbe63582bc1b0678d9",
176
+ "width": 64,
177
+ "height": 64
178
+ },
179
+ {
180
+ "url": "https://image-cdn-ak.spotifycdn.com/image/ab67616d0000b2739a1801fbe63582bc1b0678d9",
181
+ "width": 640,
182
+ "height": 640
183
+ }
184
+ ],
185
+ "release_date": "2026-08-28T00:00:00Z",
186
+ "duration_ms": 207875,
187
+ "is_explicit": false,
188
+ "platform": "spotify",
189
+ "platform_id": "4a0yULThaKQTm0hYPGEMOc",
190
+ "url": "https://open.spotify.com/track/4a0yULThaKQTm0hYPGEMOc"
191
+ }
192
+ ```
193
+
194
+ ---
195
+
196
+ ## ๐Ÿ”„ Album Enrichment
197
+
198
+ FetchTune can enrich incomplete track metadata using other providers.
199
+
200
+ For example:
201
+
202
+ ```json
203
+ {
204
+ "album": null
205
+ }
206
+ ```
207
+
208
+ can potentially become:
209
+
210
+ ```json
211
+ {
212
+ "album": {
213
+ "name": "Innerlight EP",
214
+ "id": "1582831419",
215
+ "release_date": "2021-07-30T12:00:00Z",
216
+ "total_tracks": 4
217
+ }
218
+ }
219
+ ```
220
+
221
+ This keeps the final `Track` model useful even when the original platform doesn't provide complete release information.
222
+
223
+ ---
224
+
225
+ ## ๐Ÿงช Testing
226
+
227
+ FetchTune includes tests for providers, models, resolver behavior, URL parsing, artwork handling, matching, enrichment, and serialization.
228
+
229
+ Run the test suite:
230
+
231
+ ```bash
232
+ pytest
233
+ ```
234
+
235
+ Current status:
236
+
237
+ ```text
238
+ 18 passed
239
+ ```
240
+
241
+ ---
242
+
243
+ ## ๐Ÿ› ๏ธ Development
244
+
245
+ ```bash
246
+ git clone https://github.com/momalekiii/fetchtune.git
247
+ cd fetchtune
248
+
249
+ python3 -m venv .venv
250
+ source .venv/bin/activate
251
+
252
+ pip install -e .
253
+ pytest
254
+ ```
255
+
256
+ Build the package:
257
+
258
+ ```bash
259
+ python -m build
260
+ ```
261
+
262
+ Check the distribution:
263
+
264
+ ```bash
265
+ python -m twine check dist/*
266
+ ```
267
+
268
+ ---
269
+
270
+ ## ๐Ÿ“„ License
271
+
272
+ MIT License
273
+
274
+ ---
275
+
276
+ <p align="center">
277
+ <strong>FetchTune</strong>
278
+ <br>
279
+ <sub>Music metadata, resolved.</sub>
280
+ <br><br>
281
+ <sub>ยฉ @momalekiii ยท 2026</sub>
282
+ </p>
283
+ ```
@@ -0,0 +1,61 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "fetchtune"
7
+ version = "0.1.0"
8
+ description = "Universal music metadata resolver for Python"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+
12
+ license = { text = "MIT" }
13
+
14
+ authors = [
15
+ { name = "Mohammad Reza Maleki" }
16
+ ]
17
+
18
+ keywords = [
19
+ "music",
20
+ "metadata",
21
+ "music-metadata",
22
+ "spotify",
23
+ "apple-music",
24
+ "resolver",
25
+ "music-resolver",
26
+ "track",
27
+ "album",
28
+ "artist"
29
+ ]
30
+
31
+ classifiers = [
32
+ "Development Status :: 3 - Alpha",
33
+ "Intended Audience :: Developers",
34
+
35
+ "License :: OSI Approved :: MIT License",
36
+
37
+ "Programming Language :: Python :: 3",
38
+ "Programming Language :: Python :: 3 :: Only",
39
+ "Programming Language :: Python :: 3.10",
40
+ "Programming Language :: Python :: 3.11",
41
+ "Programming Language :: Python :: 3.12",
42
+ "Programming Language :: Python :: 3.13",
43
+ "Programming Language :: Python :: 3.14",
44
+
45
+ "Topic :: Multimedia :: Sound/Audio",
46
+ "Topic :: Software Development :: Libraries",
47
+ ]
48
+
49
+ [project.urls]
50
+ Homepage = "https://github.com/momalekiii/fetchtune"
51
+ Repository = "https://github.com/momalekiii/fetchtune"
52
+ Issues = "https://github.com/momalekiii/fetchtune/issues"
53
+
54
+ [project.scripts]
55
+ fetchtune = "fetchtune.cli:main"
56
+
57
+ [tool.setuptools]
58
+ package-dir = {"" = "src"}
59
+
60
+ [tool.setuptools.packages.find]
61
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from fetchtune.models import Album, Artist, Track
4
+ from fetchtune.resolver import (
5
+ Resolver,
6
+ ResolverError,
7
+ get_default_resolver,
8
+ resolve,
9
+ try_resolve,
10
+ )
11
+
12
+ __all__ = [
13
+ "Album",
14
+ "Artist",
15
+ "Track",
16
+ "Resolver",
17
+ "ResolverError",
18
+ "get_default_resolver",
19
+ "resolve",
20
+ "try_resolve",
21
+ ]
22
+
23
+ __version__ = "0.1.0"