yt-dlp-host-api 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,19 @@
1
+ Copyright (c) 2024 yt-dlp-host-api
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,110 @@
1
+ Metadata-Version: 2.1
2
+ Name: yt_dlp_host_api
3
+ Version: 0.1.0
4
+ Summary: A Python library for interacting with the yt-dlp-host API
5
+ Author-email: "Amadeus (Wasys)" <tubik.corp@gmail.com>
6
+ Project-URL: Homepage, https://github.com/Vasysik/yt-dlp-host-api
7
+ Project-URL: Issues, https://github.com/Vasysik/yt-dlp-host-api/issues
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: requests>=2.25.1
15
+
16
+ # [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API Client
17
+
18
+ This is a Python library for interacting with the [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API.
19
+
20
+ ## Installation
21
+
22
+ You can install the library using pip:
23
+
24
+ ```
25
+ pip install yt-dlp-host-api
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ Here's a basic example of how to use the library:
31
+
32
+ ```python
33
+ import yt_dlp_host_api
34
+
35
+ # Initialize the API client
36
+ api = yt_dlp_host_api.api('http://your-api-url.com')
37
+ client = api.get_client('YOUR_API_KEY')
38
+
39
+ # Download a video
40
+ client.get_video(url='https://youtu.be/1FPdtR_5KFo').save_file("test_video.mp4")
41
+ print("Video saved to test_video.mp4")
42
+
43
+ # Download a audio
44
+ client.get_audio(url='https://youtu.be/1FPdtR_5KFo').save_file("test_audio.mp3")
45
+ print("Audio saved to test_audio.mp3")
46
+
47
+ # Get info
48
+ info_json = client.get_info(url='https://youtu.be/1FPdtR_5KFo').get_json(['qualities', 'title'])
49
+ print("Video info:", info_json)
50
+
51
+ # Admin operations (requires admin API key)
52
+ new_key = client.create_key("user_key", ["get_video", "get_audio", "get_info"])
53
+ keys = client.get_keys()
54
+ key = client.get_key("user_key")
55
+ client.delete_key("user_key")
56
+ ```
57
+
58
+ ## Features
59
+
60
+ - Download YouTube videos
61
+ - Retrieve video information
62
+ - Checking client permissions
63
+ - Admin operations:
64
+ - Create new API keys
65
+ - List existing API keys
66
+ - Get API key by key name
67
+ - Delete API keys
68
+
69
+ ## API Reference
70
+
71
+ ### Client
72
+
73
+ - `client.get_video(url, quality='best')`: Simple way to get the result of get_video
74
+ - `client.get_audio(url)`: Simple way to get the result of get_audio
75
+ - `client.get_live_video(url, duration, start=0, quality='best')`: Simple way to get the result of get_live_video
76
+ - `client.get_live_audio(url, duration, start=0)`: Simple way to get the result of get_live_audio
77
+ - `client.get_info(url)`: Simple way to get the result of get_info
78
+ - `client.send_task.get_video(url, quality='best')`: Initiates a get_video task
79
+ - `client.send_task.get_audio(url)`: Initiates a get_audio task
80
+ - `client.send_task.get_live_video(url, duration, start=0, quality='best')`: Initiates a get_video task
81
+ - `client.send_task.get_live_audio(url, duration, start=0)`: Initiates a get_audio task
82
+ - `client.send_task.get_info(url)`: Initiates a get_info task
83
+ - `client.check_permissions(permissions)`: Checks for all permissions in the list
84
+
85
+ ### Task
86
+
87
+ - `task.get_status()`: Get the current status of a task
88
+ - `task.get_result()`: Wait for and return the result of a task
89
+
90
+ ### TaskResult
91
+
92
+ - `result.get_file()`: Get the file
93
+ - `result.get_file_url()`: Get the URL of the downloaded file
94
+ - `result.save_file(path)`: Save the downloaded file to the specified path
95
+ - `result.get_json(fields=None)`: Get the JSON data for info tasks (optionally filtered by fields)
96
+
97
+ ### Admin
98
+
99
+ - `client.create_key(name, permissions)`: Create a new API key
100
+ - `client.get_keys()`: List all existing API keys
101
+ - `client.get_key(name)`: Get API key by key name
102
+ - `client.delete_key(name)`: Delete an API key
103
+
104
+ ## Error Handling
105
+
106
+ The library uses exceptions to handle errors. Catch `yt_dlp_host_api.exceptions.APIError` to handle API-related errors.
107
+
108
+ ## Contributing
109
+
110
+ Contributions to yt-dlp-host-api are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue on the GitHub repository. Pull requests are also encouraged.
@@ -0,0 +1,95 @@
1
+ # [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API Client
2
+
3
+ This is a Python library for interacting with the [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API.
4
+
5
+ ## Installation
6
+
7
+ You can install the library using pip:
8
+
9
+ ```
10
+ pip install yt-dlp-host-api
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Here's a basic example of how to use the library:
16
+
17
+ ```python
18
+ import yt_dlp_host_api
19
+
20
+ # Initialize the API client
21
+ api = yt_dlp_host_api.api('http://your-api-url.com')
22
+ client = api.get_client('YOUR_API_KEY')
23
+
24
+ # Download a video
25
+ client.get_video(url='https://youtu.be/1FPdtR_5KFo').save_file("test_video.mp4")
26
+ print("Video saved to test_video.mp4")
27
+
28
+ # Download a audio
29
+ client.get_audio(url='https://youtu.be/1FPdtR_5KFo').save_file("test_audio.mp3")
30
+ print("Audio saved to test_audio.mp3")
31
+
32
+ # Get info
33
+ info_json = client.get_info(url='https://youtu.be/1FPdtR_5KFo').get_json(['qualities', 'title'])
34
+ print("Video info:", info_json)
35
+
36
+ # Admin operations (requires admin API key)
37
+ new_key = client.create_key("user_key", ["get_video", "get_audio", "get_info"])
38
+ keys = client.get_keys()
39
+ key = client.get_key("user_key")
40
+ client.delete_key("user_key")
41
+ ```
42
+
43
+ ## Features
44
+
45
+ - Download YouTube videos
46
+ - Retrieve video information
47
+ - Checking client permissions
48
+ - Admin operations:
49
+ - Create new API keys
50
+ - List existing API keys
51
+ - Get API key by key name
52
+ - Delete API keys
53
+
54
+ ## API Reference
55
+
56
+ ### Client
57
+
58
+ - `client.get_video(url, quality='best')`: Simple way to get the result of get_video
59
+ - `client.get_audio(url)`: Simple way to get the result of get_audio
60
+ - `client.get_live_video(url, duration, start=0, quality='best')`: Simple way to get the result of get_live_video
61
+ - `client.get_live_audio(url, duration, start=0)`: Simple way to get the result of get_live_audio
62
+ - `client.get_info(url)`: Simple way to get the result of get_info
63
+ - `client.send_task.get_video(url, quality='best')`: Initiates a get_video task
64
+ - `client.send_task.get_audio(url)`: Initiates a get_audio task
65
+ - `client.send_task.get_live_video(url, duration, start=0, quality='best')`: Initiates a get_video task
66
+ - `client.send_task.get_live_audio(url, duration, start=0)`: Initiates a get_audio task
67
+ - `client.send_task.get_info(url)`: Initiates a get_info task
68
+ - `client.check_permissions(permissions)`: Checks for all permissions in the list
69
+
70
+ ### Task
71
+
72
+ - `task.get_status()`: Get the current status of a task
73
+ - `task.get_result()`: Wait for and return the result of a task
74
+
75
+ ### TaskResult
76
+
77
+ - `result.get_file()`: Get the file
78
+ - `result.get_file_url()`: Get the URL of the downloaded file
79
+ - `result.save_file(path)`: Save the downloaded file to the specified path
80
+ - `result.get_json(fields=None)`: Get the JSON data for info tasks (optionally filtered by fields)
81
+
82
+ ### Admin
83
+
84
+ - `client.create_key(name, permissions)`: Create a new API key
85
+ - `client.get_keys()`: List all existing API keys
86
+ - `client.get_key(name)`: Get API key by key name
87
+ - `client.delete_key(name)`: Delete an API key
88
+
89
+ ## Error Handling
90
+
91
+ The library uses exceptions to handle errors. Catch `yt_dlp_host_api.exceptions.APIError` to handle API-related errors.
92
+
93
+ ## Contributing
94
+
95
+ Contributions to yt-dlp-host-api are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue on the GitHub repository. Pull requests are also encouraged.
@@ -0,0 +1,21 @@
1
+ [project]
2
+ name = "yt_dlp_host_api"
3
+ version = "0.1.0"
4
+ authors = [
5
+ { name="Amadeus (Wasys)", email="tubik.corp@gmail.com" },
6
+ ]
7
+ description = "A Python library for interacting with the yt-dlp-host API"
8
+ readme = "README.md"
9
+ requires-python = ">=3.8"
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "License :: OSI Approved :: MIT License",
13
+ "Operating System :: OS Independent",
14
+ ]
15
+ dependencies = [
16
+ "requests>=2.25.1"
17
+ ]
18
+
19
+ [project.urls]
20
+ Homepage = "https://github.com/Vasysik/yt-dlp-host-api"
21
+ Issues = "https://github.com/Vasysik/yt-dlp-host-api/issues"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,2 @@
1
+ from .api import api
2
+ __all__ = ['api']
@@ -0,0 +1,8 @@
1
+ from .client import Client
2
+
3
+ class api:
4
+ def __init__(self, host_url):
5
+ self.host_url = host_url
6
+
7
+ def get_client(self, api_key):
8
+ return Client(self.host_url, api_key)
@@ -0,0 +1,98 @@
1
+ import requests
2
+ from .task import Task
3
+ from .exceptions import APIError
4
+
5
+ class Client:
6
+ def __init__(self, host_url, api_key):
7
+ self.host_url = host_url
8
+ self.api_key = api_key
9
+ self.headers = {"X-API-Key": api_key, "Content-Type": "application/json"}
10
+ self.send_task = self.SendTask(self)
11
+
12
+ def get_video(self, url, video_quality="best", audio_quality="best"):
13
+ return self.send_task.get_video(url=url, video_quality=video_quality, audio_quality=audio_quality).get_result()
14
+
15
+ def get_audio(self, url, audio_quality="best"):
16
+ return self.send_task.get_audio(url=url, audio_quality=audio_quality).get_result()
17
+
18
+ def get_live_video(self, url, duration, start=0, video_quality="best", audio_quality="best"):
19
+ return self.send_task.get_live_video(url=url, start=start, duration=duration, video_quality=video_quality, audio_quality=audio_quality).get_result()
20
+
21
+ def get_live_audio(self, url, duration, start=0, audio_quality="best"):
22
+ return self.send_task.get_live_audio(url=url, start=start, duration=duration, audio_quality=audio_quality).get_result()
23
+
24
+ def get_info(self, url):
25
+ return self.send_task.get_info(url=url).get_result()
26
+
27
+ def check_permissions(self, permissions):
28
+ data = {"permissions": permissions}
29
+ response = requests.post(f"{self.host_url}/check_permissions", json=data, headers=self.headers)
30
+ if response.status_code != 200:
31
+ return False
32
+ return True
33
+
34
+ def create_key(self, name, permissions, response_json=False):
35
+ data = {"name": name, "permissions": permissions}
36
+ response = requests.post(f"{self.host_url}/create_key", json=data, headers=self.headers)
37
+ if response.status_code != 201:
38
+ raise APIError(response.json().get('error', 'Unknown error'))
39
+ if response_json: return response.json()
40
+ return response.json()['key']
41
+
42
+ def delete_key(self, name):
43
+ response = requests.delete(f"{self.host_url}/delete_key/{name}", headers=self.headers)
44
+ if response.status_code != 200:
45
+ raise APIError(response.json().get('error', 'Unknown error'))
46
+ return response.json()
47
+
48
+ def get_key(self, name, response_json=False):
49
+ response = requests.get(f"{self.host_url}/get_key/{name}", headers=self.headers)
50
+ if response.status_code != 200:
51
+ raise APIError(response.json().get('error', 'Unknown error'))
52
+ if response_json: return response.json()
53
+ return response.json()['key']
54
+
55
+ def get_keys(self):
56
+ response = requests.get(f"{self.host_url}/get_keys", headers=self.headers)
57
+ if response.status_code != 200:
58
+ raise APIError(response.json().get('error', 'Unknown error'))
59
+ return response.json()
60
+
61
+ class SendTask:
62
+ def __init__(self, client):
63
+ self.client = client
64
+
65
+ def get_video(self, url, video_quality="best", audio_quality="best"):
66
+ data = {"url": url, "video_quality": video_quality, "audio_quality": audio_quality}
67
+ response = requests.post(f"{self.client.host_url}/get_video", json=data, headers=self.client.headers)
68
+ if response.status_code != 200:
69
+ raise APIError(response.json().get('error', 'Unknown error'))
70
+ return Task(self.client, response.json()['task_id'], 'get_video')
71
+
72
+ def get_audio(self, url, audio_quality="best"):
73
+ data = {"url": url, "audio_quality": audio_quality}
74
+ response = requests.post(f"{self.client.host_url}/get_audio", json=data, headers=self.client.headers)
75
+ if response.status_code != 200:
76
+ raise APIError(response.json().get('error', 'Unknown error'))
77
+ return Task(self.client, response.json()['task_id'], 'get_audio')
78
+
79
+ def get_live_video(self, url, duration, start=0, video_quality="best", audio_quality="best"):
80
+ data = {"url": url, "start": start, "duration": duration, "video_quality": video_quality, "audio_quality": audio_quality}
81
+ response = requests.post(f"{self.client.host_url}/get_live_video", json=data, headers=self.client.headers)
82
+ if response.status_code != 200:
83
+ raise APIError(response.json().get('error', 'Unknown error'))
84
+ return Task(self.client, response.json()['task_id'], 'get_video')
85
+
86
+ def get_live_audio(self, url, duration, start=0, audio_quality="best"):
87
+ data = {"url": url, "start": start, "duration": duration, "audio_quality": audio_quality}
88
+ response = requests.post(f"{self.client.host_url}/get_live_audio", json=data, headers=self.client.headers)
89
+ if response.status_code != 200:
90
+ raise APIError(response.json().get('error', 'Unknown error'))
91
+ return Task(self.client, response.json()['task_id'], 'get_audio')
92
+
93
+ def get_info(self, url):
94
+ data = {"url": url}
95
+ response = requests.post(f"{self.client.host_url}/get_info", json=data, headers=self.client.headers)
96
+ if response.status_code != 200:
97
+ raise APIError(response.json().get('error', 'Unknown error'))
98
+ return Task(self.client, response.json()['task_id'], 'get_info')
@@ -0,0 +1,2 @@
1
+ class APIError(Exception):
2
+ pass
@@ -0,0 +1,68 @@
1
+ import requests
2
+ import json
3
+ import time
4
+ from .exceptions import APIError
5
+
6
+ class Task:
7
+ def __init__(self, client, task_id, task_type):
8
+ self.client = client
9
+ self.task_id = task_id
10
+ self.task_type = task_type
11
+
12
+ def get_status(self):
13
+ response = requests.get(f"{self.client.host_url}/status/{self.task_id}", headers=self.client.headers)
14
+ if response.status_code != 200:
15
+ raise APIError(response.json().get('error', 'Unknown error'))
16
+ return response.json()
17
+
18
+ def get_result(self, max_retries=360, delay=1):
19
+ for _ in range(max_retries):
20
+ status = self.get_status()
21
+ if status['status'] == 'completed':
22
+ return TaskResult(self.client, status)
23
+ elif status['status'] == 'error':
24
+ raise APIError(f"Task failed: {status.get('error', 'Unknown error')}")
25
+ elif status['status'] in ['waiting', 'processing']:
26
+ time.sleep(delay)
27
+ else:
28
+ raise APIError(f"Unknown task status: {status['status']}")
29
+
30
+ raise APIError(f"Task did not complete within the expected time (waited {max_retries * delay} seconds)")
31
+
32
+ class TaskResult:
33
+ def __init__(self, client, status):
34
+ self.client = client
35
+ self.status = status
36
+
37
+ def get_file(self, raw_response=False):
38
+ url = self.get_file_url()
39
+ response = requests.get(url, headers=self.client.headers)
40
+ if response.status_code != 200:
41
+ raise APIError(response.json().get('error', 'Unknown error'))
42
+ if raw_response: return response
43
+ return response.content
44
+
45
+ def get_file_url(self):
46
+ return f"{self.client.host_url}{self.status['file']}"
47
+
48
+ def save_file(self, path):
49
+ url = self.get_file_url()
50
+ response = requests.get(url, headers=self.client.headers)
51
+ if response.status_code != 200:
52
+ raise APIError(response.json().get('error', 'Unknown error'))
53
+ with open(path, 'wb') as f:
54
+ f.write(response.content)
55
+
56
+ def get_json(self, fields=None):
57
+ if self.status['task_type'] != 'get_info':
58
+ raise APIError("This method is only available for get_info tasks")
59
+ url = self.get_file_url()
60
+ if fields:
61
+ url += "?"
62
+ for field in fields:
63
+ url += f'{field}&'
64
+ response = requests.get(url, headers=self.client.headers)
65
+ if response.status_code != 200:
66
+ raise APIError(response.json().get('error', 'Unknown error'))
67
+ data = json.loads(response.text)
68
+ return data
@@ -0,0 +1,110 @@
1
+ Metadata-Version: 2.1
2
+ Name: yt_dlp_host_api
3
+ Version: 0.1.0
4
+ Summary: A Python library for interacting with the yt-dlp-host API
5
+ Author-email: "Amadeus (Wasys)" <tubik.corp@gmail.com>
6
+ Project-URL: Homepage, https://github.com/Vasysik/yt-dlp-host-api
7
+ Project-URL: Issues, https://github.com/Vasysik/yt-dlp-host-api/issues
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: requests>=2.25.1
15
+
16
+ # [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API Client
17
+
18
+ This is a Python library for interacting with the [yt-dlp-host](https://github.com/Vasysik/yt-dlp-host) API.
19
+
20
+ ## Installation
21
+
22
+ You can install the library using pip:
23
+
24
+ ```
25
+ pip install yt-dlp-host-api
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ Here's a basic example of how to use the library:
31
+
32
+ ```python
33
+ import yt_dlp_host_api
34
+
35
+ # Initialize the API client
36
+ api = yt_dlp_host_api.api('http://your-api-url.com')
37
+ client = api.get_client('YOUR_API_KEY')
38
+
39
+ # Download a video
40
+ client.get_video(url='https://youtu.be/1FPdtR_5KFo').save_file("test_video.mp4")
41
+ print("Video saved to test_video.mp4")
42
+
43
+ # Download a audio
44
+ client.get_audio(url='https://youtu.be/1FPdtR_5KFo').save_file("test_audio.mp3")
45
+ print("Audio saved to test_audio.mp3")
46
+
47
+ # Get info
48
+ info_json = client.get_info(url='https://youtu.be/1FPdtR_5KFo').get_json(['qualities', 'title'])
49
+ print("Video info:", info_json)
50
+
51
+ # Admin operations (requires admin API key)
52
+ new_key = client.create_key("user_key", ["get_video", "get_audio", "get_info"])
53
+ keys = client.get_keys()
54
+ key = client.get_key("user_key")
55
+ client.delete_key("user_key")
56
+ ```
57
+
58
+ ## Features
59
+
60
+ - Download YouTube videos
61
+ - Retrieve video information
62
+ - Checking client permissions
63
+ - Admin operations:
64
+ - Create new API keys
65
+ - List existing API keys
66
+ - Get API key by key name
67
+ - Delete API keys
68
+
69
+ ## API Reference
70
+
71
+ ### Client
72
+
73
+ - `client.get_video(url, quality='best')`: Simple way to get the result of get_video
74
+ - `client.get_audio(url)`: Simple way to get the result of get_audio
75
+ - `client.get_live_video(url, duration, start=0, quality='best')`: Simple way to get the result of get_live_video
76
+ - `client.get_live_audio(url, duration, start=0)`: Simple way to get the result of get_live_audio
77
+ - `client.get_info(url)`: Simple way to get the result of get_info
78
+ - `client.send_task.get_video(url, quality='best')`: Initiates a get_video task
79
+ - `client.send_task.get_audio(url)`: Initiates a get_audio task
80
+ - `client.send_task.get_live_video(url, duration, start=0, quality='best')`: Initiates a get_video task
81
+ - `client.send_task.get_live_audio(url, duration, start=0)`: Initiates a get_audio task
82
+ - `client.send_task.get_info(url)`: Initiates a get_info task
83
+ - `client.check_permissions(permissions)`: Checks for all permissions in the list
84
+
85
+ ### Task
86
+
87
+ - `task.get_status()`: Get the current status of a task
88
+ - `task.get_result()`: Wait for and return the result of a task
89
+
90
+ ### TaskResult
91
+
92
+ - `result.get_file()`: Get the file
93
+ - `result.get_file_url()`: Get the URL of the downloaded file
94
+ - `result.save_file(path)`: Save the downloaded file to the specified path
95
+ - `result.get_json(fields=None)`: Get the JSON data for info tasks (optionally filtered by fields)
96
+
97
+ ### Admin
98
+
99
+ - `client.create_key(name, permissions)`: Create a new API key
100
+ - `client.get_keys()`: List all existing API keys
101
+ - `client.get_key(name)`: Get API key by key name
102
+ - `client.delete_key(name)`: Delete an API key
103
+
104
+ ## Error Handling
105
+
106
+ The library uses exceptions to handle errors. Catch `yt_dlp_host_api.exceptions.APIError` to handle API-related errors.
107
+
108
+ ## Contributing
109
+
110
+ Contributions to yt-dlp-host-api are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue on the GitHub repository. Pull requests are also encouraged.
@@ -0,0 +1,13 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/yt_dlp_host_api/__init__.py
5
+ src/yt_dlp_host_api/api.py
6
+ src/yt_dlp_host_api/client.py
7
+ src/yt_dlp_host_api/exceptions.py
8
+ src/yt_dlp_host_api/task.py
9
+ src/yt_dlp_host_api.egg-info/PKG-INFO
10
+ src/yt_dlp_host_api.egg-info/SOURCES.txt
11
+ src/yt_dlp_host_api.egg-info/dependency_links.txt
12
+ src/yt_dlp_host_api.egg-info/requires.txt
13
+ src/yt_dlp_host_api.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ requests>=2.25.1
@@ -0,0 +1 @@
1
+ yt_dlp_host_api