Archive for the 'PYTHON API' Category

GNOKII

Gnokii est un outil permettant de manager un modem, vous pouvez envoyer
,recevoir des sms, passer des appels….Il est libre. En plus il peux être télécharger
gratuitement sur le site http://gnokii.org/.
Voici un petite application gnokii , qui est combiné avec du Django/JQuery.
Cette application reçoit des sms et  envoi une réponse ‘Merci d’avoir envoyer un message a Gnokii Dakar’.
Cette application est basique , mais peu être un point de départ pour programmer des applications
plus complexes [1]
https://github.com/Dakarlug/django_gnokii

SERVER HTTP

Bonsour 😉

Dans cet article , nous allons parler de  HTTP_SERVER . Il est parfois très utile de programmer votre propre serveur HTTP ,pour servir  par exemple de passerelle (proxy)  vers un service SMS  (Kannel par exemple) .

Il est évident dans ce cas , que un serveur natif ne va pas convenir  , vous devez alors savoir programmer un SERVEUR . c’est très simple 😉

————————————-

#  Building  a Basic HTTPServer
#  Alioune  Dia  | dialune.worldpress.com
from BaseHTTPServer import HTTPServer , BaseHTTPRequestHandler
import urlparse
import urllib2

# BaseServer class cree  un server HTTP
# , et attend la requete GET client
# , retourne juste  l'url saisie par le client
# guise de teste
class BaseServer (HTTPServer):
    def __init__(self , tuple , handler):
        HTTPServer.__init__(self , tuple, handler)

    @staticmethod
    def start ():
        print  "Starting  Server  "
        handler  = RequestHandler
        # IF you need to  config server_name 
        # and server port   you  can  do it 
        # but this is a hard code 
        server  = BaseServer (("localhost" , 8080), handler)
        print  "Wainting  HTTP REQUEST"
        server.serve_forever ()

# Class HTTPHander  implemente la methode
# get et post
class RequestHandler (BaseHTTPRequestHandler):
    def respond (self, code, msg):
        self.send_response (code)
        self.end_headers()

    def url_meta_data (self):
        return  urlparse.urlsplit (self.path)

    def do_GET(self):
        print  "DO  GET"
        msg  ="GET from  %s "%\
              "\n".join(self.url_meta_data())
        self.wfile.write ( msg)
        self.respond(200 , msg)

# Demarrage du serveur et attente
# de la requete client
if  __name__=="__main__":
     BaseServer.start ()
     # URL  to test from  your Browser 
     to_submit   =  "http//localhost:8080/test"
     # If you get 2 separed  thread you can do this   for test 
     # For me I need one thread
     #url = urllib2.urlopen (to_submit)

————————————-

Et c’est  fini , vous pouvez tester avec votre navigateur 😉

Dans l’article qui suit  , nous verrons comment utiliser le serveur  pour envoyer des requêtes a un web services de messagerie ORANGE et comment récupérer des  notifications depuis   le web service .

pygooglechart API

Un truc que j’aime sous Python , les  communautés développent toutes sorte D’API  😉  .

Voici _pygooglechart_  qui vous permet de générer des graphiques 3D,Line , Bar , ……

Un petit code pour illustrer  😉

———————————-

from pygooglechart import PieChart3D

# PyGoolgleChart testing
# Alioune Dia  | https://dialune.wordpress.com

GRAPH_CHAR  = PieChart3D(250 ,100)
GRAPH_DATA  = [20 ,10]
GRAPH_COLOUR= ['0F0F0F0F'  ,'FFF000']
GRAPH_LABEL= ['Alioune'  ,'Dia']
GRAPH_FILE  ="default.png"

# Class pour gerer les erreurs lors de la generation
# des graphes 

class GraphException (Exception):
    def __init__(self , msg):
        Exception.__init__(self , msg)

# class Pour generer des ghrases
# principalement destinée a etre implementé
# par les  sous classes

class BaseGraph:
    """
    Basic Graph class
    """
    def __init__(self,char = GRAPH_CHAR,
        data =GRAPH_DATA , colour =GRAPH_COLOUR ,
        label =GRAPH_LABEL ,
        file_name =GRAPH_FILE):
        self.char   = char
        self.data   = data
        self.colour = colour
        self.label  = label
        self.file_name   =file_name
    def get_default_graph(self):
        try:
            self.char.add_data(self.data)
            self.char.set_colours (self.colour)
            self.char.set_pie_labels(self.label)
            self.char.download(self.file_name)
            return self.file_name
        except GraphException("Connot download  image graph"):
            return False

    def add_data(self , data):
        self.char.add_data(data)
    def set_colour (colour):
        self.char.set_colours(colour)

    def set_label(label):
        self.char.set_pie_labels(label)

# Specifique graphe  3D
class Graph3D(BaseGraph):
        def __init__(self):
            BaseGraph.__init__(self)

if  __name__ =='__main__':
    print  " dumping  char graph "
    g = Graph3D()
    g.get_default_graph()

————————————

Et voici le resultat

Encore un 😉

———————————–

from pygooglechart import SimpleLineChart, Axis
import random

#Specifique graph 2D
class GraphLine (BaseGraph):
        def  __init__(self):
            kwargs  ={
             "char" :SimpleLineChart(440, 100, y_range=(0, 100)),
             "file_name": "graph_line.png"
            }
            BaseGraph.__init__(self ,**kwargs)
        def get_default_graph (self):
            count  = []
            label  = range(20)
            for  x in label:
                count.append (
                        random.choice(label))
            try:
                self.char.add_data (count)
                self.char.set_axis_labels(Axis.BOTTOM, label)
                self.char.set_colours(['0091C7'])
                self.char.download (self.file_name)
                return self.file_name
                return  True
            except GraphException("Connot download  image graph"):
                return False
if  __name__ =='__main__':
    print  " dumping  char graph "
    g  = GraphLine()
    g.get_default_graph()

———————————–

En ça donne ça!

Naturellement il y ‘a en pour tous les gouts et couleurs  , par rapport à votre besoin .

Un truc très tendance actuellement que nous voyons de plus en plus dans les smart phones est le QRCode . C’est un code Barre mais en mieux  car la ou le code barre ne peut stocker que que 10 à 13 caractères le QR code lui peut stocker jusqu’ a   7 089 caractères numériques .

Voici un example de QR code avec pygooglechart.

from pygooglechart import QRChart  
class QRCode(BaseGraph):
 """Sample example for drawing a QR code """
 def  __init__(self):
    kwargs  ={
    "char" :      QRChart(250, 250),
    "file_name": "graph_qr.png"
 }
 BaseGraph.__init__(self ,**kwargs)
 def get_default_graph (self):
    try:
       self.char.add_data('Hello, World!')
       self.char.set_ec('H', 0)
       self.char.download (self.file_name)
       return self.file_name
 except GraphException("Connot download  image graph"):
     pass
if  __name__ =='__main__':
      print  " dumping  char graph "
 g = QRCode()
 g.get_default_graph()