Updated Home (markdown)
160
Home.md
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)
|
||||
```
|
||||
Reference in New Issue
Block a user