Отримуємо i18n список країн, регіонів, населених пунктів з вконтакте

Отримати базу даних країн, регіонів, населених пунктів з перекладом назв і зв'язками безкоштовно і без реєстрації? Це реально!

database.getCountries - Повертає список країн.

database.getRegions - Повертає список регіонів.

database.getCities - Повертає список населених пунктів.

database.getCountriesById - Повертає інформацію про країни по їх ідентифікаторів

database.getCitiesById - Повертає інформацію про міста по їх ідентифікаторів.

параметри:
v - вказує на версію API. У різних версіях структура JSON буде різною. Наприклад, починаючи з версії 5.0 додано значення count, яке містить загальну кількість елементів у вибірці і при спільному використанні з параметром offset допоможе отримати всі значення. За замовчуванням дані повертаються в старій версії (мабуть для сумісності зі старими програмами).
count - максимальна кількість значень, що повертаються методом. Максимальне значення параметра, яке можна задати, становить 1000 елементів. Мінімальна і значення за замовчуванням для кожного методу може відрізнятися і слід звірятися з документацією.
need_all - необов'язковий параметр, за замовчуванням дорівнює «0», вказує на те, що не слід робити вибірку невеликих регіонів / країн / населених пунктів
Інші параметри для кожної функції розписувати немає сенсу, так вони є в офіційній документації, перейдемо ж до неофіційних можливостям:

Отримуємо список країн для різних мов

Ось короткий список ідентифікаторів мов:

Отримуємо список регіонів для різних мов

Перелік параметрів, для методу і опис можна подивитися в документації. Однак варто зауважити, що повернутий JSON може бути порожнім, т. Е. Не для всіх країн можуть бути задані регіони. в такому випадку, при отриманні списку міст параметр region_id можна опустити.

Отримуємо список населених пунктів

Повертаються дані для кожного населеного пункту можуть також містити наступні параметри:
area - назва району (провінції і т. д.)
important рівне «1» - позначення великих міст, з'являється тільки при використанні параметра need_all

Увага! Деякі регіони можуть не містити населених пунктів (або самі бути населеними пунктами, як я зрозумів).

Деякі отримані значення можуть містити спецсимволи, теги (наприклад і
).

На даний момент всі нюанси, які помітив при отриманні даних описав в статті. Отримав сирої дамп, наспіх написаним парсером з помилкою (в дампі НЕ вивантажені міста, що не належать до жодного з регіонів). Процес вивантаження зайняв 4 години. При імпорті в Postgres вилітали помилки, що виникають із за недостатнього екранування деяких символів. Через кілька днів планую переписати парсер і сформувати більш «чистий» дамп + зробити дампи в декількох форматах.

Сирий дамп завантажує:
234 країни
3721 регіонів
1896563 міст

Переклади: Російська, Українська, Англійська, Іспанська, Португальська, Німецька, Французька, Італійська