Stremio : addon Comet et réseau de partage de métadonnées CometNet

Stremio : addon Comet et réseau de partage de métadonnées CometNet

Comet est un addon de sources pour Stremio, comme StreamFusion que j’ai déjà présenté. Seulement là où SF cible le contenu francophone, Comet va ratisser large.

Le premier addon Stremio pour proxyfier les flux Debrid, permettant l’utilisation du service Debrid sur plusieurs IP en même temps avec le même compte !

Limite de connexion maximale basée sur l’IP

Tableau de bord d’administration avec gestion de la bande passante, statistiques et plus…

Scrapers pris en charge : Jackett, Prowlarr, Torrentio, Zilean, MediaFusion, Debridio, StremThru, AIOStreams, Comet, Jackettio, TorBox, Nyaa, BitMagnet, TorrentsDB et Peerflix

Système de cache avec SQLite / PostgreSQL

Scraper en arrière-plan ultra-rapide

Classement intelligent des torrents propulsé par RTN

Support du proxy pour contourner les restrictions des services Debrid

Services Debrid supportés : Real-Debrid, All-Debrid, Premiumize, TorBox, Debrid-Link, Debrider, EasyDebrid, OffCloud et PikPak

Torrents directs pris en charge

Support Kitsu (anime)

Filtre de contenu adulte

Support du protocole ChillLink


Il permet donc de lire des contenus depuis des débrideurs ou depuis du torrenting direct (avec VPN !).

Comet (GitHub | Discord) est présenté par g0ldy comme l’addon le plus rapide pour Stremio, tout simplement parce qu’il constitue un cash des métadonnées des .torrents à partir des sources configurées.

comet0

On me confirme que les stats des caches de débrideurs – By Service Provider – sont fluctuantes et non révélatrices, on peut en avoir des milliers comme quasi rien. Testé avec AD, RD, TB et Premiumize, mêmes soucis de stats dans tous les cas. Mais c’est qu’une statistique, en lecture sous Stremio le contenu est bien trouvé.

Certains en ont des 10aines de millions de .torrents en attente d’ajout en base de données. Je débute et relance souvent l’outil donc il ne bosse pas beaucoup et j’ai pas mis beaucoup de sources vu que c’est un test. Et accessoirement, indexer tout le contenu VO de la Terre ne m’intéresse pas (certains indexent un dump de RARBG de quelques Po).

Comet est un indexeur de liens (sources) depuis tous les scrapers indiqués dans la description. C’est un addon de sources pour Stremio, avec filtres de résolution et langues notamment.

Et on peut multiplier les instances, j’ai par exemple un BitMagnet publique et mon instance (elle aussi relancée il y a peu donc pas encore beaucoup de contenu indexé).

Sans compter que mon pauvre Lincstation N1 se mange tout mon setup en ce moment vu que je réinstalle les autres machines. Il est bien brave avec son petit CPU ^^

Et comme g0dly trouvait qu’il ne gavait pas assez son Comet, il a décidé de lancer très récemment (encore en test dirons-nous) un réseau CometNet de partage de métadonnées entre instances (publiques et/ou privées).

Pour ne parler que de FRENCH/MULTi, Comet peut être un bon complément voire une alternative à StreamFusion, à condition d’avoir les bonnes sources. On peut aussi parier dessus, par exemple via BitMagnet, pour les trackers francophones qui disent vouloir publier leurs contenus en DHT.
Dans ce cas, pas la peine d’indexer la planète. Si vous voulez du tout cuit : stremiofr.com propose une instance dédiée à la VF.

L’installation est simple, en Docker. Attention, mes paramètres CometNet (dans le .env) sont des tests et ils évoluent tous les jours en ce moment vu que c’est en plein développement/test.
:beta pour les dernières MàJ de CometNet, :latest sinon

services:
  comet:
    container_name: comet
    #image: g0ldyy/comet:latest
    image: g0ldyy/comet:beta
    restart: always
    ports:
      - "9237:8000"
      - "8765:8765"  # CometNet P2P port
    environment:
      DATABASE_TYPE: ${DATABASE_TYPE:-postgresql}
      DATABASE_URL: ${DATABASE_URL:-comet:comet@postgres:5432/comet}
      COMETNET_ENABLED: "True"
      FASTAPI_WORKERS: "1"
    env_file:
      - .env
    volumes:
      - /mnt/Docker/stremio/comet/data:/data
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8000/health"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 10s
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    container_name: comet-postgres
    image: postgres:18-alpine
    restart: always
    environment:
      POSTGRES_USER: comet
      POSTGRES_PASSWORD: comet
      POSTGRES_DB: comet
    command:
      - "postgres"
      - "-c"
      - "shared_buffers=128MB"
      - "-c"
      - "effective_cache_size=384MB"
      - "-c"
      - "maintenance_work_mem=64MB"
      - "-c"
      - "checkpoint_completion_target=0.9"
      - "-c"
      - "wal_buffers=8MB"
      - "-c"
      - "random_page_cost=1.1"
      - "-c"
      - "effective_io_concurrency=200"
      - "-c"
      - "work_mem=8MB"
      - "-c"
      - "max_connections=100"
    volumes:
      - /mnt/Docker/stremio/comet/postgres:/var/lib/postgresql/
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U comet -d comet"]
      interval: 5s
      timeout: 5s
      retries: 5

Et donc le .env

ADDON_ID=stremio.comet.fast
ADDON_NAME=Comet

FASTAPI_HOST=0.0.0.0
FASTAPI_PORT=8000
FASTAPI_WORKERS=1
USE_GUNICORN=True
GUNICORN_PRELOAD_APP=True
EXECUTOR_MAX_WORKERS=1

PUBLIC_BASE_URL=https://stremio-comet.xxx.xxx

ADMIN_DASHBOARD_PASSWORD=xxx
PUBLIC_METRICS_API=False

DATABASE_TYPE=postgresql
DATABASE_FORCE_IPV4_RESOLUTION=False
DATABASE_URL=comet:comet@postgres:5432/comet
DATABASE_PATH=data/comet.db
DATABASE_BATCH_SIZE=20000
DATABASE_STARTUP_CLEANUP_INTERVAL=3600

PROXY_DEBRID_STREAM=True
PROXY_DEBRID_STREAM_PASSWORD=xxx

METADATA_CACHE_TTL=2592000  # 30 days
TORRENT_CACHE_TTL=2592000  # 30 days
LIVE_TORRENT_CACHE_TTL=604800  # 7 days
DEBRID_CACHE_TTL=86400  # 1 day
DEBRID_CACHE_CHECK_RATIO=1  # Minimum ratio (0.5 = 5%) of cached torrents/total torrents required to skip re-checking availability on the debrid service.
METRICS_CACHE_TTL=60  # 1 minute
SCRAPE_LOCK_TTL=300  # 5 minutes - Duration for distributed scraping locks
SCRAPE_WAIT_TIMEOUT=30  # 30 seconds - Max time to wait for other instance to complete scraping

BACKGROUND_SCRAPER_ENABLED=True
BACKGROUND_SCRAPER_CONCURRENT_WORKERS=1 # Number of concurrent workers for scraping (adjust depending on whether you are often ratelimited by scrapers)
BACKGROUND_SCRAPER_INTERVAL=3600 # Interval between scraping cycles in seconds
BACKGROUND_SCRAPER_MAX_MOVIES_PER_RUN=100 # Maximum number of movies to scrape per run
BACKGROUND_SCRAPER_MAX_SERIES_PER_RUN=100 # Maximum number of series to scrape per run
CATALOG_TIMEOUT=30 # Max time to fetch catalog pages (seconds)

ANIME_MAPPING_ENABLED=True
ANIME_MAPPING_REFRESH_INTERVAL=432000 # Seconds between background anime mapping refreshes when using database cache (<=0 disables)

RATELIMIT_MAX_RETRIES=2 # Maximum number of retries for 429 Too Many Requests errors. Set to 0 to disable retries.
RATELIMIT_RETRY_BASE_DELAY=1.0 # Base delay in seconds for exponential backoff (e.g., 1.0 -> 1s, 2s, 4s, 8s...)

SCRAPE_PROWLARR=True
PROWLARR_URL=https://prowlarr.xxx.xxx
PROWLARR_API_KEY=xxx
PROWLARR_INDEXERS=[] # Leave empty to automatically use all configured/healthy indexers. Or specify a list of indexer IDs.

# Shared Settings
INDEXER_MANAGER_TIMEOUT=30  # Max time to get search results (seconds) - Shared by both
INDEXER_MANAGER_WAIT_TIMEOUT=30 # Max time to wait for the indexer manager to initialize (seconds)
INDEXER_MANAGER_UPDATE_INTERVAL=900 # Time in seconds between indexer updates (default: 900s / 15m)

# ============================== #
# Torrent Settings               #
# ============================== #
GET_TORRENT_TIMEOUT=5 # Max time to download .torrent file (seconds)
DOWNLOAD_TORRENT_FILES=True # Enable torrent file retrieval from magnet link
MAGNET_RESOLVE_TIMEOUT=60 # Max time to resolve a magnet link (seconds)
DOWNLOAD_GENERIC_TRACKERS=False # Enable downloading generic trackers list at startup (for scraped torrents without trackers, doesn't work well most of the time)

# ============================== #
# Scraping Configuration         #
# ============================== #
# Multi-Instance Scraping Support:
# - Single URL: Use a simple string for one instance (default behavior)
# - Multiple URLs: Use JSON array format for multiple instances
# - Example single: COMET_URL=https://comet.feels.legal
# - Example multi: COMET_URL='["https://comet1.example.com", "https://comet2.example.com"]'
#
# Scraper Context Modes:
# Each SCRAPE_* setting can control when scrapers are used:
# - true/both: Used for live scraping AND background scraping (default)
# - live: Only used for live scraping (when users request content)
# - background: Only used for background scraping (automatic content pre-caching)
# - false: Completely disabled
#
# Examples:
# SCRAPE_COMET=both          # Used for both live and background scraping
# SCRAPE_TORRENTIO=live      # Fast live scraping only
# SCRAPE_ZILEAN=background   # Background cache building only
# SCRAPE_NYAA=false          # Completely disabled
# SCRAPE_JACKETT=live        # Jackett for live scraping only
# SCRAPE_PROWLARR=background # Prowlarr for background scraping only

SCRAPE_COMET=True
COMET_URL=["https://comet.feels.legal", "https://comet.stremiofr.com/"]

SCRAPE_ZILEAN=True
ZILEAN_URL=https://zileanfortheweebs.midnightignite.me

SCRAPE_STREMTHRU=True
STREMTHRU_SCRAPE_URL=https://stremthru.13377001.xyz
STREMTHRU_URL=https://stremthru.13377001.xyz

SCRAPE_BITMAGNET=True
#BITMAGNET_URL=https://bitmagnetfortheweebs.midnightignite.me
BITMAGNET_URL='["https://bitmagnetfortheweebs.midnightignite.me", "http://192.168.0.196:3333"]'
BITMAGNET_MAX_CONCURRENT_PAGES=5
BITMAGNET_MAX_OFFSET=15000 # Maximum number of entries to scrape

SCRAPE_TORRENTIO=True
TORRENTIO_URL=https://torrentio.strem.fun

SCRAPE_MEDIAFUSION=True
MEDIAFUSION_URL=https://mediafusion.elfhosted.com
MEDIAFUSION_API_PASSWORD= # API password for MediaFusion instances that require authentication
MEDIAFUSION_LIVE_SEARCH=True

SCRAPE_JACKETTIO=True
JACKETTIO_URL=https://jackettio.stremiofr.com/xxx

SCRAPE_NYAA=True
NYAA_ANIME_ONLY=True
NYAA_MAX_CONCURRENT_PAGES=5

SCRAPE_ANIMETOSHO=True
ANIMETOSHO_ANIME_ONLY=True
ANIMETOSHO_MAX_CONCURRENT_PAGES=8

SCRAPE_TORBOX=True
TORBOX_API_KEY=xxx

SCRAPE_TORRENTSDB=True

SCRAPE_PEERFLIX=True

DISABLE_TORRENT_STREAMS=False # When true, torrent-only requests return a friendly message instead of magnets
TORRENT_DISABLED_STREAM_NAME=[INFO] Comet # Stremio stream name shown when torrents are disabled
TORRENT_DISABLED_STREAM_DESCRIPTION=Pas de torrenting en direct # Description shown to users in Stremio

REMOVE_ADULT_CONTENT=False
RTN_FILTER_DEBUG=True # Set to True to log why torrents are excluded by RTN (debug only, verbose!)
DIGITAL_RELEASE_FILTER=False # Filter unreleased content
TMDB_READ_ACCESS_TOKEN=xxx

COMETNET_ENABLED=True
COMETNET_ADVERTISE_URL=wss://cometnet.xxx.xxx
COMETNET_KEYS_DIR=/data/cometnet/keys
COMETNET_POOLS_DIR=/data/cometnet/pools

# Network Discovery
COMETNET_BOOTSTRAP_NODES='["wss://cometnet-beta.feels.legal", "wss://cometnet.streamproxy.xyz", "wss://cometnet.selfhosting.sterzeck.com.br", "wss://https://cometnet.at16.co.uk/"]'
#COMETNET_BOOTSTRAP_NODES='["wss://cometnet-beta.feels.legal", "wss://cometnet.streamproxy.xyz"]'
COMETNET_MANUAL_PEERS=[]     # JSON array: '["wss://friend.example.com:8765"]'

# Peer Management
COMETNET_MAX_PEERS=100
COMETNET_MIN_PEERS=3

# Contribution Mode: full (default) | consumer | source | leech
COMETNET_CONTRIBUTION_MODE=full

# Optional: Trust Pools (JSON array of pool IDs)
# COMETNET_TRUSTED_POOLS='["my-community"]'

# NAT Traversal (for home connections)
COMETNET_UPNP_ENABLED=True


# Gossip
COMETNET_GOSSIP_FANOUT=3
COMETNET_GOSSIP_INTERVAL=1.0
COMETNET_GOSSIP_MESSAGE_TTL=5
COMETNET_GOSSIP_MAX_TORRENTS_PER_MESSAGE=1000
COMETNET_GOSSIP_CACHE_TTL=300
COMETNET_GOSSIP_CACHE_SIZE=10000

# Validation
COMETNET_GOSSIP_VALIDATION_FUTURE_TOLERANCE=60
COMETNET_GOSSIP_VALIDATION_PAST_TOLERANCE=300
COMETNET_GOSSIP_TORRENT_MAX_AGE=604800

# Peer Discovery
COMETNET_PEX_BATCH_SIZE=20
COMETNET_PEER_CONNECT_BACKOFF_MAX=300
COMETNET_PEER_MAX_FAILURES=5
COMETNET_PEER_CLEANUP_AGE=604800
COMETNET_ALLOW_PRIVATE_PEX=False
COMETNET_SKIP_REACHABILITY_CHECK=False
COMETNET_REACHABILITY_RETRIES=5
COMETNET_REACHABILITY_RETRY_DELAY=10
COMETNET_REACHABILITY_TIMEOUT=10

# Transport
COMETNET_TRANSPORT_MAX_MESSAGE_SIZE=10485760
COMETNET_TRANSPORT_MAX_CONNECTIONS_PER_IP=3
COMETNET_TRANSPORT_PING_INTERVAL=30.0
COMETNET_TRANSPORT_CONNECTION_TIMEOUT=120.0
COMETNET_TRANSPORT_MAX_LATENCY_MS=10000.0
COMETNET_TRANSPORT_RATE_LIMIT_ENABLED=True
COMETNET_TRANSPORT_RATE_LIMIT_COUNT=20
COMETNET_TRANSPORT_RATE_LIMIT_WINDOW=1.0

# NAT Traversal
COMETNET_UPNP_ENABLED=False
COMETNET_UPNP_LEASE_DURATION=3600

# Reputation System
COMETNET_REPUTATION_INITIAL=100.0
COMETNET_REPUTATION_MIN=0.0
COMETNET_REPUTATION_MAX=10000.0
COMETNET_REPUTATION_THRESHOLD_TRUSTED=1000.0
COMETNET_REPUTATION_THRESHOLD_UNTRUSTED=50.0
COMETNET_REPUTATION_BONUS_VALID_CONTRIBUTION=0.001
COMETNET_REPUTATION_BONUS_PER_DAY_ANCIENNETY=10.0
COMETNET_REPUTATION_PENALTY_INVALID_CONTRIBUTION=50.0
COMETNET_REPUTATION_PENALTY_SPAM_DETECTED=100.0
COMETNET_REPUTATION_PENALTY_INVALID_SIGNATURE=500.0

En prime, on a les statistiques de flux.

Loading

S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires