[PYTHON] Lien Hatena Bookmark et Yammer

Il existe un outil de partage d'informations appelé Yammer.

Si vous souhaitez partager l'article que vous lisez dans Pocket au travail, j'ai utilisé la recette IFTTT pour le taguer sur Pocket et le publier sur Yammer.

ifttt

C'était pratique, mais IFTTT a cessé de supporter Yammer, et j'ai toujours voulu le lier à Hatena Bookmark, alors j'ai profité de cette opportunité pour créer le mien.

Préparation préalable

Préparer le serveur

L'API Yammer a un SDK Python, je vais donc l'utiliser. Cette fois, j'ai décidé de lancer Python avec le plan de 500 yens de Sakura Internet. Le but est d'ajouter --user dans setup.py.

 $  wget https://github.com/yammer/yam-python/archive/master.zip
 $  cd yam-python-master/
 $  python setup.py install --user

Enregistrez l'application avec Yammer

Après avoir confirmé le fonctionnement de la bibliothèque, enregistrez le nom de l'application et l'URL de redirection faisant référence à ce site, et obtenez le client_id et le client_secret. Cette fois, nous utiliserons Sakura Internet, alors définissez redirect_uri sur http: // xxxx.sakura.ne.jp / yammer / redirect.cgi.

https://developer.yammer.com/docs/app-registration

Enregistrement WebHook avec Hatena Bookmark

Ensuite, enregistrez le webhook avec Hatena Bookmark. Reportez-vous à la procédure ci-dessous et définissez http: // xxxx.sakura.ne.jp / yammer / post.cgi dans" URL pour recevoir les notifications d'événements ".

http://developer.hatena.ne.jp/ja/documents/bookmark/apis/webhook

codage

Tout d'abord, créez un fichier séparé et limitez l'accès avec htaccess afin de ne pas divulguer accidentellement le client_id et le client_secret.

yammer.conf


[Yammer]
client_id = xxxx
client_secret = xxxx
redirect_uri = http://example.com/redirect.cgi
access_token = xxxx

.htaccess


AddHandler cgi-script cgi
<Files ~ ".conf">
deny from all
</Files>

Obtenez access_token

Puisqu'il s'agit d'OAuth, vous écrirez un processus comme celui-ci du côté Application. (L'image est tirée de la [Bible OAuth] de Mashape (http://oauthbible.com/))

La redirection de Yammer est retournée au format redirect.cgi? Code = xxxx, donc si l'URL n'a pas code =, le traitement de Get Request Token et Direct User To Service Provider dans la figure sera effectué. S'il y a code = , il est écrit pour exécuter le processus de ʻExchange Request Token for Access Token.

redirect.cgi


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

import yampy
import cgi
import ConfigParser

config = ConfigParser.RawConfigParser()
config.read('yammer.conf')

client_id = config.get('Yammer','client_id')
client_secret = config.get('Yammer','client_secret')
redirect_uri = config.get('Yammer','redirect_uri')

authenticator = yampy.Authenticator(client_id=client_id, client_secret=client_secret)

form = cgi.FieldStorage()
if form.has_key("code"):
    #Code obtenu de Yammer(Request Token)Depuis l'accès_Générer un jeton
    code = form["code"].value
    access_token = authenticator.fetch_access_token(code)
    print "Content-Type: text/html"
    print ""
    print access_token
else:
    #Générer une URL d'authentification et rediriger vers l'écran d'authentification Yammer
    auth_url = authenticator.authorization_url(redirect_uri=redirect_uri)
    print "Location: "+auth_url
    print ""

Si vous placez ce fichier sur le serveur et accédez à http: // xxxx.sakura.ne.jp / yammer / redirect.cgi, vous serez redirigé vers l'écran de connexion Yammer. Si vous vous connectez à Yammer sur cet écran et appuyez sur le bouton d'approbation, access_token sera affiché.

Si vous copiez ce access_token et l'écrivez dans yammer.conf, vous pourrez publier sur yammer via post.cgi ci-dessous. (Cette partie n'était pas automatisée ...)

post.cgi


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

import cgi
import yampy
import ConfigParser

config = ConfigParser.RawConfigParser()
config.read('yammer.conf')
access_token = config.get('Yammer','access_token')

form = cgi.FieldStorage()
if form.has_key("comment"):
    comment = form["comment"].value
    #Si le commentaire contient une chaîne Yammer, publiez-le sur Yammer
    if comment.find('yammer') > -1:
        url = form["url"].value
        title = form["title"].value
        body = title + ' ' + url
        yammer = yampy.Yammer(access_token=access_token)
        yammer.messages.create(body)

print "Content-Type: text/html"
print ""
print body

Désormais, si vous marquez le signet Hatena avec yammer, il sera publié sur Yammer.

Recommended Posts

Lien Hatena Bookmark et Yammer
Migrez le stock Qiita et LGTM vers «Hatena Bookmark»
GCP: fonctions de lien et Pub / Sub