如何使用cut命令从接口返回结果中提取目标m3u8链接
如何使用cut命令从接口返回结果中提取目标m3u8链接
嘿,我来帮你搞定这个提取m3u8链接的问题!你的思路已经很对了——用curl拿接口数据,再通过grep和cut筛选内容,不过可以做些小优化让命令更稳定可靠。
优化后的cut命令方案
如果接口返回的JSON里source字段格式类似 "source": "https://xxx.m3u8?token=xxx",可以用下面的命令:
link=$(curl -s 'https://app-api6.podbbang.com/musicpod-playlists/musicpod77?with=media' | grep -o '"source": "[^"]*"' | cut -d'"' -f 4) echo $link
我来拆解下各部分的作用:
curl -s:静默请求接口,只返回接口数据,不输出多余的进度提示grep -o '"source": "[^"]*"':-o参数只输出精准匹配的内容,[^"]*用来锁定双引号内的m3u8链接部分,避免拿到整行里的其他冗余内容cut -d'"' -f 4:以双引号为分隔符,分割后第4段就是我们要的目标链接(分割后的结构是:空字符串 → "source" → 空字符串 → 目标m3u8链接)
更稳妥的替代方案(推荐)
用grep+cut处理JSON其实属于“文本凑配”,如果接口返回的JSON结构有微小变化(比如空格、换行调整),可能就会失效。更靠谱的方式是用专门的JSON处理工具jq,命令会更简洁且抗变化:
link=$(curl -s 'https://app-api6.podbbang.com/musicpod-playlists/musicpod77?with=media' | jq -r '.media.source') echo $link
这里.media.source是根据接口返回的JSON结构写的路径,如果实际结构不同,你可以调整这个路径(比如如果source直接在根节点,就写成.source)。-r参数用来输出不带双引号的原始字符串,正好符合我们的需求。
备注:内容来源于stack exchange,提问作者Silver Lee
相关产品推荐
相关产品推荐

