需要一些使用Twitch.tv代码的建议,该代码使用可用的JSON数据来选择随机流转化器

时间:2014-01-25 18:11:58

标签: python json python-3.3

当用户输入流媒体名称时,我一直在开发一个打开流媒体流的程序。这是我的代码:

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模块或代码,我不知道如何适应我的情况。

感谢所有帮助。

1 个答案:

答案 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)