示例#1
0
文件: xplay.py 项目: JiasHuang/vod
def playURL(url, ref):

    if xarg.dl_threads:
        src, cookies, ref = xsrc.getSource(url, ref=ref)
        url = dl.createJobs(src, xdef.dldir, xarg.dl_threads)

    if isPlayerRunning():
        if os.path.exists(xdef.playlist):
            playbackMode = xurl.readLocal(xdef.playbackMode, 0).lower()
            if len(playbackMode) > 0 and playbackMode != 'normal':
                os.remove(xdef.playlist)
                setAct('stop', None)

    if xarg.playbackMode:
        xurl.saveLocal(xdef.playbackMode, xarg.playbackMode, 0)

    if xarg.pagelist:
        playlist = xurl.readLocal(xarg.pagelist)
        xurl.saveLocal(xdef.playlist, playlist, 0)
        while url != None:
            nextURL = getNext(url, playlist)
            if nextURL:
                p = Process(target=xsrc.getSource, args=(nextURL, ))
                p.start()
                playURL_core(url, ref)
                p.join()
            else:
                playURL_core(url, ref)
            url = ref = getNext(url, playlist)
    else:
        playURL_core(url, ref)

    return
示例#2
0
文件: xplay.py 项目: JiasHuang/vod
def setAct(act, val):

    if checkActVal(act, val) == False:
        print('\n[xplay][setAct] invalid command: %s %s\n' % (act, val))
        return

    if act == 'stop' and val != '#':
        if os.path.exists(xdef.playlist):
            os.remove(xdef.playlist)

    if act == 'playbackMode':
        xurl.saveLocal(xdef.playbackMode, val, 0)
        if val.lower() in ['autonext', 'loopall']:
            playing = xurl.readLocal(xdef.playing, 0)
            playlist = xurl.readLocal(xdef.playlist, 0)
            nextURL = nextLine(playing, playlist)
            if nextURL:
                if os.fork() == 0:
                    xsrc.getSource(nextURL)
        return

    player = getPlayer()
    print('\n[xplay][setAct]\n\n\t' + '%s,%s,%s' % (player, act, val))

    if player == 'mpv' and xproc.checkProcessRunning('mpv'):
        return mpv.setAct(act, val)

    if player == 'omxp' and xproc.checkProcessRunning('omxplayer.bin'):
        return omxp.setAct(act, val)

    if player == 'ffplay' and xproc.checkProcessRunning('ffplay'):
        return ffplay.setAct(act, val)
示例#3
0
文件: xplay.py 项目: JiasHuang/vod
def getNext(playing, playlist):

    if playlist != xurl.readLocal(xdef.playlist, 0):
        return None

    if isPlayerRunning():
        return None

    playbackMode = xurl.readLocal(xdef.playbackMode, 0).lower()

    if playbackMode == 'loopone':
        return playing

    if playbackMode in ['autonext', 'loopall']:
        return nextLine(playing, playlist)

    return None
示例#4
0
def load(q):
    d = parse_qs(q)
    if 'j' in d:
        j = d['j'][0]
        local = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                             'jsons', j)
        return xurl.readLocal(local)
    return None
示例#5
0
def getSource(url, fmt, ref):
    local_json = youtubedl.extractURL(url, dontParseJson=True)
    local_m3u8 = re.sub('.json', '.m3u8', local_json)
    m = re.search(r'"manifest_url": "([^"]*)"', xurl.readLocal(local_json))
    if m:
        manifest_url = m.group(1)
        xurl.load(manifest_url, local=local_m3u8)
        return local_m3u8
    return None
示例#6
0
文件: xplay.py 项目: JiasHuang/vod
def runOMXP(url, ref):
    if youtubedl.checkURL(url):
        url = youtubedl.extractURL(url)
    if not url:
        print('[xplay] invalid url')
        return 0
    if checkProcessRunning('omxplayer.bin'):
        omxp.setAct('stop', None)
    if re.search(r'.m3u($)', url):
        url = xurl.readLocal(url).rstrip()
        print('\n[omxp][play] '+url)
    p = subprocess.Popen('%s \'%s\' 2>&1 | tee %s' %(xdef.omxp, url, xdef.log), shell=True)
    if p:
        p.communicate()
    return 0
示例#7
0
def index(req):

    req.content_type = 'text/html; charset=utf-8'
    form = req.form or util.FieldStorage(req)
    txt = '{}'

    v = search(r'view\.py\?v=(.*)$', req.unparsed_uri, re.DOTALL)

    a = form.get('a', None)  # action
    n = form.get('n', None)  # number
    f = form.get('f', None)  # file
    c = form.get('c', None)  # command

    if v:
        obj = play_obj(v)
        playURL(v, getOption(req))
        txt = json.dumps(obj.__dict__)

    elif f:
        obj = play_obj(f)
        playURL(f)
        txt = json.dumps(obj.__dict__)

    elif a:
        obj = act_obj(a, n)
        sendACT(a, n)
        txt = json.dumps(obj.__dict__)

    elif c:
        status = handleCmd(c)
        obj = cmd_obj(status)
        txt = json.dumps(obj.__dict__)

    pb_cookie = Cookie.Cookie('playbackMode',
                              xurl.readLocal(conf.playbackMode))
    Cookie.add_cookie(req, pb_cookie)
    req.write(txt)

    return
示例#8
0
def get_json_from_file(path):
    txt = xurl.readLocal(path)
    return json.loads(txt)
示例#9
0
文件: lizhi.py 项目: JiasHuang/vod
def dl(url, local, ref=None, read=True):
    if not os.path.exists(local):
        xurl.load(url, local, ref=ref)
    if read:
        return xurl.readLocal(local)
    return None
示例#10
0
文件: jsunpack.py 项目: JiasHuang/vod
def unpackFILE(local):
    txt = xurl.readLocal(local)
    return unpack(txt)
示例#11
0
文件: vod.py 项目: JiasHuang/vod
def getSettingDefs():
    local = os.path.dirname(os.path.abspath(__file__)) + '/settings.js'
    m = re.search(r'var settings = ({.*?});', xurl.readLocal(local), re.DOTALL | re.MULTILINE)
    if m:
        return ast.literal_eval(m.group(1))
    return None
示例#12
0
def unpackFILE(local):
    txt = xurl.readLocal(local)
    return unpack(txt)