9 changed files with 1789593 additions and 7 deletions
-
3apps/api/urls.py
-
3apps/api/views/__init__.py
-
95apps/api/views/api_views.py
-
2config/urls.py
-
86utils/country_city_list/generate_city_list.py
-
1777382utils/country_city_list/large_cities_file.json
-
10507utils/country_city_list/optimized_cities.json
-
26utils/country_city_list/optimized_countries.json
-
1496utils/country_city_list/raw_countries.json
@ -0,0 +1,86 @@ |
|||||
|
import json |
||||
|
|
||||
|
# 1. تنظیمات اولیه: کشورهایی که میخواهید نگه دارید را اینجا وارد کنید |
||||
|
# میتوانید کدهای دیگر مثل 'IR', 'RU' و غیره را به این لیست اضافه یا کم کنید |
||||
|
TARGET_COUNTRIES = {'CN', 'TR', 'IR', 'RU',} |
||||
|
|
||||
|
# زبان پیشفرض |
||||
|
DEFAULT_LANGUAGE = "en" |
||||
|
|
||||
|
# مسیر فایل ورودی (فایل حجیم شما) و فایل خروجی |
||||
|
input_file_path = 'large_cities_file.json' |
||||
|
output_file_path = 'optimized_cities.json' |
||||
|
# ۲. مسیر فایلها |
||||
|
inputc_file_path = 'raw_countries.json' # اسم فایل خامی که الان فرستادید |
||||
|
outputc_file_path = 'optimized_countries.json' # اسم فایلی که فقط کشورهای مدنظر را دارد |
||||
|
|
||||
|
def process_cities_data(): |
||||
|
structured_data = {} |
||||
|
|
||||
|
try: |
||||
|
print("در حال خواندن فایل اصلی شهرها...") |
||||
|
with open(input_file_path, 'r', encoding='utf-8-sig') as f: |
||||
|
content = f.read().strip() |
||||
|
cities = json.loads(content) |
||||
|
|
||||
|
print("در حال فیلتر و مرتبسازی دیتای شهرها...") |
||||
|
for city in cities: |
||||
|
country_code = city.get('country') |
||||
|
city_name = city.get('name') |
||||
|
|
||||
|
if country_code in TARGET_COUNTRIES: |
||||
|
|
||||
|
# تغییر جدید: اگر کشور وجود نداشت، یک لیست (آرایه) ایجاد میکنیم |
||||
|
if country_code not in structured_data: |
||||
|
structured_data[country_code] = [ |
||||
|
{ |
||||
|
"language_code": DEFAULT_LANGUAGE, |
||||
|
"title": [] |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
# اضافه کردن شهر به لیست title در اولین زبان (ایندکس 0) |
||||
|
if city_name not in structured_data[country_code][0]["title"]: |
||||
|
structured_data[country_code][0]["title"].append(city_name) |
||||
|
|
||||
|
with open(output_file_path, 'w', encoding='utf-8') as f: |
||||
|
json.dump(structured_data, f, ensure_ascii=False, indent=2) |
||||
|
|
||||
|
print(f"عملیات شهرها با موفقیت انجام شد! خروجی در: {output_file_path}") |
||||
|
|
||||
|
except Exception as e: |
||||
|
print(f"خطا در اسکریپت شهرها: {e}") |
||||
|
|
||||
|
def filter_countries_data(): |
||||
|
filtered_countries = {} |
||||
|
|
||||
|
try: |
||||
|
print("در حال خواندن فایل کشورها...") |
||||
|
with open(inputc_file_path, 'r', encoding='utf-8-sig') as f: |
||||
|
# چون فایل شما الان یک دیکشنری (Object) است، مستقیم آن را لود میکنیم |
||||
|
all_countries = json.load(f) |
||||
|
|
||||
|
print("در حال استخراج کشورهای مدنظر...") |
||||
|
# بررسی میکنیم که کدام کلیدها (کد کشورها) در فایل اصلی وجود دارند |
||||
|
for country_code, country_data in all_countries.items(): |
||||
|
|
||||
|
# اگر کد کشور داخل لیست ما بود، کل آن بخش را به فایل جدید منتقل میکنیم |
||||
|
if country_code in TARGET_COUNTRIES: |
||||
|
filtered_countries[country_code] = country_data |
||||
|
|
||||
|
# ذخیره فایل جدید |
||||
|
with open(outputc_file_path, 'w', encoding='utf-8') as f: |
||||
|
json.dump(filtered_countries, f, ensure_ascii=False, indent=2) |
||||
|
|
||||
|
print(f"✅ عملیات با موفقیت انجام شد! فایل جداشده در مسیر زیر ساخته شد:\n{outputc_file_path}") |
||||
|
|
||||
|
except FileNotFoundError: |
||||
|
print(f"❌ خطا: فایل '{inputc_file_path}' پیدا نشد!") |
||||
|
except json.JSONDecodeError as e: |
||||
|
print(f"❌ خطا در ساختار JSON: {e}") |
||||
|
except Exception as e: |
||||
|
print(f"❌ یک خطای غیرمنتظره رخ داد: {e}") |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
process_cities_data() |
||||
|
filter_countries_data() |
||||
1777382
utils/country_city_list/large_cities_file.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
10507
utils/country_city_list/optimized_cities.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,26 @@ |
|||||
|
{ |
||||
|
"CN": [ |
||||
|
{ |
||||
|
"language_code": "en", |
||||
|
"title": "China" |
||||
|
} |
||||
|
], |
||||
|
"IR": [ |
||||
|
{ |
||||
|
"language_code": "en", |
||||
|
"title": "Iran (Islamic Republic of)" |
||||
|
} |
||||
|
], |
||||
|
"RU": [ |
||||
|
{ |
||||
|
"language_code": "en", |
||||
|
"title": "Russian Federation (the)" |
||||
|
} |
||||
|
], |
||||
|
"TR": [ |
||||
|
{ |
||||
|
"language_code": "en", |
||||
|
"title": "Türkiye" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
1496
utils/country_city_list/raw_countries.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue