如何检索与编号最高的JSON时间戳关联的元数据?

我正在尝试为外部应用程序解析JSON格式的元数据。但是,我只需要最后播放的歌曲的元数据,而我要处理的JSON就有10或15首歌曲。


wklh.sh:


#!/bin/sh

curl -v --silent http://player.listenlive.co/41851/en/songhistory >/var/tmp/wklh$1.a.txt

pta=`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 $json


metadata=`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脚本进行修改以完成此操作吗?

谢谢!


波斯汪
浏览 158回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP