2016-07-19 10 views
0

私はPythonでの経験は全くありません。他のコーディング言語ではごくわずかです。しかし、数日前に私はtwitch.tvで "Twitch Plays"ストリームを作る方法のチュートリアルを発見しました。そのプロセスの最後のステップは、pastebin.comからコピー&ペーストするPythonコードを混乱させることです。私はこの時点まですべてのステップを正しく行ったことを99%確信していますが、2つの別々のファイルに2つのエラーコードがあります。私は必要以上に投稿すると謝罪し、関連性があるか必要か分からない。コーディングnoob TypeError: 'str'はバッファインターフェイスをサポートしていません

最初のファイル「メイン」エラーメッセージ与えている:

けいれんするために私たちの詳細を送信し... トレースバック(最後の最新の呼び出し): t.twitch_connectで ファイルの場所、ライン11、(ユーザー名、キー);

1 #Define the imports 
2 import twitch 
3 import keypresser 
4 t = twitch.Twitch(); 
5 k = keypresser.Keypresser(); 
6  
7 #Enter your twitch username and oauth-key below, and the app connects to twitch with the details. 
8 #Your oauth-key can be generated at http://twitchapps.com/tmi/ 
9 username = "dbproxy"; 
10 key = "I put my OauthKey here in the real file"; 
11 t.twitch_connect(username, key); 
12  
13 #The main loop 
14 while True: 
15  #Check for new mesasages 
16  new_messages = t.twitch_recieve_messages(); 
17  
18  if not new_messages: 
19   #No new messages... 
20   continue 
21  else: 
22   for message in new_messages: 
23    #Wuhu we got a message. Let's extract some details from it 
24    msg = message['message'].lower() 
25    username = message['username'].lower() 
26    print(username + ": " + msg); 
27  
28    #This is where you change the keys that shall be pressed and listened to. 
29    #The code below will simulate the key q if "q" is typed into twitch by someone 
30    #.. the same thing with "w" 
31    #Change this to make Twitch fit to your game! 
32    if msg == "q": k.key_press("q"); 
33    if msg == "w": k.key_press("w"); 

第二のファイル "単収縮" このエラーメッセージを与えている:

ファイルの場所、ライン30、twitch_connectに s.send( 'ユーザ%S \ R \ n' は%ユーザー) はTypeError:「strが」バッファインタフェース

をサポートしていないと、コードは次のとおりです。

1 import socket 
2 import sys 
3 import re 
4  
5 class Twitch: 
6  
7  user = ""; 
8  oauth = ""; 
9  s = None; 
10  
11  def twitch_login_status(self, data): 
12   if not re.match(r'^:(testserver\.local|tmi\.twitch\.tv) NOTICE \* :Login unsuccessful\r\n$', data): return True 
13   else: return False 
14  
15  def twitch_connect(self, user, key): 
16   self.user = user; 
17   self.oauth= key; 
18   print("Connecting to twitch.tv"); 
19   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); 
20   s.settimeout(0.6); 
21   connect_host = "irc.twitch.tv"; 
22   connect_port = 6667; 
23   try: 
24    s.connect((connect_host, connect_port)); 
25   except: 
26    print("Failed to connect to twitch"); 
27    sys.exit(); 
28   print("Connected to twitch"); 
29   print("Sending our details to twitch..."); 
30   s.send('USER %s\r\n' % user); 
31   s.send('PASS %s\r\n' % key); 
32   s.send('NICK %s\r\n' % user); 
33  
34   if not self.twitch_login_status(s.recv(1024)): 
35    print("... and they didn't accept our details"); 
36    sys.exit(); 
37   else: 
38    print("... they accepted our details"); 
39    print("Connected to twitch.tv!") 
40    self.s = s; 
41    s.send('JOIN #%s\r\n' % user) 
42    s.recv(1024); 
43  
44  def check_has_message(self, data): 
45   return re.match(r'^:[a-zA-Z0-9_]+\![a-zA-Z0-9_][email protected][a-zA-Z0-9_]+(\.tmi\.twitch\.tv|\.testserver\.local) PRIVMSG #[a-zA-Z0-9_]+ :.+$', data) 
46  
47  def parse_message(self, data): 
48   return { 
49    'channel': re.findall(r'^:.+\![a-zA-Z0-9_][email protected][a-zA-Z0-9_]+.+ PRIVMSG (.*?) :', data)[0], 
50    'username': re.findall(r'^:([a-zA-Z0-9_]+)\!', data)[0], 
51    'message': re.findall(r'PRIVMSG #[a-zA-Z0-9_]+ :(.+)', data)[0].decode('utf8') 
52   } 
53  
54  def twitch_recieve_messages(self, amount=1024): 
55   data = None 
56   try: data = self.s.recv(1024); 
57   except: return False; 
58  
59   if not data: 
60    print("Lost connection to Twitch, attempting to reconnect..."); 
61    self.twitch_connect(self.user, self.oauth); 
62    return None 
63  
64   #self.ping(data) 
65  
66   if self.check_has_message(data): 
67    return [self.parse_message(line) for line in filter(None, data.split('\r\n'))]; 

私はこの記事がどのように長い間、両方の謝罪、そして何かが私に語ったので、これは非常に単純な問題があります。

誰かがそれに答える気にならないなら、最後の質問が1つあります。

私はすでに気持ちよく感じる以上にコードをめちゃくちゃにしてしまった、正直言ってもっとエラーメッセージがないのは衝撃的だが、私は最初のファイル "Main"修正することになってメートル:

#Wuhu we got a message. Let's extract some details from it 
    msg = message['message'].lower() 
    username = message['username'].lower() 
    print(username + ": " + msg); 

私はそれらの場所のテキストがオレンジ色なので、私は[「メッセージ」]、[「ユーザ名」]と3行目の引用符わたってるしきを変更することになってると思うし、私が触れようとしていたものは、「メイン」ファイルのオレンジ色でしたが、私はその部分が何をしているのか、なぜそれらの部分を変更するのかという手がかりはなく、10回以上チュートリアルを終わりました。それを説明してください、それらのコードが何を意味し、何をしているのかを知っている人には明らかですか?

ご協力いただきありがとうございます、事前におねがいします。

+2

[TypeError: 'str'はバッファインターフェイスをサポートしていません](http://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-buffer-interface) –

答えて

0

最初の部分については、実際にユーザー名と認証キー(OauthKey)を実際に入力する必要があります。あなたはどこ認証キーを取得するかわからない場合は

username = "User1"; 
    key = "AAAA1111"; 

:ユーザー名は「ユーザー1」だったと、あなたの認証キーが「AAAA1111」だった場合、最初のファイルの行9と10は次のようになります。 8行目のコメントをチェックして、http://twitchapps.com/tmi/に行くように指示します。最初の(メイン)が正しく構成されていないため、2番目のファイル(ツイッチ)が失敗しています。

+0

Iファイル内に私のoauthキーを持っていますが、私は投稿にそれを含めませんでした。申し訳ありませんが、私はその投稿についてもっと明確にすべきでした。 –

関連する問題