[PYTHON] Verknüpfen Sie Hatena Bookmark und Yammer

Es gibt ein Tool zum Informationsaustausch namens Yammer.

Wenn Sie den Artikel, den Sie gerade lesen, in Pocket bei der Arbeit teilen möchten, habe ich das IFTTT-Rezept verwendet, um ihn auf Pocket zu markieren und an Yammer zu senden.

ifttt

Dies war praktisch, aber IFTTT hat die Unterstützung von Yammer eingestellt, und ich wollte es immer mit Hatena Bookmark verknüpfen, also nutzte ich diese Gelegenheit, um mein eigenes zu erstellen.

Vorbereitungen

Server vorbereiten

Die Yammer-API hat ein Python-SDK, also werde ich das verwenden. Dieses Mal habe ich beschlossen, Python mit dem 500-Yen-Plan von Sakura Internet auszuführen. Der Punkt ist, --user in setup.py hinzuzufügen.

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

Registrieren Sie die App bei Yammer

Registrieren Sie nach Bestätigung des Betriebs der Bibliothek den Anwendungsnamen und die Weiterleitungs-URL, die auf diese Site verweist, und rufen Sie die client_id und client_secret ab. Dieses Mal werden wir Sakura Internet verwenden, also setzen Sie redirect_uri auf "http: // xxxx.sakura.ne.jp / yammer / redirect.cgi".

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

WebHook-Registrierung bei Hatena Bookmark

Registrieren Sie anschließend den Webhook bei Hatena Bookmark. Gehen Sie wie folgt vor und setzen Sie "http: // xxxx.sakura.ne.jp / yammer / post.cgi" in die "URL zum Empfangen von Ereignisbenachrichtigungen".

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

Codierung

Erstellen Sie zunächst eine separate Datei und beschränken Sie den Zugriff mit htaccess, damit Sie nicht versehentlich die client_id und client_secret verlieren.

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>

Zugriffstoken erhalten

Da es sich um OAuth handelt, schreiben Sie einen solchen Prozess auf der Anwendungsseite. (Das Bild stammt aus Mashapes OAuth Bible)

Die Weiterleitung von Yammer wird im Format redirect.cgi? Code = xxxx zurückgegeben. Wenn die URL also keinen code = enthält, werden die in der Abbildung gezeigten Verarbeitungen "Get Request Token" und "Direct User To Service Provider" ausgeführt. Wenn code = vorhanden ist, wird es geschrieben, um die Verarbeitung von Exchange Request Token for Access Token` auszuführen.

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 von Yammer erhalten(Request Token)Vom Zugang_Token generieren
    code = form["code"].value
    access_token = authenticator.fetch_access_token(code)
    print "Content-Type: text/html"
    print ""
    print access_token
else:
    #Generieren Sie eine Authentifizierungs-URL und leiten Sie zum Yammer-Authentifizierungsbildschirm weiter
    auth_url = authenticator.authorization_url(redirect_uri=redirect_uri)
    print "Location: "+auth_url
    print ""

Wenn Sie diese Datei auf dem Server ablegen und auf "http: // xxxx.sakura.ne.jp / yammer / redirect.cgi" zugreifen, werden Sie zum Yammer-Anmeldebildschirm weitergeleitet. Wenn Sie sich auf diesem Bildschirm bei Yammer anmelden und die Genehmigungsschaltfläche drücken, wird access_token angezeigt.

Wenn Sie dieses access_token kopieren und in die yammer.conf schreiben, können Sie über post.cgi unten auf yammer posten. (Dieser Teil wurde nicht automatisiert ...)

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
    #Wenn der Kommentar eine Yammer-Zeichenfolge enthält, senden Sie diese an 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

Wenn Sie nun das Hatena-Lesezeichen mit yammer markieren, wird es an Yammer gesendet.

Recommended Posts

Verknüpfen Sie Hatena Bookmark und Yammer
Migrieren Sie Qiita-Aktien und LGTM zu "Hatena Bookmark".
GCP: Link-Funktionen und Pub / Sub