« Cette année je souhaite me défaire de mes oripeaux… »
\n\nUne illustration de Lys Argente
\n", - "protected": false - }, - "excerpt": { - "rendered": "« Cette année je souhaite me défaire de mes oripeaux… » Une illustration de Lys Argente
\n", - "protected": false - }, - "author": 1, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 6 - ], - "tags": [ - 107, - 166 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1686" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/1" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1686" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1686/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1686" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1686" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1686" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1668, "date": "2016-06-24T10:00:26", @@ -2503,205 +2404,6 @@ ] } }, - { - "id": 1642, - "date": "2016-05-11T12:57:55", - "date_gmt": "2016-05-11T11:57:55", - "guid": { - "rendered": "http://qzine.fr/?p=1642" - }, - "modified": "2016-05-11T12:57:55", - "modified_gmt": "2016-05-11T11:57:55", - "slug": "le-mythe-du-prince-charmant", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/le-mythe-du-prince-charmant/", - "title": { - "rendered": "Le mythe du prince charmant" - }, - "content": { - "rendered": "Ce mythe fait croire aux jeunes filles qu’elles sont issues d’une noble famille et que parce qu’elles ont un utérus, il leur suffira d’attendre en n’en branlant pas une pour qu’un jour un beau gars sorte de nulle part et leur offre une vie merveilleuse, parce que bon faut pas déconner ce sont des princesses et tout leur est dû.
\nDe même pour le prince, qui a eu l’immense chance d’être né avec un pénis ce qui lui confère le droit d’avoir toutes les biatches à son cou, parce que bon faut pas déconner, comme dirait Stéphane Bern, ce sont des princes.
\nCe mythe ne fait de bien à personne.
\nFort heureusement, nous sommes tout à fait capables de différencer les contes, le cinéma et la réalité.
\nSi quelqu’un qui vous soutient que faire la différence entre les deux est impossible pour “les jeunes”, demandez-lui si quand il ou elle était plus jeune il ne la voyait pas non plus, la différence.
\n\nJuvenoia: (2010) Mot-valise inventé par David Finkelhor à partir de juvenile (« juvénile ») et paranoia (« paranoïa »). La peur ou hostilité ressentie par une génération à l’encontre d’une plus jeune génération ou envers la culture jeune en général.
“non, bien sûr que non, parce que moi j’suis moins con que les autres / mes parents sont mieux que les autres et m’ont appris a faire la différence” mais pour une raison inconnue, ou par l’éternel “c’était mieux avant” cette lucidité ne peut être perçue par le commun des mortels d’aujourd’hui. Son raisonnement fondé sur une vague impression à base de « c’était mieux avant », faite de juvénoïa, s’effondrera en mille morceaux tel le prince charmant qui se casse la gueule de son cheval en loupant son créneau, aspergeant de gadoue la princesse. Mais avec classe et dignité, parce que faut pas déconner, ce sont des princes.
\nTexte : tykayn
\nIllustration: Lys Argente
\n\n", - "protected": false - }, - "excerpt": { - "rendered": "
Ce mythe fait croire aux jeunes filles qu’elles sont issues d’une noble famille et que parce qu’elles ont un utérus, il leur suffira d’attendre en n’en branlant pas une pour qu’un jour un beau gars sorte de nulle part et … Lire la suite
\n", - "protected": false - }, - "author": 5, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 3, - 6 - ], - "tags": [ - 82, - 83 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1642" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/5" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1642" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1642/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1642" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1642" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1642" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, - { - "id": 1652, - "date": "2016-04-21T20:12:29", - "date_gmt": "2016-04-21T19:12:29", - "guid": { - "rendered": "http://qzine.fr/?p=1652" - }, - "modified": "2016-04-21T20:12:29", - "modified_gmt": "2016-04-21T19:12:29", - "slug": "selfie-de-tigre", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/selfie-de-tigre/", - "title": { - "rendered": "Selfie de tigre" - }, - "content": { - "rendered": "à poil!
\nillu: Lys Argente
\n", - "protected": false - }, - "excerpt": { - "rendered": "à poil! illu: Lys Argente
\n", - "protected": false - }, - "author": 5, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 6 - ], - "tags": [ - 239, - 271 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1652" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/5" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1652" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1652/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1652" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1652" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1652" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1627, "date": "2016-04-01T11:11:53", @@ -5038,102 +4740,6 @@ ] } }, - { - "id": 1547, - "date": "2015-12-11T10:48:08", - "date_gmt": "2015-12-11T09:48:08", - "guid": { - "rendered": "http://qzine.fr/?p=1547" - }, - "modified": "2015-12-11T10:48:08", - "modified_gmt": "2015-12-11T09:48:08", - "slug": "les-rois-mages", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/les-rois-mages/", - "title": { - "rendered": "Les rois mages" - }, - "content": { - "rendered": "\nLes trois bellâtres font une pause. 🙂 Une illustration de Lys Argente !
\n", - "protected": false - }, - "excerpt": { - "rendered": "Les trois bellâtres font une pause. 🙂 Une illustration de Lys Argente !
\n", - "protected": false - }, - "author": 1, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 6 - ], - "tags": [], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1547" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/1" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1547" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1547/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1547" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1547" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1547" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1536, "date": "2015-12-10T08:57:17", @@ -6810,105 +6416,6 @@ ] } }, - { - "id": 1456, - "date": "2015-10-14T09:45:04", - "date_gmt": "2015-10-14T08:45:04", - "guid": { - "rendered": "http://qzine.fr/?p=1456" - }, - "modified": "2015-10-14T09:45:04", - "modified_gmt": "2015-10-14T08:45:04", - "slug": "le-masseur", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/le-masseur/", - "title": { - "rendered": "Le masseur" - }, - "content": { - "rendered": "Bonjour à tous !
\nLe mois d’octobre a pour particularité le défi dessin Inktober ! Un dessin à l’encre par jour, tout le long du mois, par des centaines d’artistes ! Suivez le #inktober !
\nLys en a fait un pour le Qzine ! Qui veut un massage ^^ ?
Bonjour à tous ! Le mois d’octobre a pour particularité le défi dessin Inktober ! Un dessin à l’encre par jour, tout le long du mois, par des centaines d’artistes ! Suivez le #inktober ! Lys en a fait un pour … Lire la suite
\n", - "protected": false - }, - "author": 1, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 6 - ], - "tags": [ - 11, - 169 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1456" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/1" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1456" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1456/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1456" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1456" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1456" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1386, "date": "2015-10-04T09:00:23", @@ -7606,108 +7113,6 @@ ] } }, - { - "id": 1369, - "date": "2015-08-18T11:51:04", - "date_gmt": "2015-08-18T10:51:04", - "guid": { - "rendered": "http://qzine.fr/?p=1369" - }, - "modified": "2015-08-18T11:51:04", - "modified_gmt": "2015-08-18T10:51:04", - "slug": "martine-en-ete", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/martine-en-ete/", - "title": { - "rendered": "Martine en été" - }, - "content": { - "rendered": "Chaque été, c’est la même chose. Les filles aèrent leurs jambes épilées, les mecs exposent les mycoses de leurs pieds, et Martine chausse ses lunettes noires pour mater. Au calme. Et elle a de la chance parce que cette année, le très écolo H&M (attention, ça se prononce « hache et aime ») ne s’est pas foulé sur la longueur des shorts. Avec les fonds de tissus de l’an dernier, ils ont réussi l’exploit de démocratiser le short Beyoncé.
\nLe short Beyoncé, c’est quoi, demandez-vous à Martine ? Elle est sympa, elle vous répond : En fait, c’est un slip que si t’es jolie et que tu le portes avec un haut sympa, ça s’appelle un short. Mais que si t’as gardé les poils et que tu t’appelles Jean-Claude, y a les flics qui t’embarquent, parce que c’est plus un short.
C’est la loi. Les femmes enlèvent le bas, les hommes enlèvent le haut, les trans se démerdent, et dans tout ça, Martine a chaud. Dans le pays où Martine est née (là-bas, plus exactement), il fait chaud du 21 juin au 20 juin. Alors, comment on sait que c’est l’été ? demandent souvent à Martine, les héritiers de la dynastie Groçon (vous savez, ceux qui ont inventé la cédille !). Et Martine, dans sa bienveillance, de leur répondre : « Le savoir est une arme, maintenant tu sais. Le savoir est une arme, bébé, ne l’oublie jamais ». Oui, Martine est née dans les années 80. Oui, elle a été témoin des déboires de la mode féminine des années 90. De Paris à Bamako, le nuage n’a épargné personne.
\nLa peau de Martine a la couleur du chocolat, mais apparemment personne ne veut croquer dedans. Son minou est un Oreo (parfois tout sec, parfois crémeux, ça dépend de l’accompagnement), mais la vérité, pour le bouffer, y a pas foule au balcon.
\nMartine se demande si ça va encore durer longtemps. C’est quand même pas normal qu’en cette saison chaude, elle soit la seule à être en chaleur. Tout l’hiver, les filles sont déjà difficiles à avoir, elles veulent d’abord te connaître, répondre à tes textos une fois tous les six ans…
\nAlors pour maximiser ses chances de serrer, Martine se retrouve à chasser dix chattes à la fois. Quant aux lapins, c’est même pas la peine, ils font moins les malins quand elle enfile son strapon.
En attendant, Martine se contente d’Ava, la version française et encore plus dégueulasse de la butch d’Orange y ze nous black. Ava. Il faut être jolie pour s’appeler Ava, non ? Pas celle-là, en tout cas. Ava n’est pas une perle, mais elle adore les Oreo. Elle bouffe celui de Martine à n’en plus finir, à un endroit où Martine ne la voit pas. Tout est lesbien dans le meilleur des mondes.
\n\nUn texte de Jo Güstin, illustré par Lys Argente.
\n", - "protected": false - }, - "excerpt": { - "rendered": "Chaque été, c’est la même chose. Les filles aèrent leurs jambes épilées, les mecs exposent les mycoses de leurs pieds, et Martine chausse ses lunettes noires pour mater. Au calme. Et elle a de la chance parce que cette année, … Lire la suite
\n", - "protected": false - }, - "author": 1, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 9 - ], - "tags": [ - 93, - 153, - 191, - 218, - 249 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1369" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/1" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1369" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1369/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1369" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1369" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1369" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1359, "date": "2015-08-06T16:50:25", @@ -8904,107 +8309,6 @@ ] } }, - { - "id": 1260, - "date": "2015-04-16T21:44:14", - "date_gmt": "2015-04-16T20:44:14", - "guid": { - "rendered": "http://qzine.fr/?p=1260" - }, - "modified": "2015-04-16T21:44:14", - "modified_gmt": "2015-04-16T20:44:14", - "slug": "les-secretaires", - "status": "publish", - "type": "post", - "link": "https://qzine.fr/les-secretaires/", - "title": { - "rendered": "Les secrétaires" - }, - "content": { - "rendered": "\nIllustration : Lys
\n\nIllustration : Tykayn
\n", - "protected": false - }, - "excerpt": { - "rendered": "\nIllustration : Lys
\nIllustration : Tykayn
\n", - "protected": false - }, - "author": 1, - "featured_media": 0, - "comment_status": "open", - "ping_status": "open", - "sticky": false, - "template": "", - "format": "standard", - "meta": [], - "categories": [ - 6 - ], - "tags": [ - 91, - 196, - 236, - 263 - ], - "_links": { - "self": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts/1260" - } - ], - "collection": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/posts" - } - ], - "about": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/types/post" - } - ], - "author": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/users/1" - } - ], - "replies": [ - { - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/comments?post=1260" - } - ], - "version-history": [ - { - "count": 0, - "href": "https://qzine.fr/wp-json/wp/v2/posts/1260/revisions" - } - ], - "wp:attachment": [ - { - "href": "https://qzine.fr/wp-json/wp/v2/media?parent=1260" - } - ], - "wp:term": [ - { - "taxonomy": "category", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/categories?post=1260" - }, - { - "taxonomy": "post_tag", - "embeddable": true, - "href": "https://qzine.fr/wp-json/wp/v2/tags?post=1260" - } - ], - "curies": [ - { - "name": "wp", - "href": "https://api.w.org/{rel}", - "templated": true - } - ] - } - }, { "id": 1249, "date": "2015-04-05T09:01:12", @@ -17491,4 +16795,4 @@ ] } } -] \ No newline at end of file +] diff --git a/osm_get_wiki_page.py b/osm_get_wiki_page.py new file mode 100644 index 0000000..b321242 --- /dev/null +++ b/osm_get_wiki_page.py @@ -0,0 +1,63 @@ +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() diff --git a/osm_one_wiki_page.py b/osm_one_wiki_page.py new file mode 100644 index 0000000..d4663fc --- /dev/null +++ b/osm_one_wiki_page.py @@ -0,0 +1,78 @@ +import os +import requests +from bs4 import BeautifulSoup +import argparse +from mastodon import Mastodon +from dotenv import load_dotenv + +# Chargement du token d'identification depuis le fichier.env +load_dotenv() +TOKEN_CURATOR = os.getenv('TOKEN_CURATOR') +ID_CURATOR = os.getenv('ID_CURATOR') +SECRET_CURATOR = os.getenv('SECRET_CURATOR') + +def get_first_image_url(title): + """ + Récupère l'URL de la première image de l'article MediaWiki. + """ + response = requests.get("https://wiki.openstreetmap.org/wiki/"+title) + soup = BeautifulSoup(response.content, 'html.parser') + images = soup.find_all('img') + for i in images: + source = i['src'] + print(source) + if '.svg.png' not in source: + return source + else: + return None + +def post_mastodon(image_url, message, dry_run=False): + """ + Poste un message avec une image sur l'instance Mastodon. + """ + + # Récupération de l'image + print("poster avec l'image_url ",image_url) + image_response = requests.get(image_url) + image_data = image_response.content + + if dry_run: + print("Dry run, pas de post réel") + return + + + + # Préparation des données pour l'API Mastodon + mastodon = Mastodon( + client_id=ID_CURATOR, + client_secret=SECRET_CURATOR, + access_token=TOKEN_CURATOR, + api_base_url='https://mastodon.cipherbliss.com/api/v1/' + ) + + # Envoi de la requête à l'API Mastodon + response = mastodon.status_post(message, media=image_data) + + if response.status_code == 200: + print("Post envoyé avec succès!") + else: + print("Erreur lors de l'envoi du post") + +def main(): + parser = argparse.ArgumentParser(description='Poste un message avec une image sur Mastodon') + parser.add_argu +de la page MediaWiki') + parser.add_argument('--no-dry-run', action='store_false', help='Envoyer réellement le post (par défaut : dry run)') + args = parser.parse_args() + + image_url = get_first_image_url(args.title) main() to view a complete err + + if image_url: + message = "${args.title} \n + #rtfw #openstreetmap #wiki" + post_mastodon(image_url, message, dry_run=args.no_dry_run) + else: + print("Aucune image trouvée dans l'article") + +if __name__ == "__main__": + main() to view a complete err diff --git a/routes/index.js b/routes/index.js index 8e0e023..6bc69da 100644 --- a/routes/index.js +++ b/routes/index.js @@ -68,6 +68,7 @@ router.get('/', function (req, res, next) { { accounts_to_select, reqBody: req.body, + author: req.body ? req.body.author : '', schedule_time, schedule_day, time_spans_choices @@ -321,7 +322,6 @@ router.post('/direct-post', function (req, res, next) { console.log('accessToken', access_token) - let params = { status: req.body.message, visibility, diff --git a/views/index.jade b/views/index.jade index ec2a08b..5501794 100644 --- a/views/index.jade +++ b/views/index.jade @@ -1,85 +1,82 @@ extends layout block content - div.column-header__wrapper - h1.button.column-header Publier un message + div.column-header__wrapper + h1.button.column-header Publier un message - if message - p.alert.alert-error=message - //form(action="/add-to-queue",method="post") - form(action="/direct-post",method="post") - span.account - span="Choix du compte parmi les " + if message + p.alert.alert-error=message + form(action="/direct-post", method="post") + span.account + span="Choix du compte parmi les " - br - div.images - if accounts_to_select - each val, index in accounts_to_select - div.clickable(onclick=`selectAccount('${val.value}')`) - img.account__avatar-overlay(src=`${val.src}`) - br - span=val.label - br - select(method="post", name="author", value=bodyReq ? bodyReq.author : "", id="author_select") - each val, index in accounts_to_select - option(value=val.value) - span=val.label - div.compose-form__autosuggest-wrapper - .autosuggest-textarea - label - span Content warning (optionnel) - input.cw-input.autosuggest-textarea__textarea(name="cw", type="text", width="500", height="2em") - br - span Qu’avez-vous en tête ? - textarea.main-input.autosuggest-textarea__textarea(name="message", width="500", lines="20",autofocus="autofocus") - br - div.composer--publisher - //input.button.primary(type="submit", value="ajouter à la file d'attente") - input.button.primary(type="submit", value="poster tout de suite") + br - fieldset.wip - label - span Fichier à joindre (optionnel) - input.file-input.autosuggest-textarea__textarea(name="fichier", type="file") - h2 schedule - label Select day in the future - div.day_spans - each val, index in [1,2,3,4,5] - div.clickable(onclick=`selectDay('${val}')`) - span.time_spans_choice=val - label Select time span - div.time_spans - each val, index in time_spans_choices - div.clickable(onclick=`selectTime('${val}')`) - span.time_spans_choice=val - label Schedule in time (work in progress) - input.input.checkbox(type="checkbox", value=false, name="scheduled_at_bool") - input.input.checkbox(type="date", name="scheduled_at", value=schedule_day) - input.input.checkbox(type="text", id="scheduled_at_time", name="scheduled_at_time",value=schedule_time) - br - div.composer--publisher - //input.button.primary(type="submit", value="ajouter à la file d'attente") - input.button.primary(type="submit", value="poster tout de suite") + if accounts_to_select + div.images + each val, index in accounts_to_select + div.clickable(onclick=`selectAccount('${val.value}')`) + img.account__avatar-overlay(src=`${val.src}`) + br + span=val.label + br + if accounts_to_select + select(method="post", name="author", value=author, id="author_select") + each val, index in accounts_to_select + option(value=val.value) + span=val.label + div.compose-form__autosuggest-wrapper + .autosuggest-textarea + label + span Content warning (optionnel) + input.cw-input.autosuggest-textarea__textarea(name="cw", type="text", width="500", height="2em") + span Qu’avez-vous en tête ? + textarea.main-input.autosuggest-textarea__textarea(name="message", width="500", lines="20",autofocus="autofocus") + br - script. - function selectAccount(somePseudo) { - console.log('account selected', document.querySelector('#author_select').value) - let selector=document.querySelector('#author_select'); - selector.value = somePseudo - selector.classList.add("changed") - setTimeout(()=>{ - selector.classList.remove("changed") - },500) - console.log('account changed', somePseudo) - } - function selectTime(someTime){ - let selector=document.querySelector('#scheduled_at_time'); - selector.value = someTime - selector.classList.add("changed") - setTimeout(()=>{ - selector.classList.remove("changed") - },500) - console.log('account changed', somePseudo) - } + fieldset.wip + label + span Fichier à joindre (optionnel) + input.file-input.autosuggest-textarea__textarea(name="fichier", type="file") + h2 schedule + label Select day in the future + div.day_spans + each val, index in [1,2,3,4,5] + div.clickable(onclick=`selectDay('${val}')`) + span.time_spans_choice=val + label Select time span + if time_spans_choices + div.time_spans + each val, index in time_spans_choices + div.clickable(onclick=`selectTime('${val}')`) + span.time_spans_choice=val + label Schedule in time (work in progress) + input.input.checkbox(type="checkbox", value=false, name="scheduled_at_bool") + input.input.checkbox(type="date", name="scheduled_at", value=schedule_day) + input.input.checkbox(type="text", id="scheduled_at_time", name="scheduled_at_time",value=schedule_time) + br + div.composer--publisher + input.button.primary(type="submit", value="poster tout de suite") - console.log('script loaded') + script. + function selectAccount (somePseudo) { + console.log('account selected', document.querySelector('#author_select').value) + let selector = document.querySelector('#author_select'); + selector.value = somePseudo + selector.classList.add("changed") + setTimeout(() => { + selector.classList.remove("changed") + }, 500) + console.log('account changed', somePseudo) + } + function selectTime (someTime) { + let selector = document.querySelector('#scheduled_at_time'); + selector.value = someTime + selector.classList.add("changed") + setTimeout(() => { + selector.classList.remove("changed") + }, 500) + console.log('account changed', somePseudo) + } + + console.log('script loaded')