IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Poster une image "évolutive" via un bot discord


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Poster une image "évolutive" via un bot discord
    Bonjour, je suis nouveau sur le forum et je me suis lancé dans le développement de bots discord en langage Python (je suis débutant).

    En fait, j'aimerai que le bot arrive à poster une image qui se trouve sur une page internet; mais cette image change toutes les 5 minutes. J'aimerai donc qu'à chaque fois qu'un utilisateur dise la commande qui déclenche la réponse du bot, il poste la dernière image disponible. Je cherche donc la commande / la méthode

    J'arrive à faire répondre un message au bot (bon, ce n'est pas bien dur me direz-vous, mais c'est déjà ça pour un débutant).

    Si vous voulez la page en question pour mieux comprendre concrètement, je peux vous fournir l'exemple

    PS : j'ai assez cherché sur le forum mais j'ai pas réussi à trouver de sujet qui répondait à ça directement...

    Mon éditeur est Sublimtext

    Merci d'avance, bonne journée!

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Concrètement, l'image à poster se trouve où ? Sur ta machine ? Que un autre site web ?
    Si elle se trouve sur ta machine, tu peux demander un os.stat() d'un fichier. Ca te donnera les caractéristiques du fichier dont sa taille, si t'es sur Unix ses droits et surtout sa date de mise à jour.
    Donc en regardant toutes les images une à une (via os.listdir()) tu pourras avoir celle dont la date est la plus récente.

    Petit exemple qui affiche les dossiers du répertoire courant dans l'ordre de leur date de mise à jour (le plus récent en premier)
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import os
    for f in sorted(os.listdir("."), key=lambda x: os.stat(x).st_mtime, reverse=True):
    	s=os.stat(f)
    	print(f, s.st_mtime)
    # for

    Et cet exemple affiche le fichier d'extension ".py" le plus récent
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import os
     
    print(
    	tuple(
    		sorted(
    			(f for f in os.listdir(".") if f.endswith(".py")),	# Liste crée "à la volée" ne contenant que les fichiers se terminant par ".py"
    			key=lambda x: os.stat(x).st_mtime,			# La clef du tri sera la date de mise à jour du fichier de la liste
    			reverse=True,						# Le tri sera dans l'ordre inverse (la clef la plus élevée en premier)
    		)
    	)[0]		# Seulement le premier fichier qui ressort
    )

    Citation Envoyé par Bretongalère Voir le message
    Mon éditeur est Sublimtext
    Super. Moi c'est gvim quand je suis sous Linux, et notepad++ sous Windows...
    En fait, l'éditeur n'a aucune importance pour Python
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour, merci pour ta réponse

    l'image est sur un site internet (si tu veux te rendre compte plus concrètement : https://www.meteociel.fr/observation...ch=11&zoom=1.2 ; il s'agit de pouvoir poster l'image la plus récente)


    la suite de ton message (qui me paraît bien obscure, mais je vais m'y plonger) concerne-elle donc aussi le cas où l'image est sur un site? Merci beaucoup !!

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bretongalère Voir le message
    l'image est sur un site internet (si tu veux te rendre compte plus concrètement : https://www.meteociel.fr/observation...ch=11&zoom=1.2 ; il s'agit de pouvoir poster l'image la plus récente)
    Hum, à étudier. Il faut pouvoir interroger le site pour connaitre la date de mise à jour

    Citation Envoyé par Bretongalère Voir le message
    la suite de ton message (qui me paraît bien obscure, mais je vais m'y plonger)
    C'est pour ça que j'ai tenté d'expliquer les lignes par des commentaires. En fait, j'utilise le mécanisme de "liste en intension" qui permet de créer une liste "à la volée" à partir d'une liste de base (dans mon cas os.listdir(".")) sur laquelle je peux appliquer un filtre (ici seulement les fichiers terminée par ".py"). Le résultat est alors une liste "mémoire" ne contenant que les éléments de la liste de base répondant au filtre. C'est super pratique.

    Citation Envoyé par Bretongalère Voir le message
    concerne-elle donc aussi le cas où l'image est sur un site?
    Ce mécanisme peut très bien s'appliquer à trier n'importe quelle info pourvu que tu aies déjà au-moins l'info en question. Pour mon exemple je suis parti des fichiers contenus dans le dossier "." (le dossier courant) car là je savais pouvoir obtenir leur date de modification. Et donc ce mécanisme peut très bien fonctionner à partir d'une image prise sur un site à condition que tu puisses disposer de l'info "date de mise à jour de l'image". Et ça, ça dépend du site.
    Certains sites acceptent, si on tape sur un dossier, de lister les fichiers qui s'y trouvent (exemple le site de Postgres où tu peux taper ici https://www.postgresql.org/ftp/source/v10.6 et tu auras tous les fichiers). Donc en utilisant la librairie "url" de Python, tu peux demander à récupérer tout ce qu'on y voit (donc les noms des fichiers et leurs dates) puis faire un tri sur ces infos.

    Mais beaucoup d'autres sites refusent cette possibilité qui constitue une faille de sécurité. Et là, malheureusement, je pense que l'image de ton site est une image "générée" donc je ne vois pas trop comment trouver la plus récente. Je me demande même, dans la mesure où elle semble être générée "à la volée" (comme ma liste), si la notion de "plus récente" a encore un sens ici.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    avec discord.py il faut utiliser aiohttp qui est asynchrone et qui permet de ne pas bloquer la boucle d'event (sinon ça voudra dire que pendant que tu télécharge l'image le bot ne pourra rien faire d'autre)
    de mémoire ça devrait donner un truc comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    async with aiohttp.ClientSession() as session:
        url = "https://example.com/image"
        async with session.get(url) as r:
            content = await r.read()
     
     
    await ctx.send(discord.File(io.bytesIO(content))
    Mais tu as un autre problème c'est que ce n'est pas une image du tout mais un canvas, il faudra donc faire quelque chose pour récupérer une image, avec selenium sans doute

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    encore merci de cette réponse détaillée qui me précise ces pistes,

    est-ce possible de facilement savoir si ces infos sont disponibles sur ce site particulier ?

    concernant la possibilité de réussir (sans parler de la difficulté), je sais que c'est possible, car
    sur un autre serveur discord, un bot parvient à faire ce que je cherche à faire, justement...
    c'est-à-dire à pouvoir poster l'image qui est actualisée (elle est MAJ toutes les 5 minutes) si on lui demande

    mais, ce bot arrive également à zoomer sur une partie de l'image (à ne prendre qu'une partie de l'image) si on lui demande
    (ex : le coin en haut à gauche, le coin en bas à droite... tout en étant actualisée également)

    c'est sûrement une fantaisie de l'esprit, mais il n'existe aucun moyen de pouvoir sélectionner une partie de l'affichage d'une page du site ?
    (sous forme d'image)


    Edit après la lecture du message de flapili : merci beaucoup, je vois un peu là où tu veux en venir même si c'est évidemment obscur, penses-tu qu'un débutant (comme moi) puisse tenter d'y arriver ou ce sont vraiment des manip' très, trop fastidieuses?


    ____________

    edit 19h : rebonjour, je pense que tout cela sera trop compliqué et je pense aussi avoir trouvé un moyen beaucoup plus simple d'avoir ce que je veux.
    Mais, évidemment, j'ai encore un souci

    Alors ce que j'ai trouvé, sur différents sites, c'est une image qui change (toutes les 5 minutes) mais qui est hébergée sur un lien identique
    (par exemple : https://www.meteo60.fr/radars/derniere-image.png)

    si je poste ce lien sur discord (que ce soit via bot ou moi-même), par exemple, en copiant collant une première fois le lien à 17h03 (il affichera l'image de 17h00), "tout va bien"

    cependant, si je poste le lien sur le serveur discord à 17H30, il affichera toujours l'image de 17h00 alors que si je tape le même lien (l'unique lien) sur un nouvel onglet, il affichera correctement l'image de 17H30
    comme si sur discord, le lien était bloqué

    auriez-vous une solution, ou une commande ou quelques lignes de code sur python, pour que le lien affiche la dernière image existante ? merci, bonne soirée à tous !

Discussions similaires

  1. Insérer une image directement via une requete
    Par arngrimur dans le forum Développement
    Réponses: 8
    Dernier message: 13/03/2012, 22h47
  2. [XL-2007] Création d'une image jpg via une Macro.
    Par djflnj dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/09/2010, 15h47
  3. Poster une image sur facebook (ou autre réseau)
    Par skip78 dans le forum Facebook
    Réponses: 1
    Dernier message: 10/06/2009, 17h06
  4. Comment poster une image dans un blob avec IBStoredProc ?
    Par colorid dans le forum Bases de données
    Réponses: 0
    Dernier message: 02/12/2007, 08h51
  5. Réponses: 11
    Dernier message: 25/02/2007, 01h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo