user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 19-06-2015 10:50:48

WarLocG
#! modo de compet

Petit script python: afficher messages de fora sous conky

Voila la source

#! /usr/bin/env python
# -*- coding:Utf-8 -*-

"""
Author : WarLocG(c) 2015
"""

from HTMLParser import HTMLParser
import re
import urllib2

def get_TopicName(url,encode):
  request = urllib2.Request(url,None,{"User-Agent":"Mozilla/5.0"})
  resource = urllib2.urlopen(request).read().decode(encode)
  resource = HTMLParser().unescape(resource).encode('utf-8')
  title = resource.split('<title>')[1].split('</title>')[0]
  if len(title) > 30:
    title = title[:30]+'...'
  return title

urls = {0:{'name':'Linuxtrack',
           'url':'https://linuxtrack.net/forum.php',
           'domain':'https://linuxtrack.net',
           'encode':'utf-8',
           'rule':r'.*href=\"([a-z0-9=?\.]*).*\"*.(Aujourd\'hui|Hier) ([0-9]{2}:[0-9]{2}:[0-9]{2}).*par ([^\&\?\<\>\\\/]*)\<\/span.*',
           'gr_order':[2,3,4,1]},
        1:{'name':'Kali Linux fr',
           'url':'http://www.kali-linux.fr/forum/index.php',
           'domain':'http://www.kali-linux.fr',
           'encode':'latin-1',
           'rule':r'.*\>([^\&\?\<\>\\\/]*)\<\/a\>\<br.*\n.*href=\"https?:\/\/www\.kali\-linux\.fr\/([a-z0-9=?\.\/]*).*\".*\n.*(Aujourd\'hui|Hier).*([0-9]{2}:[0-9]{2}:[0-9]{2}).*',
           'gr_order':[3,4,1,2]}
       }

message=""

for i in range(len(urls)):
  encode=urls[i]['encode']
  request=urllib2.Request(urls[i]['url'],None,{'User-Agent':'Mozilla/5.0'})
  resources = urllib2.urlopen(request).read().decode(encode)
  resources = resources.split('td')

  # a adapter selon vos conky, mettre '' pour aucun
  conky_style1 = '${font Santana:pixelsize=13}' #style du format du domaine
  conky_style2 = '${font Terminus:pixelsize=11}' #style 'par défaut'
  #note: 
  #  pour que le style conky soit effectif, le script devra etre lancé
  #  via execp depuis .conkyrc
  message+="%s%s%s\n" % (conky_style1, urls[i]['name'], conky_style2)
  for lines in resources:
    lines = HTMLParser().unescape(lines).encode('utf-8')
    f = re.search(urls[i]['rule'],lines)
    if f is not None:
      all=f.group(0)
      if len(f.groups()) > 3:
        date=f.group(urls[i]['gr_order'][0])
        hour=f.group(urls[i]['gr_order'][1])
        author=f.group(urls[i]['gr_order'][2])
        link=f.group(urls[i]['gr_order'][3])
        link = get_TopicName(urls[i]['domain']+"/"+link, encode)
        message += ("[%s a %s] %s : %s\n" % (date,hour,author,link))
      else:
        message += ("%s\n" % str(f.groups()))

print (message)

Mise à jour: 19-06-2015: - Correction des problèmes d'encodage, désormais il est possible d'obtenir le message malgrés les caractères spéciaux. De plus j'ai rajouté une entrée dans le dico urls pour gérer l'encodage qui était différent sur cybertrack et kali-linux.fr.

Mise à jour: 23-06-2015: - Optimisation de la vitesse d'execution du script + correction de 2-3 problèmes d'encodages.

Mise à jour: 14-03-2017: - Utilisation de urllib2 et d'un user-agent Mozilla/5.0 pour traverser le cloudflare de kali-linux.fr.

Petite remarque: depuis que le script scanne deux fora (celui-ci et celui de kali-linux.fr.. qui est assez sale en passant) le script prend un peu de temps, je recommande, comme je l'ai fait chez moi de créer un cron dans le genre de "*/10 * * * * votreUser python script.py > last-message" et depuis votre conky faire un ${execp cat last-message} comme ca si un interval est présent dans le conky, il ne fera que lire le résultat dans last-message et n'enverra pas de trafic excessif car le script est assez gourmand à ce niveau la depuis qu'il va deux fois lire chaque fora, je compte optimiser cela dans un futur proche comme ca m'ennuie également le code est déjà optimisé a ce niveau la, un premier passage récolte les urls, un deuxième permet de récupérer les <title>.

Visuellement (chez moi quoi), ca donne ca:
1434703808.png
Mise à jour 19-06-2015:
1434745247.png


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#2 19-06-2015 17:20:22

ZeR0-@bSoLu
Membre

Re : Petit script python: afficher messages de fora sous conky

Merci pour ce petit script très sympa big_smile et utile surtout smile


Mess With The Bests
Die Like The Rest

Hors ligne

#3 20-06-2015 02:30:49

Yzeew
Membre d'or

Re : Petit script python: afficher messages de fora sous conky

Merci du partage smile


>> Good things come to those who, Wait.. <<

>> sip:yzeew@ekiga.net << and >> #Pouni3 <<

Hors ligne

#4 14-03-2017 14:10:41

WarLocG
#! modo de compet

Re : Petit script python: afficher messages de fora sous conky

Le script ne passe plus pour kali-linux.fr depuis que ca passe à présent par CloudFlare, je regarde pour arranger ca (probablement une affaire de cookie)

Edit: Réparé avec urllib2 et Request, en lui mettant un user-agent, cloudflare laisse passer smile Reste le souci avec des title sur kali-linux.fr qui doit est être réglé de leur coté mais ca refonctionne.


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#5 14-03-2017 14:48:53

arpinux
nakedev

Re : Petit script python: afficher messages de fora sous conky

coucou smile

et la fonction rss de conky ne fonctionne plus depuis lua ?
j'utilisais $rss pour choper les messages actifs des forums avant.

genre

${rss http://crunchbanglinux-fr.org/forum/extern.php?action=feed&type=rss 10 item_titles 5}

Dernière modification par arpinux (14-03-2017 14:52:45)

Hors ligne

#6 14-03-2017 14:52:24

WarLocG
#! modo de compet

Re : Petit script python: afficher messages de fora sous conky

Je ne serais pas te dire pour rss, j'utilise python afin de sortir les informations d'une manière déjà formatée à ma sauce smile Et le script est lui même basé sur le style de mon conky. Je testerai pour voir si ca me sort quelque chose qui me convient mais ma priorité est d'arranger ce script qui pour le moment est cassé tongue

Edit: réparé.
Edit2: semble pas fonctionner le ${rss}, ca m'affiche ${rss} donc je présume qu'il faille installer un paquet pour ca fonctionne. Tanpis.
Edit3: ${image} et ${rss} sont reconnu avec conky-all installés. rss fonctionne, juste ca ne fait pas ce que je veux. Je vais l'étudier pour voir si je pourrais l'optimiser un peu smile Sinon, si il y avais le pubDate et la personne qui a posté compris dans le rss ca aurait été parfait.


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

Pied de page des forums