|
@@ -585,9 +585,23 @@ static inline void wd_playControl_queue(void (^block)(void)){
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+- (NSDictionary *)parsePlayInfoString:(NSString *)playInfoXmlString{
|
|
|
+ NSMutableDictionary *resultDic = [NSMutableDictionary dictionaryWithDictionary:[NSDictionary mkr_dictionaryWithXML:playInfoXmlString]];
|
|
|
+ NSString *metaDataString = [resultDic objectForKey:@"TrackMetaData"];
|
|
|
+ metaDataString = [metaDataString stringByReplacingOccurrencesOfString:@"&" withString:@"mkr_***"];
|
|
|
+ NSDictionary *metaDic = [NSDictionary mkr_dictionaryWithXML:metaDataString];
|
|
|
+ NSDictionary *metaItemDic = metaDic[@"item"];
|
|
|
+ if (![metaItemDic isKindOfClass:NSDictionary.class]) {
|
|
|
+ metaItemDic = @{};
|
|
|
+ }
|
|
|
+ [resultDic setObject:metaDic[@"item"]?:@{} forKey:@"TrackMetaData"];
|
|
|
+ return resultDic;
|
|
|
+}
|
|
|
+
|
|
|
- (id <MKRRadioResorce>)getPlayingStatusWithDevice:(id <MKRUPnPDevice>)device {
|
|
|
wd_playControl_queue(^{
|
|
|
- NSDictionary *resultDic = [[ASControlTools sharedInstanceUPNP] libupnp_getPlayInfo:device.avTransportUrl];
|
|
|
+ NSString *resultString = [[ASControlTools sharedInstanceUPNP] libupnp_getPlayInfoString:device.avTransportUrl];
|
|
|
+ NSMutableDictionary *resultDic = [self parsePlayInfoString:resultString];
|
|
|
if (!resultDic || !resultDic.allKeys.count) {
|
|
|
return ;
|
|
|
}
|