【发布时间】:2018-12-12 21:00:32
【问题描述】:
我有This URL,我想在一个 android 列表视图中获取这里的所有数据,我只知道如何从 JSON 对象中检索数据,但在这里我什至不知道这些数据的格式在网址中。
网址格式为:
tvg-logo = logo chanel的url
group-title = 您需要显示频道的类别(仅适用于电影而非电视)
在“,”之后是频道的名称
在名字之后你有视频的 URL
【问题讨论】:
我有This URL,我想在一个 android 列表视图中获取这里的所有数据,我只知道如何从 JSON 对象中检索数据,但在这里我什至不知道这些数据的格式在网址中。
网址格式为:
tvg-logo = logo chanel的url
group-title = 您需要显示频道的类别(仅适用于电影而非电视)
在“,”之后是频道的名称
在名字之后你有视频的 URL
【问题讨论】:
解决办法是:
您可以从 python 库(如 scrapy 或 beautiful soup)中抓取数据,然后将其转换为 json 并从 android 读取。
使用 jsoup 库 (https://jsoup.org/) 解析 html,并以您想要的格式对数据建模。
【讨论】:
试试下面的代码,这里我只从 api 响应中提取 url
String strData = "#EXTM3U #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/tf1-tv.png\" tvg-categorie=\"TV\",TF1 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/314.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france2.png\" tvg-categorie=\"TV\",France 2 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/315.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france3.png\" tvg-categorie=\"TV\",France 3 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/316.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france4.png\" tvg-categorie=\"TV\",France 4 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/317.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france5.png\" tvg-categorie=\"TV\",France 5 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/318.ts";
private void convertDataToArray() {
String[] splitArray = strData.split("#EXTINF:-");
ArrayList<String> arrstrUrl = new ArrayList<String>();
ArrayList<String> arrstrMainUrl = new ArrayList<String>();
ArrayList<String> arrstrCategory = new ArrayList<String>();
ArrayList<String> arrstrName = new ArrayList<String>();
for (int i = 1; i < splitArray.length; i++) {
System.out.println("Final=>" + splitArray[i]);
arrstrUrl.add(splitArray[i].split("1 tvg-logo=")[1].split(" ")[0]);
arrstrMainUrl.add("http" + splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split("http")[1]);
arrstrName.add(splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split(",")[0]);
arrstrCategory.add(splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split(",")[1].split("http")[0]);
}
System.out.println("Final Image=>" + arrstrUrl.toString());
System.out.println("Final Main=>" + arrstrMainUrl.toString());
System.out.println("Final Name=>" + arrstrName.toString());
System.out.println("Final Category=>" + arrstrCategory.toString());
}
这样,您可以解析数据并更新列表视图。
注意:-您需要编写自己的逻辑来解析这些数据,方法是检查数据模式。
【讨论】:
如果您使用改造作为网络库,那么您可以在 api 回调函数中传递“ResponseBody”。在 onSuccess 方法中我们将获取 Body 并使用以下代码。
接口类:
Call<ResponseBody> yourFuncationName();
ResponseBody data = (ResponseBody) model.body();
String json = getStringData(data.byteStream());
功能是
public String getStringData(InputStream inputStream) {
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
total.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
}
return total.toString();
}
也许这对你有帮助。
【讨论】:
结果似乎很容易解析。看看模式。 #SOMETHING tvg-logo="logo" tvg-categorie="something"
使用正则表达式拆分您想要的模式。 Regex
【讨论】:
此函数将从 URL 获取数据,您可以根据需要拆分数据并填充 UI。
void fetchDataFromUrl() {
try {
URL oracle = new URL("http://cinecosta.com/api_tv.php?pass=yojeju123");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
【讨论】:
我认为,您必须用特殊字符分割字符串文本。并将它们保存在一个数组中。例如,特殊字符可能是“[空格字符]”或“,”或“#”。 希望能帮到你
【讨论】: