jeudi 1 mars 2012

[Python snippet] Pastebin Watcher

#---
# name:     Pastebin Watcher
# version:  0.1b
# author:   nowz
#---

import re
import urllib2
import threading

#variables
url = "http://pastebin.com"
path = "/archive"
File = "D:\ZenkBot\pastebin.txt"

#functions
def query():
    f = open(File, 'w')
    data = urllib2.urlopen(url+path).read()
    result = re.findall('<a href="([^"]+)">([^<]+)</a></td>[ \r\n\t]*<td>([^<]+)</td>[ \r\n\t]*<td align="right"><a href="([^"]+)">([^<]+)</a>', data, re.MULTILINE | re.I)
    j = 0
    for i in result:
        print "[#%s] (%s) %s (%s) %s" % (j+1, i[4], i[1], i[2], i[0])
        if i[4] == "Python":
            f.write("[#%s] (%s) %s (%s) %s\n" % (j+1, i[4], i[1], i[2], i[0]))
        j = j+1
    f.close()
    threading.Timer(500, query).start()

query()

Alors voilà, très largement modifiable et pas très beau:
C'est un snippet qui va regarder toutes les 500secondes les nouveaux posts pastebin (publique) et trouver ceux dont le Type est "python" et l'ecrire dans le fichier "File"
Vous pouvez changer par ce qui vous interesses Type & Titre :)
Pour les curieux qui voudrait voir la solution plus propre de piti qui utilise lxml :


from lxml import etree as ET
import urllib2
page = urllib2.urlopen('http://pastebin.com/archive')
content = page.readlines()
html = '\n'.join(content)
mET = ET.HTML(html)
addrs = mET.xpath('/html/body/div/div/div/div/div/table//tr/td[not(@align="right")]/a[@href]')
for addr in addrs:                                                                            
    print ET.tostring(addr)


Je remercie y0ug & piti pour l'aide qu'ils m'ont apporté dans la réalisation de ce petit snippet (ridicule)

3 commentaires:

  1. Bonjour,

    est il possible de m'expliquer comment on fait pour ce servir du script merci

    j'ai dll python
    j'ai copié la première parti sur un fichier que j'ai après changé en .py
    J'ai aussi bien sur changer le chemin de sorti!
    et lancer et RIEN

    THANKS d'avance

    RépondreSupprimer
  2. Bonjour JACKES,

    Alors apparement y'a un probleme au niveau de l'écriture sur un fichier, déjà.

    pour lancer le python il faut aller dans ton terminal (ou cmd.exe sur windows) et taper : python fichier.py (fichier.py etant le fichier dans lequel tu as sauvegardé ce snippet)

    et toutes les 60seconde ca fait un raffraichissement et affiche tout dans le terminal, c'est un snippet à ameliorer, donc si tu n'as pas les bases ca risque d'etre dur.

    RépondreSupprimer
  3. Le problème au niveau de l'écriture vient de moi, je te rassure.

    et je viens de verifier enfaite c'est toutes les 500secondes :)

    RépondreSupprimer