私は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回以上チュートリアルを終わりました。それを説明してください、それらのコードが何を意味し、何をしているのかを知っている人には明らかですか?
ご協力いただきありがとうございます、事前におねがいします。
[TypeError: 'str'はバッファインターフェイスをサポートしていません](http://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-buffer-interface) –