Rutor Parser
Предисловие
В интернете часто ходят слухи, что можно легко зарабатывать
на мобильных приложениях. Где-то я видел статистику 100$ за 10 000
активных пользователей. Вот я и решил попробовать написать приложение, тем
более что, наконец, нашлась нереализованная, на мой взгляд, идея, причем нужная
мне самому.
Идея
Я иногда скачивают торренты на мобильный телефон, но
заходить на сайт и пытаться там попасть в магнет-ссылку, а еще надоедливая
реклама. Я залез в google play но там не было удобных приложения для rutor и rutracker (для rutracker появились
некоторое время назад удобные приложения). Поэтому я решил написать такое
приложение – парсер формы поиска rutor с большими кнопками для скачки.
Естественно для самого скачивания нужно пользоваться торрент-клиентами типа Flud, utorrent и др.
Девелопмент
Разработка была сделана по принципу – быстро вывести проект
на рынок, т.к. если гнаться за прекрасным, с точки зрения инженера, то можно
надолго засеть за кодингом, а ведь еще есть работа\семья\отдых.
Пользователь нажимает на кнопку поиска. Загружаем html через
библиотеку Jsoup. Запрос происходт на урл search для rutor с
сортировкой по убыванию сидов. Делаем это в отдельном треде, чтобы не лочился
экран (требование гугла). Далее парсим html – выкусываем магнет-ссылки и описание. Затем результат
кладем в WebView. Причем
результат оформлен в виде простой верстки. Благодаря WebView магнет-ссылки положенные в тег <a> отлично распознаются
сторонней программой торрент-клиентом и после нажатия на ссылку открывается
программа с запросом на скачивание.
Подробнее см. исходный код (код несколько устарел) – здесь.
Подробнее см. исходный код (код несколько устарел) – здесь.
Все технические вопросы легко решались поиском в интернете. Единственно, что не очень понятно это описание как сделать приложение signed и подключить рекламу – пришлось внимательно читать, что написано.
Перечислю некоторые сложности и их решения.
- Обычно для того чтобы отобразить html используется WebView#loadData, но это метод не понимает русский язык, поэтому нужно пользоваться WebView#loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
- Чтобы получить русский язык из EditText нужно делать такой финт String searchText = new String(searchEditText.getText().toString().getBytes(), "UTF-8");
- Компиляция программы вызывала ошибку, когда я пытался анализировать DOM-дерево в главном треде. Решение простое – использовать AsyncTask
- Прежде чем выложить приложение его нужно подписать иначе google play его не позволить выложить. Решение этой проблемы можно прочитать здесь.
- Выкладывание приложения происходит не мгновенно - решение - просто нужно подождать. Обычно в течение часа, но на выходных у меня было ожидание 1 день.
Литература
- https://developer.android.com/reference/android/webkit/WebView.html
- http://stackoverflow.com/questions/2116162/how-to-display-html-in-textview
- http://developer.alexanderklimov.ru/android/library/jsoup.php
- https://developer.android.com/reference/android/content/Intent.html#Intent()
- http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application
- https://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
- https://habrahabr.ru/sandbox/93869/
- http://developer.alexanderklimov.ru/android/publish.php (выкладывание приложения)
Цифры
Я потратил суммарно 16mh (man hour):
- 1h – дизаин
- 7h – билд
- 3h – регистрация на сервиса google
- 2h – на написание этой статьи
- 3h – багофикс по фидбеку от коллег\друзей + ожидание из-за не многовенной публикации на google play
Планы
Есть много планов на добавление новой функциональности:
поддержки топ вкладки, rutracker,
планшетного режима; рефакторинг кода. Ну и проверить, сколько субективно для
меня дает заработать реклама от google.
И конечно жду вашего фидбека.
Комментарии
Отправить комментарий