Belirlenen kelimeler yazılıp gönderildiğinde istenen alternatifleri ile değiştiren robottur.
(yazılıp gönderilmeden önce yazılır yazılmaz da yapılabilir ancak çok yavaş oldu o zaman).
Hızlıca ilk adımları atlıyorum
(Google App Engine Launcher sahibi olmalısınız ki zatn bedava bir uygulama onu bir indirin. Bu uygulamayı öyle deploy ediyorum ben)
1. Google App Engine bir uygulama oluştur (ben tayyarrobotfiltre yaptım)
2. waveapi (python) indir
3. tayyarrobotfiltre dizini içine waveapiyi kopyala
4. App.yaml oluştur :
application: tayyarrobotfiltre
version: 1
runtime: python
api_version: 1
handlers:
- url: /_wave/.*
script: main.py
- url: /assets
static_dir: assets
- url: /argo.txt
static_files: argo.txt
upload: argo.txt
5. argo.txt diye bir dosya (ana dizine) oluşturun. İçinde "dict" oluşturun şunun gibi (içeriğini arttırın tabi. bu bir deneme) :
'salak': 's****', 'salakca':'s****', 'aptal':'a*****'
(aslında xml ile yapmak isterdim ama python çok yeni bir dil bana. siz isterseniz genişletebilirsiniz.)
6. ve python kodumuz da şöyle
main.py
# -*- coding: utf-8 -*-
#!/usr/bin/python
# Copyright (C) 2010 Hasan Tayyar BEŞİK
# tayyar.besik@gmail.com
import re
import urllib2
from waveapi import events
from waveapi import model
from waveapi import robot
from waveapi.document import Range
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
def OnBlipSubmitted(properties, context):
"""Invoked when a Blip is submitted to the wave."""
blip = context.GetBlipById(properties['blipId'])
contents = blip.GetDocument().GetText()
dic1 = {'manyak':'m***k','okuz':'o***z','aptal':'a***l','mongol':'****','yalaka':'******','salak':'******'}
response = urllib2.urlopen('http://tayyarrobotfiltre.appspot.com/argo.txt')
#dic = eval('{%s}' % open("/argo.txt","r").read())
dic = eval('{%s}' % response.read().encode('utf-8'))
newcontents = replace_all(contents,dic)
if newcontents != contents:
blip.GetDocument().SetText(newcontents)
#blip.GetDocument().SetText(dic)
#blip.GetDocument().SetText(response.read())
def OnDocumentChanged(properties, context):
"""Invoked when the document is edited."""
pass
def OnRobotAdded(properties, context):
"""Invoked when the robot has been added."""
root_wavelet = context.GetRootWavelet()
root_wavelet.CreateBlip().GetDocument().SetText("Merhaba; Ben bir robotum. Konuşmalardaki kötü ifadeleri kaldırırım. ;)")
if __name__ == '__main__':
myRobot = robot.Robot('Tayyar Robot Filtreleme',
image_url='http://tayyarrobotfiltre.appspot.com/assets/icon.png',
version='2',
profile_url='http://tayyarrobotfiltre.appspot.com/assets/profile.html')
myRobot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
myRobot.RegisterHandler(events.DOCUMENT_CHANGED, OnDocumentChanged)
myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
myRobot.Run()