Android до Держдуми доведе або Мобілізація громадянської свідомості



Як завсідники Хабра напевно знають, я цікавлюся книгами про політику: habrahabr.ru/post/290210. А ще я цікавлюся програмуванням, особливо на тих платформах, на яких раніше не програмував – майже як про гори у Висоцького. Так співпало, що на той момент, коли я почав вивчати Android, виявилося що на носі — вибори в Держдуму – той самий державний орган, який приймає ті чудові закони, про яких ми читали і чули. Щоб поєднати приємне з корисним, я вирішив написати під Android просту програму, будує на основі статистики голосування партійних фракція їх рейтинг, з урахуванням думки користувача: якщо користувач закон не схвалює, а майже вся партійна фракція голосувала за цей закон, то така партія користувачеві не підходить, і вибирати її в наступне скликання Держдуми не варто. Спочатку це були лише уповільнені ідеї, але потім мені попалася стаття habrahabr.ru/post/306744, і я остаточно переконався в тому, що така програма буде корисна не тільки для мого самоосвіти.

Для початку я подивився, чи є подібні програми в більш розвинених з політичної точки зору країнах. Знайшлося таких дуже мало, буквально одиниці, наприклад, app.appsgeyser.com/political%20advisor. Всі вони більше були схожі на аггрегаторы навколополітичних новин. Інше, знайдене на Google Play по слову politics було, або іграми типу симулятора політика, або електронними книгами, що мають це слово в назві. Таким чином, вчитися не було в кого.

Далі я зайнявся отриманням дані про голосування. Як не дивно, виявилося, що їх треба шукати на сайті Держдуми. Формат даних на сторінці з результатами виявився досить простим, тільки голосування «За» чомусь позначалося константою «-1» — що наводить на роздуми з приводу того, що в самій Держдумі думають про свої «За».

На швидку руку, був написаний site scraper – програма, яка автоматично зчитує дані з сайту, ходячи по ньому як звичайний користувач, і ввечері того ж дня запустив її. Дані скачують всю ніч, вже не знаю, що подумали адміністратори сервера Держдуми. Після цього вийшло кілька .csv-файлів, найоб'ємніший з яких займав на диску 89Мб – містив у собі голоси депутатів, за всіма голосуваннями, що проходив у Держдумі цього скликання, їх було кілька десятків тисяч.
Треба було їх прорідити – вибрати тільки самі істотні голосування і закони. Довелося зайнятися цим вручну, тут автоматизація не допоможе. У підсумку я вибрав 19 найрезонансніших з прийнятих Держдумою законопроектів, і підсумки голосувань того читання законопроекту, де він був остаточно прийнятий. Все це було складено у таблиці БД Sqlite. Тільки після цього я дізнався, що у Держдуми є свій API, яким я міг би скористатися, не завантажуючи дані таким велосипедно-варварським чином, але було вже пізно.

Після цього створивши в Android Studio заготівлю проекту Tabbed-інтерфейс, я почав писати сам додаток. Опущу подробиці перипетій з Android, Java, моторошно гальмівними Gradle і Android Studio, з кодуванням в SQLite, і з ListFragment, який вперто ховав останній рядок прокручуваного списку під navigation bar, хоча я йому поставив ознака appbar_scrolling_view_behavior.
Головне – це те, що через 5 днів додаток було готове.
Ось пару скріншотів його екранів (усього їх там 3):



image

Тепер додаток треба було кудись викласти. Відомий всім Google Play за реєстрації розробника просить 15$. Витрачати цю суму не дуже хотілося, і я вирішив викласти додаток у Amazon App Store – він розміщує Android-додатки безкоштовно, хоча, щоб там викласти додаток, доведеться неабияк попітніти над формами введення, які все треба заповнити, і в яких чомусь немає російської мови в списку вибору локалізацій.

У підсумку вийшло маленьке, може бути кілька нудне, але все одно симпатичне додаток «Робоизбиратель-2016», яке, я сподіваюся, найближчим часом з'явиться в Amazon App Store, коли пройде модерацію. Для самих нетерплячих — я виклав .apk ось тут: yadi.sk/d/sRQmcZ9Euim5t.

А в якості післямови до статті, процитую частину тексту з вікна «Про програму»: «Автор програми не вкладав у неї ніякого пристрасті ні до однієї з партій, і поставив своєю метою не агітацію, а залучення уваги ІТ-спільноти та всіх інших російських громадян до майбутніх виборів в Держдуму».

Репозиторій програми тут: bitbucket.org/lebedevsergey/votershelper/overview

Завантажені дані голосування викладені тут: yadi.sk/d/LluZ0_15ugtDb

І, так, якщо у когось є можливість викласти додаток в Google Play — я не проти.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.