Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#126 Le 20/07/2013, à 10:09

Henry de Monfreid

Re : [python]Monsieur Cinéscript

Je viens de trouver ce petit script. Je n'ai pas trop compris a quoi il sert. Je le colle ici au cas ou.

import urllib.request
import re
from time import sleep
import lxml.html

URL = 'http://www.imdb.com/search/title?count=100&sort=num_votes,desc&start=%s&title_type=feature'
RE_TITLE = re.compile("""<a href="/title/([^"]+)/">([^<]+)</a>""")
SLEEP_TIME = 1
LANGUAGE = 'es,en;q=0.5'
UA = 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1'

f = open('movies.txt', 'w+')

for page in range(0,1000):
    req = urllib.request.urlopen(urllib.request.Request(URL % (page * 100 + 1), headers={'Accept-Language': LANGUAGE, 'User-Agent': UA}))
    res = req.read().decode('utf-8')
    for _id, title in RE_TITLE.findall(res):
        title = lxml.html.fromstring(title).text_content()
        f.write(_id + '\t' + title + '\n')
    sleep(1)

f.close()

« Je te hais plus qu'aucun des dieux qui vivent sur l'Olympe
Car tu ne rêves que discordes, guerres et combats. »
Trouble obsessionnelcompulsif
Le TdCT est revenu (ils reviennent tous)

Hors ligne

#127 Le 21/07/2013, à 13:53

Henry de Monfreid

Re : [python]Monsieur Cinéscript

@ Lukophron : Est-il possible de modifier les script pour qu'il fonctionne sur un autre topic ?

Je pense qu'on pourra bientôt le faire tourner sur un serveur. Et je pense que des essais seront nécessaires.

L’idéal serait qu'il "travaille" une fois par jour.

Je propose a 01:00, en hommage a La Vingt-cinquième Heure
wikipwdia de Henry Verneuil.

Si quelqu'un a un film plus important/évident/culte avec un horaire dans le titre, on peut en débattre.

Dernière modification par S.O.D. (Le 21/07/2013, à 13:55)


« Je te hais plus qu'aucun des dieux qui vivent sur l'Olympe
Car tu ne rêves que discordes, guerres et combats. »
Trouble obsessionnelcompulsif
Le TdCT est revenu (ils reviennent tous)

Hors ligne

#128 Le 21/07/2013, à 17:35

GR 34

Re : [python]Monsieur Cinéscript

A 3h 10 pour:

Trois%20heures%20dix%20pour%20Yuma.jpg 

tongue

Dernière modification par 6steme1 (Le 21/07/2013, à 17:39)


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#129 Le 21/07/2013, à 17:50

lukophron

Re : [python]Monsieur Cinéscript

S.O.D. a écrit :

@ Lukophron : Est-il possible de modifier les script pour qu'il fonctionne sur un autre topic ?

pas de soucis


Et pour le titre, j'ai "2 heure moins le quart", mais jmef un peu


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#130 Le 22/07/2013, à 08:45

monsieur cinéma

Re : [python]Monsieur Cinéscript

Le script a débuté sur lun. 22 juil. 2013 07:44:52 UTC
mise à jour en cours... v0.9.8
url du topic = http://forum.ubuntu-fr.org/viewtopic.php?id=1299441
id du topic = 1299441
récupération du message-liste
première page récupérée http://forum.ubuntu-fr.org/viewtopic.php?id=1299441

 message récupéré pour mise à jour

page en cours = 24
recherche des codes imdb sur la page 24
http://forum.ubuntu-fr.org/viewtopic.php?id=1299441&p=24
['tt0084868', 'tt0399201', 'tt0056119']
recherche des codes imdb sur la page 25
http://forum.ubuntu-fr.org/viewtopic.php?id=1299441&p=25
['tt1663662', 'tt1318514']
page atteinte : 25


recherche des titres des nouveaux films sur imdb
['tt0399201', 'tt1318514', 'tt1663662', 'tt0056119', 'tt0084868']
Balise : tt0399201
Balise : tt1318514
Balise : tt1663662
Balise : tt0056119
Balise : tt0084868
recherche imdb terminée

titres ajoutés :
(The) Island (2005) ; Rise of the Planet of the Apes (2011) ; Pacific Rim (2013) ; (La) jetée (1962) ; Vincent (1982)

nouvelle liste créée 

modification de la liste locale
ok, liste.bak mis à jour
modification du post en cours...
opening http://forum.ubuntu-fr.org/edit.php?id=13804791
modification faite

 ... mise à jour terminée 

Script terminé sur lun. 22 juil. 2013 07:45:39 UTC

Vous êtes écrivain, moi j'suis facteur. Nous sommes tous les deux des hommes de lettres
- Vous voulez un whisky ?    - Juste un doigt !   - Vous ne voulez pas un whisky d'abord ?

Le ciné-clUbuntu

Hors ligne

#131 Le 22/07/2013, à 09:07

lukophron

Re : [python]Monsieur Cinéscript

ok les jeunes

ça roule pour moi (liste et messages de mise à jour dans un topic dédié)

autre chose, tant que j'ai le nez dedans ?


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#132 Le 04/08/2013, à 02:56

lukophron

Re : [python]Monsieur Cinéscript

ok
je relance de deux :
# liste des films trouvés : tout commentaire bienvenu (mise en page, info manquante, etc)
# on ne pourrait pas utiliser le serveur tdct.org (ou n'importe lequel déjà en place)? le script c'est ~180Ko en mémoire, 30 secondes de processeur et de bande-passante par jour...


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#133 Le 04/08/2013, à 07:01

GR 34

Re : [python]Monsieur Cinéscript

lukophron a écrit :

ok
je relance de deux :
# liste des films trouvés : tout commentaire bienvenu (mise en page, info manquante, etc)
# on ne pourrait pas utiliser le serveur tdct.org (ou n'importe lequel déjà en place)? le script c'est ~180Ko en mémoire, 30 secondes de processeur et de bande-passante par jour...

Ok pour moi...

Une chose que je remarque c'est le classement non ordonné du premier groupe, films comportant un nombre dans le titre...
Mais, bon, ce n'est pas important.


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#134 Le 04/08/2013, à 08:32

lukophron

Re : [python]Monsieur Cinéscript

6steme1 a écrit :

Une chose que je remarque c'est le classement non ordonné du premier groupe, films comportant un nombre dans le titre...

C'est ordonné, mais c'est ordonné sans tenir compte des espaces (tu peux le vérifier dans le reste de la liste aussi).
Ce n'est pas le classement "naturel" pour moi non plus, apparemment c'est une norme.

Quand je demande à M. Python de classer un truc en français

return locale.strcoll(a, b)

, il fait comme ça.  J'avoue que je n'ai pas recherché si je pouvais changer.


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#135 Le 04/08/2013, à 08:34

GR 34

Re : [python]Monsieur Cinéscript

lukophron a écrit :
6steme1 a écrit :

Une chose que je remarque c'est le classement non ordonné du premier groupe, films comportant un nombre dans le titre...

C'est ordonné, mais c'est ordonné sans tenir compte des espaces (tu peux le vérifier dans le reste de la liste aussi).
Ce n'est pas le classement "naturel" pour moi non plus, apparemment c'est une norme.

Quand je demande à M. Python de classer un truc en français

return locale.strcoll(a, b)

, il fait comme ça.  J'avoue que je n'ai pas recherché si je pouvais changer.

Oui, j'avais bien vu le coup des espaces dans les nombres écrits en français qui est généralement un pb pour tout langage de programmation.
Ce n'est pas rédhibitoire vu le peu de films...

Dernière modification par 6steme1 (Le 04/08/2013, à 08:35)


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#136 Le 10/08/2013, à 08:11

lukophron

Re : [python]Monsieur Cinéscript

pendant ce temps, à Vera-Crus, j'implante des trucs inutiles mais rigolo
enfin...
moi j'trouve ça rigolo

le compte-à-rebours des 2001 films est lancé !

(je vire, si je suis le seul que ça amuse)


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#137 Le 10/08/2013, à 08:14

GR 34

Re : [python]Monsieur Cinéscript

lukophron a écrit :

pendant ce temps, à Vera-Crus, j'implante des trucs inutiles mais rigolo
enfin...
moi j'trouve ça rigolo

le compte-à-rebours des 2001 films est lancé !

(je vire, si je suis le seul que ça amuse)

?


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#138 Le 22/08/2013, à 12:49

lukophron

Re : [python]Monsieur Cinéscript

pour la postérité

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
### mise à jour de la liste des films du jeu Monsieur Cinéma sur forum.ubuntu-fr ###
#
# misarebours.py
#
# python2.7
#    dep : mechanize
#
# un fichier joint pour accéder au compte
#   deux fichiers créés pour sauvegarder la liste et le log
#
# licence internationale DTFWYW
# licence fr SCVSVPTPUB

import urllib2
import locale
import re
import time
import mechanize
import htmlentitydefs
import unicodedata
import comptarebours

version = 'v0.9.8 nimportnaouak'

locale.setlocale(locale.LC_ALL,'fr_FR.utf8')

def cleanString(s):
    if isinstance(s,str):
        s = unicode(s,"utf-8","replace")
    s=unicodedata.normalize('NFD',s)
    return s

def compare (a, b):
    # pour épurer et trier les titres
    a = a.lstrip()
    b = b.lstrip()
    if a[0] == '(':
        a = a.split(')')[1]
    if b[0] == '(':
        b = b.split(')')[1]
    a = a.lstrip()
    b = b.lstrip()
    return locale.strcoll(a, b)


def unescape(text):
    #    code html -> unicode   fonction trouvée sur le net
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            # named entity
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

def trialpha(liste) :
    # tri par ordre alphabétique la liste brute
    dicfilm = {}
    trukipasspa = {ord(u'\u0152'):u'oe' , ord(u'\u0153'):u'oe'}
    
    for i in liste:
        i = i.lstrip().rstrip()
        if i[0] == '(':
            a = i.split(')')[1]
            a = cleanString(a.lstrip())
        else : 
            a = cleanString(i)
        a = a.translate(trukipasspa)
        dicfilm[i]= a[0].lower()

    liste_alpha = []
    for i in range(28) :
            liste_alpha.append([])
            
    alfab = 'abcdefghijklmnopqrstuvwxyz'
    for i in dicfilm.items():
        if i[1] in alfab :
            liste_alpha[alfab.index(i[1])+1].append(i[0])
        elif i[1].isdigit() :
            liste_alpha[0].append(i[0])
        else :
            liste_alpha[27].append(i[0])

    #liste_globale = [j for i in liste_alpha for j in i]
    for i in range(28):
        liste_alpha[i].sort(cmp=compare)
        
    liste_imprim = u'[b]N°[/b]\n'+(u' | ').join(liste_alpha[0])+u'\n\n'
    nbr = 1
    for i in 'abcdefghijklmnopqrstuvwxyz?'.upper():
        liste_imprim += u'[b]'+i+u'[/b]\n'+(u' | ').join(liste_alpha[nbr])+u'\n\n'
        nbr+=1

    return cleanString(liste_imprim).encode('utf8')

def recupost(urltopic) :
    # récupère le deuxième message du topique et en extrait
    #   la liste actuelle, les codes imdb déjà utilisés, l'id du post, la dernière page parcourue
    print 'récupération du message-liste'
    print urltopic
    for i in range(5):
        try:
            pageraw = urllib2.urlopen(urltopic)
            print 'première page récupérée '+urltopic
            break
        except:
            print 'récupération échouée, nouvelle tentative dans 3 secondes'
            if i==4:
                print 'échec de la récupération - sortie'
                raise
            time.sleep(3)
    
    page = pageraw.read().decode('utf-8')
    pageraw.close()
    
    imdrex = re.compile('<code>\[imdb\sliste\](.*?)\[/imdb\]</code>')
    listrex = re.compile('<code>\[liste\sfilms\](.*?)\[/liste\]</code>')
    numprex = re.compile('la page #([\d]+)')
    postex = re.compile('<div id="p(\d+)"\sclass=')
    
    if imdrex.search(page):
        liste_imdb = imdrex.search(page).group(1)
        liste_imdb = liste_imdb.split()
    else :
        print 'liste imdb absente ?'
        liste_imdb = []
    
    if listrex.search(page) :
        liste_titres = unescape(listrex.search(page).group(1))
    else :
        print 'liste de titres absente ?'
        liste_titres = ''
    
    if postex.search(page) :
        postid = postex.findall(page)[1]
    else :
        print 'ID du post introuvable'
        raise

    if numprex.search(page) :
        numpage = numprex.search(page).group(1)
    else :
        print 'n° de dernière page mise à jour non trouvée, placé à 1 par défaut'
        numpage = 1
            
    print '\n message récupéré pour mise à jour\n'

    return liste_imdb, liste_titres, postid, numpage


def recuptitre(numpage, url) :
    # retourne  les balises des films trouvés à rajouter
    #           la dernière page farfouillée
    #           le nouvel url, si le topic est fermé
    #           le dernier film trouvé
    listall = []
    dernier = ['','',0]
    newurl = url
    numpage = int(numpage)
    suivex = re.compile('>Suiv.</a>')
    titrex = re.compile('[\[imdb\]|\[*\]](tt\d+)[\[/imdb\]|\[/*\]]', re.I)
    closerex = re.compile('<p class="postlink conr">Discussion fermée</p>')
    postmsrex = re.compile('<div class="postmsg">(.*?)</div>', re.DOTALL)
    linkrex = re.compile('<a href="(.*?)">')
    
    while numpage < 300 : # limite non-nécessaire si le code n'est pas beugué, mieux vaut prévenir...
        print 'recherche des codes imdb sur la page '+str(numpage)
        print url+'&p='+str(numpage)
        for i in range(5):
            try :
                pageraw = urllib2.urlopen(url+'&p='+str(numpage))
                break
            except :    
                if i==4:
                    print 'échec de connection avec le forum - sortie'
                    raise
                print 'page du forum inaccessible - nouvelle tentative dans 3 secondes'
                time.sleep(3)
                
        page = pageraw.read()
        pageraw.close()
        
        titre = titrex.findall(page)
        if titre :
            dernier[1] = titre[-1]
            dernier[2] = numpage
        print titre
        listall = listall + titre
        
        if suivex.search(page) :
            numpage +=1
        else:
            
            if closerex.search(page) :
                print '\ntopic fermé, recherche du nouveau topic'
                posts = postmsrex.findall(page)
                lastpost = posts[-1]
                print lastpost
                if linkrex.search(lastpost) :
                    numpage = 1
                    newurl = linkrex.search(lastpost).group(1)
                    print 'Nouveau topic détecté: '+newurl
                else :
                    print "Topique détecté fermé, mais pas de nouveau url ?"                
            break

    listall = list(set(listall))

    return numpage, listall, newurl, dernier


def titrimdb(films, dernier):
    # cherche les titres des films en fonction de leur numéro imdb
    print '\nrecherche des titres des nouveaux films sur imdb'
    print films
    nouvfilm = []

    title = re.compile('<title>(.*?)</title>')
    tab = re.compile('<td>(.*?)</td>')
    
    cookieJar = mechanize.CookieJar()
    handlers = [ 
        urllib2.HTTPHandler(),
        urllib2.HTTPCookieProcessor(cookieJar),
        ]   
    opener = urllib2.build_opener(*handlers)
    headers = {
   'Accept': 'text/html,application/xhtml+xml,'\
             'application/xml;q=0.9,*/*;q=0.8',
   'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
   'Accept-Language': 'en-US,en;q=0.8,fr;q=0.6',
   'Connection': 'keep-alive',
   'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 '\
                 '(KHTML, like Gecko) Ubuntu/12.04 '\
                 'Chromium/18.0.1025.151 Chrome/18.0.1025.151 '\
                 'Safari/535.19',
    }
    
    for i in films:
        page = ''
        url='http://www.imdb.com/title/'+i+'/releaseinfo'
        for j in range(5):
            print 'Balise : '+i
            try :   
                request = urllib2.Request(
                    url=url, 
                    headers=headers
                )
                connection = opener.open(request)
                if connection.geturl()==url:
                    page = connection.read()
                else :
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                break
            except urllib2.HTTPError, exc:
                if exc.code == 404:
                    print "404 Page non trouvée !"
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                    break
                else:           
                    print "La requête HTTP a échoué avec le code %d (%s)" % (exc.code, exc.msg)
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                    break
            except urllib2.URLError, exc:
                print "Echec. Cause:", exc.reason
                print 'page imdb inaccessible, nouvelle tentative dans 3 secondes'
                if j==4:
                    print 'échec de connection avec IMDb - sortie'
                    raise
                time.sleep(3)
        
        original = ''
        if page == '':
            continue
        
        titre = title.search(page).group(1)
        titre = unescape(titre)
        titre = titre.split(' - ')[0]
        
        tableau = tab.findall(page)

        for k in tableau :
            if 'original title' in k.lower() :
                original = unescape(tableau[tableau.index(k)+1])
                date = titre.split().pop()
                break
        if original != '' :
            titre = original+' '+date
        if titre[:2].lower() in ["l'","d'"] :
            titre = titre[:2]+' '+titre[2:]
        titest = titre.split()
        if titest[0].lower() in ['le','la','les',"l'",'the','a']: # vérifier le formatage voulu (mon, ma, mes ?)
            titest[0]='('+titest[0]+')'
            titre = ' '.join(titest)
        
        titre = cleanString(titre)
        nouvfilm.append(titre)
        if i == dernier[1] :
            dernier[0] = titre
        time.sleep(1)

    print 'recherche imdb terminée' 
    if nouvfilm == []:
        print 'pas de nouveau film, donc'
    else :
        print '\ntitres ajoutés :'
        print ' ; '.join(nouvfilm)
    return nouvfilm, dernier


def message(liste_imdb, liste_titres, nbr_titres, numpage, dernier):
    # façonne le nouveau message
    texte = """[b]LISTE DES FILMS DÉJÀ CITÉS :[/b]

~+~+~+~+~+~+~+~+~
Dernière mise à jour de la Liste : """
    texte += time.strftime('le %d/%m/%Y, à %H:%M:%S (GMT)',time.gmtime())
    texte += """, jusqu'à la page #"""
    texte += str(numpage)
    texte += """
Dernier film ajouté : """
    texte += dernier[0].encode('utf8')
    texte += """  [i]balise """
    texte += dernier[1] + ", page "
    texte += str(dernier[2])+"""[/i]
Nombre de films trouvés : """
    texte += str(nbr_titres)
    texte += """
~+~+~+~+~+~+~+~+~
     
"""
    texte += trialpha(liste_titres)
    texte += """

Liste brute
[code][liste films]"""
    texte += (' | ').join(liste_titres).encode('utf8')
    texte += """[/liste][/code]

Liste des balises utilisées[code][imdb liste]"""
    texte += liste_imdb.encode('utf8')
    texte += """[/imdb][/code]"""
    
    return texte

def modifpost(msg, login, password, postid):
    # envoie le message des titres à jour
    print 'modification du post en cours...'
    cookieJar = mechanize.CookieJar()

    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
    
    fp = mechanize.urlopen("http://forum.ubuntu-fr.org/login.php")
    forms = mechanize.ParseResponse(fp)
    fp.close()
    
    #print forms[1]
    form = forms[1]
    form["req_username"] = login
    form["req_password"] = password
    fp = mechanize.urlopen(form.click())
    fp.close()

    print 'opening http://forum.ubuntu-fr.org/edit.php?id='+str(postid)
    fp = mechanize.urlopen('http://forum.ubuntu-fr.org/edit.php?id='+str(postid))
    forms = mechanize.ParseResponse(fp)
    fp.close()
    #print forms[0]
    form = forms[1]
    form["req_message"] = msg
    fp = mechanize.urlopen(form.click())
    fp.close()
    
    print 'modification faite'


def modiflocal(msg):
    # pour un test en local et la sauvegarde
    try :
        with open('liste.bak', 'w') as f :
            f.write(msg)
        print 'ok, liste.bak mis à jour'
    except :
        print 'sauvegarde locale impossible'
  
def recupostID(urltopic) :
    postex = re.compile('<div id="p(\d+)"\sclass=')
    for i in range(5):
        try:
            pageraw = urllib2.urlopen(urltopic)
            print 'page récupérée '+urltopic
            break
        except:
            print 'récupération échouée, nouvelle tentative dans 3 secondes'
            if i==4:
                print 'échec de la récupération - sortie'
                raise
            time.sleep(3)
    
    page = pageraw.read().decode('utf-8')
    pageraw.close()
    
    if postex.search(page) :
        postid = postex.findall(page)[1]
    else :
        print 'ID du post introuvable'
        raise
    return postid

def main():
    # on y arrive...
    print "mise à jour en cours... "+version
    with open('tchernia','r') as f :
        url_qfc = f.readline().rstrip('\n\r')
        url_liste = f.readline().rstrip('\n\r')
        login = f.readline().rstrip('\n\r')
        password = f.readline().rstrip('\n\r')
    
    try :
        tid = url_qfc.split('=')[1].rstrip('&p')
    except :
        tid = 'ERROR : url invalide ?'
    try :
        urltopic = url_qfc.split('&')[0]
    except :
        urltopic = url_qfc

    print 'id du topic en cours = '+tid
    print 'id de la liste = '+url_liste.split('=')[1].rstrip('&p')
        
    old_imdb, old_titres, postid, numpage = recupost(url_liste)

    print 'page en cours = '+str(numpage)
    
    old_titres = old_titres.split(' | ')
    
    new_numpage, new_imdb, newurl, dernier = recuptitre(numpage, url_qfc)
    print 'page atteinte : '+str(new_numpage)+'\n'

    s1 = set(new_imdb)
    s2 = set(old_imdb)    
    new_imdb = list(s1-s2)
    
    if new_imdb != []:
        new_film, dernier = titrimdb(new_imdb, dernier)
    else :
        print 'pas de nouveau film, sortie sans modification de la liste'
        quit()

    new_imdb = old_imdb + new_imdb # ! modification après avoir récupéré les titres
    
    new_film = new_film + old_titres
    new_film = list(set(new_film))
    new_film.sort(cmp=compare)
    new_imdb.sort()
    
    if new_imdb :
        imdb_str = ' '.join(new_imdb)
    else :
        imdb_str = ''
    
    #nbr_titres = len(new_film)
    
    #modif comptarebour
    nb = len(new_film)
    search = str(nb)+" film"
    ima = urllib2.unquote(comptarebours.getpic(search))
    nbr_titres="[url="+ima+"][img="+str(nb)+"]"\
        +comptarebours.sendimage('http://postimage.org/index.php?um=web', ima)\
        +"[/img][/url]"
    msg = message(imdb_str, new_film, nbr_titres, new_numpage, dernier)  ### original ! keep it !
    print '\nnouvelle liste créée \n'
    print 'modification de la liste locale'
    #fin de modif \compaterebours
    
    modiflocal(msg)
   
    if urltopic != newurl :
        try :
            tid = newurl.split('=')[1].rstrip('&p')
        except :
            print 'ERROR : nouvel url invalide ? '+newurl
        print '\nTopic changé, recherche du nouveau post sur le topic '+tid
        postid = recupost('http://forum.ubuntu-fr.org/viewtopic.php?id='+tid)[2]
        print 'modification du fichier local avec la nouvelle url'
        print newurl
        with open('tchernia', 'r') as file :
            tchernia = file.readlines()
    
        tchernia[0] = 'http://forum.ubuntu-fr.org/viewtopic.php?id='+tid+'\n'
        with open('tchernia', 'w') as file :
            file.writelines(tchernia)
    
    postidjeu = recupostID(urltopic)
       
    for i in range (5) :
        try :
            modifpost(msg, login, password, postid)
            modifpost(msg, login, password, postidjeu)
            break
        except :
            if i == 4:
                print 'abandon'
                raise
            print 'échec du post, nouvelle tentative dans 2 secondes'
            time.sleep(1)
    
    print '\n ... mise à jour terminée '


main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
### bonus décompte vers le 2001ème film ###
#
# comptarebour.py
#
# python2.7
#    dep : mechanize
#
# 

import mechanize
import re


def sendimage(url_server, url_image):
    # envoie l'image sur un serveur
	
    imrex = re.compile('\[img\](.*?)\[/img\]', re.I)
	
    print '\nenvoi de l\'image pour modif\' en ligne'
    cookieJar = mechanize.CookieJar()
	
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
	
    fp = mechanize.urlopen(url_server)
    forms = mechanize.ParseResponse(fp)
    fp.close()
	    
    form = forms[0]
    print 'envoi du formulaire'
    form["url_list"] = url_image
    form["optsize"] = ['3']
    form["adult"] = ["no"]
    #print form
    fp = mechanize.urlopen(form.click())
    response = fp.read()
    fp.close()
    url_thumb = imrex.search(response).group(1)
    print 'image réduite accessible : ' +url_thumb
    return url_thumb
    
def getfilm(number):
	# va chercher un titre!
    
    picrex = re.compile('fn_ft_tt_1" ><img src="(.*?)" /></a>', re.I)
    titrex = re.compile('<td class="result_text"> <a href="(.*?)ref_=fn_ft_tt_1" >(.*?)</a>')
    nopex = re.compile('nopicture')
    
    cookieJar = mechanize.CookieJar()
    
	#~ opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
	#~ opener.addheaders = [("User-agent","Mozilla/5.0")]
	#~ mechanize.install_opener(opener)
	#~ fp = mechanize.urlopen("http://www.imdb.com/find?q="+str(number)+"&s=tt&ttype=ft")
	#~ response = fp.read()
	#~ fp.close()
    browser = mechanize.Browser(factory=mechanize.RobustFactory())
    browser.open("http://www.imdb.com/find?q="+str(number)+"&s=tt&ttype=ft")
    
    response = browser.response().get_data()
    #print response
    url_image = picrex.search(response).group(1)
    titre = titrex.search(response).group(2)
    print url_image
    if nopex.search(url_image) :
        return (0, titre)
    else :
        return (1, url_image)


def getpic(titre):
    # va chercher une pic !
    print "\nrecherche d'une image..."
    imrex = re.compile('imgres\?imgurl=(.*?)&amp', re.I)
    jeveurex = re.compile('gif|png|nopicture')
    cookieJar = mechanize.CookieJar()
    
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
    
    cherche = "https://www.google.com/search?hl=en&site=imghp&tbm=isch&oq="+'+'.join(titre.split())+"+&q="+'%20'.join(titre.split())+"&sout=1"
    #print cherche
    fp = mechanize.urlopen(cherche)
    response = fp.read()
    fp.close()
    #print response
    listall = imrex.findall(response)
    for i in range(len(listall)):
        if jeveurex.search(listall[i]):
            continue
        else :
            print listall[i]
            return listall[i]
            break
	
def main(number) :
	imdb = getfilm(number)
	if imdb[0] :
		return imdb[1]
	else :
		return sendimage('http://postimage.org/index.php?um=web', getpic(imdb[1]))
#!bin/sh
export TZ=UTC
LOCATION=$(dirname "$0")
cd "$LOCATION"
script -c 'python misarebours.py' logfile
python envoyajour.py
exit 0

ou accessoirement pour moi, si je paume ma clé...


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#139 Le 22/08/2013, à 13:44

GR 34

Re : [python]Monsieur Cinéscript

lukophron a écrit :

pour la postérité

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
### mise à jour de la liste des films du jeu Monsieur Cinéma sur forum.ubuntu-fr ###
#
# misarebours.py
#
# python2.7
#    dep : mechanize
#
# un fichier joint pour accéder au compte
#   deux fichiers créés pour sauvegarder la liste et le log
#
# licence internationale DTFWYW
# licence fr SCVSVPTPUB

import urllib2
import locale
import re
import time
import mechanize
import htmlentitydefs
import unicodedata
import comptarebours

version = 'v0.9.8 nimportnaouak'

locale.setlocale(locale.LC_ALL,'fr_FR.utf8')

def cleanString(s):
    if isinstance(s,str):
        s = unicode(s,"utf-8","replace")
    s=unicodedata.normalize('NFD',s)
    return s

def compare (a, b):
    # pour épurer et trier les titres
    a = a.lstrip()
    b = b.lstrip()
    if a[0] == '(':
        a = a.split(')')[1]
    if b[0] == '(':
        b = b.split(')')[1]
    a = a.lstrip()
    b = b.lstrip()
    return locale.strcoll(a, b)


def unescape(text):
    #    code html -> unicode   fonction trouvée sur le net
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            # named entity
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

def trialpha(liste) :
    # tri par ordre alphabétique la liste brute
    dicfilm = {}
    trukipasspa = {ord(u'\u0152'):u'oe' , ord(u'\u0153'):u'oe'}
    
    for i in liste:
        i = i.lstrip().rstrip()
        if i[0] == '(':
            a = i.split(')')[1]
            a = cleanString(a.lstrip())
        else : 
            a = cleanString(i)
        a = a.translate(trukipasspa)
        dicfilm[i]= a[0].lower()

    liste_alpha = []
    for i in range(28) :
            liste_alpha.append([])
            
    alfab = 'abcdefghijklmnopqrstuvwxyz'
    for i in dicfilm.items():
        if i[1] in alfab :
            liste_alpha[alfab.index(i[1])+1].append(i[0])
        elif i[1].isdigit() :
            liste_alpha[0].append(i[0])
        else :
            liste_alpha[27].append(i[0])

    #liste_globale = [j for i in liste_alpha for j in i]
    for i in range(28):
        liste_alpha[i].sort(cmp=compare)
        
    liste_imprim = u'[b]N°[/b]\n'+(u' | ').join(liste_alpha[0])+u'\n\n'
    nbr = 1
    for i in 'abcdefghijklmnopqrstuvwxyz?'.upper():
        liste_imprim += u'[b]'+i+u'[/b]\n'+(u' | ').join(liste_alpha[nbr])+u'\n\n'
        nbr+=1

    return cleanString(liste_imprim).encode('utf8')

def recupost(urltopic) :
    # récupère le deuxième message du topique et en extrait
    #   la liste actuelle, les codes imdb déjà utilisés, l'id du post, la dernière page parcourue
    print 'récupération du message-liste'
    print urltopic
    for i in range(5):
        try:
            pageraw = urllib2.urlopen(urltopic)
            print 'première page récupérée '+urltopic
            break
        except:
            print 'récupération échouée, nouvelle tentative dans 3 secondes'
            if i==4:
                print 'échec de la récupération - sortie'
                raise
            time.sleep(3)
    
    page = pageraw.read().decode('utf-8')
    pageraw.close()
    
    imdrex = re.compile('<code>\[imdb\sliste\](.*?)\[/imdb\]</code>')
    listrex = re.compile('<code>\[liste\sfilms\](.*?)\[/liste\]</code>')
    numprex = re.compile('la page #([\d]+)')
    postex = re.compile('<div id="p(\d+)"\sclass=')
    
    if imdrex.search(page):
        liste_imdb = imdrex.search(page).group(1)
        liste_imdb = liste_imdb.split()
    else :
        print 'liste imdb absente ?'
        liste_imdb = []
    
    if listrex.search(page) :
        liste_titres = unescape(listrex.search(page).group(1))
    else :
        print 'liste de titres absente ?'
        liste_titres = ''
    
    if postex.search(page) :
        postid = postex.findall(page)[1]
    else :
        print 'ID du post introuvable'
        raise

    if numprex.search(page) :
        numpage = numprex.search(page).group(1)
    else :
        print 'n° de dernière page mise à jour non trouvée, placé à 1 par défaut'
        numpage = 1
            
    print '\n message récupéré pour mise à jour\n'

    return liste_imdb, liste_titres, postid, numpage


def recuptitre(numpage, url) :
    # retourne  les balises des films trouvés à rajouter
    #           la dernière page farfouillée
    #           le nouvel url, si le topic est fermé
    #           le dernier film trouvé
    listall = []
    dernier = ['','',0]
    newurl = url
    numpage = int(numpage)
    suivex = re.compile('>Suiv.</a>')
    titrex = re.compile('[\[imdb\]|\[*\]](tt\d+)[\[/imdb\]|\[/*\]]', re.I)
    closerex = re.compile('<p class="postlink conr">Discussion fermée</p>')
    postmsrex = re.compile('<div class="postmsg">(.*?)</div>', re.DOTALL)
    linkrex = re.compile('<a href="(.*?)">')
    
    while numpage < 300 : # limite non-nécessaire si le code n'est pas beugué, mieux vaut prévenir...
        print 'recherche des codes imdb sur la page '+str(numpage)
        print url+'&p='+str(numpage)
        for i in range(5):
            try :
                pageraw = urllib2.urlopen(url+'&p='+str(numpage))
                break
            except :    
                if i==4:
                    print 'échec de connection avec le forum - sortie'
                    raise
                print 'page du forum inaccessible - nouvelle tentative dans 3 secondes'
                time.sleep(3)
                
        page = pageraw.read()
        pageraw.close()
        
        titre = titrex.findall(page)
        if titre :
            dernier[1] = titre[-1]
            dernier[2] = numpage
        print titre
        listall = listall + titre
        
        if suivex.search(page) :
            numpage +=1
        else:
            
            if closerex.search(page) :
                print '\ntopic fermé, recherche du nouveau topic'
                posts = postmsrex.findall(page)
                lastpost = posts[-1]
                print lastpost
                if linkrex.search(lastpost) :
                    numpage = 1
                    newurl = linkrex.search(lastpost).group(1)
                    print 'Nouveau topic détecté: '+newurl
                else :
                    print "Topique détecté fermé, mais pas de nouveau url ?"                
            break

    listall = list(set(listall))

    return numpage, listall, newurl, dernier


def titrimdb(films, dernier):
    # cherche les titres des films en fonction de leur numéro imdb
    print '\nrecherche des titres des nouveaux films sur imdb'
    print films
    nouvfilm = []

    title = re.compile('<title>(.*?)</title>')
    tab = re.compile('<td>(.*?)</td>')
    
    cookieJar = mechanize.CookieJar()
    handlers = [ 
        urllib2.HTTPHandler(),
        urllib2.HTTPCookieProcessor(cookieJar),
        ]   
    opener = urllib2.build_opener(*handlers)
    headers = {
   'Accept': 'text/html,application/xhtml+xml,'\
             'application/xml;q=0.9,*/*;q=0.8',
   'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
   'Accept-Language': 'en-US,en;q=0.8,fr;q=0.6',
   'Connection': 'keep-alive',
   'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 '\
                 '(KHTML, like Gecko) Ubuntu/12.04 '\
                 'Chromium/18.0.1025.151 Chrome/18.0.1025.151 '\
                 'Safari/535.19',
    }
    
    for i in films:
        page = ''
        url='http://www.imdb.com/title/'+i+'/releaseinfo'
        for j in range(5):
            print 'Balise : '+i
            try :   
                request = urllib2.Request(
                    url=url, 
                    headers=headers
                )
                connection = opener.open(request)
                if connection.geturl()==url:
                    page = connection.read()
                else :
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                break
            except urllib2.HTTPError, exc:
                if exc.code == 404:
                    print "404 Page non trouvée !"
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                    break
                else:           
                    print "La requête HTTP a échoué avec le code %d (%s)" % (exc.code, exc.msg)
                    print "\nATTENTION : vérifier la balise "+i+'\n'
                    break
            except urllib2.URLError, exc:
                print "Echec. Cause:", exc.reason
                print 'page imdb inaccessible, nouvelle tentative dans 3 secondes'
                if j==4:
                    print 'échec de connection avec IMDb - sortie'
                    raise
                time.sleep(3)
        
        original = ''
        if page == '':
            continue
        
        titre = title.search(page).group(1)
        titre = unescape(titre)
        titre = titre.split(' - ')[0]
        
        tableau = tab.findall(page)

        for k in tableau :
            if 'original title' in k.lower() :
                original = unescape(tableau[tableau.index(k)+1])
                date = titre.split().pop()
                break
        if original != '' :
            titre = original+' '+date
        if titre[:2].lower() in ["l'","d'"] :
            titre = titre[:2]+' '+titre[2:]
        titest = titre.split()
        if titest[0].lower() in ['le','la','les',"l'",'the','a']: # vérifier le formatage voulu (mon, ma, mes ?)
            titest[0]='('+titest[0]+')'
            titre = ' '.join(titest)
        
        titre = cleanString(titre)
        nouvfilm.append(titre)
        if i == dernier[1] :
            dernier[0] = titre
        time.sleep(1)

    print 'recherche imdb terminée' 
    if nouvfilm == []:
        print 'pas de nouveau film, donc'
    else :
        print '\ntitres ajoutés :'
        print ' ; '.join(nouvfilm)
    return nouvfilm, dernier


def message(liste_imdb, liste_titres, nbr_titres, numpage, dernier):
    # façonne le nouveau message
    texte = """[b]LISTE DES FILMS DÉJÀ CITÉS :[/b]

~+~+~+~+~+~+~+~+~
Dernière mise à jour de la Liste : """
    texte += time.strftime('le %d/%m/%Y, à %H:%M:%S (GMT)',time.gmtime())
    texte += """, jusqu'à la page #"""
    texte += str(numpage)
    texte += """
Dernier film ajouté : """
    texte += dernier[0].encode('utf8')
    texte += """  [i]balise """
    texte += dernier[1] + ", page "
    texte += str(dernier[2])+"""[/i]
Nombre de films trouvés : """
    texte += str(nbr_titres)
    texte += """
~+~+~+~+~+~+~+~+~
     
"""
    texte += trialpha(liste_titres)
    texte += """

Liste brute
[code][liste films]"""
    texte += (' | ').join(liste_titres).encode('utf8')
    texte += """[/liste][/code]

Liste des balises utilisées[code][imdb liste]"""
    texte += liste_imdb.encode('utf8')
    texte += """[/imdb][/code]"""
    
    return texte

def modifpost(msg, login, password, postid):
    # envoie le message des titres à jour
    print 'modification du post en cours...'
    cookieJar = mechanize.CookieJar()

    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
    
    fp = mechanize.urlopen("http://forum.ubuntu-fr.org/login.php")
    forms = mechanize.ParseResponse(fp)
    fp.close()
    
    #print forms[1]
    form = forms[1]
    form["req_username"] = login
    form["req_password"] = password
    fp = mechanize.urlopen(form.click())
    fp.close()

    print 'opening http://forum.ubuntu-fr.org/edit.php?id='+str(postid)
    fp = mechanize.urlopen('http://forum.ubuntu-fr.org/edit.php?id='+str(postid))
    forms = mechanize.ParseResponse(fp)
    fp.close()
    #print forms[0]
    form = forms[1]
    form["req_message"] = msg
    fp = mechanize.urlopen(form.click())
    fp.close()
    
    print 'modification faite'


def modiflocal(msg):
    # pour un test en local et la sauvegarde
    try :
        with open('liste.bak', 'w') as f :
            f.write(msg)
        print 'ok, liste.bak mis à jour'
    except :
        print 'sauvegarde locale impossible'
  
def recupostID(urltopic) :
    postex = re.compile('<div id="p(\d+)"\sclass=')
    for i in range(5):
        try:
            pageraw = urllib2.urlopen(urltopic)
            print 'page récupérée '+urltopic
            break
        except:
            print 'récupération échouée, nouvelle tentative dans 3 secondes'
            if i==4:
                print 'échec de la récupération - sortie'
                raise
            time.sleep(3)
    
    page = pageraw.read().decode('utf-8')
    pageraw.close()
    
    if postex.search(page) :
        postid = postex.findall(page)[1]
    else :
        print 'ID du post introuvable'
        raise
    return postid

def main():
    # on y arrive...
    print "mise à jour en cours... "+version
    with open('tchernia','r') as f :
        url_qfc = f.readline().rstrip('\n\r')
        url_liste = f.readline().rstrip('\n\r')
        login = f.readline().rstrip('\n\r')
        password = f.readline().rstrip('\n\r')
    
    try :
        tid = url_qfc.split('=')[1].rstrip('&p')
    except :
        tid = 'ERROR : url invalide ?'
    try :
        urltopic = url_qfc.split('&')[0]
    except :
        urltopic = url_qfc

    print 'id du topic en cours = '+tid
    print 'id de la liste = '+url_liste.split('=')[1].rstrip('&p')
        
    old_imdb, old_titres, postid, numpage = recupost(url_liste)

    print 'page en cours = '+str(numpage)
    
    old_titres = old_titres.split(' | ')
    
    new_numpage, new_imdb, newurl, dernier = recuptitre(numpage, url_qfc)
    print 'page atteinte : '+str(new_numpage)+'\n'

    s1 = set(new_imdb)
    s2 = set(old_imdb)    
    new_imdb = list(s1-s2)
    
    if new_imdb != []:
        new_film, dernier = titrimdb(new_imdb, dernier)
    else :
        print 'pas de nouveau film, sortie sans modification de la liste'
        quit()

    new_imdb = old_imdb + new_imdb # ! modification après avoir récupéré les titres
    
    new_film = new_film + old_titres
    new_film = list(set(new_film))
    new_film.sort(cmp=compare)
    new_imdb.sort()
    
    if new_imdb :
        imdb_str = ' '.join(new_imdb)
    else :
        imdb_str = ''
    
    #nbr_titres = len(new_film)
    
    #modif comptarebour
    nb = len(new_film)
    search = str(nb)+" film"
    ima = urllib2.unquote(comptarebours.getpic(search))
    nbr_titres="[url="+ima+"][img="+str(nb)+"]"\
        +comptarebours.sendimage('http://postimage.org/index.php?um=web', ima)\
        +"[/img][/url]"
    msg = message(imdb_str, new_film, nbr_titres, new_numpage, dernier)  ### original ! keep it !
    print '\nnouvelle liste créée \n'
    print 'modification de la liste locale'
    #fin de modif \compaterebours
    
    modiflocal(msg)
   
    if urltopic != newurl :
        try :
            tid = newurl.split('=')[1].rstrip('&p')
        except :
            print 'ERROR : nouvel url invalide ? '+newurl
        print '\nTopic changé, recherche du nouveau post sur le topic '+tid
        postid = recupost('http://forum.ubuntu-fr.org/viewtopic.php?id='+tid)[2]
        print 'modification du fichier local avec la nouvelle url'
        print newurl
        with open('tchernia', 'r') as file :
            tchernia = file.readlines()
    
        tchernia[0] = 'http://forum.ubuntu-fr.org/viewtopic.php?id='+tid+'\n'
        with open('tchernia', 'w') as file :
            file.writelines(tchernia)
    
    postidjeu = recupostID(urltopic)
       
    for i in range (5) :
        try :
            modifpost(msg, login, password, postid)
            modifpost(msg, login, password, postidjeu)
            break
        except :
            if i == 4:
                print 'abandon'
                raise
            print 'échec du post, nouvelle tentative dans 2 secondes'
            time.sleep(1)
    
    print '\n ... mise à jour terminée '


main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
### bonus décompte vers le 2001ème film ###
#
# comptarebour.py
#
# python2.7
#    dep : mechanize
#
# 

import mechanize
import re


def sendimage(url_server, url_image):
    # envoie l'image sur un serveur
	
    imrex = re.compile('\[img\](.*?)\[/img\]', re.I)
	
    print '\nenvoi de l\'image pour modif\' en ligne'
    cookieJar = mechanize.CookieJar()
	
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
	
    fp = mechanize.urlopen(url_server)
    forms = mechanize.ParseResponse(fp)
    fp.close()
	    
    form = forms[0]
    print 'envoi du formulaire'
    form["url_list"] = url_image
    form["optsize"] = ['3']
    form["adult"] = ["no"]
    #print form
    fp = mechanize.urlopen(form.click())
    response = fp.read()
    fp.close()
    url_thumb = imrex.search(response).group(1)
    print 'image réduite accessible : ' +url_thumb
    return url_thumb
    
def getfilm(number):
	# va chercher un titre!
    
    picrex = re.compile('fn_ft_tt_1" ><img src="(.*?)" /></a>', re.I)
    titrex = re.compile('<td class="result_text"> <a href="(.*?)ref_=fn_ft_tt_1" >(.*?)</a>')
    nopex = re.compile('nopicture')
    
    cookieJar = mechanize.CookieJar()
    
	#~ opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
	#~ opener.addheaders = [("User-agent","Mozilla/5.0")]
	#~ mechanize.install_opener(opener)
	#~ fp = mechanize.urlopen("http://www.imdb.com/find?q="+str(number)+"&s=tt&ttype=ft")
	#~ response = fp.read()
	#~ fp.close()
    browser = mechanize.Browser(factory=mechanize.RobustFactory())
    browser.open("http://www.imdb.com/find?q="+str(number)+"&s=tt&ttype=ft")
    
    response = browser.response().get_data()
    #print response
    url_image = picrex.search(response).group(1)
    titre = titrex.search(response).group(2)
    print url_image
    if nopex.search(url_image) :
        return (0, titre)
    else :
        return (1, url_image)


def getpic(titre):
    # va chercher une pic !
    print "\nrecherche d'une image..."
    imrex = re.compile('imgres\?imgurl=(.*?)&amp', re.I)
    jeveurex = re.compile('gif|png|nopicture')
    cookieJar = mechanize.CookieJar()
    
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0")]
    mechanize.install_opener(opener)
    
    cherche = "https://www.google.com/search?hl=en&site=imghp&tbm=isch&oq="+'+'.join(titre.split())+"+&q="+'%20'.join(titre.split())+"&sout=1"
    #print cherche
    fp = mechanize.urlopen(cherche)
    response = fp.read()
    fp.close()
    #print response
    listall = imrex.findall(response)
    for i in range(len(listall)):
        if jeveurex.search(listall[i]):
            continue
        else :
            print listall[i]
            return listall[i]
            break
	
def main(number) :
	imdb = getfilm(number)
	if imdb[0] :
		return imdb[1]
	else :
		return sendimage('http://postimage.org/index.php?um=web', getpic(imdb[1]))
#!bin/sh
export TZ=UTC
LOCATION=$(dirname "$0")
cd "$LOCATION"
script -c 'python misarebours.py' logfile
python envoyajour.py
exit 0

ou accessoirement pour moi, si je paume ma clé...

74298566.gif


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#140 Le 02/09/2013, à 17:00

spinoziste

Re : [python]Monsieur Cinéscript

J'ai une idée pour la prochaine vidéo de Môssieu Cinéma .


Nous mourrons tous .

Hors ligne

#141 Le 05/09/2013, à 01:16

lukophron

Re : [python]Monsieur Cinéscript

je crois que tu peux MP à SOD, c'est son dada


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#142 Le 05/09/2013, à 09:50

spinoziste

Re : [python]Monsieur Cinéscript

Ok ça marche merci wink .


Nous mourrons tous .

Hors ligne

#143 Le 20/10/2013, à 06:29

lukophron

Re : [python]Monsieur Cinéscript

NB : déconnexion prévue vers fin décembre, faudra prévoir un relai
m'en fous de la mise en page, j'ai fait un test ce matin, pour le foune. Faites vos commentaires !


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#144 Le 20/10/2013, à 08:09

GR 34

Re : [python]Monsieur Cinéscript

Salut,

J'aimais mieux avant.


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#145 Le 10/02/2014, à 21:20

lukophron

Re : [python]Monsieur Cinéscript

bon, en fait j'ai déjà envoyé sur ce topic une version fonctionnelle, pas de changement. J'ai fourni la boite mail de Monsieur Cinéma aussi, pour faciliter la chose.


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#146 Le 08/03/2014, à 02:20

xabilon

Re : [python]Monsieur Cinéscript

Salut

À part les login et mdp de Mr Cinéma, que faut-il mettre dans le fichier tchernia ?
La première ligne est l'id du topic, mais la 2e ? L'id du message contenant la liste ?


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#147 Le 08/03/2014, à 02:36

xabilon

Re : [python]Monsieur Cinéscript

Bon ok, c'ets bon j'ai trouvé.
J'ai réussi à le lancer, tout s'est déroulé sans erreur (j'ai mis mon login et mon mdp, puisque j'ai les droits de modif sur tous les messages).
Mais la liste n'a pas bougé sad

J'ai bien eu pourtant, à la fin :

modifications de la liste topic du jeu
modification du post en cours...
opening http://forum.ubuntu-fr.org/edit.php?id=13804791
modification faite

 ... mise à jour terminée

Rem : j'ai pris le script de la page#1. C'est uniquement la modification du post qui ne se fait pas, tout le reste est bon, la liste mise à jour se retrouve bien dans liste.bak.

Dernière modification par xabilon (Le 08/03/2014, à 13:45)


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#148 Le 08/03/2014, à 14:07

xabilon

Re : [python]Monsieur Cinéscript

J'ai posté la liste manuellement...


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#149 Le 08/03/2014, à 14:48

GR 34

Re : [python]Monsieur Cinéscript

J'avais le script avant que lukophron ne le rende automatique mais faut que je le retrouve.


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#150 Le 08/03/2014, à 15:05

xabilon

Re : [python]Monsieur Cinéscript

Envois-moi plutôt le mdp de Mr Cinéma pour lancer un nouveau topic (je n'y ai pas accès, les mots de passe sont cryptés dans la base de données).
Si je le crée avec mon compte xabilon, il n'y aura que moi qui pourra mettre la liste à jour.


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne