Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 26, 2009 13:58:12

armagidon
От:
Зарегистрирован: 2008-12-18
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

как можно написать скриптик например через каждых 3 мин будет выводиться песня из винампа на канал просто хочу в бота добавить сам модуль винампа и бот есть просто подсказали-бы как написать таймер =)



Офлайн

#2 Янв. 26, 2009 14:13:14

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

таймер

Элементарно… google: ‘python timer’

import threading

def go():
print 'ok'

t = threading.Timer(10.0, go)
t.start()
print 'wait 10 s...'



Офлайн

#3 Янв. 26, 2009 14:14:31

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

>>> import time
>>> for i in range(10):
... print 'la-la-la'
... time.sleep(3*60)



Офлайн

#4 Янв. 26, 2009 14:21:43

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

таймер

Yurietc твой вариант я думаю не подойдет :) Таймер должен выполнятся в другом потоке. У топикстартера бот будет “висеть” и ждать 3 минуты, пока не закончится sleep.



Отредактировано (Янв. 26, 2009 14:24:31)

Офлайн

#5 Янв. 26, 2009 14:25:04

armagidon
От:
Зарегистрирован: 2008-12-18
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

igor.kaist прав =) тогда просто бот зависает =)



Офлайн

#6 Янв. 26, 2009 14:32:26

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

sorry, не дочитал вопрос.



Офлайн

#7 Янв. 26, 2009 14:38:48

armagidon
От:
Зарегистрирован: 2008-12-18
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

igor.kaist поставил твой скрипт ну может я не так чтонибудь впихнул просто не каждых 10 сек пишется песня посмотри плз =)

# -*- coding: cp1251 -*- 

import socket
import time
import httplib
from datetime import date
import winamp
import threading

host='irc.lv'
channel=''
password=''
nicks=''

def winamps():
sendm('[+] Larocca Play :'+ str(wins.getCurrentTrackName()))


def tpars(txt):
q=txt.split('<span class="temp">') [1]
temp=q.split(' C') [0]
qq=txt.split('<span>') [1]
wind=qq.split('</span>') [0]
return temp, wind

def sendm(msg):
irc.send('PRIVMSG '+ channel + ' :' + str(msg) + '\r\n')

irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc.connect((host, 6667))

irc.send('USER py host servname : Python Bot\r\n')
irc.send('NICK '+ str(nicks) +'\r\n')

while 1:
text=irc.recv(2040)
if not text:
break

if text.find('Message of the Day') != -1:
irc.send('JOIN '+ channel +'\r\n')

if text.find('+iwR') != -1:
irc.send('NS IDENTIFY '+ str(password) +'\r\n')

if text.find('PING') != -1:
irc.send('PONG ' + text.split() [1] + '\r\n')

if text.find('armagidon!~null@armaggidon.ru PRIVMSG #DragStyle^ :!quit') != -1:
irc.send('QUIT :python bot\r\n')

if text.find(':KICK') != 1:
irc.send('JOIN '+ channel +'\r\n')

if text.find(':!date') != -1:
sendm('[+] Date: '+ time.strftime("%a, %b %d, %y", time.localtime()))

if text.find(':!time') != -1:
sendm('[+] Time: '+ time.strftime("%H:%M:%S", time.localtime()))

if text.find(':!weather') != -1:
tmp = text.split(':!weather')
city = tmp[1].strip()
reqest_str = '/laika_zinas/?city=' + city
c = httplib.HTTPConnection("www.1188.lv")
c.request("GET", reqest_str)
ra = c.getresponse()
datas = ra.read()
temp, wind = tpars(datas)
sendm('[+] Temp: '+ temp +' C | Wind: '+ wind +' m/s')
c.close()

if text.find(':!irclv') != -1:
tmps = text.split(':!irclv')
irclvs = tmps[1].strip()
if len(irclvs) < 1:
sendm('[+] Error ! Wrote !irclv nick')
else:
website = 'http://irc.lv/?nick=' + irclvs
sendm('[+] Home: '+ website)
sendm('[+] Perl: http://irc.lv/perl?nick=' + irclvs)
sendm('[+] Blog: http://irc.lv/blogs?nick=' + irclvs)

if text.find(':!say') != -1:
says = text.split(':!say')
sayse = says[1].strip()
sendm('.:: '+ str(sayse) +' ::.')

if text.find(':!join') != -1:
joins = text.split(':!join')
das = joins[1].strip()
irc.send('JOIN '+ str(das) +'\r\n')

if text.find(':!nick') != -1:
nickname = text.split(':!nick')
if len(nickname) < 2:
pass
else:
nicknames = nickname[1].strip()
irc.send('NICK '+ str(nicknames) +'\r\n')

if text.find(':!dns') != -1:
dns = text.split(':!dns')
dnsf = dns[1].strip()
dnserv = socket.gethostbyaddr(dnsf)
sendm('[+] DNS : '+ str(dnserv))

if text.find(':!part') != -1:
part = text.split(':!part')
parts = part[1].strip()
irc.send('PART '+ str(parts) +'\r\n')

if text.find(':!voice') != -1:
voice = text.split(':!voice')
voices = voice[1].strip()
irc.send('MODE '+ str(channel) +' +v '+ str(voices) +'\r\n')

if text.find(':!devoice') != -1:
devoice = text.split(':!devoice')
devoices = devoice[1].strip()
irc.send('MODE '+ str(channel) +' -v '+ str(devoices) +'\r\n')

if text.find(':@CO') != -1:
co = text.split(':@CO')
cos = co[1].strip()
sendm('(-(--)-) '+ str(cos) +' Sha Ibalo Razibu Cibe @.@ (P@UKI SCRIPT)')

if text.find(':@PAIBALU') != -1:
pai = text.split(':@PAIBALU')
paib = pai[1].strip()
irc.send('PRIVMSG '+ str(paib) +' :(-(--)-) Sha Ibalo Razibu Cibe @.@ (P@UKI SCRIPT)\r\n')

if text.find(':!wiki') != -1:
wiki = text.split(':!wiki')
wikis = wiki[1].strip()
if len(wikis) < 1:
sendm('[+] Error ! Wrote Name ! Example : !wiki Windows')
else:
sendm('[+] Wiki : http://ru.wikipedia.org/wiki/'+ str(wikis))

if text.find(':!topic') != -1:
topi = text.split(':!topic')
topic = topi[1].strip()
irc.send('TOPIC #DragStyle^ :'+ str(topic) +'\r\n')
if topic == topic:
sendm('[+] Topic change')

if text.find(':!image') != -1:
image = text.split(':!image')
images = image[1].strip()
if len(images) < 1:
sendm('[+] Error ! Wrote : !image world')
else:
sendm('[+] images url : http://images.google.lv/images?um=1&hl=ru&q='+ images +'&btnG')

if text.find(':!newyear') != -1:
now = date.today()
newyear = date(2008, 12, 31)
cik = now - newyear
newyears = cik.days
sendm('[+] До Нового Года осталось :'+ str(newyears) +' дней =)')

if text.find(':!help') != -1:
hel = text.split(':!help')
helps = hel[1].strip()
if len(helps) < 1:
sendm('[+] Error ! Wrote : !help nick ')
else:
irc.send('PRIVMSG '+ helps +' : !time, !date, !wiki, !weather, !norris, !rasha, !irclv, !image, !dns, !newyear\r\n')

if text.find(':!larocca') != -1:
wins=winamp.winamp()
sendm('[+] Larocca Play :'+ wins.getCurrentTrackName())
t=threading.Timer(10.0, winamps)
t.start()


if text.find(':!norris') != -1:
norris = text.split(':!norris')
norr = norris[1].strip()
if norr == '1':
sendm('1. Слёзы Чака Норриса лечат рак. К сожалению, он никогда не плачет. Вообще.')
elif norr == '2':
sendm('2. Чак Норрис досчитал до бесконечности. Дважды.')
elif norr == '3':
sendm('3. На последней странице Книги Рекордов Гиннесса мелким шрифтом указано, что все мировые рекорды принадлежат Чаку Норрису, а в книге просто перечислены те люди, которым удалось максимально к ним приблизиться.')
elif norr == '4':
sendm('4. Если у вас есть 5 долларов и у Чака Норриса есть 5 долларов, то у Чака Норриса больше денег, чем у вас.')
elif norr == '5':
sendm('5. Чак Норрис может убить двух охотников одним зайцем.')
elif norr == '6':
sendm('6. Самые распространённые причины смерти в США: 1) сердечно-сосудистые заболевания, 2) Чак Норрис, 3) раковые опухоли.')
elif norr == '7':
sendm('7. У большинства людей 23 пары хромосом. У Чака Норриса - 72… и все они ядовиты.')
elif norr == '8':
sendm('8. Чак Норрис может выиграть в крестики-нолики за один ход.')
elif norr == '9':
sendm('9. Полицейский код для нападавших на Чака Норриса - 45-11: самоубийство.')
elif norr == '10':
sendm('10. Чак Норрис не стирает одежду - он вытряхивает из неё грязь.')
elif norr == '11':
sendm('11. Третий закон Ньютона ошибочен: он гласит, что для каждого действия есть противодействие, но ничто в мире не может составить противодействие круговому удару Чака Норриса.')
elif norr == '12':
sendm('12. Когда Чак Норрис говорит, все молча слушают. А потом умирают.')
elif norr == '13':
sendm('13. Чак Норрис изобрёл чёрный цвет. Вообще-то он изобрёл все цвета, кроме розового. Розовый цвет изобрёл Том Круз.')
elif norr == '14':
sendm('14. На каждый свой день рождения Чак Норрис выбирает первого попавшегося ребёнка и пинком отправляет его на Солнце.')
elif norr == '15':
sendm('15. Чак Норрис размалывает кофе пальцем, а потом кипятит воду своим гневом.')
elif norr == '16':
sendm('16. Археологи обнаружили старый английский толковый словарь, написанный в 1236 г. В нём слово “жертва” объясняется как “человек, ставший на пути Чака Норриса”.')
elif norr == '17':
sendm('17. Бермудский треугольник был квадратом, пока Чак Норрис не сломал один угол своим круговым ударом ногой.')
elif norr == '18':
sendm('18. Чак Норрис играл в русскую рулетку с полностью заряженным револьвером, и выиграл.')
elif norr == '19':
sendm('19. Вообще-то Чак Норрис не убивает людей своим круговым ударом ногой. На самом деле эти люди оказываются никогда не существовавшими в нашем пространственно-временном континууме.')
elif norr == '20':
sendm('20. Супермен однажды посмотрел одну серию “Крутого Уокера”. После этого он с трудом заснул и несколько раз просыпался весь в слезах.')
elif norr == '21':
sendm('21. Никакого глобального потепления не существует. Просто однажды Чаку Норрису стало холодно, и он подогрел Солнце.')
elif norr == '22':
sendm('22. Легенда не врёт - Чак Норрис действительно построил Рим за один день.')
elif norr == '23':
sendm('23. Чак Норрис - единственный человек в мире, который может ударить кого-то круговым ударом ногой по электронной почте.')
elif norr == '24':
sendm('24. Чак Норрис может сжечь муравья с помощью увеличительного стекла. Ночью.')
elif norr == '25':
sendm('25. Чак Норрис может вызывать не только страх, но и надежду - на то, что он не ударит вас.')
elif norr > '25':
sendm('[+] No Anekdotes')
else:
sendm('[+] Chuck Norris Anekdots wrote : !norris 1 - 25')

if text.find(':!rasha') != -1:
rasha = text.split(':!rasha')
rash = rasha[1].strip()
if rash == '1':
sendm('1. Челябинские мужики настолько суровые, что не пьют кофе, а жрут его ложкой из банки')
elif rash == '2':
sendm('2. Челябинские наркоманы настолько суровые что вместо уколов ставят себе капельницу')
elif rash == '3':
sendm('3. Челябинские коммунисты на столько суровые, что отмечают День рождения Ленина каждый день!')
elif rash == '4':
sendm('4. Челябинские хоккеисты настолько суровые, что играют ломами')
elif rash == '5':
sendm('5. Челябинские школьники на столько суровые, что не курят на переменах, они жуют сигареты прямо на уроках')
elif rash == '6':
sendm('6. Челябинские женщины настолько суровые, что пользуются вместо тампонов камышами')
elif rash == '7':
sendm('7. Челябинские младенцы настолько суровые, что жрут яблоки не дожидаясь первых зубов')
elif rash == '8':
sendm('8. Челябинское пиво настолько сурово, что превышает по крепости медицинский спирт')
elif rash == '9':
sendm('9. Челябинские дятлы настолько суровы, что выдолбили 2 станции метро')
elif rash == '10':
sendm('10. Челябинские велосипедисты на столько суровые, что никогда не переключаются с передачи 3/8')
elif rash == '11':
sendm('11. Челябинские зоофилы настолько суровы, что трахают даже плюшевых мишек')
elif rash == '12':
sendm('12. Челябинские мужики настолько суровы, что вытирают жопу наждачной бумагой')
elif rash == '13':
sendm('13. Челябинские мужики настолько суровые, что прибивают к деревьям не скворечники, а собачьи будки')
elif rash == '14':
sendm('14. Челябинские киллеры настолько суровы, что делают 10 контрольных выстрелов')
elif rash == '15':
sendm('15. Челябинские миньетчицы настолько суровые, что у челябинских мужиков простыни всасываются в задницу')
elif rash == '16':
sendm('16. Челябинские мужчины настолько суровы, что бреются фрезерными станками')
elif rash == '17':
sendm('17. Челябинские комбайнеры настолько суровые, что косят лес')
elif rash == '18':
sendm('18. Челябинские космонавты настолько суровы, что выходят в открытый космос поссать')
elif rash == '19':
sendm('19. Челябинские бабки настолько суровы, что им в автобусе уступает место даже водитель')
elif rash == '20':
sendm('20. Челябинская порнуха настолько сурова, что ее запретили в Германии')
elif rash == '21':
sendm('21. Челябинские родители настолько суровы, что заставляют детей смотреть телепузиков до 18 лет')
elif rash == '22':
sendm('22. Челябинская трава настолько суровая, что на ха-ха пробивает даже соседа за стеной')
elif rash == '23':
sendm('23. Челябинские рэперы настока суровы, что ездят с выступлениями на корпоративы Куклусклана')
elif rash == '24':
sendm('24. Челябинская водка настолька сурова что ее запретили в 190 странах мира как ядерное оружие')
elif rash == '25':
sendm('25. Челябинские налогоплательщики настолько суровые, что в налоговой стоит автомат, выдающий деньги')
elif rash == '26':
sendm('26. Челябинские меломаны настолько суровые, что Сергей Шнуров на концертах в Челябинске не ругается матом')
elif rash == '27':
sendm('27.Челябинские мужики настолько суровы, что вместо вентилятора пользуются турбиной от самолета')
elif rash == '28':
sendm('28. Челябиснкие эмо настолько суровы что п*здят гопников')
elif rash == '29':
sendm('29. Челябинские флюгеры настолько суровы, что указывают направление ветру')
elif rash == '30':
sendm('30. Челябинские сатанисты настолько суровы, что Сатана боится приходить на их вызовы')
elif rash == '31':
sendm('31. Челябинские металлурги настолько суровы что подкуривают прямо от мартеновской печи')
elif rash == '32':
sendm('32. Челябинские почтальоны настолько суровы, что сами кусают всех собак за задницу')
elif rash == '33':
sendm('33. Челябинские фанаты настолько суровы, что обыграли сборную Японии по карате')
elif rash == '34':
sendm('34. Челябинские студенты настолько суровые, что военком сам от них бегает')
elif rash == '35':
sendm('35. Челябинские конфеты настолько суровы, что их запивают водкой')
elif rash == '36':
sendm('36. Челябинский цирк настолько суровый что в него продают билеты не на вход а на выход')
elif rash == '37':
sendm('37. Челябинские курильщики настолько суровые, что вместо обычных сигарет они курят трубы на заводе ЧТЗ')
elif rash == '38':
sendm('38. Челябинские путаны такие суровые, что клиенты отсасывают у себя сами...')
elif rash > '38':
sendm('[+] No Anekdots')
else:
sendm('[+] Наша Russia Anekdots wrote : !rasha 1-38')

print '[GET]', text



Офлайн

#8 Янв. 26, 2009 14:48:14

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

таймер

Ну все верно. Поступила команда, через 10 секунд она выполнилась.
Тебе больше подойдет это.

import thread,time

def song():
while 1: # бесконечный цикл
#вот сюда вставь нужный тебе код, который должен выполнятья раз в 10 секунд
time.sleep(10) # делаем паузу 10 секунд
# запускаем функцию song в отдельном потоке
thread.start_mew_thread(song,())
Главное чтоб эта переключалка песен вместе со слипом запускалась в отдельном потоке и еще совет
s={
'1':'text1',
'2':'text2'
}
if norr in s.keys():
sendm(s[norr])
else:
sendm('not found')
Это будет лучше, вместо бесконечных elif



Отредактировано (Янв. 26, 2009 15:03:26)

Офлайн

#9 Янв. 26, 2009 14:53:57

armagidon
От:
Зарегистрирован: 2008-12-18
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

таймер

igor.kaist большое спасибо , а во у тебя нет не каких примеров с модлуeм re и urllib2 как-бы совместно re и urllib2

хмм чего-то я не понел где ты мне дал второй пример с песнями

и надо что-бы просто не по команде каждых 3 мин выводилась бы песня и + песни с радио =) просто друг держит радио



Отредактировано (Янв. 26, 2009 14:59:13)

Офлайн

#10 Янв. 26, 2009 15:00:28

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

таймер

Совместно то зачем? Если ты умеешь работать с urllib2 и re, то в чем проблема?
Второй пример это который?


P.S. Советую для начала почитать какую нибудь литературу по питону, чтоб знать основы.

Добавлено:
Отредактировал пример, добавил коммментарии



Отредактировано (Янв. 26, 2009 15:01:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version