Merge branch 'V3-SelfHost' into V3

This commit is contained in:
Kentai Radiquum 2025-05-31 12:40:33 +05:00
commit 23eaa82993
Signed by: Radiquum
GPG key ID: 858E8EE696525EED
9 changed files with 92 additions and 78 deletions

View file

@ -7,16 +7,16 @@
- аккаунт GitHub
- аккаунт Vercel
1. сделайте форк репозитория
1. Создайте форк репозитория
![fork button](./docs/deploy/fork.png)
2. Войдите в аккаунт vercel
2. Войдите в аккаунт Vercel
> [!IMPORTANT]
>Аккаунт Vercel должен быть связан с аккаунтом Github.
> Аккаунт Vercel должен быть связан с аккаунтом GitHub.
>
>Если у вас нет аккаунта vercel, то создайте его через вход с помощью Github.
> Если у вас нет аккаунта Vercel, то создайте его через вход с помощью GitHub.
3. Нажмите кнопку создать новый проект
@ -26,7 +26,7 @@
![vercel import button](./docs/deploy/vercel_import.png)
5. (опционально) добавьте переменные для использования своего плеере:
5. (опционально) добавьте переменные для использования своего плеера:
- NEXT_PUBLIC_KODIK_PARSER_URL
- NEXT_PUBLIC_ANILIBRIA_PARSER_URL
@ -36,9 +36,9 @@
![vercel project settings](./docs/deploy/vercel_project.png)
6. нажмите кнопку "Deploy" и ожидайте пока не появиться подтверждение
6. нажмите кнопку "Deploy" и ожидайте пока не появится подтверждение
7. нажмите кнопку "Continue to Dashboard"
8. клиент будет доступен по ссылке такого вида, нажмите на неё что-бы его открыть
8. клиент будет доступен по ссылке такого вида, нажмите на неё чтобы его открыть
![vercel project url](./docs/deploy/vercel_url.png)
## Netlify
@ -48,16 +48,16 @@
- аккаунт GitHub
- аккаунт Netlify
1. сделайте форк репозитория
1. Создайте форк репозитория
![fork button](./docs/deploy/fork.png)
2. Войдите в аккаунт netlify
2. Войдите в аккаунт Netlify
> [!IMPORTANT]
>Аккаунт Netlify должен быть связан с аккаунтом Github.
> Аккаунт Netlify должен быть связан с аккаунтом GitHub.
>
>Если у вас нет аккаунта Netlify, то создайте его через вход с помощью Github.
> Если у вас нет аккаунта Netlify, то создайте его через вход с помощью GitHub.
3. Нажмите кнопку создать новый проект
@ -75,7 +75,7 @@
![netlify project name](./docs/deploy/netlify_project_name.png)
7. (опционально) добавьте переменные для использования своего плеере:
7. (опционально) добавьте переменные для использования своего плеера:
- NEXT_PUBLIC_KODIK_PARSER_URL
- NEXT_PUBLIC_ANILIBRIA_PARSER_URL
@ -87,9 +87,9 @@
2. ![alt text](./docs/deploy/netlify_env_2.png)
8. нажмите кнопку "Deploy" и ожидайте пока не появиться подтверждение
8. нажмите кнопку "Deploy" и ожидайте пока не появится подтверждение
9. клиент будет доступен по ссылке такого вида, нажмите на неё что-бы его открыть
9. клиент будет доступен по ссылке такого вида, нажмите на неё чтобы его открыть
![netlify project url](./docs/deploy/netlify_url.png)
@ -101,7 +101,7 @@
### Пре-билд
1. выполните комманду:
1. выполните команду:
`docker run -d --name anix -p 3000:3000 radiquum/anix:latest`
@ -121,9 +121,9 @@
- -d - запустить контейнер в фоне
- --restart always - всегда запускать после перезагрузки сервера
- --name - название контейнера
- -p - порт контейнера который будет доступен из вне. ПОРТ:3000
- -p - порт контейнера который будет доступен извне. ПОРТ:3000
>[!NOTE]
> [!NOTE]
> для переменных которые вы получили, если развёртывали [anix-player-parsers](./player-parsers/README.RU.md), необходимо использовать `-e ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ` до слова anix
[команда docker run](https://docs.docker.com/reference/cli/docker/container/run/)
@ -134,12 +134,12 @@
### docker/Примечание
Для использования своего домена и поддержки протокола https, вы можете использовать traefik или другой reverse-proxy, с сертификатом SSL.
Для использования своего домена и поддержки протокола HTTPS, вы можете использовать Traefik или другой reverse-proxy, с сертификатом SSL.
Полезные ссылки:
- [Конвертер из команды docker run в синтакс для docker compose](https://it-tools.tech/docker-run-to-docker-compose-converter)
- [Как настроить traefik + свой домен + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
- [Как настроить Traefik + свой домен + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
## pm2
@ -156,11 +156,11 @@
3. Выполните команду `npm install`
4. (опционально) скопируйте .env.sample как .env и заполните его переменными которые вы получили, если развёртывали [anix-player-parsers](./player-parsers/README.RU.md)
5. Выполните команду `npm run build`
6. создайте новую директорию
7. переместите в созданную директорию
- директорию `public` в `./новая/public`
- директорию `.next/static` в `./новая/.next/static`
- файлы из `.next/standalone` в `./новая`
6. создайте новую директорию (далее будем использовать `<имя_новой_директории>` как её имя)
7. переместите в созданную директорию (`<имя_новой_директории>`)
- директорию `public` в `<имя_новой_директории>/public`
- директорию `.next/static` в `<имя_новой_директории>/.next/static`
- файлы из `.next/standalone` в `<имя_новой_директории>`
8. Переместитесь в созданную директорию и выполните команду `pm2 start server.js -n anix`
### pm2/Обозначения

View file

@ -14,9 +14,9 @@ Requirements:
2. Log in to your Vercel account
> [!IMPORTANT]
>Your Vercel account must be linked with your GitHub account.
> Your Vercel account must be linked with your GitHub account.
>
>If you don't have a Vercel account, create one by signing in with GitHub.
> If you don't have a Vercel account, create one by signing in with GitHub.
3. Click the button to create a new project
@ -36,9 +36,9 @@ Requirements:
![vercel project settings](./docs/deploy/vercel_project.png)
6. Click the "Deploy" button and wait until you see a confirmation
7. Click the "Continue to Dashboard" button
8. The client will be available at a link of this form, click it to open
6. Click the "Deploy" button and wait until you see a confirmation
7. Click the "Continue to Dashboard" button
8. The client will be available at a link of this form, click it to open
![vercel project url](./docs/deploy/vercel_url.png)
## Netlify
@ -55,9 +55,9 @@ Requirements:
2. Log in to your Netlify account
> [!IMPORTANT]
>Your Netlify account must be linked with your GitHub account.
> Your Netlify account must be linked with your GitHub account.
>
>If you don't have a Netlify account, create one by signing in with GitHub.
> If you don't have a Netlify account, create one by signing in with GitHub.
3. Click the button to create a new project
@ -118,12 +118,12 @@ Additional Requirements:
### docker/Flags
- -d - run container in background
- -d - run container in the background
- --restart always - always restart after server reboot
- --name - container name
- -p - container port to be exposed externally. PORT:3000
>[!NOTE]
> [!NOTE]
> For variables you received if you deployed [anix-player-parsers](./player-parsers/README.md), you need to use `-e VARIABLE=VALUE` before the word anix
[docker run command](https://docs.docker.com/reference/cli/docker/container/run/)
@ -134,12 +134,12 @@ The service will be available at: `http://<YOUR IP><:YOUR PORT>/`
### docker/Note
To use your own domain and support HTTPS protocol, you can use traefik or another reverse proxy with SSL certificate.
To use your own domain and support HTTPS protocol, you can use Traefik or another reverse proxy with SSL certificate.
Useful links:
- [Converter from docker run command to docker compose syntax](https://it-tools.tech/docker-run-to-docker-compose-converter)
- [How to setup traefik + custom domain + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
- [How to setup Traefik + custom domain + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
## pm2
@ -156,12 +156,12 @@ Instructions:
3. Run the command `npm install`
4. (optional) copy `.env.sample` as `.env` and fill it with variables you received if you deployed [anix-player-parsers](./player-parsers/README.md)
5. Run the command `npm run build`
6. Create a new directory
7. Move into the new directory:
- move `public` directory to `./new/public`
- move `.next/static` directory to `./new/.next/static`
- move files from `.next/standalone` to `./new`
8. Move into the created directory and run the command `pm2 start server.js -n anix`
6. Create a new directory (next we will be refer to its name as `<new_dir>`)
7. Move the following files into the new directory (`<new_dir>`):
- move `public` directory to `<new_dir>/public`
- move `.next/static` directory to `<new_dir>/.next/static`
- move files from `.next/standalone` to `<new_dir>`
8. Move into the created directory (<new_dir>) and run the command `pm2 start server.js -n anix`
### pm2/Flags

View file

@ -8,7 +8,7 @@ AniX - это неофициальный веб-клиент для Android-пр
---
[[RU] ПРОЧТИ МЕНЯ](./REAME.RU.md) | [[EN] README](./REAME.md)
[[RU] ПРОЧТИ МЕНЯ](./README.RU.md) | [[EN] README](./README.md)
[[RU] РАЗВЁРТЫВАНИЕ](./DEPLOYMENT.RU.md) | [[EN] DEPLOY](./DEPLOYMENT.md)

View file

@ -8,7 +8,7 @@ Please note that AniX is an unofficial project and is not affiliated with the de
---
[[RU] ПРОЧТИ МЕНЯ](./REAME.RU.md) | [[EN] README](./REAME.md)
[[RU] ПРОЧТИ МЕНЯ](./README.RU.md) | [[EN] README](./README.md)
[[RU] РАЗВЁРТЫВАНИЕ](./DEPLOYMENT.RU.md) | [[EN] DEPLOY](./DEPLOYMENT.md)

View file

@ -1,10 +1,10 @@
# AniX - Player Parsers
Данный под-проект позволяет получить прямые ссылки на видеофайлы с источников Sibnet, Kodik, Libria
Данный под-проект позволяет получить прямые ссылки на видеофайлы с источников Sibnet, Kodik, Anilibria (источник: libria)
Он может использоваться как для основного проекта AniX, так и как отдельный сервис.
В основном проекте, парсеры используются для работы своего плеере, если вам не важна данная функция, вы можете не развёртывать данный суб-сервис.
В основном проекте, парсеры используются для работы своего плеера, если вам не важна данная функция, вы можете не развёртывать данный суб-сервис.
Лицензия: [MIT](../LICENSE)
@ -22,7 +22,7 @@
- VIDEO_URL - ссылка на видео от источника
- PLAYER_SOURCE - источник, один из: kodik, sibnet, libria
>[!NOTE]
> [!NOTE]
> Если используется источник libria, ссылка должна быть ссылкой на API anilibria, а не на плеер
Ответ:
@ -32,9 +32,10 @@
## Развёртывание
> [!IMPORTANT]
> В связи с спецификой источников, рекомендуется использовать виртуальный сервер в россии, т.к. они могут быть недоступны из других стран.
>
> Из-за данной специфики, парсеры невозможно развернуть на edge сервисах, таких как CloudFlare Workers или Deno, а только на отдельном сервере.
> Из-за данной специфики, парсеры невозможно развернуть на edge сервисах, таких как Cloudflare Workers или Deno, а только на отдельном сервере.
### Docker
@ -44,7 +45,7 @@
### Пре-билд
1. выполните комманду:
1. выполните команду:
`docker run -d --name anix-player -p 7000:7000 radiquum/anix-player-parser:latest`
@ -65,7 +66,7 @@
- -d - запустить контейнер в фоне
- --restart always - всегда запускать после перезагрузки сервера
- --name - название контейнера
- -p - порт контейнера который будет доступен из вне. ПОРТ:7000
- -p - порт контейнера который будет доступен извне. ПОРТ:7000
### docker/После развёртывания
@ -73,14 +74,12 @@
### docker/Примечание
Для использования своего домена и поддержки протокола https, вы можете использовать traefik или другой reverse-proxy, с сертификатом SSL.
Для использования своего домена и поддержки протокола HTTPS, вы можете использовать Traefik или другой reverse-proxy, с сертификатом SSL.
Полезные ссылки:
- [Конвертер из команды docker run в синтакс для docker compose](https://it-tools.tech/docker-run-to-docker-compose-converter)
- [Как настроить traefik + свой домен + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
</details>
- [Как настроить Traefik + свой домен + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
### pm2
@ -96,7 +95,7 @@
2. Переместитесь в директорию репозитория `cd AniX`
3. Переместитесь в директорию парсеров `cd player-parsers`
4. Выполните команду `npm install`
5. После окончания, Выполните команду `pm2 start index.ts -n anix-player-parser`
5. После окончания и выполните команду `pm2 start index.ts -n anix-player-parser`
### pm2/Обозначения

View file

@ -32,9 +32,10 @@ Response:
## Deployment
> [!IMPORTANT]
> Due to the nature of the sources, it is recommended to use a virtual server in Russia, as they may be inaccessible from other countries.
>
> Because of this specificity, the parsers cannot be deployed on edge services like CloudFlare Workers or Deno, only on a dedicated server.
> Because of this specificity, the parsers cannot be deployed on edge services like Cloudflare Workers or Deno, only on a dedicated server.
### Docker
@ -62,7 +63,7 @@ Additional Requirements:
### docker/Legend
- -d - run the container in background
- -d - run container in the background
- --restart always - always restart after server reboot
- --name - container name
- -p - container port accessible externally. PORT:7000
@ -73,14 +74,12 @@ The service will be available at: `http://<YOUR IP><:YOUR PORT>/`
### docker/Note
To use your own domain and support the https protocol, you can use traefik or another reverse-proxy with an SSL certificate.
To use your own domain and support the HTTPS protocol, you can use Traefik or another reverse-proxy with an SSL certificate.
Useful links:
- [Docker run to docker compose syntax converter](https://it-tools.tech/docker-run-to-docker-compose-converter)
- [How to setup traefik + custom domain + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
</details>
- [How to setup Traefik + custom domain + SSL](https://letmegooglethat.com/?q=how+to+setup+traefik+with+custom+domain+and+ssl+certificate+from+lets+encrypt%3F)
### pm2
@ -96,7 +95,7 @@ Instructions:
2. Navigate to the repository directory `cd AniX`
3. Navigate to the parsers directory `cd player-parsers`
4. Run the command `npm install`
5. Once finished, Run the command `pm2 start index.ts -n anix-player-parser`
5. Once finished, run the command `pm2 start index.ts -n anix-player-parser`
### pm2/Legend

View file

@ -11,8 +11,9 @@ const port = 7000;
const allowedPlayers = ["kodik", "libria", "sibnet"];
app.get("/", (req, res) => {
const url = req.query.url;
const player = req.query.player;
const urlParams = new URLSearchParams(req.query)
const url = urlParams.get("url");
const player = urlParams.get("player");
if (!url) {
asJSON(res, { message: "no 'url' query provided" }, 400)

View file

@ -19,7 +19,7 @@ export async function getKodikURL(res, url: string) {
});
if (!pageRes.ok) {
for (let i = 0; i < altDomains.length - 1; i++) {
for (let i = 0; i < altDomains.length; i++) {
if (url.includes(altDomains[i])) {
continue;
}

View file

@ -10,24 +10,39 @@ export const resHeaders = {
};
export const USERAGENTS = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Windows; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8",
"Mozilla/5.0 (Windows NT 10.0; Windows; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Windows; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36",
"Mozilla/5.0 (Linux; Android 12.0; LG G8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.2.7124.71 Mobile Safari/537.36",
"Mozilla/5.0 (Windows NT 11.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.5.1269.13 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/123.0 Firefox/123.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.8.4576.73 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/121.0 Firefox/121.0",
"Mozilla/5.0 (Linux; Android 11.0; OnePlus 10T Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.8.1484.76 Mobile Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.9.9841.32 Safari/537.36",
"Mozilla/5.0 (Windows NT 11.0; Win64; x64; rv:124.0) Gecko/124.0 Firefox/124.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.3457.25 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:124.0) Gecko/124.0 Firefox/124.0",
"Mozilla/5.0 (Linux; Android 13.0; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.3.1166.27 Mobile Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.6.4126.27 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/130.0 Firefox/130.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.3.4677.74 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/122.0 Firefox/122.0",
"Mozilla/5.0 (Linux; Android 12.0; Xiaomi Redmi Note 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.6.3806.92 Mobile Safari/537.36",
"Mozilla/5.0 (Windows NT 11.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.3.9963.85 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/122.0 Firefox/122.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.8.5618.48 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:126.0) Gecko/126.0 Firefox/126.0",
"Mozilla/5.0 (Linux; Android 12.0; Huawei Mate 40) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6740.69 Mobile Safari/537.36",
"Mozilla/5.0 (Windows NT 11.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.9.2666.21 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/132.0 Firefox/132.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.4804.4 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:128.0) Gecko/128.0 Firefox/128.0",
];
export function asJSON(res, object: any, status: number) {
res.status(status).type('application/json');
res.set(corsHeaders)
res.status(status).type("application/json");
res.set(corsHeaders);
res.send(JSON.stringify(object));
}
export function randomUA() {
return USERAGENTS[Math.floor(Math.random() * USERAGENTS.length - 1)]
}
return USERAGENTS[Math.floor(Math.random() * USERAGENTS.length)];
}