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.

#2426 Le 12/06/2010, à 00:12

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

@lagierl: communication directement en socket ou plus haut niveau? je tente d'utiliser la lib pyro pour mon jeu, mais j'ai juste fais quelques test, c'est pas mal, mais j'arrive pas à finir mon intégration...

Hors ligne

#2427 Le 12/06/2010, à 00:54

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bon, ce soir il est possible que je me remette à ma bibliothèque. smile


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2428 Le 12/06/2010, à 00:58

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Tu as résolu tes problèmes de gestion d'erreur en cas d'échec de malloc ?

Hors ligne

#2429 Le 12/06/2010, à 02:09

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bn


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#2430 Le 12/06/2010, à 02:17

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

Tu as résolu tes problèmes de gestion d'erreur en cas d'échec de malloc ?

Justement, je vais m’y mettre sérieusement.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2431 Le 12/06/2010, à 02:23

Кຼزດ

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bon allez, dodo…

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""A small script that downloads all or a range of mangas from onemanga.com
    Licenced under the WTPL Licence"""

import os
import re
import socket
import sys
import urllib

# Config
MAXTRIES = 5
INDEX = "http://onemanga.com/directory"
OM = "http://www.onemanga.com/"
DL_DIR = "./Scans/"
WORK_DIR = os.getenv('PWD')

def helper():
    """Gives help about the use of this script"""
    print """Usage:
        - python """+sys.argv[0]+""" [STARTNUM]
        - python """+sys.argv[0]+""" [STARTNUM] [ENDNUM]
        - python """+sys.argv[0]+""" [-h|--help]
[STARTNUM] stands for a number in the manga list, so does [ENDNUM]
        """
    exit(0)


def get_mangas_all():
    """Gets all mangas form onemanga"""
    page = urllib.urlopen(INDEX).read()
    exp = '(?<= class="ch-subject"><a href=")[^"]*(?!.*class=.*)'
#    exp = '(?<= class="ch-subject"><a href=")[^"]*(?=")' OLD one, fails with licenced mangas
    all_mangas = re.findall(exp, page)
    index = 0
    for i in all_mangas:
        all_mangas[index] = i.replace("/", "")
        index += 1
    ret = []
    if (len(sys.argv) == 2):
        ret = all_mangas[startnum:]
    elif (len(sys.argv) == 3):
        ret = all_mangas[startnum:endnum]
    else:
        ret = all_mangas
    return ret

def down(url):
    """Returns the webpage of the url given in parameter."""
    tries = 0
    downloaded = False
    while tries < MAXTRIES and downloaded == False:
        try:
            ret = urllib.urlopen(url)
            downloaded = True
        except (IOError, socket.error):
            tries += 1
            print "\033[31;1mFailed download, retrying…\033[0m"
    if tries == MAXTRIES:
        print "\033[31;1mMaximum tries number reached exiting…\033[0m"
        exit(1)
    return ret

def retrieve(url, nom):
    """Retrieves a file"""
    tries = 0
    downloaded = False
    while tries < MAXTRIES and downloaded == False:
        try:
            urllib.urlretrieve(url, nom)
            downloaded = True
        except (socket.error, IOError):
            tries += 1
            if tries == MAXTRIES:
                print "\033[31;1mMaximum tries number reached exiting…\033[0m"
                exit(1)
            else:
                print "\033[31;1mFailed download, retrying…\033[0m"

def make_pretty(name):
    """Returns the chain given, in order to have a normal name"""
    return str(name).capitalize().replace("/", "").replace("_", " ")

class Onemanga:
    """Manga class.
        Contains several attributes related to the manga.
        Contains also methods to download its chapters"""

    def __init__(self, manga):
        self.manga = manga
        # Added in order to prevent this script from crashing when errors
        self.works = True
        self.manga_p = make_pretty(self.manga)
        self.download_dir = DL_DIR
        self.current_dir = os.getcwd()
        self.chap_list = self.get_chaps()
        self.chap_list.reverse()
        self.num_size = len(self.chap_list[-1])
        try:
            if (os.path.isdir(self.download_dir) == False):
                os.mkdir(self.download_dir)
            if (os.path.isdir(self.download_dir + self.manga_p) == False):
                os.mkdir(self.download_dir + self.manga_p)
        except OSError:
            print "Unable to create the download directory"
            exit(1)

    def chap_dir_name(self, number):
        """Returns the name of the directory of the chapter.
            It is useful in order to organize the mass of chapters.
            example:
            500 chaps in the manga, directory named "001" instead of "1" """
        number = number.split('.')[0]
        return (self.num_size - len(str(int(number))))*"0"+ number

    def chap_multi(self, numbers):
        """Downloads the chapters given as arguments
            They should match [0-9]+-[0-9]+ with first > second"""

        numbers = str(numbers)
        if re.match("[0-9]+-[0-9]+", numbers) != None:
            try:
                startnumber = int(str(numbers).split('-')[0])
            except ValueError:
                startnumber = float(numbers.split('-')[0])
            try:
                endnumber = int(str(numbers).split('-')[1])
            except ValueError:
                endnumber = float(numbers.split('-')[1])
            # Inverts the numbers if they are not in the right order
            if (startnumber > endnumber):
                startnumber, endnumber = endnumber, startnumber
            # Main download loop
            begin = self.chap_list.index(str(startnumber))
            end = self.chap_list.index(str(endnumber))
            for i in self.chap_list[begin:end+1]:
                self.chap_down(i)
                if not self.works:
                    return
        elif re.match("[0-9]+", numbers) != None:
            self.chap_down(numbers)
        else:
            exit(1)

    def chap_down(self, number):
        """Downloads one chapter (given in argument)
            Checks if the chapter exists or not
            and creates the appropriate directory"""

        # Checks if the chapter is in the chapter's list
        try:
            self.chap_list.index(str(number))
        except ValueError:
            print "\033[31mChapter " + str(number) + " not in list\033[30m"
            return
        number = str(number)
        # Download/parsing of a page that contains the url of the first page
        dummy = down(OM + self.manga + "/" + number +"/").read()
        exp = '(?<=href="/)((?i)'+ self.manga +'/'+number+'/[^/]*)'
        try:
            real_url = re.search(exp, dummy).group(0)
        except:
            self.works = False
            return
        # Download of the first page of the chapter
        firstpage = down(OM + real_url).read()
        # Gets the root url of the chapter image
        exp = '(?<=<img class="manga-page\" src=\").*(?=\")'
        img_url = re.search(exp, firstpage).group(0).split('"')[0]
        img_urllist = img_url.split("/")
        del img_url
        # Gets all the images name
        exp = '(?<=option value=\")[a-zA-z]*[0-9]+[^"]*'
        img_list = re.findall(exp, firstpage)
        del exp
        # Cleans the page list… (dirty)
        while img_list.count('') != 0:
            img_list.remove('')
        # Again
        while img_list.count('credits') != 0:
            img_list.remove('credits')
        img_root = ""
        for part in img_urllist[0:-1]:
            img_root += part + "/"
        del img_urllist
        manga_glob_dir = self.download_dir + self.manga_p + "/"
        manga_dir = manga_glob_dir + self.chap_dir_name(number)
        if (os.path.isdir(manga_dir) == False):
            os.makedirs(manga_dir + "/")
        os.chdir(manga_dir)
        del manga_glob_dir
        del manga_dir
        for image in img_list:
            num = str(img_list.index(image)+1)
            print '\rImage '+ num +'/'+ str(len(img_list)),
            sys.stdout.flush()
            real_url = img_root + image + ".jpg"
            retrieve(real_url, image + ".jpg")
        print "\n\033[32mChapter "+ number +" downloaded.\033[0m"
        os.chdir(WORK_DIR)

    def get_chaps(self):
        """Downloads the chapter list
            Returns a string list that contains them"""
        try:
            pagechaps = down(OM + "/" + self.manga).read()
            if (pagechaps.find("Page not found") != -1):
                raise IOError("404 not found")
            return re.findall('(?<=/(?i)'+self.manga+'/)(.*)(?=\/")', pagechaps)
        except IOError:
            print "\033[31;1mManga not found\033[0m"
            self.works = False
            return

    def down_all(self):
        """Download all the chapters of the manga"""
        if not self.works:
            print("\033[31;1mFAIL, next manga\033[0m")
            return
        print "Start of the download of  "+self.manga
        self.chap_multi(self.chap_list[0]+"-"+self.chap_list[-1])

if (len(sys.argv) == 2):
    startnum = sys.argv[1]
elif (len(sys.argv) == 3):
    startnum = sys.argv[1]
    endnum = sys.argv[2]
for i in get_mangas_all():
    print i
    koin = Onemanga(i)
    koin.down_all()

dou

Hors ligne

#2432 Le 12/06/2010, à 03:11

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Monstrueuse connerie détectée.
Monstrueuse connerie réparée.
Cause probable de SIGSEGV sur échec de malloc probablement corrigée par la même occasion.
Futures investigations demain.
Dodo.

Bonne nuit à tous. smile


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2433 Le 12/06/2010, à 03:18

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Peace Sells... But Who's Buying ?

Sur ce, score += 10;

Hors ligne

#2435 Le 12/06/2010, à 03:31

samυncle

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Points


Hello world

Hors ligne

#2436 Le 12/06/2010, à 03:39

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bon demain on se fait les 100 pages tongue.

Allez, BN World !

Hors ligne

#2437 Le 12/06/2010, à 04:19

Кຼزດ

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

.


dou

Hors ligne

#2438 Le 12/06/2010, à 10:26

Compteur du TdCCT

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Scores totaux, depuis le début :

1) 485    samuncle
2) 400    nesthib
3) 395    Pylade
4) 353+5  grim7reaper ** bonus +5 pour avoir répondu à ce post : ./viewtopic.php?pid=3486252#p3486252 **
5) 316    mathieuI
6) 214    cm-t
7) 177    helly
8) 156    gnuuat
9) 121    ǤƦƯƝƬ
10) 105    tshirtman
11) 80    petifrancais
12) 50    \\Ouranos//
13) 37    ilagas
14) 33    pierguiard
15) 30    keny
16) 25    GentooUser
17) 19    Le Rouge
17) 19    Kanor
19) 18    Ph3nix_
20) 14    kouskous
21) 12    stratoboy
21) 12    sailing
23) 11    Lagierl
24) 10    CROWD
24) 10    Toineo
26) 7    Vista
26) 7    xapantu
28) 6    Mornagest
28) 6    Zeibux
30) 5    timsy
31) 4    danychou56
31) 4    Neros
31) 4    Biaise
34) 3    Р'tite G☢gole :mad:
35) 1    ceric
35) 1    pfriedK
35) 1    geenux

chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,c0c0c0&chl=00h%20-%2000h59|02h%20-%2002h59|03h%20-%2003h59|04h%20-%2004h59|07h%20-%2007h59|09h%20-%2009h59|23h%20-%2023h59&chd=t:3,3,5,1,1,2,13&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,20&chxr=1,0,20&chf=b0,lg,0,803000,0,ffc080,1|bg,lg,90,e8e8e8,0,c0c0c0,0.9&chxl=0:|05h|06h|07h|08h|09h|10h|11h|12h|13h|14h|15h|16h|17h|18h|19h|20h|21h|22h|23h|00h|01h|02h|03h|04h&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,13,3,0,3,5,1&chm=N,803000,0,-1,12&chtt=Nombre%20de%20posts%20par%20heure&chts=606060,16


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2439 Le 12/06/2010, à 10:26

Compteur du TdCCT

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Scores de la période en cours :

1) 110    Pylade
2) 90    samuncle
3) 81    mathieuI
4) 75    grim7reaper
5) 73    nesthib
6) 59    gnuuat
7) 44    helly
8) 31    cm-t
9) 30    tshirtman
10) 20    keny
11) 15    \\Ouranos//
11) 15    ǤƦƯƝƬ
13) 10    petifrancais
14) 8    pierguiard
15) 7    Vista
16) 5    sailing
16) 5    timsy
16) 5    Kanor
19) 4    Toineo
19) 4    Lagierl
21) 2    kouskous
21) 2    xapantu

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2440 Le 12/06/2010, à 13:07

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Hum, de mieux en mieux dans les conneries : j’avais oublié de remettre à zéro un compteur… roll

Bon, encore un contexte où Valgrind ne me renvoie plus aucune irrégularité. Là je vais manger, mais il est fort probable que dans les tests à venir, tout fonctionne parfaitement. smile
Enfin ! \o/


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2441 Le 12/06/2010, à 13:45

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Ha ! On a une pointure du C qui vient de débarquer sur le fofo.
E.D is here.

Dernière modification par grim7reaper (Le 12/06/2010, à 13:46)

Hors ligne

#2442 Le 12/06/2010, à 13:46

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

mais il est fort probable que dans les tests à venir, tout fonctionne parfaitement.

ça sent un peu la technique du "tombé en marche" quand même lol

Hors ligne

#2443 Le 12/06/2010, à 13:47

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Il a du développer en utilisant La Rache tongue.

Dernière modification par grim7reaper (Le 12/06/2010, à 13:48)

Hors ligne

#2444 Le 12/06/2010, à 14:11

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

Ha ! On a une pointure du C qui vient de débarquer sur le fofo.
E.D is here.

O_o"

T’es sûr que c’est Lui ?

tshirtman a écrit :

ça sent un peu la technique du "tombé en marche" quand même lol

Nan, ça sent la technique du « Plus de problèmes ? Ouf. Je vais quand-même faire d’autres tests pour m’en assurer. »
Mais c’est juste du debug, même s’il y avait un peu trop de bugs.

grim7reaper a écrit :

Il a du développer en utilisant La Rache tongue.

tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2445 Le 12/06/2010, à 14:18

\\Ouranos//

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

Ha ! On a une pointure du C qui vient de débarquer sur le fofo.
E.D is here.

Le mec de ta signature ? Il est français ? o-O


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#2446 Le 12/06/2010, à 14:19

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Oui.

Mais est-ce bien Lui ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2447 Le 12/06/2010, à 14:23

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Pylade a écrit :
grim7reaper a écrit :

Ha ! On a une pointure du C qui vient de débarquer sur le fofo.
E.D is here.

O_o"

T’es sûr que c’est Lui ?

L'avenir nous le dira, mais c'est fort possible.
Il traîne sur tous les forum où ça parle de C (SdZ à une époque, développez.com, hardware.fr, etc).
Lorsque j'ai débuté, j'ai appris énormément de choses en lisant ses posts.

Hors ligne

#2448 Le 12/06/2010, à 15:14

xapantu

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Je viens de finir de me coder un petit bot irc en python pour qui poste un message lorsque'il y a une nouvelle révision sur une branche bazaar :

#!/usr/bin/env python
# -*- coding: utf8 -*-

import irclib
import ircbot
import thread
import time
import commands

branch = "lp:ella"
chan= '#ella'
class Bot(irclib.SimpleIRCClient):
    rev = 0
    def on_pubmsg(self, serv, ev):
        print ev.arguments()[0]
    def start(self):
        """Start the IRC client."""
        self.ircobj.process_forever()
    def update_bzr(self):
        while(True):
            time.sleep(10)
            rev = commands.getstatusoutput('bzr revno ' + branch)[1]
            if self.rev != rev:
                self.rev = rev
                self.connection.privmsg(chan, "New revision at " + branch + " : " + self.rev)


if __name__ == "__main__":
    bot = Bot()
    bot.connect('irc.freenode.net', 6667, "xapantu-bot")
    bot.connection.join(chan)
    thread.start_new_thread(bot.update_bzr, ())
    bot.start()

Dernière modification par xapantu (Le 12/06/2010, à 15:20)

Hors ligne

#2449 Le 12/06/2010, à 15:56

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Miam, du python… Il faudrait que j’apprenne ce truc.


grim7reaper a écrit :
Pylade a écrit :
grim7reaper a écrit :

Ha ! On a une pointure du C qui vient de débarquer sur le fofo.
E.D is here.

O_o"

T’es sûr que c’est Lui ?

L'avenir nous le dira, mais c'est fort possible.
Il traîne sur tous les forum où ça parle de C (SdZ à une époque, développez.com, hardware.fr, etc).
Lorsque j'ai débuté, j'ai appris énormément de choses en lisant ses posts.

Bon, ben apparemment c’est bien lui. Il a même mis son avatar fétiche.
Mais bon, il a beau être un dieu du C, son site est mal foutu (même sans parler de l’esthétique). tongue

Dernière modification par Pylade (Le 12/06/2010, à 15:59)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2450 Le 12/06/2010, à 16:04

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Ouais, c'est vrai que la navigation est pas tip-top (les espèces de frames c'est pas cool pour la navigation).
Mais, tu sais le jour où je me ferais une page web elle sera plus proche de ça que de ça tongue.

Dernière modification par grim7reaper (Le 12/06/2010, à 16:06)

Hors ligne