SlideShare une entreprise Scribd logo
1  sur  27
Ismael Toé
Développeur Web

  ismael.toe @gmail.com

  www.tomsyweb.com

  http://gplus.to/IsmaelToe

  @tomsyweb
HashMyTweets
     http://hashmytweets.appspot.com


Une application propulsée par
     Google App Engine
Qu’est-ce que App Engine ?
Qu’est-ce que App Engine ?
• Plateforme qui permet d’héberger vos
applications Web
• Utilisez votre propre nom de domaine
ou un nom gratuit sur appspot.com
• 500 Mo d’espace de stockage
• Langages utilisés: Java, Python et Go
Environnement de
développement
Environnement de développement
• Python
• SDK App Engine
   o Serveur Web
   o Outil de transfert de l’application
   vers App Engine
   o APIs Google
Pourquoi App Engine ?
Pourquoi App Engine ?
• Scalabilité
• Un ensemble riche d’APIs
• Déploiement facile
• Gratuit
HashMyTweets
HashMyTweets
• Une application Web qui permet de
recevoir des tweets par mail
• Connexion avec un compte Google
• Choix de vos requêtes de recherche
préférées
Pourquoi HashMyTweets ?
• Garder une trace des tweets qui nous
intéressent le plus
• Pas besoin d’être inscrit sur Twitter
Comment ?
• API Users: Intégration avec Google Accounts
• API Stockage de données (Datastore): Modélisation de
données et langage de requête
• API Mail: Envoi d’e-mails aux utilisateurs
• Tâches planifiées (Cron): Exécuter des tâches
automatiquement à des heures définies ou à intervalles
réguliers
• Tweepy: Librairie Python pour accéder à l’API Twitter
Développement de
l’application
Fichier de configuration
Tâches planifiées
# hashme.py – Importation des librairies
import os

from google.appengine.dist import use_library
use_library('django', '1.2')

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import
run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext.webapp import template
# hashme.py – Déclaration des modèles


class Members(db.Model):
   account = db.UserProperty()
   hashtags = db.StringProperty()
# hashme.py – Pages du site

class MainPage(webapp.RequestHandler):
   def get(self):
    # Vérifier si l’utilisateur est connecté
    # Si oui
      # Sélectionner ses préférences dans la BD
      # Afficher le formulaire
    # Sinon
      # Afficher la page d’accueil

class Submit(webapp.RequestHandler):
   def post(self):
    # Enregistrement des préférences de l’utilisateur dans la BD
# hashme.py – Gestionnaire de requêtes

application = webapp.WSGIApplication([
  ('/', MainPage),
  ('/submit', Submit)], debug=True)
API Users
from google.appengine.api import users
user = users.get_current_user()
if user:
  # Connecté
else:
  # Pas connecté
API Datastore
from google.appengine.ext import db

# Sélectionner des données

member = db.GqlQuery("SELECT * FROM Members WHERE account = :1", user)

member.get().account

member.get().hashtags

# Insérer des données

member.hashtags = "@tomsyweb,#gcotedivoire,app engine"

member.put()
API Mail
from google.appengine.api import mail
mail.send_mail(sender, to, subject, body)
Tweepy
import tweepy
tweets = tweepy.api.search("@tomsyweb")
for tweet in tweets:
  tweet.text
Merci !

Contenu connexe

Similaire à HashMyTweets

GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Cédric Leblond
 
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Script
Construisez vos propres dashboards SEO automatisés grâce à Google Apps ScriptConstruisez vos propres dashboards SEO automatisés grâce à Google Apps Script
Construisez vos propres dashboards SEO automatisés grâce à Google Apps ScriptSEO CAMP
 
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...Alpha Keïta
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPressBenjamin LUPU
 
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...RESONEO
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutantKorteby Farouk
 
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...SEO CAMP
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPressChi Nacim
 
Jquery
JqueryJquery
Jquerykrymo
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720Romain Linsolas
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for DebuggingmeeticTech
 
Comment tester une Progressive Web App
Comment tester une Progressive Web AppComment tester une Progressive Web App
Comment tester une Progressive Web AppTesting Digital
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
Bien comprendre le nouveau modèle Apps de SharePoint 2013
Bien comprendre le nouveau modèle Apps de SharePoint 2013Bien comprendre le nouveau modèle Apps de SharePoint 2013
Bien comprendre le nouveau modèle Apps de SharePoint 2013Louis-Philippe Lavoie
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
SharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationSharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationMicrosoft Technet France
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 

Similaire à HashMyTweets (20)

GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !
 
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Script
Construisez vos propres dashboards SEO automatisés grâce à Google Apps ScriptConstruisez vos propres dashboards SEO automatisés grâce à Google Apps Script
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Script
 
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...
Construisez vos propres dashboards SEO automatisés grâce à Google Apps Scr...
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPress
 
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
SEO campus 2019 | Les clés d’un site web (beaucoup) plus rapide selon des fac...
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
 
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
Les clés d’un site (beaucoup) plus rapide selon des facteurs qui restent trop...
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPress
 
Jquery
JqueryJquery
Jquery
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Comment tester une Progressive Web App
Comment tester une Progressive Web AppComment tester une Progressive Web App
Comment tester une Progressive Web App
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Bien comprendre le nouveau modèle Apps de SharePoint 2013
Bien comprendre le nouveau modèle Apps de SharePoint 2013Bien comprendre le nouveau modèle Apps de SharePoint 2013
Bien comprendre le nouveau modèle Apps de SharePoint 2013
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
SharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationSharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle génération
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 

HashMyTweets

  • 1. Ismael Toé Développeur Web ismael.toe @gmail.com www.tomsyweb.com http://gplus.to/IsmaelToe @tomsyweb
  • 2. HashMyTweets http://hashmytweets.appspot.com Une application propulsée par Google App Engine
  • 4. Qu’est-ce que App Engine ? • Plateforme qui permet d’héberger vos applications Web • Utilisez votre propre nom de domaine ou un nom gratuit sur appspot.com • 500 Mo d’espace de stockage • Langages utilisés: Java, Python et Go
  • 6. Environnement de développement • Python • SDK App Engine o Serveur Web o Outil de transfert de l’application vers App Engine o APIs Google
  • 8. Pourquoi App Engine ? • Scalabilité • Un ensemble riche d’APIs • Déploiement facile • Gratuit
  • 10. HashMyTweets • Une application Web qui permet de recevoir des tweets par mail • Connexion avec un compte Google • Choix de vos requêtes de recherche préférées
  • 11.
  • 12.
  • 13.
  • 14. Pourquoi HashMyTweets ? • Garder une trace des tweets qui nous intéressent le plus • Pas besoin d’être inscrit sur Twitter
  • 15. Comment ? • API Users: Intégration avec Google Accounts • API Stockage de données (Datastore): Modélisation de données et langage de requête • API Mail: Envoi d’e-mails aux utilisateurs • Tâches planifiées (Cron): Exécuter des tâches automatiquement à des heures définies ou à intervalles réguliers • Tweepy: Librairie Python pour accéder à l’API Twitter
  • 19. # hashme.py – Importation des librairies import os from google.appengine.dist import use_library use_library('django', '1.2') from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext import db from google.appengine.ext.webapp import template
  • 20. # hashme.py – Déclaration des modèles class Members(db.Model): account = db.UserProperty() hashtags = db.StringProperty()
  • 21. # hashme.py – Pages du site class MainPage(webapp.RequestHandler): def get(self): # Vérifier si l’utilisateur est connecté # Si oui # Sélectionner ses préférences dans la BD # Afficher le formulaire # Sinon # Afficher la page d’accueil class Submit(webapp.RequestHandler): def post(self): # Enregistrement des préférences de l’utilisateur dans la BD
  • 22. # hashme.py – Gestionnaire de requêtes application = webapp.WSGIApplication([ ('/', MainPage), ('/submit', Submit)], debug=True)
  • 23. API Users from google.appengine.api import users user = users.get_current_user() if user: # Connecté else: # Pas connecté
  • 24. API Datastore from google.appengine.ext import db # Sélectionner des données member = db.GqlQuery("SELECT * FROM Members WHERE account = :1", user) member.get().account member.get().hashtags # Insérer des données member.hashtags = "@tomsyweb,#gcotedivoire,app engine" member.put()
  • 25. API Mail from google.appengine.api import mail mail.send_mail(sender, to, subject, body)
  • 26. Tweepy import tweepy tweets = tweepy.api.search("@tomsyweb") for tweet in tweets: tweet.text