mirror of
https://gitea.invidious.io/iv-org/documentation.git
synced 2024-08-15 00:53:34 +00:00
Compare commits
18 commits
d9a0b63ecb
...
7bfc59648e
Author | SHA1 | Date | |
---|---|---|---|
|
7bfc59648e | ||
|
c3bac1b3bb | ||
|
f9535adcd4 | ||
|
9b181d36b9 | ||
|
0722501b8c | ||
|
d984302483 | ||
|
1b68e2610f | ||
|
c1d870cb15 | ||
|
d38aaf105a | ||
|
29c528970d | ||
|
5b7f60446c | ||
|
6b3cc69615 | ||
|
b39027c2bd | ||
|
52bed068d3 | ||
|
6bc6c505ca | ||
|
b88dc233e3 | ||
|
d7c8d473a2 | ||
|
2316de913d |
7 changed files with 153 additions and 218 deletions
13
.github/ISSUE_TEMPLATE/new_instance.yaml
vendored
13
.github/ISSUE_TEMPLATE/new_instance.yaml
vendored
|
@ -18,10 +18,6 @@ body:
|
|||
|
||||
It is highly recommended to follow these tutorials because it will allow the instance to stay stable and performant over the long term.
|
||||
|
||||
Please consider joining our Matrix room for public instance maintainers by joining our Matrix room: https://matrix.to/#/#invidious:matrix.org
|
||||
then pinging @unixfox, @TheFrenchGhosty and @SamantazFox for asking to be invited to the Matrix room.
|
||||
We discuss troubles managing a public instance, sharing some advices and more.
|
||||
|
||||
- type: input
|
||||
id: url
|
||||
attributes:
|
||||
|
@ -89,6 +85,15 @@ body:
|
|||
validations:
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
id: matrix-username
|
||||
attributes:
|
||||
label: Your matrix username
|
||||
description: "Please input your Matrix username here to join the private Matrix room for public instances maintainers. We discuss troubles managing a public instance, share some advices and more. Optional but highly recommended."
|
||||
placeholder: "matrixuser"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: more-infos
|
||||
attributes:
|
||||
|
|
31
.github/workflows/add-instance-updown.yml
vendored
31
.github/workflows/add-instance-updown.yml
vendored
|
@ -62,43 +62,14 @@ jobs:
|
|||
period: '300',
|
||||
mute_until: 'forever',
|
||||
published: 'true',
|
||||
apdex_t: '1.0',
|
||||
alias: instanceHostname,
|
||||
string_match: 'An alternative front-end to YouTube' } };
|
||||
|
||||
|
||||
request(optionsAddNewCheck, async function (error, response, body) {
|
||||
if (error) throw new Error(error);
|
||||
console.log(body);
|
||||
if (body.token) {
|
||||
var optionsGetStatusPages = {
|
||||
method: 'GET',
|
||||
url: 'https://updown.io/api/status_pages?api-key=${{ secrets.UPDOWN_API_KEY }}',
|
||||
json: true
|
||||
};
|
||||
|
||||
request(optionsGetStatusPages, async function (error, response, body) {
|
||||
if (error) throw new Error(error);
|
||||
const statusPage = body.filter(element => element.token === "resvf");
|
||||
let checksOfStatusPage = statusPage[0].checks;
|
||||
|
||||
checksOfStatusPage.push(body.token)
|
||||
|
||||
var optionsAddCheckToStatusPage = {
|
||||
method: 'PUT',
|
||||
url: 'https://updown.io/api/status_pages/resvf?api-key=${{ secrets.UPDOWN_API_KEY }}',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
json: {checks: checksOfStatusPage}
|
||||
};
|
||||
|
||||
request(optionsAddCheckToStatusPage, async function (error, response, body) {
|
||||
if (error) throw new Error(error);
|
||||
|
||||
console.log(body)
|
||||
});
|
||||
});
|
||||
|
||||
var replyComment =
|
||||
['Hello! Your instance has been added to our monitoring system: https://updown.io/' + body.token,
|
||||
'You need to wait 30 days before we add your instance, this is to evaluate that your instance will keep a good uptime for one month.',
|
||||
|
|
246
docs/api.md
246
docs/api.md
|
@ -27,6 +27,11 @@ All endpoints that return a JSON body support `&hl=LANGUAGE` for translating fie
|
|||
"metadata": {
|
||||
"updatedAt": Int64,
|
||||
"lastChannelRefreshedAt": Int64
|
||||
},
|
||||
"playback": {
|
||||
"totalRequests": Int32?
|
||||
"successfulRequests": Int32?
|
||||
"ratio": Float32?
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@ -37,6 +42,7 @@ All endpoints that return a JSON body support `&hl=LANGUAGE` for translating fie
|
|||
|
||||
```javascript
|
||||
{
|
||||
"type": String, // "video"|"published"
|
||||
"title": String,
|
||||
"videoId": String,
|
||||
"videoThumbnails": [
|
||||
|
@ -47,6 +53,19 @@ All endpoints that return a JSON body support `&hl=LANGUAGE` for translating fie
|
|||
"height": Int32
|
||||
}
|
||||
],
|
||||
"storyboards": [
|
||||
{
|
||||
"url": String,
|
||||
"templateUrl": String,
|
||||
"width": Int32,
|
||||
"height": Int32,
|
||||
"count": Int32,
|
||||
"interval ": Int32,
|
||||
"storyboardWidth": Int32,
|
||||
"storyboardHeight": Int32,
|
||||
"storyboardCount": Int32
|
||||
}
|
||||
],
|
||||
|
||||
"description": String,
|
||||
"descriptionHtml": String,
|
||||
|
@ -82,7 +101,9 @@ All endpoints that return a JSON body support `&hl=LANGUAGE` for translating fie
|
|||
"rating": Float32,
|
||||
"isListed": Bool,
|
||||
"liveNow": Bool,
|
||||
"isPostLiveDvr": Bool,
|
||||
"isUpcoming": Bool,
|
||||
"dashUrl:" String,
|
||||
"premiereTimestamp": Int64?,
|
||||
|
||||
"hlsUrl": String?,
|
||||
|
@ -280,7 +301,7 @@ Captions can also be selected with an ISO `lang`, e.g. &lang=en, `tlang` will au
|
|||
Parameters:
|
||||
|
||||
```
|
||||
type: "music", "gaming", "news", "movies"
|
||||
type: "music", "gaming", "movies", "default"
|
||||
region: ISO 3166 country code (default: "US")
|
||||
```
|
||||
|
||||
|
@ -316,183 +337,6 @@ region: ISO 3166 country code (default: "US")
|
|||
]
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/comments/:ucid`, `/api/v1/channels/:ucid/comments`
|
||||
|
||||
|
||||
```javascript
|
||||
{
|
||||
"authorId": String,
|
||||
"comments": [
|
||||
{
|
||||
"author": String,
|
||||
"authorThumbnails": [
|
||||
"url": String,
|
||||
"width": Int32,
|
||||
"height": Int32
|
||||
],
|
||||
"authorId": String,
|
||||
"authorUrl": String,
|
||||
"isEdited": Bool,
|
||||
"content": String,
|
||||
"contentHtml": String,
|
||||
"published": Int64,
|
||||
"publishedText": String,
|
||||
"likeCount": Int32,
|
||||
"commentId": String,
|
||||
"authorIsChannelOwner": Bool,
|
||||
"creatorHeart": {
|
||||
"creatorThumbnail": String,
|
||||
"creatorName": String
|
||||
}?,
|
||||
"replies": {
|
||||
"replyCount": Int32,
|
||||
"continuation": String
|
||||
}?,
|
||||
"attachment": Attachment?
|
||||
}
|
||||
],
|
||||
"continuation": String?
|
||||
}
|
||||
```
|
||||
|
||||
The `authorId` for top-level comments will always(?) be the same as the requested channel. Top-level comments will also have an optional `attachment`, which can be one of:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"type": "image",
|
||||
"imageThumbnails": [
|
||||
{
|
||||
"url": String,
|
||||
"width": Int32,
|
||||
"height": Int32
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
{
|
||||
"type": "video",
|
||||
"title": String,
|
||||
"videoId": String,
|
||||
"videoThumbnails": [
|
||||
{
|
||||
"quality": String,
|
||||
"url": String,
|
||||
"width": Int32,
|
||||
"height": Int32
|
||||
}
|
||||
],
|
||||
"lengthSeconds": Int32,
|
||||
"author": String,
|
||||
"authorId": String,
|
||||
"authorUrl": String,
|
||||
"published": Int64,
|
||||
"publishedText": String,
|
||||
"viewCount": Int64,
|
||||
"viewCountText": String
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
{
|
||||
"type": "unknown",
|
||||
"error": "Unrecognized attachment type."
|
||||
}
|
||||
```
|
||||
|
||||
Some attachments may only have a `type` and `error`, similar to the above. Attachments will *only* be present on top-level comments.
|
||||
|
||||
Parameters:
|
||||
|
||||
```
|
||||
continuation: String
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/search/:ucid`
|
||||
|
||||
> Schema:
|
||||
|
||||
```javascript
|
||||
[
|
||||
{
|
||||
type: "video",
|
||||
title: String,
|
||||
videoId: String,
|
||||
author: String,
|
||||
authorId: String,
|
||||
authorUrl: String,
|
||||
videoThumbnails: [
|
||||
{
|
||||
quality: String,
|
||||
url: String,
|
||||
width: Int32,
|
||||
height: Int32
|
||||
}
|
||||
],
|
||||
description: String,
|
||||
descriptionHtml: String,
|
||||
viewCount: Int64,
|
||||
published: Int64,
|
||||
publishedText: String,
|
||||
lengthSeconds: Int32,
|
||||
liveNow: Bool,
|
||||
paid: Bool,
|
||||
premium: Bool
|
||||
},
|
||||
{
|
||||
type: "playlist",
|
||||
title: String,
|
||||
playlistId: String,
|
||||
author: String,
|
||||
authorId: String,
|
||||
authorUrl: String,
|
||||
|
||||
videoCount: Int32,
|
||||
videos: [
|
||||
{
|
||||
title: String,
|
||||
videoId: String,
|
||||
lengthSeconds: Int32,
|
||||
videoThumbnails: [
|
||||
{
|
||||
quality: String,
|
||||
url: String,
|
||||
width: Int32,
|
||||
height: Int32
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "channel",
|
||||
author: String,
|
||||
authorId: String,
|
||||
authorUrl: String,
|
||||
|
||||
authorThumbnails: [
|
||||
{
|
||||
url: String,
|
||||
width: Int32,
|
||||
height: Int32
|
||||
}
|
||||
],
|
||||
subCount: Int32,
|
||||
videoCount: Int32,
|
||||
description: String,
|
||||
descriptionHtml: String
|
||||
}
|
||||
];
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
```
|
||||
q: String
|
||||
page: Int32
|
||||
```
|
||||
|
||||
##### GET `/api/v1/search/suggestions`
|
||||
|
||||
> Schema:
|
||||
|
@ -595,7 +439,7 @@ Parameters:
|
|||
```
|
||||
q: String
|
||||
page: Int32
|
||||
sort_by: "relevance", "rating", "upload_date", "view_count"
|
||||
sort: "relevance", "rating", "date", "views"
|
||||
date: "hour", "today", "week", "month", "year"
|
||||
duration: "short", "long", "medium"
|
||||
type: "video", "playlist", "channel", "movie", "show", "all", (default: all)
|
||||
|
@ -686,3 +530,47 @@ page: Int32
|
|||
]
|
||||
}
|
||||
```
|
||||
|
||||
##### GET `/api/v1/hashtag/:tag`
|
||||
> Schema:
|
||||
```javascript
|
||||
{
|
||||
results: VideoObject[],
|
||||
}
|
||||
```
|
||||
Parameters:
|
||||
```
|
||||
page: Int32
|
||||
```
|
||||
|
||||
##### GET `/api/v1/resolveurl`
|
||||
> Schema:
|
||||
```javascript
|
||||
{
|
||||
ucid?: String,
|
||||
videoId?: String,
|
||||
playlistId?: String,
|
||||
startTimeSeconds?: String,
|
||||
params?: String,
|
||||
pageType: string
|
||||
}
|
||||
```
|
||||
Parameters:
|
||||
```
|
||||
url: URL
|
||||
```
|
||||
|
||||
##### GET `/api/v1/clips`
|
||||
> Schema:
|
||||
```javascript
|
||||
{
|
||||
startTime: Float64, // in seconds
|
||||
endTime: Float64, // in seconds
|
||||
clipTitle: String,
|
||||
video: VideoObject
|
||||
}
|
||||
```
|
||||
Parameters:
|
||||
```
|
||||
id: string
|
||||
```
|
|
@ -85,6 +85,39 @@ This is the same as requesting `/api/v1/channels/:id/videos` without URL paramet
|
|||
}
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/:id/podcasts`
|
||||
|
||||
> URL parameters:
|
||||
|
||||
* `continuation`: A continuation token to get the next chunk of items. The token is provided each time this API is requested.
|
||||
|
||||
> Response:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"playlists": [
|
||||
// One or more PlaylistOject
|
||||
],
|
||||
"continuation": continuation
|
||||
}
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/:id/releases`
|
||||
|
||||
> URL parameters:
|
||||
|
||||
* `continuation`: A continuation token to get the next chunk of items. The token is provided each time this API is requested.
|
||||
|
||||
> Response:
|
||||
|
||||
```javascript
|
||||
{
|
||||
"playlists": [
|
||||
// One or more PlaylistOject
|
||||
],
|
||||
"continuation": continuation
|
||||
}
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/:id/shorts`
|
||||
|
||||
|
@ -206,3 +239,34 @@ This usually means that parsing support for the attachment type has not yet been
|
|||
"error": String
|
||||
}
|
||||
```
|
||||
|
||||
##### GET `/api/v1/channels/:ucid/search`
|
||||
|
||||
> Url parameters
|
||||
* `q`: The query to search
|
||||
* `page`: The page number of the search (Int32)
|
||||
|
||||
> Response:
|
||||
```javascript
|
||||
[
|
||||
VideoObject,
|
||||
PlaylistObject
|
||||
];
|
||||
```
|
||||
|
||||
##### GET `/api/v1/post/:id`
|
||||
> Url parameters
|
||||
|
||||
* `ucid`: You can optionally provide the channel's id for fetching the post.
|
||||
|
||||
> Response:
|
||||
Same as [`/api/v1/channels/:id/community`](#get-apiv1channelsidcommunity) but only returns one post in the comments array
|
||||
|
||||
|
||||
|
||||
##### GET `/api/v1/post/:id/comments`
|
||||
|
||||
* `ucid`: You can optionally provide the channel's id for fetching the post's comments.
|
||||
|
||||
> Response:
|
||||
Same as [`/api/v1/channels/:id/comments`](../api.md#get-apiv1commentsid) but has a postId instead of a videoId
|
|
@ -58,10 +58,16 @@
|
|||
|
||||
* [vid.lilay.dev](https://vid.lilay.dev) 🇸🇬 (uses Cloudflare)
|
||||
|
||||
* [inv.oikei.net](https://inv.oikei.net) 🇩🇪
|
||||
|
||||
* [invidious.privacyredirect.com](https://invidious.privacyredirect.com) 🇫🇮
|
||||
|
||||
* [invidious.reallyaweso.me](https://invidious.reallyaweso.me) 🇩🇪
|
||||
|
||||
* [invidious.materialio.us](https://invidious.materialio.us) 🇳🇿
|
||||
|
||||
* [inv.in.projectsegfau.lt](https://inv.in.projectsegfau.lt) 🇮🇳
|
||||
|
||||
* [invidious.incogniweb.net](https://invidious.incogniweb.net) 🇺🇸
|
||||
|
||||
### Tor Onion Services:
|
||||
|
||||
* [grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion](http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion) 🇺🇸 (Onion of vid.puffyan.us)
|
||||
|
|
|
@ -13,8 +13,8 @@ Supported operators:
|
|||
- `sort:`
|
||||
- `relevance` (default)
|
||||
- `rating`
|
||||
- `upload_date`, `date`
|
||||
- `view_count`, `views`
|
||||
- `date`
|
||||
- `views`
|
||||
- `date:`
|
||||
- `hour`
|
||||
- `today`
|
||||
|
@ -30,11 +30,13 @@ Supported operators:
|
|||
- `show`
|
||||
- `duration:`
|
||||
- `short`
|
||||
- `medium`
|
||||
- `long`
|
||||
- `features:` Multiple can be specified, for example `features:live,4k,subtitles`
|
||||
- `hd`
|
||||
- `subtitles`
|
||||
- `creative_commons`,`cc`
|
||||
- `3d`
|
||||
- `live`, `livestream`
|
||||
- `purchased`
|
||||
- `4k`
|
||||
|
|
|
@ -86,7 +86,6 @@ _This list is incomplete. You can help by expanding it._
|
|||
| `type=Default` | Default |
|
||||
| `type=Music` | Music |
|
||||
| `type=Gaming` | Gaming |
|
||||
| `type=News` | News |
|
||||
| `type=Movies` | Movies |
|
||||
| _Region_ | Provide "hint" (as ISO 3166 country code) for Invidious to load trending videos from the specified region | |
|
||||
| `region=JP` | Load videos that are trending in Japan |
|
||||
|
|
Loading…
Reference in a new issue