Soup.io rbot Plugin/ ruby API
Mit Twitter kann ich sehr leicht über meinen rbot publizieren, damit ich in der selben Frequenz auch soup.io verwende, was für spezielleren Content besser geeignet ist, muss es schon ebenfalls über den rbot funktionieren. Nach langem suchen stellte ich überrascht fest das das große Web 2.0 Projekt Soup.io keine API zum leichten publizieren(außerhalb des Browsers) besitzt. Da muss also erstmal eine art API gestrickt werden. Mit Hilfe von Mechanize baute ich die Browseranfragen nach und fasste es in einer kleinen Ruby Klasse zusammen. Es wird nicht jeder Content-Typ unterstützt aber für meine Zwecke reicht dies völlig aus. Dann noch schnell eine rbot-Plugin Klasse zum bedienen der eigenen “API” und fertig war die erste Version meines soupio-Plugins.
Hier eine Liste der möglichen Befehle(Argumente in eckigen Klammern sind Optional):
1 2 3 4 5 6 7 8 9 10 11 | soup identify <username> <password> => Jeder Benutzer im Channel kann dem Bot seine Soup.io-Zugangsdaten im Query mitteilen. soup login => Neuer Login falls die gespeicherte SessionId verloren oder ungültig wird. (Normalerweise nicht notwendig.) soup link <url> [<title>] soup image <url> [<description>] soup text <text> soup quote <source>: <quote> soup video <youtube-url> [<description>] |
Die SoupIoClass-Klasse kann übrigens auch außerhalb des Plugins, in jeder Ruby-Anwendung verwendet werden. Hier eine kleine Referenz, diesmal die optionalen Argumente in spitzen Klammern:
1 2 3 4 5 6 | soup = SoupIoClass.new('[Username]', '[Password]'<, '[Domain]', '[Session-ID]'>) soup.new_link '[URL]'<, '[Title]', '[Description]'> soup.new_image '[URL]'<, '[Description]'> soup.new_text '[Text]'<, '[Title]'> soup.new_quote '[Quote]'<, '[Source]'> soup.new_video '[Youtube-URL]'<, '[Description]'> |
Die Domain und SessionId kann mit soup.sessid und soup.domain abgefragt werden. Die SessionId ist praktisch unbegrenzt lange haltbar, weshalb diese beiden Daten zwischengespeichert werden können um bei häufiger Nutzung der Klasse sich nicht ständig neu Anmelden zu müssen.
Die Version 0.1 ist bereits veröffentlicht, ich muss mich noch um die Validierung und Fehlerabfragen kümmern aber sonst sollte das Plugin schon funktionieren. Fehler bitte bei mir Melden.
Update: Version 0.2 veröffentlicht. (nur kleine Änderungen)
Update: Version 0.3 veröffentlicht. (Bugfix für eigene Domains)
Update: Version 0.4 veröffentlicht. (Änderungen an soup.io)
Tagged: bot, Coding, irc, plugin, RBot, Ruby, soup.io, web2.0
Hallo,
ich habe Dein soup.rb plugin nun installiert (und mechanize-0.9.3 installiert), aber ich bekomme immer nur ein “Failed login. Try again to identify.” nach meinem “soup identify ” (und ja, die credentials stimmen).
Hast Du eine Idee, woran das liegen könnte?
Die haben wohl irgendwas an ihrer Seite geändert, ich arbeite dran.
@Peacemen
So erstmal vielen Dank für den Hinweis! Soup.io hatte zwischenzeitlich was an ihrer Seite geändert, ich habe mein Plugin jetzt angepasst, sodass es wieder funktionieren sollte. Schreib falls du noch irgendwelche Probleme hast.
=> http://rbot.noway.ratry.ru/files/soupio-0.4.rb
Hmm, unverändert noch das gleiche, auch mit der 0.4… gibt es irgendwo erweiterten debug output?
funktioniert bei mir ohne Probleme, versuch mal ein “
soup login“, das löscht die vorige sessionid und domain Einstellung(identify setzt nur das username und passwort in der rbot-registry).Du kannst auch versuchen die
~/.rbot/registry/soupioplugin.dbDatei zu löschen.Debug Output gibt es zwar beim rbot(
./launch_here.rb -d) allerdings gibt mein Plugin zurzeit leider keine nützlichen Debug infos(mal abgesehen von irgendwelchen Exceptions die in der Konsole auftauchen sollten) aus, werd ich später mal einbauen.