Есть проблема. Нужен актуальный список городов, используемых вконтакте с их внутренними идентификаторами.
Через API за раз можно получить не больше 100 ~ 150 городов, и это если повезет, поскольку приходится перебирать все возможные буквенные последовательности (местами до седьмой буквы), еще лимит в три запроса от пользователя в секунду… В общем с учетом немгновенного ответа по прикидкам выходит что перебирать города скриптик будет пару суток, что в принципе приемлимо, но хотелось бы все-таки от этого отказаться.
Посему вопрос:
1. Есть ли у кого-нибудь база городов, которая используется вконтакте?
Дополнительная проблема заключается в том, что вконтакте использует национальные названия городов (например Лиссабон у них называется Lisboa, а, например, в FB он числится как Lisbon), что подводит нас к следующему вопросу:
2. Есть ли у кого-нибудь их исходная база, с какими-нибудь более общеупотребительными идентификаторами или с названиями на английском?
В то же время, если таковой базы не найдется, я буду пытаться скоррелировать то, что удастся найти или стянуть из API с базой geoNames, для получения общеупотребительных имен, что вызывает третий вопрос:
3. У кого есть опыт корреляции данных из разных баз городов, в идеале применительно к geoNames?
P.S. Также есть необходимость заполнить для большинства городов колонку «Население», но после решения вышеописанных вопросов это уже сущий пустяк и точность в уже не так важно как в вышеперечисленных проблемах.
Ох, намучился я в свое время с этим API, в итоге отказался от использования их базы вообще, а для контактовских юзеров искал город в собственной базе по названию.
ВК проводил конкурс разработчиков на C. Там требовалось сделать подсказчик населённого пункта. Делаю вывод, что ВК использует именно эту базу.
Там есть, в частности: ссылка на сайт geonames.org, и дамп этого сайта. Есть названия населённых пунктов, их иерархия (город/область), население, альтернативные названия (в т.ч. на английском).
У меня есть база, которую тащили через API до меня, и она утащилась с пробелами (скрипты не сохранились, поэтому сказать почему и как ее «дотащить» нельзя, а проблема выяснилась только сейчас), так вот при попытке сопоставить ее с geoNames вылезает куча проблем из-за дубликатов в обеих базах. При этом некоторые русские города из контакта там вообще не находятся. Из чего я делаю вывод, что если geoNames и использовалась — то не для русских городов. Плюс остается загадкой зачем они брали национальное название лиссабона, если в geoNames основным является английское.
База данных городов ВКонтакте, включая коды городов "ВКонтакте" для Украины, России и Беларуси в формате SQL-дампа.
В базе содержится приблизительно: Украина — 746 городов, Россия — 2,505 городов, Беларусь — 147 города. Ссылка: sauron.org.ua/post/90