Как извлечь данные из URL-адреса, который не является объектом JSON в AndroidView ListView? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть Этот URL , и я хочу получить все данные, присутствующие здесь, в виде списка Android, я знаю только, как извлечь данные из объекта JSON, но здесь я даже не знаю, Формат этих данных присутствует в URL.

Формат URL:
tvg-logo = URL логотипа chanel

group-title = категория, в которой вам нужно отобразить канал (только для фильма, а не для телевизора)

После "," у вас есть название канала

А после имени у вас есть URL видео

Как я могу проанализировать свои данные из URL, чтобы я мог сделать представление списка следующим образом: img

Ответы [ 6 ]

0 голосов
/ 05 июля 2018

Решение для этого:

  1. Либо вы можете вырезать данные из библиотек Python, таких как Scrapy или Beautiful Soup, а затем преобразовать их в JSON и читать с Android.

  2. Анализ html с использованием библиотеки jsoup (https://jsoup.org/) и моделирование данных в желаемом формате.

0 голосов
/ 04 июля 2018

, если вы используете модернизацию в качестве сетевой библиотеки, чтобы вы могли передать «ResponseBody» в функцию обратного вызова API. В методе onSuccess мы получим тело и используем следующий код.

Класс интерфейса:

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();
}

Может быть, это поможет вам.

0 голосов
/ 04 июля 2018

Результат кажется легко анализируемым. Просто посмотрите на шаблон. # ЧТО-ТО tvg-logo = "logo" tvg -ategorie = "что-то"

Используйте регулярное выражение для разбиения нужного вам шаблона. Regex

0 голосов
/ 04 июля 2018

Попробуйте с приведенным ниже кодом, здесь я извлекаю только URL из ответа API

    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());
}

Таким образом, вы можете проанализировать ваши данные и обновить список.

Примечание: - Вам необходимо написать собственную логику для анализа этих данных путем проверки шаблона данных.

0 голосов
/ 04 июля 2018

Эта функция будет получать данные из URL, и вы можете разделить данные в соответствии с вашими требованиями и заполнить пользовательский интерфейс.

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();
        }
    }
0 голосов
/ 04 июля 2018

Я думаю, вы должны разделить текст строки специальными символами. и держать их в массиве. например, специальный символ может быть «[ пробел ]» или «,» или «#». Я надеюсь помочь вам

...