Updated Home (markdown)

Marco
2023-03-28 21:48:07 +02:00
parent 5052750cc9
commit 96ab937fa5

160
Home.md

@@ -9,20 +9,154 @@ The available transport protocols are: **HTTP-POST** and **WebSockets** with the
This wiki is about wiring up a custom RPC client to the RPC server. (the examples will be written in **JavaScript** and **Python3**).
### Exposed RPC methods
* [Service.Exec](#service.exec)
* [Service.Progess](#service.progess)
* [Service.Formats]
* [Service.Pending]
* [Service.Running]
* [Service.Kill]
* [Service.KillAll]
* [Service.Clear]
* [Service.FreeSpace]
* [Service.DirectoryTree]
* [Service.UpdateExecutable]
* [Service.Exec](#serviceexec)
* [Service.Progess](#serviceprogess)
* [Service.Formats](#serviceformats)
* [Service.Pending](#servicepending)
* [Service.Running](#servicerunning)
* [Service.Kill](#servicekill)
* [Service.KillAll](#servicekillall)
* [Service.Clear](#serviceclear)
* [Service.FreeSpace](#servicefreespace)
* [Service.DirectoryTree](#servicedirectorytree)
* [Service.UpdateExecutable](#serviceupdateexecutable)
### Base Request body
```json5
{
"id": 0, // sequence number, useful to identify requests/responses
"method": "service.*", // rpc method name
"params": [] // method params usually a JSON object
}
```
The following request bodies will be inside the **params** array.
### Service.Exec
Hello
Invoke a new process of `yt-dlp` and start a download with options.
Each request will spawn a new process. Future releases will implement a download queue with a configurable size.
**Request Body**
```json5
{
"URL": "https://...", // the url of the resource to download
"Params" "--no-mtime, -X", // (optional) yt-dlp cli arguments
"Path": "", // (optional) path to download the file, if not specified will be the default download folder
"Rename" "" // (optional) rename the download file to the specified one
}
```
**Response Body**
```json5
string // started process UUIDv4 (e.g. d856b872-4f7d-487f-a29e-c2ea8c71592f)
```
```
**Example code**
```py
def call(url, method, args):
data = {
'id': 0,
'method': method,
'params': [args]
}
res = requests.post(url=url, json=data, headers={'Content-Type': 'application/json'})
response = json.loads(res.text)
return response
addr = 'ip or hostname'
rpc = f'http://{addr}/rpc'
args = {
'URL': 'some url'
'Params': ['--no-mtime']
'Rename': '👍.mp4'
}
call(rpc, 'Service.Exec', args)
```
### Service.Progress
Hello
Progess retrieves the Progress of a specific Process given its ID
**Request Body**
```json5
{
"ID": 0 // Process identification number
}
```
**Response Body**
```json5
{
"percentage": "29.3%", // download percentage string
"speed": 92374832, // speed in bytes/s int32
"ETA": 300 // time to complete in seconds int32
}
```
**Example code**
```py
def call(url, method, args):
data = {
'id': 0,
'method': method,
'params': [args]
}
res = requests.post(url=url, json=data, headers={'Content-Type': 'application/json'})
response = json.loads(res.text)
return response
addr = 'ip or hostname'
rpc = f'http://{addr}/rpc'
args = {
'ID': 'UUIDv4'
}
call(rpc, 'Service.Progress', args)
```
### Service.Running
Retrieves all running processes progress
**Request Body**
```json5
{} // or null
```
**Response Body**
```json5
{
[
{
"percentage": "29.3%", // download percentage string
"speed": 92374832, // speed in bytes/s int32
"ETA": 300 // time to complete in seconds int32
},
...
]
} // or null
```
**Example code**
```py
def call(url, method, args):
data = {
'id': 0,
'method': method,
'params': [args]
}
res = requests.post(url=url, json=data, headers={'Content-Type': 'application/json'})
response = json.loads(res.text)
return response
addr = 'ip or hostname'
rpc = f'http://{addr}/rpc'
args = None
call(rpc, 'Service.Running', args)
```