Я некоторое время боролся с этим, и я где-то между тем, чтобы это сработало один раз в голубой луне, и полностью сломалось.
Моя конечная цель - заменить "!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, очевидно, не вариант.