Получить случайные названия городов на основе стран - PullRequest
0 голосов
/ 19 октября 2018

Я некоторое время боролся с этим, и я где-то между тем, чтобы это сработало один раз в голубой луне, и полностью сломалось.

Моя конечная цель - заменить "!R 's в словаре со случайными названиями городов из региона / страны, из которых пользователь может выбрать.Или для конкретного примера, в основном такого рода вещи: https://www.mithrilandmages.com/utilities/CityNames.php

Начав просто выходить в Интернет и копировать и вставлять списки названий городов в .csv, я понял, что это займет много времени и будетдалеко не исчерпывающий, и для этого созданы базы данных.

Поэтому я попытался заставить что-то работать, используя GeoCoder и GeoNames ... но я простоне могу заставить его работать так, как я хочу, чтобы он работал (или эффективно в этом отношении).

Ссылка на скрипт и код : https://github.com/Araxiel/CK2-Province_Set-Upper/blob/abandoned/1.3.0/Source/_workbench/databases.py

Моя текущая попытка состояла в том, чтобы просто использовать children вплоть до самого маленького потомка, но это не очень надежно и запросы занимают некоторое время.Кроме того, я не могу заставить что-то вроде United States работать как имя.Вся информация, которую я могу найти, - это вернуть конкретные значения долготы или IP-адреса в указанных местах, но это далеко от того, что я ищу.Я видел библиотеку под названием «Faker», но я вполне уверен, что это не то, что я ищу, тем более, что я не могу найти документацию о том, откуда его базы данных берут информацию.

IЯ почти готов бросить полотенце и попробовать свои силы в создании генератора имен ГСЧ, который собирает слова вместе.

Редактировать: По сути, моя текущая попытка со следующим ...

    def get_towns(country):
        import geocoder
        global geonames_username
        a = geocoder.geonames(country, key=geonames_username)
        b = geocoder.geonames(a.geonames_id, key=geonames_username, method='children')
        import random
        b_r = random.choice(b)
        c = geocoder.geonames(b_r.geonames_id, key=geonames_username, method='children')
        [...etc...]

... ломается, когда я пытаюсь указать "United States" как страну, по некоторым причинам он возвращает South America.И даже если бы я мог решить эту проблему, все, вплоть до детей с 4-5 запросами, не только невероятно неэффективно (в конечном итоге, чтобы добраться до города, потребуется около 10 секунд, то есть при 50 запросах это может занять 10 минут [иобойдется мне в 200 кредитов, это небольшая программа, которую когда-либо будет использовать только горстка людей, поэтому я не буду исчерпывать 50 000 запросов в день, но это не может быть хорошим кодированием]), но, похоже, чаще ломаетсячем нет (см. пример США).Мой вопрос в основном, если есть что-то очевидное, что я пропускаю, например, прямой способ получить выбор случайных названий городов через GeoNames или любым другим способом.И объединение почти 2 ГБ файлов .txt, очевидно, не вариант.

...