0

我有很大的 json 字符串,我正在尝试用 python 解析。基本上这个字符串包含 iptv 流。

我正在尝试为 xmbc/kodi 开发插件。

字符串示例: http: //pastebin.com/SmEGXaN9

我还需要将流拆分为 2 个不同的流:LIVE 和 VOD,我可以用正则表达式来做到这一点吗?

在 json LIVE 流中有 "live":"1" 而 VOD 有 "live":0"

我尝试捕获 "live":"(.+?)" 然后执行 if 语句以查看它是 LIVE 还是 VOD,但有时由于某种原因它不返回任何 "live":"1"。

是否可以使用正则表达式而不是 if 语句来拆分流?

这是实时抓取的功能:

def LIVE(url):
        xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_TITLE )
        vidlocation=('%s:%s/live/%s/%s/'%(site,port,usern,passw))
        link = OPEN_URL(url) #GET DATA FROM JSON API
        match=re.compile('{"name":"(.+?)","stream_id":"(.+?)","stream_icon":"(.+?)","live":"(.+?)"').findall(link)
        for name,streamid,iconimage,live in match:
           if "1" in live:
               addLink('%s'%(live),'%s%s.ts'%(vidlocation,streamid),'%s'%(iconimage).replace("\/","/"),'')

对于 LIVE 流,我需要检索 3 件事:name、stream_id、stream_icon

这是 VOD 抓取的功能:

def VOD(url):
        vidlocation=('%s:%s/movie/%s/%s/'%(site,port,usern,passw))
        link = OPEN_URL(url)
        match=re.compile('{"name":"(.+?)","stream_id":"(.+?)","live":"(.+?)","container_extension":"(.+?)","stream_icon":"(.+?)"').findall(link)
        for name,streamid,live,container,iconimage in match:
            if not "1" in live:
                addLink3('%s'%(name),'%s%s.%s'%(vidlocation,streamid,container),'','%s'%(iconimage).replace("\/","/"),'','PLOT')                
            else:
                #novod

对于 VOD 流,我需要捕获 4 件事:名称、stream_id、container_extension;stream_icon

有人可以根据我的需要帮助我构建正确的tregex,还请准确解释它的工作原理和方式。Python 正则表达式文档对我来说非常复杂。

4

0 回答 0