Open Source ресурси за програмисти

Изготвени от доброволци, застъпници и членове на ПП Величие

Участвай в проектите и ти, пиши на [email protected], за да се включиш

Доброволчески проекти

Технологии, с които работим

За да участваш в някой проект, свържи се с местния координатор на ПП Величие чрез

Ресурси с отворен код

* РИК = Районни избирателни комисии

Източници на данни

Примерни файлове

Пример rik.js

var rik = {
  "1": "Благоевград",
  "2": "Бургас",
  "3": "Варна",
  "4": "Велико Търново",
  "5": "Видин",
  "6": "Враца",
  "7": "Габрово",
  "8": "Добрич",
  "9": "Кърджали",
  "10": "Кюстендил",
  "11": "Ловеч",
  "12": "Монтана",
  "13": "Пазарджик",
  "14": "Перник",
  "15": "Плевен",
  "16": "Пловдив Град",
  "17": "Пловдив Област",
  "18": "Разград",
  "19": "Русе",
  "20": "Силистра",
  "21": "Сливен",
  "22": "Смолян",
  "23": "София 23 МИР",
  "24": "София 24 МИР",
  "25": "София 25 МИР",
  "26": "София Област",
  "27": "Стара Загора",
  "28": "Търговище",
  "29": "Хасково",
  "30": "Шумен",
  "31": "Ямбол"
};

Пример rik1-towns.js

sections_towns['1'] = [
  "ГР. БАНСКО",
  "ГР. БЕЛИЦА",
  "ГР. БЛАГОЕВГРАД",
  "ГР. ГОЦЕ ДЕЛЧЕВ",
  "ГР. ДОБРИНИЩЕ",
  "ГР. КРЕСНА",
  "ГР. МЕЛНИК",
  "ГР. ПЕТРИЧ",
  "ГР. РАЗЛОГ",
  "ГР. САНДАНСКИ",
  "ГР. СИМИТЛИ",
  "ГР. ХАДЖИДИМОВО",
  "ГР. ЯКОРУДА",
  "С. АБЛАНИЦА",
  "С. АВРАМОВО",
  "С. БАБЯК",
  "С. БАЛДЕВО",
  "С. БАНИЧАН",
  "С. БАНЯ",
  "С. БАЧЕВО",
  ...
];

Пример rik1.js

sections['1'] = {
  "010100001": {
    "town": "ГР. БАНСКО",
    "address": "ГР. БАНСКО, СОУ \"НЕОФИТ РИЛСКИ\", УЛ.\"ТОДОР АЛЕКСАНДРОВ\" №9Б",
    "video": "https://evideo.bg/pe202410/01.html#010100001"
  },
  "010100002": {
    "town": "ГР. БАНСКО",
    "address": "ГР. БАНСКО, ПЛТГ\"Н.ВАПЦАРОВ\" (ГОРСКИ ТЕХНИКУМ), УЛ.\"БЪЛГАРИЯ\" №31",
    "video": "https://evideo.bg/pe202410/01.html#010100002"
  },
  "010100003": {
    "town": "ГР. БАНСКО",
    "address": "ГР. БАНСКО, ПЛТГ\"Н.ВАПЦАРОВ\" (ГОРСКИ ТЕХНИКУМ), УЛ.\"БЪЛГАРИЯ\" №31",
    "video": "https://evideo.bg/pe202410/01.html#010100003"
  },
  "010100004": {
    "town": "ГР. БАНСКО",
    "address": "ГР. БАНСКО, КЛУБ НА ПЕНСИОНЕРА, УЛ.\"ЦАР СИМЕОН\" №54",
    "video": "https://evideo.bg/pe202410/01.html#010100004"
  },
  "010100005": {
    "town": "ГР. БАНСКО",
    "address": "ГР. БАНСКО, ЧИТАЛИЩЕ \"НИКОЛА ВАПЦАРОВ\", ПЛ. \"НИКОЛА ВАПЦАРОВ\" №14",
    "video": "https://evideo.bg/pe202410/01.html#010100005"
  },
  ...
];

Инструменти с отворен код

Списък от инструменти, които сме ползвали за създаването на ресурсите с отворен код

OCR на хартиени протоколи

PDF to PNG

pdf2png_batch.py

Нужен е Python и Poppler и някои допълнителни модула

pip install pdf2image

Build на Poppler за Windows. Деархивирай и добави към PATH.

OCR на PNG

Нужен е Python и Claude API Key и някои допълнителни модула

protocol_app.zip protocol_app_gui.py

pip install Pillow
pip install anthropic

Същото нещо работи и директно в Claude

setup prompt

Трябва ми информация в табличен вид за всяка партия колко гласа има от хартиената бюлетина и от гласуване с машина, също коя секция е и кой протокол. 

Също така освен цифром между партията и цифром гласове са изписани словом гласове. 

Използвай словом за да сравниш дали коректно си разчел цифрата моля. 

Също така имай предвид че регистрираните партии за тези избори са следните с оглед вярното им разчитане:
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. БСП – ОБЕДИНЕНА ЛЕВИЦА

Scrapers

Нужен е bun

powershell -c "irm bun.sh/install.ps1 | iex"

Bulk PDF Downloader

Bulk ZIP Downloader

Javascript

Папка с Всички JSON файлове

Списък на всички РИК-ове

Всички градове, села и секции категоризирани по РИК-ове

CSV

Списък на всички секции във всички градове и села, категоризирани по РИК-ове в CSV (общо 11 626 секции, извадени от сайта на evideo)

PDF Протоколи

Непълен брой секции, извадени от сайта на evideo (11 315 файла, 4.06GB общо)

ZIP файлове

Отворени данни от ЦИК

Как се четат данните?

В файла readme_27.10.2024.txt са инструкциите как да се четат файловете

Описание на файловете

readme.txt            Файл с обяснения
cik_parties.txt       Партии, коалиции от партии и независими кандидати
local_parties.txt     Партии, коалиции от партии и независими кандидати на местно ниво
local_candidates.txt  Кандидатски листи на местно ниво
sections.txt          Списък със секциите и населените места
protocols.txt         Данни от основната част на секционните протоколи
votes.txt             Данни от разпределението на гласовете по партии/коалиции/ИК от секционните протоколи
preferences.txt       Данни от разпределението на преференции по партии/коалиции от секционните протоколи

Ето извадни за отделните файлове

cik_parties.txt

cik_parties.txt

Всеки ред от файла представя една партия/коалиция, регистрирана в ЦИК, като разделителят между полетата е ;
Полета:
  1) Номер
  2) Име

local_parties.txt

local_parties.txt

Всеки ред от файла представя една партия/коалиция/инициативен комитет, регистрирана в РИК, като разделителят между полетата е ;
Полета:
  1) Код на РИК
  2) Наименование на Община/Кметство/Район
  3) Номер
  4) Име

local_candidates.txt

local_candidates.txt

Всеки ред от файла представя един кандидат на партия/коалиция/инициативен комитет, регистриран в РИК, като разделителят между полетата е ;
Полета:
  1) Код на РИК
  2) Наименование на Община/Кметство/Район
  3) Номер на партия/коалиция/инициативен комитет
  4) Име на партия/коалиция/инициативен комитет
  5) Номер на кандидат в листата
  6) Име на кандидат

sections.txt

sections.txt

Всеки ред от файла представя една избирателна секция, като разделителят между полетата е ;
Полета:
  1) Пълен код на секция(код на район(2), община(2), адм. район(2), секция(3))
  2) Идентификатор на административна единица, за която се гласува в секцията
  3) Име на административна единица, за която се гласува в секцията
  4) ЕКАТТЕ на населеното място
  5) Име на Населено място, където е регистрирана секцията (за секциите извън страната - Държава, Населено място)
  6) Адрес на секцията
  7) Флаг мобилна секция
  8) Флаг корабна секция
  9) Брой машини за гласуване в секцията

protocols.txt

protocols.txt

Всеки ред от файла представя един секционен протокол, като разделителят между полетата е ;

Всяка точка от протокола е представена със стойност, съответстваща на позицията на точката от формуляра. Точките са разделени с ;

За всяка секция подредбата на точките се определя от формуляра, който се използва за конкретния вид избор

Общи за всички формуляри
  1) № формуляр
  2) Пълен код на секция(код на район(2), община(2), адм. район(2), секция(3))
  3) Код на РИК
  4) Фабрични номера на страниците на протокола, разделени с |
  7) А. Брой на получените бюлетини по реда на чл. 215 ИК
  8) 1. Брой на избирателите в избирателния списък при предаването му на СИК
  13) 4.а) брой на неизползваните хартиени бюлетини
  14) 4.б) общ брой на недействителните хартиени бюлетини по чл. 227, 228 и чл. 265, ал. 5, сгрешените бюлетини и унищожените от СИК бюлетини по други поводи (за създаване на образци за таблата пред изборното помещение и увредени механично при откъсване от кочана)
  15) 5. Брой на намерените в избирателната кутия хартиени бюлетини
  16) 6. Брой на намерените в избирателната кутия недействителни гласове (бюлетини)

Формуляр № 24
Протокол на СИК (Х) - Приложение № 75-НС-х от решение на ЦИК за утвърждаване на образци на изборни книжа за произвеждане на изборите
  
  
 11) 2. Брой на избирателите, вписани в допълнителната страница (под чертата) на избирателния списък в изборния ден
 12) 3. Брой на гласувалите избиратели според положените подписи в избирателния списък, включително и подписите в допълнителната страница (под чертата)
 17) 7. Брой на действителните гласове с отбелязан вот „Не подкрепям никого“
 18) 9. Общ брой на действителните гласове, подадени за кандидатските листи на партии, коалиции и инициативни комитети


Формуляр № 26
Протокол на СИК (ХМ) - Приложение № 76-НС-хм от решение на ЦИК за утвърждаване на образци на изборни книжа за произвеждане на изборите

 11) 2. Брой на избирателите, вписани в допълнителната страница (под чертата) на избирателния списък в изборния ден
 12) 3. Брой на гласувалите избиратели според положените подписи в избирателния списък, включително и подписите в допълнителната страница (под чертата)
 17) 7. Брой на действителните гласове от хартиени бюлетини с отбелязан вот „Не подкрепям никого“
 18) 9. Общ брой на действителните гласове, подадени за кандидатските листи на партии, коалиции и инициативни комитети
 19) 11. Брой на намерените в избирателната кутия бюлетини от машинно гласуване
 20) 12. Брой на действителните гласове от бюлетини от машинно гласуване с отбелязан вот „Не подкрепям никого“
 21) 14. Общ брой на действителните гласове, подадени за кандидатските листи на партии, коалиции и инициативни комитети


Формуляр № 28
Протокол на СИК (ЧХ) - Приложение № 77-НС-чх от решение на ЦИК за утвърждаване на образци на изборни книжа за произвеждане на изборите

  
 11) 2. Брой на избирателите, вписани в допълнителната страница (под чертата) на списъка за гласуване извън страната в изборния ден
 12) 3. Брой на гласувалите избиратели според положените подписи в списъка за гласуване извън страната, включително и подписите в допълнителната страница (под чертата)
 17) 7. Брой на действителните гласове с отбелязан вот „Не подкрепям никого“
 18) 9. Общ брой на действителните гласове, подадени за кандидатските листи на партии и коалиции


Формуляр № 30
Протокол на СИК (ЧХМ) - Приложение № 78-НС-чхм от решение на ЦИК за утвърждаване на образци на изборни книжа за произвеждане на изборите
 11) 2. Брой на избирателите, вписани в допълнителната страница (под чертата) на списъка за гласуване извън страната в изборния ден
 12) 3. Брой на гласувалите избиратели според положените подписи в списъка за гласуване извън страната, включително и подписите в допълнителната страница (под чертата)
 17) 7. Брой на действителните гласове от хартиени бюлетини с отбелязан вот „Не подкрепям никого“
 18) 9. Общ брой на действителните гласове, подадени за кандидатските листи на партии и коалиции
 19) 10. Брой на намерените в избирателната кутия бюлетини от машинно гласуване
 20) 11. Брой на действителните гласове от бюлетини от машинно гласуване с отбелязан вот „Не подкрепям никого“
 21) 13. Общ брой на действителните гласове, подадени за кандидатските листи на партии и коалиции

votes.txt

votes.txt

Всеки ред от файла представя действителните гласове от един секционен протокол, като разделителят между полетата е ;

Полета:
  1) № формуляр
  2) Пълен код на секция(код на район(2), община(2), адм. район(2), секция(3));
  3) Идентификатор на административна единица, за която се отнася протокола(община, кметство, район)
Следват гласовете за всяка партия, коалиция, инициативен комитет, според съответната номенклатура (в ЦИК или РИК), като данните са в последователност № П/К/ИК;действителни гласове; действителни гласове от гласуване с хартиена бюлетина; действителни гласове от гласуване с машина

preferences.txt

preferences.txt

Всеки ред от файла представя броя предпочитания за един кандидат в един секционен протокол, като разделителят между полетата е ;
Полета:
  1) № формуляр
  2) Пълен код на секция(код на район(2), община(2), адм. район(2), секция(3))
  3) Номер на партия
  4) Номер на кандидат в кандидатска листа
  5) Брой гласове
  6) Брой гласове от гласуване с хартиена бюлетина
  7) Брой гласове от гласуване с машина

Включи се и ти

Участвай в проектите и ти, пиши на [email protected], за да се включиш