Форум программистов, компьютерный форум CyberForum.ru

Подскажите план на прогу, как лучше написать и реализовать - Android

Войти
Регистрация
Восстановить пароль
 
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 118
27.04.2016, 17:02     Подскажите план на прогу, как лучше написать и реализовать #1
Недавно посетила идея написать пока только для себя прогу с взаимодействием сайта. Собственно хочу реализовать такое. Есть сайт lostfilm tv(надеюсь не реклама). Для начала хочу что б прога загружала с ленты, последнии серии которые были переведены. Проще говоря практически перенести эту страницу в приложение. К концу данной задумка прикрутить push уведомления на выбранные/интересующие тебя сериалы. Вышла серия, тебя прога уведомила, когда серию переводят они сразу же туда её постят.

Теперь самое интересное, как это реализовать. Через парсер jsoup, читать определенный текст и изображения, но с картинками там все сложно, в идеале должно быть так (как я идеал представляю, но возможно я ошибаюсь) прога парсит изображения, загружает их сразу же при открытии видимый экран, далее кеширует их и при следующих открытиях смотрит если это изображение было загружено уже, то его не загружает дабы не плодить мусора (это отностится и к описанию т.к. тексту). Через парсер можно на сколько я понял, передавать ссылки на эти картинки и в дальнейшем с ними работать загружать/сохранять и т.д.
Жду ваших мыслей куда мне копать, что читать. Как с точки зрения нормальных современных прогеров это реализовать ? т.к. читал, некоторые картинки загружают в озу, она там чет переполняется, прога вылетает и.д.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2016, 17:02     Подскажите план на прогу, как лучше написать и реализовать
Посмотрите здесь:

Android Подскажите, как лучше сделать (справочник организаций)
Подскажите как и сложно ли написать кнопку выключения планшета Android
Как лучше реализовать компоновку? Android
Android Через что лучше всего реализовать Кликабельный TextView
Как лучше реализовать игру стандартными средствам SDK? Android
Android Подскажите на каком языке лучше писать
Как лучше реализовать вывод объёмного текста?! Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,863
Завершенные тесты: 1
27.04.2016, 19:55     Подскажите план на прогу, как лучше написать и реализовать #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
господи, да что там делать...у них есть rss лента - ее и надо парсить https://www.lostfilm.tv/rssdd.xml

1. подключаем библиотеку jsoup в файле build.gradle в зависимостях добавляем строку
XML
1
2
3
dependencies {
    compile 'org.jsoup:jsoup:1.9.1'
}
2. создаем класс-модельку для rss айтема и Runnable класс, который будет все вытягивать и парсить
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
 
public class LostFilmRssParser implements Runnable {
 
    private final RssParserCallback listener;
    private final String url;
 
    LostFilmRssParser(RssParserCallback listener, String url) {
        this.listener = listener;
        this.url = url;
    }
 
    @Override
    public void run() {
        ArrayList<RssItem> items = null;
        final Elements elements = getElements();
        if (elements != null && elements.size() > 0) items = createItems(elements);
        if (listener != null) listener.onParse(items);
    }
 
    private ArrayList<RssItem> createItems(Elements elements) {
        ArrayList<RssItem> items;
        items = new ArrayList<>();
        for (Element e: elements) {
            RssItem item = new RssItem();
            item.pubDate = e.getElementsByTag("pubDate").get(0).text();
            item.title = e.getElementsByTag("title").get(0).text();
            item.description = e.getElementsByTag("description").get(0).text();
            item.link = e.getElementsByTag("link").get(0).text();
            items.add(item);
        }
        return items;
    }
 
    private Elements getElements() {
        Elements items = null;
        try {
            Document document = Jsoup.parse(new URL(url).openStream(), "Cp1251", url);
            items = document.getElementsByTag("item");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return items;
    }
 
    public interface RssParserCallback {
        void onParse(ArrayList<RssItem> items);
    }
}

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
public class RssItem {
    public String pubDate;
    public String title;
    public String description;
    public String link;
}


3. теперь надо позаботиться о том, что бы задача (которая кстати работает в отдельном потоке) нормально вернула результат
класс, из которого мы это все будет запускать (активити или фрагмент) должен будет исплементировать интерфейс, что бы задача смогла туда вернуть результат своей работы

допустим у нам MainActivity, тогда
Java
1
public class MainActivity extends AppCompatActivity implements LostFilmRssParser.RssParserCallback
ide предложит добавить метод onParse(), копипастим
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    @Override
    public void onParse(ArrayList<RssItem> items) {
        if (items == null) {
            // что-то пошло не так, нет инета или сайт в коме, вобщем ошибка
            // если надо разширенная обработка ошибок - рефакторим самостоятельно )
        } else {
            // все замечательно, список не пустой, в нем олжно быть 15 объектов (столько в ленте)
            // в идеале, из полученного списка делать RecycleView с адаптером, но это отдельная история, уроков полно
            for (RssItem item: items) {
                System.out.println(item.pubDate);
                System.out.println(item.title);
                System.out.println(item.description);
                System.out.println(item.link);
                System.out.println("---------------------------------------");
            }
        }
    }
и где-то в коде, например в onCreate, стартуем задачу
Java
1
2
3
        final String url = "https://www.lostfilm.tv/rssdd.xml";
        LostFilmRssParser parserTask = new LostFilmRssParser(this, url);
        new Thread(parserTask).start();
4. а, да, в манифесте надо добавить разрешение
XML
1
    <uses-permission android:name="android.permission.INTERNET" />
5. PROFIT
SergioO
 Аватар для SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
27.04.2016, 22:06     Подскажите план на прогу, как лучше написать и реализовать #3
mr_aleks, я в андройд новичок, но обычно все делается стандартно и в андройде это есть:
1. получаешь контент со страницы(стандартный метод)
2. парсить можно regex (тоже билотека)
3. выводишь на экран (есть в андройд лайот html)
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 118
28.04.2016, 02:16  [ТС]     Подскажите план на прогу, как лучше написать и реализовать #4
Паблито, да реально профит. Но как по мне лучше парсить с самой страницы хоть это и не правельно, почему то линк не парсит, и в теге "description" парсит все что в нем а не только текст, почему то. Но вот опять же, на картинки получаешь ссылки, дальше видимо нужно искать стороннюю реализацию кэширования картинок...
Далее..., как это сделать что б прога сохраняла, и в последующем обновление и открытие проги обновленная инфа добавлялась к уже имеющемуся. Но напрашивается вопрос, зачем такая прога если можно сразу зайти на сайт, т.е. нужно как то пилит сервис который в фоне бы обновлял инфу постоянно (походу нужна будет бд или чет подобное), и уже потом прикручивать push уведомления да хотя бы на все новые серии. Это все пока только в голове, как реализовать без молейшего понятия, тут что б изучить эти парсеры уходит скок времени. Да Я ток начинаю в андроиде.

SergioO, jregex ?
На словах все так просто А с картинками как ?
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,068
28.04.2016, 08:11     Подскажите план на прогу, как лучше написать и реализовать #5
Аналогичная прога есть у меня, скажу сразу, время от реализации до выкладки на маркет составит для новичка минимум полгода-год. Это при прилежном старании и уделении часа по 2 разработке в день.
Нужно знать минимум: Regex, jsoup, notification, service, sql.
И дизайн, вьюхи еще красивше сделать, чтоб юзер не плевался.
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 118
28.04.2016, 09:18  [ТС]     Подскажите план на прогу, как лучше написать и реализовать #6
Rube, я исключительно для себя пишу, а вот когда полностью доработаю, мб и выложу во всеобщее обозрение. Для начала очень хочется для себя написать, т.к. появилось желания после того как я не нашел подобной проги в гугл маркете
Если я правильно догадался все таки надо бд и пилить сервис. А уже потом с пуш уведомления возиться.
Подсказали бы макет проги, или как обходиться с картинками...
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,863
Завершенные тесты: 1
28.04.2016, 11:08     Подскажите план на прогу, как лучше написать и реализовать #7
Цитата Сообщение от mr_aleks Посмотреть сообщение
Но как по мне лучше парсить с самой страницы хоть это и не правельно
это просто тупо

насчет кеширования картинок, библиотек полно - Glide/Picassa/куча разных image-loaderов
по уму картинки никуда скачивать не нужно, glide или любая другая библиотека сама их скачает, перекодикует под нужный размер и закеширует...внимание....одной строкой, обычно это делается в RecyclerView адаптере

парсить description тоже можно, но в мои планы не входило написание полностью готового приложения, я дал направление куда двигаться и как парсить
Цитата Сообщение от SergioO Посмотреть сообщение
1. получаешь контент со страницы(стандартный метод)
2. парсить можно regex (тоже билотека)
3. выводишь на экран (есть в андройд лайот html)
это вообще бред сивой кобылы и набор слов
к тому же "андройд" пишется через "и"
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 118
01.05.2016, 23:52  [ТС]     Подскажите план на прогу, как лучше написать и реализовать #8
Цитата Сообщение от Паблито Посмотреть сообщение
это просто тупо
а как по другому если в rss нет всего того что мне нужно?
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,863
Завершенные тесты: 1
02.05.2016, 10:43     Подскажите план на прогу, как лучше написать и реализовать #9
а чего нет в их ленте, но нужно?
можно парсить и страницу, тем же JSOUP-ом
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 118
02.05.2016, 16:01  [ТС]     Подскажите план на прогу, как лучше написать и реализовать #10
Паблито, я про него в первом же посте упомянул, но вы сказали что так не правильно, вот я и спрашиваю а как правильно.
А вообще, вопрос, концепции, у них в ленте rss (цифры для примера) отображаются 5 последних переводов, но если они вдруг опубликовали больше 5ти серий за день, то лента показывает только пять последних и получается что они в ленте не отображаются а видны только на странице полного списка. Так вот, если так случиться я хочу видеть список за текущий период и за предыдущий. Я бы про это не писал если бы сам не видел... Через sql бд?

ПС, я надеюсь хоть немного понятно объяснил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2016, 16:26     Подскажите план на прогу, как лучше написать и реализовать
Еще ссылки по теме:

Как лучше организовать напоминалку? Android
Как лучше сделать? Android
Android Как лучше поступить?
Подскажите как реализовать задуманное Android
Android Подскажите - написать приложение для образовательного учреждения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,863
Завершенные тесты: 1
02.05.2016, 16:26     Подскажите план на прогу, как лучше написать и реализовать #11
Цитата Сообщение от mr_aleks Посмотреть сообщение
я про него в первом же посте упомянул
да, просто там сказано про ленту, поэтому я и показывал как парсить ленту

по ссылке из первого сообщения ведь не только переводы, там все новости
ну а так да, mysql база
Yandex
Объявления
02.05.2016, 16:26     Подскажите план на прогу, как лучше написать и реализовать
Ответ Создать тему
Опции темы

Текущее время: 19:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru