当用户输入流媒体名称时,我一直在开发一个打开流媒体流的程序。这是我的代码:
import subprocess,urllib.request,json
wcsChannels=["wcs_europe","wcs_europe2","wcs_america","wcs_america2","wcs_europe_de"]
def openStream(s,q="high"):
subprocess.Popen("livestreamer.exe twitch.tv/"+s+" "+q,shell=True).wait()
print(s,"is not online.")
def QS(s):
if s=="wcs":
wcs("high")
if s=="d":
openStream("dragon")
if s=="rotti":
openStream("rotterdam08")
def wcs(q):
for i in range(0,5):
openStream(wcsChannels[i],q) # will try and open all wcs streams
menu=int(input("""Twitch Channeler
1 - Open Stream
2 - Random Stream
: """))
if menu==1:
qs=input("QS: ") # qs=quick stream
if qs!="":
QS(qs)
streamer=input("Streamer (full name): ")
quality=input("Quality: ").lower()
subprocess.Popen("livestreamer.exe twitch.tv/"+streamer+" "+quality,shell=True).wait()
elif menu==2:
streamers=urllib.request.urlopen("https://api.twitch.tv/kraken/streams/?game=StarCraft%20II:%20Heart%20of%20the%20Swarm")
我的问题是,到最后,我不知道如何处理从twitch url:https://api.twitch.tv/kraken/streams/?game=StarCraft%20II:%20Heart%20of%20the%20Swarm给出的json数据。我需要它在streams / channels / display_name中添加所有用户,将它们全部放在一个列表中并从列表中选择一个随机名称。
除了pprint之外,我还在研究JSON模块,但是只能找到过时的2.x模块或代码,我不知道如何适应我的情况。
感谢所有帮助。
答案 0 :(得分:1)
标准库中的json模块非常适合处理来自您提供的URL的json数据。 您可以从官方文档中了解有关json模块的更多信息 here
这是一个如何做你要求的例子。
import urllib, json, random
streamers = urllib.urlopen("https://api.twitch.tv/kraken/streams/?game=StarCraft%20II:%20Heart%20of%20the%20Swarm")
streamers_data = json.loads(streamers.readlines()[0])
display_names = [stream['channel']['display_name'] for stream in streamers_data['streams']]
print random.choice(display_names)