Recent Changes - Search:

Oktatás

* Programozás 1
  + feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

Teaching

* Programming 1 (BI)
  ◇ exercises
  ◇ quick link

* Scripting Languages
  ◇ exercises
  ◇ quick link

teaching assets


Félévek

* aktuális (2023/24/2)
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py /

20121005c

Troll Bot

Készítsünk egy olyan bot-ot, mely a Reddit-en trollkodik, vagyis beszól a többi felhasználónak.

Ehhez a feladathoz több dolgot is ismernünk kell. Nézzük sorba őket.

Reddit

A Reddit egy népszerű linkgyűjtő oldal. Regisztráció után mi is tudunk híreket beküldeni illetve kommentelhetjük a mások által beküldött híreket. A Redditről az Index is áradozott néhány napja.

A Reddit rendelkezik egy API-val, aminek a segítségével egy programból is kommunikálni lehet az oldallal. Például le tudjuk vele kérdezni a legutóbbi 10 hírt. Pythonhoz készült egy könyvtár, mely a Reddit API-ján keresztül kommunikál az oldallal. A Python csomag neve PRAW ("Python Reddit API Wrapper") s itt érhető el: https://github.com/praw-dev/praw.

Twitter Bot

A beszólogatós bot eredetileg Twitterhez készült, részletes blogposzt itt. A bot a következőképpen működik (vázlat):

  • Erről az oldalról letölti a gyakran elgépelt szavak listáját (hibás szó → helyes szó). Ezt természetesen csak egyszer kell letölteni.
  • A Twitteren random módon kiválaszt egy posztot, s megnézi, hogy van-e benne hibás szó.
  • Ha van benne hibás szó, akkor generál egy választ, s az eredeti posztra válaszként elküldi.
  • Ezután várakozik X ideig.

A poén az, hogy mindenki azt hiszi, hogy egy igazi ember válaszolt a posztjára. Érdemes megnézni, hogy ez milyen reakciókat vált ki egyesekből :)

Példa:

Eredeti poszt:

I forgot whether my next tweet was supposed to be funny or agressive, so here, read this one instead.

A bot válasza:

"agressive"? Pretty embarrassing really, @farari7u. It's actually "aggressive".

A bot többféle vicces választ is tud adni, ezek mindegyike egy-egy template alapján készül. Például az előző valahogy így nézne ki:

template1 = '"{bad}"? Pretty embarrassing really, {user}. It\'s actually "{good}".'
# tényleges sztring előállítása:
return template1.format(bad=..., good=..., user=...)

A Twitterhez is van egy Python könyvtár, a bot ezt használva tud üzeneteket lekérni, ill. üzeneteket posztolni.

Feladat

A feladatunk az lenne, hogy készítsük el a Twitter Bot Reddit-es változatát. A botnak hozzunk létre egy reddit-es felhasználói nevet, ne a saját nevünk alól futtassuk :) Először ismerjük ki a PRAW könyvtárat: hogyan tudjuk a főoldal sztorijait lekérni, hogyan tudjuk egy sztori kommentjeit lekérni, hogyan tudjuk egy komment tartalmát lekérni, hogyan tudunk egy kommentre válaszolni. Ezután írjuk meg a botot ami előállítja és elküldi a választ.

A reddit-en minden objektumnak (poszt, komment, stb.) van egy egyedi azonosítója. Ha egy kommentre válaszoltunk, akkor az eredeti komment ID-jét le kell tárolni vhol, hogy ugyanarra ne válaszoljunk többször.

Ne vigyük túlzásba a dolgot, ne haragítsuk magunkra a reddit közösséget :)

Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2012 October 06, 00:22