我正在尝试为外部应用程序解析JSON格式的元数据。但是,我只需要最后播放的歌曲的元数据,而我要处理的JSON就有10或15首歌曲。wklh.sh:#!/bin/shcurl -v --silent http://player.listenlive.co/41851/en/songhistory >/var/tmp/wklh$1.a.txtpta=`cat /var/tmp/wklh$1.a.txt | grep songs > /var/tmp/wklh$1.b.txt`ptb=`cat /var/tmp/wklh$1.b.txt | sed -n -e '/var songs = /,/; <span title/ p' > /var/tmp/wklh$1.c.txt`ptc=`cat /var/tmp/wklh$1.c.txt | grep songs > /var/tmp/wklh$1.d.txt`ptd=`cat /var/tmp/wklh$1.d.txt | sed -i 's/var songs = \[//g' /var/tmp/wklh$1.d.txt`ptd=`cat /var/tmp/wklh$1.d.txt | sed -i 's/<ol class="songs tracks"><\/ol>//g' /var/tmp/wklh$1.d.txt`ptd=`cat /var/tmp/wklh$1.d.txt | sed -i 's/\]//g' /var/tmp/wklh$1.d.txt`ptd=`cat /var/tmp/wklh$1.d.txt | sed -i 's/;//g' /var/tmp/wklh$1.d.txt`json=`cat /var/tmp/wklh$1.d.txt`echo $jsonmetadata=`php /etc/asterisk/scripts/music/wklh.php $json`echo $metadata我意识到这不是很有效,但是某些sed语句不能完全起作用,因此我不得不将它们分开。wklh.sh:<?php$md=json_decode($argv[1]);$title=$md->title;$artist=$md->artist;$album=$md->album;echo "$title*$artist*$album";?>这几乎与另一个PHP文件writ.php相同,我使用它来解析类似的JSON(https://us.api.iheart.com/api/v3/live-meta/stream/2689/currentTrackMeta)writ.php解析:{"artistId":893,"albumId":58817688,"trackId":58817690,"title":"Cum on Feel the Noize","artist":"Quiet Riot","album":"Metal Health","trackDuration":287,"imagePath":"http://image.iheart.com/ihr-ingestion-pipeline-production-sbmg/A10301A0001103372T_20180629201531958/4476232.20126.jpg","explicitLyrics":false,"lyricsId":0,"startTime":1555263475000,"endTime":1555263681000,"playbackRights":{"onDemand":true},"dataSource":"Pnp"}wklh.php接收到的JSON与writ.php接收到的JSON类似,只是一个返回1首歌曲的元数据,而我的脚本返回最后10或15首歌曲的元数据。我只对最近播放过的歌曲在相同的三个领域感兴趣。我将如何解析JSON(最后一个(编号最高的)时间戳),然后仅返回该歌曲的花括号(包括花括号)之间的内容?在确定可以使用PHP选择所需的JSON子集之后,我的wklh.sh/writ.php脚本组合应该可以正常工作。之后,PHP代码类似于我用于writ.php的代码,我可以使用它。我可以对我的PHP脚本进行修改以完成此操作吗?谢谢!
3 回答
- 3 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消