0.1.6
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
# 0.1.6
|
||||||
|
- 信息变为本地生成
|
||||||
# 0.1.5
|
# 0.1.5
|
||||||
- 新增status字段
|
- 新增status字段
|
||||||
# 0.1.4
|
# 0.1.4
|
||||||
|
|||||||
@@ -386,12 +386,77 @@ def generate_canada_info(province: str, city: Optional[str] = None, max_attempts
|
|||||||
|
|
||||||
def get_random_canada_info(province, city) -> Dict[str, str]:
|
def get_random_canada_info(province, city) -> Dict[str, str]:
|
||||||
"""
|
"""
|
||||||
随机生成加拿大个人与地址信息,省份随机选择,城市随机选择
|
本地生成加拿大个人与地址信息(不依赖外部网络)
|
||||||
|
|
||||||
|
参数:
|
||||||
|
province (str): 省份(如 "Alberta" 或 "AB")
|
||||||
|
city (str | None): 城市(如 "Calgary"),不传则按省份随机
|
||||||
|
|
||||||
返回值:
|
返回值:
|
||||||
dict: 包含 Firstname、Lastname、全名、生日、街道地址、城市、电话、邮编、州全称
|
dict: 包含 Firstname、Lastname、全名、生日、街道地址、城市、电话、邮编、州全称
|
||||||
"""
|
"""
|
||||||
return generate_canada_info(province, city)
|
prov_abbr = _normalize_province(province)
|
||||||
|
_, _, chosen_city = _pick_coords(prov_abbr, city)
|
||||||
|
|
||||||
|
firstname, lastname = _random_name()
|
||||||
|
full_name = f"{firstname} {lastname}"
|
||||||
|
birthday = _random_birthday()
|
||||||
|
phone = _random_phone_city(prov_abbr, city or chosen_city)
|
||||||
|
|
||||||
|
def _random_street() -> str:
|
||||||
|
"""
|
||||||
|
生成本地街道地址
|
||||||
|
|
||||||
|
返回值:
|
||||||
|
str: 形如 '123 Maple Ave' 的地址
|
||||||
|
"""
|
||||||
|
house = random.randint(10, 9999)
|
||||||
|
street_roots = [
|
||||||
|
"Maple", "Oak", "Pine", "Cedar", "Elm", "Birch", "Willow", "Spruce", "Ash",
|
||||||
|
"River", "Lake", "Hill", "Queen", "King", "Main", "Victoria", "Wellington",
|
||||||
|
"Church", "College", "Centre"
|
||||||
|
]
|
||||||
|
suffixes = ["St", "Ave", "Rd", "Blvd", "Dr", "Ct", "Pl", "Ln", "Way", "Terrace"]
|
||||||
|
return f"{house} {random.choice(street_roots)} {random.choice(suffixes)}"
|
||||||
|
|
||||||
|
def _random_postal(p_abbr: str) -> str:
|
||||||
|
"""
|
||||||
|
生成加拿大邮编(A1A 1A1),首字母符合省份规范
|
||||||
|
|
||||||
|
参数:
|
||||||
|
p_abbr (str): 省份缩写
|
||||||
|
|
||||||
|
返回值:
|
||||||
|
str: 邮编
|
||||||
|
"""
|
||||||
|
allowed_letters = "ABCEGHJKLMNPRSTVXY"
|
||||||
|
prefixes = POSTAL_PREFIXES.get(p_abbr) or set(allowed_letters)
|
||||||
|
first_letter = random.choice(sorted(list(prefixes)))
|
||||||
|
|
||||||
|
def L() -> str:
|
||||||
|
return random.choice(allowed_letters)
|
||||||
|
|
||||||
|
def D() -> str:
|
||||||
|
return str(random.randint(0, 9))
|
||||||
|
|
||||||
|
return f"{first_letter}{D()}{L()} {D()}{L()}{D()}"
|
||||||
|
|
||||||
|
address_str = _random_street()
|
||||||
|
city_name = city or chosen_city
|
||||||
|
postcode = _random_postal(prov_abbr)
|
||||||
|
province_full = next((k for k, v in CA_PROVINCE_ABBR.items() if v == prov_abbr), prov_abbr)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"firstname": firstname,
|
||||||
|
"lastname": lastname,
|
||||||
|
"full_name": full_name,
|
||||||
|
"birthday": birthday,
|
||||||
|
"address_str": address_str,
|
||||||
|
"city_name": city_name,
|
||||||
|
"phone": phone,
|
||||||
|
"postcode": postcode,
|
||||||
|
"province": province_full,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user