IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Récupérer automatiquement un lien WeTransfer, A l'aide d'un script :-)
Options
trouspinette
posté 18 Sep 2015, 17:44
Message #1


Macbidouilleur d'Or !
*****

Groupe : Rédacteurs
Messages : 5 064
Inscrit : 19 Feb 2002
Lieu : BZH
Membre no 2 083



Wetransfer, vous connaissez certainement.

Les liens de téléchargement sont contenus dans une pièce jointe au format HTML : on lance son navigateur, on clique sur le lien et sa charge.

J'ai trouvé sur la toile un script Python qui fait le boulot dans une ligne de commande.

Truc chiant, il faut extraire de la pièce jointe HTML (que l'on reçoit sur sa boite mail) l'URL de téléchargement constitué de la forme :

https://www.wetransfer.com/downloads/*****/*****/*****

Par quel mécanisme serait-il possible d'en extraire cette URL, et la passer comme argument du script Python ?

Merci pour vos réponses ;-)

Ciao


--------------------
Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !

Luttons contre le style SMS !!!

iPhone 14Pro Max 256 Go iOS 17• MacBook Pro 16 2019 Core i9 - macOS 12.7.2 - 32 GB RAM - 2 TB • @Orange
Linux • OPNSense / pfSense • Une pointe de Windows aussi • Enfocus Switch Expert • callas pdfToolBox
Go to the top of the page
 
+Quote Post
baron
posté 18 Sep 2015, 20:14
Message #2


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 343
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Franchement, c'est plutôt le genre de question que je t'aurais posée à toi… tongue.gif
« Comment faire une petite requête en expression régulière du genre : extraire la chaîne de caractères, sans espace, qui commence par https://wetransfer.com/dowloads et se termine par une espace ? »


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 19 Sep 2015, 07:27
Message #3





Guests






Bonjour,

Edition : Je m’excuse de vous avoir suggéré de tester un script AppleScript nul.

Ce message a été modifié par JacqR - 23 Sep 2015, 14:48.
Go to the top of the page
 
+Quote Post
trouspinette
posté 28 Sep 2015, 21:57
Message #4


Macbidouilleur d'Or !
*****

Groupe : Rédacteurs
Messages : 5 064
Inscrit : 19 Feb 2002
Lieu : BZH
Membre no 2 083



Citation (JacqR @ 19 Sep 2015, 08:27) *
Bonjour,

Edition : Je m’excuse de vous avoir suggéré de tester un script AppleScript nul.

Belle preuve de modestie et d’honnêteté : bravo JacqR, j'apprécie cette franchise :-)


--------------------
Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !

Luttons contre le style SMS !!!

iPhone 14Pro Max 256 Go iOS 17• MacBook Pro 16 2019 Core i9 - macOS 12.7.2 - 32 GB RAM - 2 TB • @Orange
Linux • OPNSense / pfSense • Une pointe de Windows aussi • Enfocus Switch Expert • callas pdfToolBox
Go to the top of the page
 
+Quote Post
Jaypee
posté 29 Sep 2015, 06:02
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Si python déjà fait partie de la recette, autant utiliser son "parseur" d'HTML.

Voici un exemple en français: http://crunchbang-fr.org/forum/viewtopic.php?id=2041

J'ai pratiqué cet exercice pas en Python mais en Ruby et le principe reste très semblable. Le parser appelle des "call-outs" chaque fois qu'il est au début d'un élément ou juste après avoir identifié cet élément .

J-P

Go to the top of the page
 
+Quote Post
Jaypee
posté 30 Sep 2015, 20:54
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Auparavant, il faut:
- un script qui sélectionne dans une mailbox, certains mails selon certains critères
- Un script qui extrait l'attachement HTML des emails intéressants
- Un script qui "parse" l'HTML de l'attachement

J-P
Go to the top of the page
 
+Quote Post
trouspinette
posté 30 Sep 2015, 21:02
Message #7


Macbidouilleur d'Or !
*****

Groupe : Rédacteurs
Messages : 5 064
Inscrit : 19 Feb 2002
Lieu : BZH
Membre no 2 083



Citation
- un script qui sélectionne dans une mailbox, certains mails selon certains critères

Ça, je le fais à l'aide d'un produit qui fait bien le boulot,

Citation
- Un script qui extrait l'attachement HTML des emails intéressants

Idem point précédant,

Citation
- Un script qui "parse" l'HTML de l'attachement

C'est ce que je dois faire ;-)


--------------------
Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !

Luttons contre le style SMS !!!

iPhone 14Pro Max 256 Go iOS 17• MacBook Pro 16 2019 Core i9 - macOS 12.7.2 - 32 GB RAM - 2 TB • @Orange
Linux • OPNSense / pfSense • Une pointe de Windows aussi • Enfocus Switch Expert • callas pdfToolBox
Go to the top of the page
 
+Quote Post
Jaypee
posté 1 Oct 2015, 13:16
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Et donc pour la dernière étape, la bibliothèque standard de Python a les objets qui vont bien, c'est le lein que j'ai indiqué plus haut.

On passe au parser tout ou partie de l'HTML, et chaque fois qu'il va rencontrer une balise "<a>" il va appeler une méthode que l'utilsateur doit coder. Les attributs sont déjà extraits dont le href qui est l'URL qui t'intéresse. C'est cqu'on appelle Inversione Contrôle ou méthode Hollywood: "Ne nous appelez pas, NOUS vous appellerons". Donc, comme la fonction est appelé que dans le bon contexte, on n'a pas à s'intéresser à tout le reste. Il est préferable de passer l'HTML complet, car en travaillant ligne par ligne, on peu galérer si un tag s'etend sur plusieurs lignes.

Il faut probablement un test pour ignorer les autres <a>, en quittant immédiatement la méthode appelée par le parseur, si certains critères manquent, par ex si le texte de la balise n'est pas celui qu'on attend ou si pas de "wetransfer" dans l'URL du href.

Edit
Il y a en Python une bibliothèque dédiée à l'analyse de l'HTML Beautiful Soup
Première étape, l'installer dans python
Code
[jaypee:~]$ sudo pip install beautifulsoup4
Password:
Downloading/unpacking beautifulsoup4
  Downloading beautifulsoup4-4.4.1-py2-none-any.whl (81kB): 81kB downloaded
Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4
Cleaning up...

Deuxième étape, son utilisation
CODE
[jaypee:~]$ python
Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from bs4 import BeautifulSoup
>>> html = "<html><head></head><body><a href='http://host/context/uri'>Cliquer ici</a></body></html>"
>>> soup = BeautifulSoup(html, 'html.parser')
>>> print(soup.prettify())
<html>
<head>
</head>
<body>
<a href="http://host/context/uri">
Cliquer ici
</a>
</body>
</html>
>>> soup.a
<a href="http://host/context/uri">Cliquer ici</a>
>>> soup.a.get('href')
u'http://host/context/uri'
>>> soup.a.get('href').split('/')
[u'http:', u'', u'host', u'context', u'uri']
soup.a.get('href').split('/')[4]
u'uri'

C'est juste l'idée générale

J-P

Ce message a été modifié par Jaypee - 3 Oct 2015, 15:43.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 17th April 2024 - 00:40