Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146

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

27.04.2016, 17:02. Показов 1291. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно посетила идея написать пока только для себя прогу с взаимодействием сайта. Собственно хочу реализовать такое. Есть сайт lostfilm tv(надеюсь не реклама). Для начала хочу что б прога загружала с ленты, последнии серии которые были переведены. Проще говоря практически перенести эту страницу в приложение. К концу данной задумка прикрутить push уведомления на выбранные/интересующие тебя сериалы. Вышла серия, тебя прога уведомила, когда серию переводят они сразу же туда её постят.

Теперь самое интересное, как это реализовать. Через парсер jsoup, читать определенный текст и изображения, но с картинками там все сложно, в идеале должно быть так (как я идеал представляю, но возможно я ошибаюсь) прога парсит изображения, загружает их сразу же при открытии видимый экран, далее кеширует их и при следующих открытиях смотрит если это изображение было загружено уже, то его не загружает дабы не плодить мусора (это отностится и к описанию т.к. тексту). Через парсер можно на сколько я понял, передавать ссылки на эти картинки и в дальнейшем с ними работать загружать/сохранять и т.д.
Жду ваших мыслей куда мне копать, что читать. Как с точки зрения нормальных современных прогеров это реализовать ? т.к. читал, некоторые картинки загружают в озу, она там чет переполняется, прога вылетает и.д.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2016, 17:02
Ответы с готовыми решениями:

Здравствуйте! Подскажите как лучше реализовать!
Здравствуйте! помогите пожалуйста реализовать! Возникла такая задача:A! даны номера телефонов: 89342....... 89301....... ...

Подскажите пожалуйста как лучше реализовать условие
Подскажите пожалуйста как лучше реализовать условие: в edit1 IP-адрес если этот ip и диапазона 192.168.1.1-192.168.1.255 тогда в...

Подскажите как лучше реализовать базу данных
Всем привет! Прошу помощи в создании базы данных. Точнее подсказок и лучшего решения от людей которые с базами на Ты. Я только начал...

10
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
27.04.2016, 19:55
Лучший ответ Сообщение было отмечено mr_aleks как решение

Решение

господи, да что там делать...у них есть 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
1
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
27.04.2016, 22:06
mr_aleks, я в андройд новичок, но обычно все делается стандартно и в андройде это есть:
1. получаешь контент со страницы(стандартный метод)
2. парсить можно regex (тоже билотека)
3. выводишь на экран (есть в андройд лайот html)
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
28.04.2016, 02:16  [ТС]
Паблито, да реально профит. Но как по мне лучше парсить с самой страницы хоть это и не правельно, почему то линк не парсит, и в теге "description" парсит все что в нем а не только текст, почему то. Но вот опять же, на картинки получаешь ссылки, дальше видимо нужно искать стороннюю реализацию кэширования картинок...
Далее..., как это сделать что б прога сохраняла, и в последующем обновление и открытие проги обновленная инфа добавлялась к уже имеющемуся. Но напрашивается вопрос, зачем такая прога если можно сразу зайти на сайт, т.е. нужно как то пилит сервис который в фоне бы обновлял инфу постоянно (походу нужна будет бд или чет подобное), и уже потом прикручивать push уведомления да хотя бы на все новые серии. Это все пока только в голове, как реализовать без молейшего понятия, тут что б изучить эти парсеры уходит скок времени. Да Я ток начинаю в андроиде.

SergioO, jregex ?
На словах все так просто А с картинками как ?
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
28.04.2016, 08:11
Аналогичная прога есть у меня, скажу сразу, время от реализации до выкладки на маркет составит для новичка минимум полгода-год. Это при прилежном старании и уделении часа по 2 разработке в день.
Нужно знать минимум: Regex, jsoup, notification, service, sql.
И дизайн, вьюхи еще красивше сделать, чтоб юзер не плевался.
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
28.04.2016, 09:18  [ТС]
Rube, я исключительно для себя пишу, а вот когда полностью доработаю, мб и выложу во всеобщее обозрение. Для начала очень хочется для себя написать, т.к. появилось желания после того как я не нашел подобной проги в гугл маркете
Если я правильно догадался все таки надо бд и пилить сервис. А уже потом с пуш уведомления возиться.
Подсказали бы макет проги, или как обходиться с картинками...
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
28.04.2016, 11:08
Цитата Сообщение от mr_aleks Посмотреть сообщение
Но как по мне лучше парсить с самой страницы хоть это и не правельно
это просто тупо

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

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

ПС, я надеюсь хоть немного понятно объяснил.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.05.2016, 16:26
Цитата Сообщение от mr_aleks Посмотреть сообщение
я про него в первом же посте упомянул
да, просто там сказано про ленту, поэтому я и показывал как парсить ленту

по ссылке из первого сообщения ведь не только переводы, там все новости
ну а так да, mysql база
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2016, 16:26
Помогаю со студенческими работами здесь

Подскажите как лучше всего реализовать иерархию классов
Есть класс Seller который cдает в аренду квартиры. Квартиры находятся в жилом округе, один Seller может управлять несколькими округами, в...

Подскажите, как лучше реализовать хранение в базе следуюющих данных...
Как какова должна быть структура для хранения цен которые зависят от размеров. К примеру для одного товара цена такая ширина 1 ...

Объясните условие этого задания ( и подскажите, как лучше реализовать это на C++ )

Ребята, подскажите как лучше реализовать замену одного слова в строке, из нескольких одинаковых?
Стоит задача вкл/выкл определённые сервисы при помощи radio button/checkbox с веб-морды, путём изменения текстового файла(в lua-скрипте...

подскажите на чем лучше(и проще) реализовать подобие "эквалайзера" - "микшерного пульта" или как это еще назвать
Реально ли создать подобное на базе html? p.s. картинка прилогаеться


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru