2015-05-07 3 views
0

im пытается запустить скрипт python, который выполняет простой поиск twitter с tweepy. Я хочу, чтобы включить/выключить функцию поиска через сообщения OSC из Supercollider. Конечная цель состоит в том, чтобы остановить триггер OSC и перезапустить функцию поиска.Сброс дорожки Tweepy с помощью OSC trigger

В настоящее время, похоже, скрипт не может прослушивать как поток твиттера, так и сообщения OSC. Я пытаюсь объединить твипичный базовый код streamlistener и коды py_SC basic_receive.

Вот что я придумал:

import tweepy 
from tweepy.streaming import StreamListener 
from tweepy import OAuthHandler 
from tweepy import Stream 
import threading 
import OSC 
import time, threading 


auth/api 

#from basic_receive.py 
receive_address = '127.0.0.1', 9000 
s = OSC.OSCServer(receive_address) 
def printing_handler(addr,tags,stuff,source): 
    global word 
    word = stuff[0] 
    print word 
    return 
s.addMsgHandler("/print", printing_handler) 
st = threading.Thread(target = s.serve_forever) 
st.start() 

try: 
    while 1: 
     time.sleep(1) 

except KeyboardInterrupt : 
    print "\nClosing OSCServer." 
    s.close() 
    print "Waiting for Server-thread to finish" 
    st.join() ##!!! 
    print "Done" 


#from Tweepy 
class StdOutListener(StreamListener): 
    global word 
    def __init__(self, api=None): 
     super(StdOutListener, self).__init__() 
     self.num_tweets = 0 

    def on_status(self, status): 
     text = status.text 
     print text 
     self.num_tweets = self.num_tweets + 1 

     if self.num_tweets > 1000: 
      return False 
     elif word == 'haha': 
      return False 
     else: 
      return True 


    def on_error(self, status): 
     print(status) 
     return True 


def track(): 
    stream = Stream(auth, listener) 
    stream.filter(track = ['food', 'love']) 
    return 


if __name__ == '__main__': 
    listener = StdOutListener() 
    track() 
    printing_handler() 

ответ

0

Это выглядит как поток tweepy только печать на стандартный вывод. Если это так, вы также захотите отправить этот поток/stdout на порт 9000. Таким образом, вы хотели бы попробовать и интегрировать basic_send.

Вы могли установить соединение сокета: Python. Redirect stdout to a socket

Или вы могли бы настроить клиент:

def on_status(self, status): 
    text = status.text 
    client = OSC.OSCClient() 
    msg = OSC.OSCMessage() 
    msg.setAddress("/the/osc/address") 
    msg.append(text) 
    client.sendto(msg, ('127.0.0.1', 9000)) 

И тогда вы можете настроить другой OSC сервер или основной получить в tweepy потока слушателя контролировать этот класс , настройка слушателя на другом порту.

Звучит как забавный арт-проект.

+0

Спасибо jm_____, что определенно нужно больше работы! будем держать вас в курсе :) –

Смежные вопросы