Масовий запис із камер на виборах

Для початку виявимо дані про всі існуючі камери. Мені здався особливо простим подальший метод: почнемо пошук за номером ділянки, з 1 до 3800. Для цього відправимо GETvybory.mos.ru/json/id_search/aaa /bbb.json, деbbbце uid, аaaaце len(bbb ). Скажімо,vybory.mos.ru/json/id_search/1/3.json

Отримаємо json з інформацією про цю ділянку, щось начебто ось цього:

Спеціальний інтерес тут>

У результаті отримаємо необхідну інформацію про камери нинішньої ділянки: 2e9dd8dc-edd4-11e2-9a6b-f0def1c0f84c 188.254.112.2 188.254.112.3 188.249-12-12 6b-f0def1c0f84c 188.254.112.2 188.254.112.3 188.254 .112.4

Далі починаються нюанси. Існує три типи камер: старі, нові та відсутні. Чим вони відрізняються я розповім трохи пізніше, спочатку розберемося, як їх розрізняти, а розрізняти їх дуже легко - необхідно відправити GET виду http://SERVER /master.m3u8?c > Нова камера поверне дещо ніби

#EXTM3U #EXT-X-VERSION:2 #EXT-X-STREAM-INF:PROGRAM- > /variant.m3u8?c >

Стара камера поверне щось таке:

#EXTM3U #EXT-X-MEDIA-SEQUENCE:136 #EXT-X-TARGETDURATION:15 #EXT-X-ALLOW-CACHE:NO #EXT-X-PROGRAM-DATE -TIME:2013-09-04T12:05:40Z #EXTINF:15, /segment.ts?c > #EXTINF:15, /segment.ts?c > #EXTINF:15, /segment.ts?c > #EXTINF:15, /segment.ts?c >

Відсутня камера не поверне нічого, крім404 C/

Тепер, коли ми вміємо отримувати інформацію про камери певної ділянки, напишемо багатопотокову парсилку, яка збере нам всю необхідну інформацію. Я вибираю складати дані в безкоштовний монголаб, але цілком можнаобійтись і звичайним shelve. Знаючи, що ділянок у Москві 3500, пробіжимося циклом від 1 до 3800. Нижче накиданий на коліні, але тим не менш, працюючий код. У ньому, очевидно, потрібно вписати своє печіно і паролі від сервера монги.

Зараз у нас є повністю зібрана база камер. На момент написання статті старих камер було 544, з ними, на жаль, вдасться працювати тільки по-старому. Але зараз у нас є і 5778 нових камер, і вони мають одну специфіку. Чанки зі старих камер через дуже короткий час протухають - потрібно постійно скачувати новий плейлист, видирати звідти лінки на чанки і качати їх, поки не протухли. Нові камери позбавлені цього недоліку. Дозволено качати чанки довільних розмірів за довільний період часу, відправивши GET виду http://SERVER /segment.ts?c > До речі, щоб закрити питання — відсутня камера, яка зареєстрована в порталі, але за фактом не працює.

Скажімо, ось якось так:

Знову ж таки, код писався екстраординарно з метою перевірки концепту і не є прикладом дотримання PEP8, але абсолютно працює. Швидкість завантаження з виразних причин залежить від багатьох факторів.