diff --git a/DEPLOYMENT.RU.md b/DEPLOYMENT.RU.md index 076a2f5..78f43a3 100644 --- a/DEPLOYMENT.RU.md +++ b/DEPLOYMENT.RU.md @@ -7,16 +7,16 @@ - аккаунт GitHub - аккаунт Vercel -1. сделайте форк репозитория +1. Создайте форк репозитория ![fork button](./docs/deploy/fork.png) -2. Войдите в аккаунт vercel +2. Войдите в аккаунт Vercel - > [!IMPORTANT] - >Аккаунт Vercel должен быть связан с аккаунтом Github. - > - >Если у вас нет аккаунта vercel, то создайте его через вход с помощью Github. +> [!IMPORTANT] +> Аккаунт 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. +> [!IMPORTANT] +> Аккаунт 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/Обозначения diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index bbc8a74..f7ae21b 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -13,10 +13,10 @@ Requirements: 2. Log in to your Vercel account - > [!IMPORTANT] - >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. +> [!IMPORTANT] +> 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. 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 @@ -54,10 +54,10 @@ Requirements: 2. Log in to your Netlify account - > [!IMPORTANT] - >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. +> [!IMPORTANT] +> 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. 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 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 ``) +7. Move the following files into the new directory (``): + - move `public` directory to `/public` + - move `.next/static` directory to `/.next/static` + - move files from `.next/standalone` to `` +8. Move into the created directory () and run the command `pm2 start server.js -n anix` ### pm2/Flags diff --git a/REAME.RU.md b/README.RU.md similarity index 96% rename from REAME.RU.md rename to README.RU.md index eacf219..70ca94e 100644 --- a/REAME.RU.md +++ b/README.RU.md @@ -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) diff --git a/README.md b/README.md index 1882b28..0f965ed 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/player-parsers/README.RU.md b/player-parsers/README.RU.md index d6cd9a0..d206410 100644 --- a/player-parsers/README.RU.md +++ b/player-parsers/README.RU.md @@ -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) - - +- [Как настроить 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/Обозначения diff --git a/player-parsers/README.md b/player-parsers/README.md index ab6d023..a0bc338 100644 --- a/player-parsers/README.md +++ b/player-parsers/README.md @@ -1,6 +1,6 @@ # AniX - Player Parsers -This sub-project allows obtaining direct video file links from sources Sibnet, Kodik, Libria +This sub-project allows obtaining direct video file links from sources Sibnet, Kodik, Anilibria (source: libria) It can be used both for the main AniX project and as a standalone service. @@ -22,7 +22,7 @@ where: - VIDEO_URL - the link to the video from the source - PLAYER_SOURCE - the source, one of: kodik, sibnet, libria ->[!NOTE] +> [!NOTE] > When using libria source, url should be the url to the anilibria api, not player directly Response: @@ -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 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) - - +- [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 diff --git a/player-parsers/index.ts b/player-parsers/index.ts index d66c34a..e3b891f 100644 --- a/player-parsers/index.ts +++ b/player-parsers/index.ts @@ -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) diff --git a/player-parsers/kodik.ts b/player-parsers/kodik.ts index 19b0ebd..e28444d 100644 --- a/player-parsers/kodik.ts +++ b/player-parsers/kodik.ts @@ -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; } diff --git a/player-parsers/shared.ts b/player-parsers/shared.ts index 3ce9203..fd3a955 100644 --- a/player-parsers/shared.ts +++ b/player-parsers/shared.ts @@ -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)] -} \ No newline at end of file + return USERAGENTS[Math.floor(Math.random() * USERAGENTS.length)]; +}