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