Compare commits
	
		
			3 Commits
		
	
	
		
			80442f8a42
			...
			f07ff328e5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f07ff328e5 | |||
| 6657c03b07 | |||
| 9dae286965 | 
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							@@ -47,24 +47,31 @@ Vous trouverez-ci dessous les instructions pour configurer le conteneur avec not
 | 
				
			|||||||
- Créez le fichier `compose.yaml` dans ce dossier avec la configuration ci-dessous :
 | 
					- Créez le fichier `compose.yaml` dans ce dossier avec la configuration ci-dessous :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
version: "3.8"
 | 
					 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
  nvidia-stock-bot:
 | 
					  nvidia-stock-bot:
 | 
				
			||||||
    image: git.djeex.fr/djeex/nvidia-stock-bot:latest
 | 
					    image: git.djeex.fr/djeex/nvidia-stock-bot:latest
 | 
				
			||||||
    container_name: nvidia-stock-bot
 | 
					    container_name: nvidia-stock-bot
 | 
				
			||||||
    restart: always
 | 
					    restart: unless-stopped
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      - DISCORD_WEBHOOK_URL= # URL de votre webhook Discord
 | 
					      - DISCORD_WEBHOOK_URL= # URL de votre webhook Discord
 | 
				
			||||||
      - REFRESH_TIME=        # Durée de rafraichissement du script en secondes
 | 
					      - PRODUCT_NAME=        # Le nom exact du GPU que vous recherchez comme "RTX 5080"
 | 
				
			||||||
      - API_URL_SKU=         # API listant le produit par exemple https://api.nvidia.partners/edge/product/search?page=1&limit=100&locale=fr-fr&Manufacturer=Nvidia&gpu=RTX%205090
 | 
					 | 
				
			||||||
      - API_URL_STOCK=       # API appelant le stock sans préciser la valeur du sku, par exemple https://api.store.nvidia.com/partner/v1/feinventory?locale=fr-fr&skus=
 | 
					 | 
				
			||||||
      - PRODUCT_URL=         # URL d'achat du GPU
 | 
					 | 
				
			||||||
      - PRODUCT_NAME=        # Le nom du GPU qui s'affiche dans les notifications
 | 
					 | 
				
			||||||
      - TEST_MODE=           # true pour tester les notifications discord. false par défaut.
 | 
					 | 
				
			||||||
      - PYTHONUNBUFFERED=1   # Permet d'afficher les logs en temps réel
 | 
					      - PYTHONUNBUFFERED=1   # Permet d'afficher les logs en temps réel
 | 
				
			||||||
    command: python nvidia-stock-bot.py # Lance le script Python au démarrage du conteneur
 | 
					    command: python nvidia-stock-bot.py
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Variables d'environnements :**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| Variables           | Explications                                    | Valeurs possibles                                                  | Valeur par défaut                                                                                              |
 | 
				
			||||||
 | 
					|---------------------|-------------------------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|
 | 
				
			||||||
 | 
					| DISCORD_WEBHOOK_URL | URL de votre webhook Discord                    | Une URL                       |                                                                                                                |
 | 
				
			||||||
 | 
					| REFRESH_TIME        | Durée de rafraichissement du script en secondes | `60`, `30`, etc...                                                     | `30`                                                                                                             |
 | 
				
			||||||
 | 
					| API_URL_SKU         | API listant le produit                          | Une URL                     | `https://api.nvidia.partners/edge/product/search?page=1&limit=100&locale=fr-fr&Manufacturer=Nvidia`              |
 | 
				
			||||||
 | 
					| API_URL_STOCK       | API donnant le stock                            | Une URL        | `https://api.store.nvidia.com/partner/v1/feinventory?locale=fr-fr&skus=`                                         |
 | 
				
			||||||
 | 
					| PRODUCT_URL         | URL d'achat du GPU                              | Une URL | `https://marketplace.nvidia.com/fr-fr/consumer/graphics-cards/?locale=fr-fr&page=1&limit=12&manufacturer=NVIDIA` |
 | 
				
			||||||
 | 
					| PRODUCT_NAME        | Le nom exact du GPU que vous recherchez         | `RTX 5090`, `RTX 5080` ou `RTX 5070`.                                    |                                                                                                                |
 | 
				
			||||||
 | 
					| TEST_MODE           | Pour tester sans envoyer de notifs              | `True`, `False`                                                        | `False`                                                                                                          |
 | 
				
			||||||
 | 
					| PYTHONUNBUFFERED    | #Permet d'afficher les logs en temps réel       | `1`, `0`                                                               | `1`                                                                                                              |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Lancer l'image**
 | 
					**Lancer l'image**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rendez-vous dans le dossier `nvidia-stock-bot` et lancez le conteneur :
 | 
					Rendez-vous dans le dossier `nvidia-stock-bot` et lancez le conteneur :
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
DS_HOOK=        # votre url du webhook Discord
 | 
					DS_HOOK=        # votre url du webhook Discord
 | 
				
			||||||
FREQ=           #frequence de rafraichissement en secondes
 | 
					FREQ=           # frequence de rafraichissement en secondes, par défaut 30
 | 
				
			||||||
API_URL_SKU=    # API listant le produit par exemple https://api.nvidia.partners/edge/product/search?page=1&limit=100&locale=fr-fr&Manufacturer=Nvidia&gpu=RTX%205090
 | 
					API_URL_SKU=    # API listant le produit par défaut https://api.nvidia.partners/edge/product/search?page=1&limit=100&locale=fr-fr&Manufacturer=Nvidia
 | 
				
			||||||
API_URL_STOCK=  # API appelant le stock sans préciser la valeur du sku, par exemple https://api.store.nvidia.com/partner/v1/feinventory?locale=fr-fr&skus=
 | 
					API_URL_STOCK=  # API appelant le stock sans préciser la valeur du sku, par défaut https://api.store.nvidia.com/partner/v1/feinventory?locale=fr-fr&skus=
 | 
				
			||||||
PRODUCT_URL=    # URL d'achat du GPU
 | 
					PRODUCT_URL=    # URL d'achat du GPU
 | 
				
			||||||
PRODUCT_NAME=   #Le nom du GPU qui s'affiche dans les notifications
 | 
					PRODUCT_NAME=   # Le nom exact du GPU que vous recherchez comme : "RTX 5080"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
version: "3.8"
 | 
					 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
  nvidia-stock-bot:
 | 
					  nvidia-stock-bot:
 | 
				
			||||||
    image: nvidia-stock-bot
 | 
					    image: nvidia-stock-bot
 | 
				
			||||||
    container_name: nvidia-stock-bot
 | 
					    container_name: nvidia-stock-bot
 | 
				
			||||||
    restart: always # Le conteneur redémarrera automatiquement en cas d'échec
 | 
					    restart: unless-stopped
 | 
				
			||||||
    env_file:
 | 
					    env_file:
 | 
				
			||||||
      - .env
 | 
					      - .env
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
@@ -11,5 +10,7 @@ services:
 | 
				
			|||||||
      - REFRESH_TIME=${FREQ}
 | 
					      - REFRESH_TIME=${FREQ}
 | 
				
			||||||
      - API_URL_SKU=${API_URL_SKU}
 | 
					      - API_URL_SKU=${API_URL_SKU}
 | 
				
			||||||
      - API_URL_STOCK=${API_URL_STOCK}
 | 
					      - API_URL_STOCK=${API_URL_STOCK}
 | 
				
			||||||
 | 
					      - PRODUCT_URL=${PRODUCT_URL}
 | 
				
			||||||
 | 
					      - PRODUCT_NAME=${PRODUCT_NAME}
 | 
				
			||||||
      - PYTHONUNBUFFERED=1 # Permet d'afficher les logs en temps réel
 | 
					      - PYTHONUNBUFFERED=1 # Permet d'afficher les logs en temps réel
 | 
				
			||||||
    command: python nvidia-stock-bot.py # Lance le script Python
 | 
					    command: python nvidia-stock-bot.py # Lance le script Python
 | 
				
			||||||
@@ -14,13 +14,21 @@ logging.info("Démarrage du script")
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Récupération des variables d'environnement
 | 
					# Récupération des variables d'environnement
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    DISCORD_WEBHOOK_URL = os.environ['DISCORD_WEBHOOK_URL']
 | 
					    DISCORD_WEBHOOK_URL = os.environ.get('DISCORD_WEBHOOK_URL')
 | 
				
			||||||
    API_URL_SKU = os.environ['API_URL_SKU']
 | 
					    API_URL_SKU = os.environ.get('API_URL_SKU', 'https://api.nvidia.partners/edge/product/search?page=1&limit=100&locale=fr-fr&Manufacturer=Nvidia')
 | 
				
			||||||
    API_URL_STOCK = os.environ['API_URL_STOCK']
 | 
					    API_URL_STOCK = os.environ.get('API_URL_STOCK', 'https://api.store.nvidia.com/partner/v1/feinventory?locale=fr-fr&skus=')
 | 
				
			||||||
    REFRESH_TIME = int(os.environ['REFRESH_TIME'])  # Convertir en entier
 | 
					    REFRESH_TIME = int(os.environ.get('REFRESH_TIME', 30))
 | 
				
			||||||
    TEST_MODE = os.environ.get('TEST_MODE', 'False').lower() == 'true'
 | 
					    TEST_MODE = os.environ.get('TEST_MODE', 'False').lower() == 'true'
 | 
				
			||||||
    PRODUCT_URL = os.environ['PRODUCT_URL']
 | 
					    PRODUCT_URL = os.environ.get('PRODUCT_URL', 'https://marketplace.nvidia.com/fr-fr/consumer/graphics-cards/?locale=fr-fr&page=1&limit=12&manufacturer=NVIDIA')
 | 
				
			||||||
    PRODUCT_NAME = os.environ['PRODUCT_NAME']
 | 
					    PRODUCT_NAME = os.environ.get('PRODUCT_NAME')
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if not DISCORD_WEBHOOK_URL:
 | 
				
			||||||
 | 
					        logging.error("❌ DISCORD_WEBHOOK_URL est requis mais non défini.")
 | 
				
			||||||
 | 
					        exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if not PRODUCT_NAME:
 | 
				
			||||||
 | 
					        logging.error("❌ PRODUCT_NAME est requis mais non défini.")
 | 
				
			||||||
 | 
					        exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Regex pour extraire l'ID et le token
 | 
					    # Regex pour extraire l'ID et le token
 | 
				
			||||||
    match = re.search(r'/(\d+)/(.*)', DISCORD_WEBHOOK_URL)
 | 
					    match = re.search(r'/(\d+)/(.*)', DISCORD_WEBHOOK_URL)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user