Skip to content

LimeDrive/ygg-rss-proxy

Repository files navigation

ygg-rss-proxy

🚨 Important Notice 🚨

Currently, the site is under heavy cloudflare protection. It is recommended to use flaresolver in parallel to ensure smooth operation.

Please be aware of this and make sure to use flaresolver accordingly to avoid any issues.

Big thanks to @FlareSolverr for their amazing work!

Description

ygg-rss-proxy est une application Python qui sert de proxy pour récupérer des flux RSS et des fichiers torrent depuis un site protégé nécessitant une authentification. Cette application est conteneurisée à l'aide de Docker et utilise Poetry pour la gestion des dépendances.

Fonctionnalités

  • Authentifie sur le site et rĂ©cupère les cookies de session.
  • RĂ©cupère et modifie les flux RSS pour remplacer les URL de tĂ©lĂ©chargement par des URL de proxy.
  • RĂ©cupère les fichiers torrent via le proxy avec authentification.

Exigences

  • Docker
  • Docker Compose (pour la configuration Docker Compose)

Configuration

Le scripte peut désormais être configuré en utilisant des variables d'environnement, un ficher .env ou les docker secrets. Pour les Docker secrets, il faut les nommer comme les variable d'environnement.

Variables d'Environnement

  • YGG_USER : Votre nom d'utilisateur pour l'authentification sur le site YGG. Par dĂ©faut. (OBLIGATOIRE)
  • YGG_PASS : Votre mot de passe pour l'authentification sur le site YGG. Par dĂ©faut. (OBLIGATOIRE)
  • YGG_URL: L'URL du site YGG. dĂ©finie par default.
  • RSS_HOST: L'hĂ´te sur lequel le serveur RSS est en cours d'exĂ©cution. Par dĂ©faut, il est dĂ©fini sur 'localhost'. C'est ici que l'on peut mettre le noms de container si l'on utilise docker compose.
  • RSS_PORT: Le port sur lequel le serveur RSS est en cours d'exĂ©cution. Par dĂ©faut, il est dĂ©fini sur '8080'.
  • RSS_SHEMA: Le schĂ©ma (http ou https) utilisĂ© pour accĂ©der au serveur RSS. Par dĂ©faut, il est dĂ©fini sur 'http'.
  • FLARESOLVERR_SHEMA: Le schĂ©ma (http ou https) utilisĂ© pour accĂ©der Ă  l'instance de Flaresolverr. Par dĂ©faut, il est dĂ©fini sur 'http'.
  • FLARESOLVERR_HOST: L'hĂ´te sur lequel l'instance de Flaresolverr est en cours d'exĂ©cution. Par dĂ©faut, il est dĂ©fini sur 'localhost'.
  • FLARESOLVERR_PORT: Le port sur lequel l'instance de Flaresolverr est en cours d'exĂ©cution. Par dĂ©faut, il est dĂ©fini sur '8191'.
  • GUNICORN_PORT: Le port sur lequel le serveur proxy interne est en cours d'exĂ©cution. Par dĂ©faut, il est dĂ©fini sur '8080'.
  • GUNICORN_WORKERS: Le nombre de travailleurs Gunicorn Ă  utiliser. Par dĂ©faut, il est dĂ©fini sur '4'.
  • GUNICORN_BINDER: L'adresse IP sur laquelle le serveur proxy interne est liĂ©. Par dĂ©faut, il est dĂ©fini sur '0.0.0.0'.
  • GUNICORN_TIMEOUT: Le dĂ©lai d'attente pour les requĂŞtes Gunicorn. Par dĂ©faut, il est dĂ©fini sur '120'.
  • LOG_PATH: Le chemin du fichier journal pour le serveur proxy. Par dĂ©faut, il est dĂ©fini sur '/app/config/logs/rss-proxy.log'. Il y a une rotaion de fichier journal dĂ©ja configurĂ©. Attention c'est le chemin dans le container.
  • LOG_LEVEL: Le niveau de journalisation pour le serveur proxy. Par dĂ©faut, il est dĂ©fini sur 'INFO'.
  • LOG_REDACTED: Si les journaux doivent ĂŞtre anonymisĂ©s. Par dĂ©faut, il est dĂ©fini sur 'True'.
  • DB_PATH: Le chemin de la base de donnĂ©es SQLite pour le serveur proxy. Par dĂ©faut, il est dĂ©fini sur '/app/config/rss-proxy.db'. Attention c'est le chemin dans le container.
  • SECRET_KEY: La clĂ© secrète utilisĂ©e pour la signature des cookies de session. Par dĂ©faut, il est dĂ©fini sur 'superkey_that_can_be_changed'. SĂ©curitĂ© suplĂ©mentaire pour chiffrĂ© la base de donnĂ©e.

Comment Utiliser

🚨 Important Notice 🚨

Attention, l'installation nécessite FlareSolverr quand le site et sous protocole cloudflare. C'est a dire à peu près tout le temps.

Please be aware of this and make sure to use FlareSolverr accordingly to avoid any issues.

For optimal performance and to bypass Cloudflare's protection, it is essential to run FlareSolverr alongside this application. This is because the site is frequently protected by Cloudflare, which can cause difficulties in accessing the content.

Exemple avec Docker Compose + 🚨 FlareSolverr 🚨 + Qbittorrent

Cet exemple utilise Docker Compose pour lancer l'application ygg-rss-proxy, FlareSolverr, et Qbittorrent en même temps. C'est pour illustré l'utilisation de l'application avec d'autres services.

Attention, Flaresolverr est un super projet 🤩 mais il peut être très gourmand en ressources si des petits malins trouve votre instance et ne doit pas être exoposé en dehors de votre réseau local. Il est donc recommandé de ne pas binder le port 8191 sur l'hôte. On utilisera donc le nom du container pour communiquer entre les deux pour rester dans le réseau docker.

  1. Créer un fichier docker-compose.yml

    version: "3.8"
    
    services:
    
       qbittorrent:
          image: lscr.io/linuxserver/qbittorrent:latest
          container_name: qbittorrent
          environment:
             PUID: 1000
             PGID: 1000
             TZ: Europe/Paris
             WEBUI_PORT: 8080
          volumes:
             - ./config:/config
             - ./downloads:/downloads
          ports:
             - 6881:6881
             - 6881:6881/udp
             - 8080:8080
          restart: unless-stopped
    
       ygg-rss-proxy:
          image: ghcr.io/limedrive/ygg-rss-proxy:latest
          container_name: ygg-rss-proxy
          expose:
             - 8080
          environment:
             TZ: Europe/Paris
             YGG_USER: 'User'
             YGG_PASS: 'passw0rd'
             FLARESOLVERR_HOST: flaresolverr
             RSS_HOST: ygg-rss-proxy
             RSS_PORT: 8080
             LOG_LEVEL: INFO
          volumes:
             - ./config:/app/config
          restart: unless-stopped
          depends_on:
             - flaresolverr
    
       flaresolverr:
          image: ghcr.io/flaresolverr/flaresolverr:latest
          container_name: flaresolverr
          environment:
             TZ: Europe/Paris
             LOG_LEVEL: info
             CAPTCHA_SOLVER: none
          expose:
             - 8191
          restart: unless-stopped
  2. Exécuter Docker Compose

    docker-compose up -d

Comment Utiliser le Proxy

L'URL RSS à utiliser est la même que sur le site concerné, mais vous devez changer le nom de domaine de www.ygg.re à localhost:8080 ou tout autre HOST que vous avez définie dans les variable RSS_HOST RSS_PORT. Assurez-vous de bien conserver tous les paramètres car notre script les réutilise.

Exemple

URL d'origine : https://www.ygg.re/rss?action=generate&type=subcat&id=2183&passkey=xxxxxxxxxxxxxxxxxxxxxxxxxxx

URL Ă  utiliser dans le client torrent : http://localhost:8080/rss?action=generate&type=subcat&id=2183&passkey=xxxxxxxxxxxxxxxxxxxxxxxxxxx

Structure du Projet

ygg-rss-proxy/
│
├── Dockerfile
├── pyproject.toml
├── poetry.lock
├── .github/
│   └── workflows/
│       └── release.yml
│
└── ygg_rss_proxy/
    ├── __init__.py
    ├── app.py
    ├── auth.py
    ├── logging_config.py
    ├── rss.py
    ├── run_gunicorn.py
    ├── session_manager.py.py
    └── settings.py

Contribuer

N'hésitez pas à ouvrir des issues ou à soumettre des pull requests si vous trouvez des bugs ou avez des suggestions de fonctionnalités.