64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import os
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
import os
|
|
from dotenv import load_dotenv
|
|
|
|
# Chargement du token d'identification depuis le fichier.env
|
|
load_dotenv()
|
|
TOKEN_CURATOR = os.getenv('TOKEN_CURATOR')
|
|
|
|
def get_first_image_url(mediawiki_url):
|
|
"""
|
|
Récupère l'URL de la première image de l'article MediaWiki.
|
|
"""
|
|
response = requests.get(mediawiki_url)
|
|
soup = BeautifulSoup(response.content, 'html.parser')
|
|
images = soup.find_all('img')
|
|
if images:
|
|
return images[0]['src']
|
|
else:
|
|
return None
|
|
|
|
def post_mastodon(image_url, message, dry_run=False):
|
|
"""
|
|
Poste un message avec une image sur l'instance Mastodon.
|
|
"""
|
|
if dry_run:
|
|
print("Dry run, pas de post réel")
|
|
return
|
|
|
|
# Récupération de l'image
|
|
image_response = requests.get(image_url)
|
|
image_data = image_response.content
|
|
|
|
# Préparation des données pour l'API Mastodon
|
|
headers = {'Authorization': f'Bearer {TOKEN_CURATOR}'}
|
|
data = {'status': message}
|
|
files = {'media': ('image.jpg', image_data, 'image/jpeg')}
|
|
|
|
# Envoi de la requête à l'API Mastodon
|
|
response = requests.post('https://mastodon.cipherbliss.com/api/v1/statuses', headers=headers, data=data, files=files)
|
|
|
|
if response.status_code == 200:
|
|
print("Post envoyé avec succès!")
|
|
else:
|
|
print("Erreur lors de l'envoi du post")
|
|
|
|
def main():
|
|
mediawiki_url = input("Entrez l'URL de la page MediaWiki : ")
|
|
image_url = get_first_image_url(mediawiki_url)
|
|
if image_url:
|
|
message = "coucou"
|
|
dry_run = input("Voulez-vous faire un dry run (o/n)? ")
|
|
if dry_run.lower() == 'o':
|
|
dry_run = True
|
|
else:
|
|
dry_run = False
|
|
post_mastodon(image_url, message, dry_run)
|
|
else:
|
|
print("Aucune image trouvée dans l'article")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|