vnlunar


Namevnlunar JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/min9802/pyvnlunar
SummaryVietnamese Lunar Calendar Library for Python - Thư viện Âm lịch Việt Nam
upload_time2025-11-07 15:49:21
maintainerNone
docs_urlNone
authorMin
requires_python>=3.7
licenseNone
keywords vietnamese lunar calendar amlich lich am vietnam astronomy
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # vnlunar - Vietnamese Lunar Calendar for Python

Thư viện Âm lịch Việt Nam cho Python - Vietnamese Lunar Calendar Library

## Giới thiệu / Introduction

vnlunar là thư viện Python để chuyển đổi và tính toán lịch âm Việt Nam, dựa trên thuật toán thiên văn chính xác. Thư viện hỗ trợ:

- Chuyển đổi dương lịch <-> âm lịch
- Tính Can Chi, Ngũ Hành
- Xem ngày tốt xấu (Hoàng Đạo / Hắc Đạo)
- 12 Sao Kiến Trừ, 28 Tú Sao
- Hướng xuất hành, Tuổi xung
- Giờ Hoàng Đạo
- Và nhiều tính năng khác...

## Cài đặt / Installation

```bash
pip install vnlunar
```

Hoặc cài đặt từ source:

```bash
git clone https://github.com/min9802/pyvnlunar.git
cd pyvnlunar
pip install -e .
```

## Sử dụng cơ bản / Basic Usage

### 1. Chuyển đổi dương lịch sang âm lịch

```python
import vnlunar

# Lấy thông tin âm lịch của ngày 7/11/2025
lunar = vnlunar.get_lunar_date(7, 11, 2025)

print(f"Ngày âm lịch: {lunar['day']}/{lunar['month']}/{lunar['year']}")
print(f"Tháng nhuận: {'Có' if lunar['leap'] == 1 else 'Không'}")
```

### 2. Lấy thông tin đầy đủ về một ngày

```python
import vnlunar

info = vnlunar.get_full_info(7, 11, 2025)

print(f"Dương lịch: {info['solar']['day']}/{info['solar']['month']}/{info['solar']['year']}")
print(f"Âm lịch: {info['lunar']['day']}/{info['lunar']['month']}/{info['lunar']['year']}")
print(f"Can Chi ngày: {info['can_chi']['day']}")
print(f"Can Chi tháng: {info['can_chi']['month']}")
print(f"Can Chi năm: {info['can_chi']['year']}")
print(f"Sao: {info['12_stars']['name']} - {info['12_stars']['description']}")
print(f"Hoàng/Hắc Đạo: {info['day_type']['type']}")
```

### 3. Xem ngày tốt xấu cho các việc

```python
import vnlunar

# Tính Julian Day Number
jd = vnlunar.jdn(7, 11, 2025)

# Xem ngày có tốt cho cưới hỏi không
ket_qua = vnlunar.check_good_day(jd, "wedding")
print(f"Ngày {ket_qua['star']['name']}: {ket_qua['description']}")

# Tìm các ngày tốt để khai trương trong tháng 11/2025
start_jd = vnlunar.jdn(1, 11, 2025)
end_jd = vnlunar.jdn(30, 11, 2025)
ngay_tot = vnlunar.find_good_days(start_jd, end_jd, "opening")

print(f"\nCác ngày tốt để khai trương trong tháng 11/2025:")
for ngay in ngay_tot:
    print(f"  {ngay['solar']['day']}/{ngay['solar']['month']}/{ngay['solar']['year']} - Sao {ngay['star']['name']}")
```

### 4. Kiểm tra tuổi xung

```python
import vnlunar

jd = vnlunar.jdn(7, 11, 2025)
nam_sinh = 1990

# Kiểm tra tuổi có xung không
xung = vnlunar.check_age_conflict(jd, nam_sinh)
print(f"Năm sinh {nam_sinh} xung với ngày này: {'Có' if xung else 'Không'}")

# Lấy thông tin chi tiết về tuổi xung
tuoi_xung_info = vnlunar.get_conflicting_ages(jd, 2025)
print(f"\n{tuoi_xung_info['description']}")
print(f"Các tuổi xung trong ngày này:")
for tuoi in tuoi_xung_info['ages'][:5]:
    print(f"  Tuổi {tuoi['age']}: {tuoi['can_chi']} ({tuoi['animal']})")
```

### 5. Xem hướng xuất hành

```python
import vnlunar

jd = vnlunar.jdn(7, 11, 2025)

# Hướng theo ngày
huong_ngay = vnlunar.get_direction_info(jd)
print(f"Hướng tốt: {', '.join(huong_ngay['good_directions'])}")
print(f"Hướng xấu: {', '.join(huong_ngay['bad_directions'])}")

# Hướng theo tuổi
huong_tuoi = vnlunar.get_age_direction(1990, 2025)
print(f"\nTuổi: {huong_tuoi['age']} ({huong_tuoi['zodiac']})")
print(f"Hướng tốt: {', '.join(huong_tuoi['good_directions'])}")

# Hướng kết hợp
huong_xuat_hanh = vnlunar.get_travel_direction(jd, 1990, 2025)
print(f"\n{huong_xuat_hanh['advice']}")
```

### 6. Giờ Hoàng Đạo

```python
import vnlunar

jd = vnlunar.jdn(7, 11, 2025)

# Lấy các giờ Hoàng Đạo trong ngày
gio_hoang_dao = vnlunar.get_auspicious_hours(jd)
print("Giờ Hoàng Đạo:")
for hour in gio_hoang_dao:
    print(f"  {hour['hour_name']}: {hour['time_range']}")

# Kiểm tra một giờ cụ thể
gio_info = vnlunar.check_travel_hour(jd, "Tý")
print(f"\nGiờ {gio_info['zodiac_hour']}: {'TỐT' if gio_info['is_good'] else 'XẤU'}")
```

## Các loại việc hỗ trợ xem ngày

- `"wedding"`: Cưới hỏi
- `"building"`: Xây nhà
- `"travel"`: Xuất hành
- `"opening"`: Khai trương
- `"moving"`: Chuyển nhà
- `"investing"`: Đầu tư

## API Reference

### Core Functions

- `jdn(day, month, year)`: Chuyển ngày dương lịch sang Julian Day Number
- `jdn2date(jd)`: Chuyển Julian Day Number sang ngày dương lịch
- `get_lunar_date(day, month, year)`: Lấy thông tin âm lịch
- `convert_solar_to_lunar(day, month, year, timezone)`: Chuyển đổi với múi giờ tùy chỉnh

### Calendar Functions

- `get_can_chi(lunar)`: Lấy Can Chi của ngày, tháng, năm
- `get_year_can_chi(year)`: Lấy Can Chi của năm
- `get_year_element(year)`: Lấy Ngũ Hành của năm
- `get_auspicious_hours(jd)`: Lấy giờ Hoàng Đạo
- `get_day_of_week(jd)`: Lấy thứ trong tuần

### Astrology Functions

- `get_12_stars(lunar_day, lunar_month)`: Lấy 12 Sao Kiến Trừ
- `get_12_gods(jd)`: Lấy 12 Thần Hoàng Đạo/Hắc Đạo
- `get_12_constructions(lunar_day, lunar_month)`: Lấy Thập Nhị Trực
- `get_28_mansions(jd)`: Lấy 28 Tú Sao
- `get_nayin(jd)`: Lấy Nạp Âm
- `get_day_type(lunar_day, lunar_month)`: Kiểm tra Hoàng Đạo/Hắc Đạo
- `check_good_day(jd, activity)`: Xem ngày tốt xấu cho việc
- `find_good_days(start_jd, end_jd, activity)`: Tìm các ngày tốt

### Direction Functions

- `get_conflicting_ages(jd, current_year)`: Lấy thông tin tuổi xung
- `check_age_conflict(jd, birth_year)`: Kiểm tra tuổi xung
- `get_direction_info(jd)`: Lấy hướng theo Ngọc Hạp Thông Thư
- `get_god_directions(jd)`: Lấy hướng thần (Thần Tài, Hỷ Thần, Phúc Thần)
- `get_age_direction(birth_year, current_year)`: Hướng theo tuổi
- `get_travel_direction(jd, birth_year, current_year)`: Hướng xuất hành tổng hợp
- `check_travel_hour(jd, zodiac_hour)`: Kiểm tra giờ xuất hành

### Main Function

- `get_full_info(day, month, year)`: Lấy tất cả thông tin của một ngày

## So sánh với cnlunar (Lịch Trung Quốc)

| Tính năng | vnlunar (VN) | cnlunar (CN) |
|-----------|----------------|--------------|
| Múi giờ mặc định | UTC+7 (VN) | UTC+8 (CN) |
| Thuật toán | Thiên văn VN | Thiên văn CN |
| Tên Can Chi | Tiếng Việt | Tiếng Trung |
| Con giáp | Mèo (năm Mão) | Thỏ (năm Mão) |
| Tiết khí | Tiếng Việt | Tiếng Trung |
| Hướng xuất hành | Theo truyền thống VN | Theo truyền thống CN |

## Đóng góp / Contributing

Mọi đóng góp đều được hoan nghênh! Vui lòng:

1. Fork repository
2. Tạo branch mới (`git checkout -b feature/AmazingFeature`)
3. Commit changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to branch (`git push origin feature/AmazingFeature`)
5. Mở Pull Request

## License

Free for personal and non-commercial use.

## Version

Current version: **1.0.3**

## Credits

- Dựa trên thuật toán thiên văn của Ho Ngoc Duc
- Tham khảo: "Lịch Việt Nam - Nguyên lý và các bảng tra cứu" - Hoàng Xuân Hãn

## Liên hệ / Contact

- GitHub Issues: [https://github.com/min9802/pyvnlunar/issues](https://github.com/min9802/pyvnlunar/issues)

---

Made with ❤️ for Vietnamese Lunar Calendar

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/min9802/pyvnlunar",
    "name": "vnlunar",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "vietnamese lunar calendar amlich lich am vietnam astronomy",
    "author": "Min",
    "author_email": "hieumin9802@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e2/5f/347905126dad804b8358ce5be53c033519074fcae17d6b8a085313896e5b/vnlunar-1.0.3.tar.gz",
    "platform": null,
    "description": "# vnlunar - Vietnamese Lunar Calendar for Python\n\nTh\u01b0 vi\u1ec7n \u00c2m l\u1ecbch Vi\u1ec7t Nam cho Python - Vietnamese Lunar Calendar Library\n\n## Gi\u1edbi thi\u1ec7u / Introduction\n\nvnlunar l\u00e0 th\u01b0 vi\u1ec7n Python \u0111\u1ec3 chuy\u1ec3n \u0111\u1ed5i v\u00e0 t\u00ednh to\u00e1n l\u1ecbch \u00e2m Vi\u1ec7t Nam, d\u1ef1a tr\u00ean thu\u1eadt to\u00e1n thi\u00ean v\u0103n ch\u00ednh x\u00e1c. Th\u01b0 vi\u1ec7n h\u1ed7 tr\u1ee3:\n\n- Chuy\u1ec3n \u0111\u1ed5i d\u01b0\u01a1ng l\u1ecbch <-> \u00e2m l\u1ecbch\n- T\u00ednh Can Chi, Ng\u0169 H\u00e0nh\n- Xem ng\u00e0y t\u1ed1t x\u1ea5u (Ho\u00e0ng \u0110\u1ea1o / H\u1eafc \u0110\u1ea1o)\n- 12 Sao Ki\u1ebfn Tr\u1eeb, 28 T\u00fa Sao\n- H\u01b0\u1edbng xu\u1ea5t h\u00e0nh, Tu\u1ed5i xung\n- Gi\u1edd Ho\u00e0ng \u0110\u1ea1o\n- V\u00e0 nhi\u1ec1u t\u00ednh n\u0103ng kh\u00e1c...\n\n## C\u00e0i \u0111\u1eb7t / Installation\n\n```bash\npip install vnlunar\n```\n\nHo\u1eb7c c\u00e0i \u0111\u1eb7t t\u1eeb source:\n\n```bash\ngit clone https://github.com/min9802/pyvnlunar.git\ncd pyvnlunar\npip install -e .\n```\n\n## S\u1eed d\u1ee5ng c\u01a1 b\u1ea3n / Basic Usage\n\n### 1. Chuy\u1ec3n \u0111\u1ed5i d\u01b0\u01a1ng l\u1ecbch sang \u00e2m l\u1ecbch\n\n```python\nimport vnlunar\n\n# L\u1ea5y th\u00f4ng tin \u00e2m l\u1ecbch c\u1ee7a ng\u00e0y 7/11/2025\nlunar = vnlunar.get_lunar_date(7, 11, 2025)\n\nprint(f\"Ng\u00e0y \u00e2m l\u1ecbch: {lunar['day']}/{lunar['month']}/{lunar['year']}\")\nprint(f\"Th\u00e1ng nhu\u1eadn: {'C\u00f3' if lunar['leap'] == 1 else 'Kh\u00f4ng'}\")\n```\n\n### 2. L\u1ea5y th\u00f4ng tin \u0111\u1ea7y \u0111\u1ee7 v\u1ec1 m\u1ed9t ng\u00e0y\n\n```python\nimport vnlunar\n\ninfo = vnlunar.get_full_info(7, 11, 2025)\n\nprint(f\"D\u01b0\u01a1ng l\u1ecbch: {info['solar']['day']}/{info['solar']['month']}/{info['solar']['year']}\")\nprint(f\"\u00c2m l\u1ecbch: {info['lunar']['day']}/{info['lunar']['month']}/{info['lunar']['year']}\")\nprint(f\"Can Chi ng\u00e0y: {info['can_chi']['day']}\")\nprint(f\"Can Chi th\u00e1ng: {info['can_chi']['month']}\")\nprint(f\"Can Chi n\u0103m: {info['can_chi']['year']}\")\nprint(f\"Sao: {info['12_stars']['name']} - {info['12_stars']['description']}\")\nprint(f\"Ho\u00e0ng/H\u1eafc \u0110\u1ea1o: {info['day_type']['type']}\")\n```\n\n### 3. Xem ng\u00e0y t\u1ed1t x\u1ea5u cho c\u00e1c vi\u1ec7c\n\n```python\nimport vnlunar\n\n# T\u00ednh Julian Day Number\njd = vnlunar.jdn(7, 11, 2025)\n\n# Xem ng\u00e0y c\u00f3 t\u1ed1t cho c\u01b0\u1edbi h\u1ecfi kh\u00f4ng\nket_qua = vnlunar.check_good_day(jd, \"wedding\")\nprint(f\"Ng\u00e0y {ket_qua['star']['name']}: {ket_qua['description']}\")\n\n# T\u00ecm c\u00e1c ng\u00e0y t\u1ed1t \u0111\u1ec3 khai tr\u01b0\u01a1ng trong th\u00e1ng 11/2025\nstart_jd = vnlunar.jdn(1, 11, 2025)\nend_jd = vnlunar.jdn(30, 11, 2025)\nngay_tot = vnlunar.find_good_days(start_jd, end_jd, \"opening\")\n\nprint(f\"\\nC\u00e1c ng\u00e0y t\u1ed1t \u0111\u1ec3 khai tr\u01b0\u01a1ng trong th\u00e1ng 11/2025:\")\nfor ngay in ngay_tot:\n    print(f\"  {ngay['solar']['day']}/{ngay['solar']['month']}/{ngay['solar']['year']} - Sao {ngay['star']['name']}\")\n```\n\n### 4. Ki\u1ec3m tra tu\u1ed5i xung\n\n```python\nimport vnlunar\n\njd = vnlunar.jdn(7, 11, 2025)\nnam_sinh = 1990\n\n# Ki\u1ec3m tra tu\u1ed5i c\u00f3 xung kh\u00f4ng\nxung = vnlunar.check_age_conflict(jd, nam_sinh)\nprint(f\"N\u0103m sinh {nam_sinh} xung v\u1edbi ng\u00e0y n\u00e0y: {'C\u00f3' if xung else 'Kh\u00f4ng'}\")\n\n# L\u1ea5y th\u00f4ng tin chi ti\u1ebft v\u1ec1 tu\u1ed5i xung\ntuoi_xung_info = vnlunar.get_conflicting_ages(jd, 2025)\nprint(f\"\\n{tuoi_xung_info['description']}\")\nprint(f\"C\u00e1c tu\u1ed5i xung trong ng\u00e0y n\u00e0y:\")\nfor tuoi in tuoi_xung_info['ages'][:5]:\n    print(f\"  Tu\u1ed5i {tuoi['age']}: {tuoi['can_chi']} ({tuoi['animal']})\")\n```\n\n### 5. Xem h\u01b0\u1edbng xu\u1ea5t h\u00e0nh\n\n```python\nimport vnlunar\n\njd = vnlunar.jdn(7, 11, 2025)\n\n# H\u01b0\u1edbng theo ng\u00e0y\nhuong_ngay = vnlunar.get_direction_info(jd)\nprint(f\"H\u01b0\u1edbng t\u1ed1t: {', '.join(huong_ngay['good_directions'])}\")\nprint(f\"H\u01b0\u1edbng x\u1ea5u: {', '.join(huong_ngay['bad_directions'])}\")\n\n# H\u01b0\u1edbng theo tu\u1ed5i\nhuong_tuoi = vnlunar.get_age_direction(1990, 2025)\nprint(f\"\\nTu\u1ed5i: {huong_tuoi['age']} ({huong_tuoi['zodiac']})\")\nprint(f\"H\u01b0\u1edbng t\u1ed1t: {', '.join(huong_tuoi['good_directions'])}\")\n\n# H\u01b0\u1edbng k\u1ebft h\u1ee3p\nhuong_xuat_hanh = vnlunar.get_travel_direction(jd, 1990, 2025)\nprint(f\"\\n{huong_xuat_hanh['advice']}\")\n```\n\n### 6. Gi\u1edd Ho\u00e0ng \u0110\u1ea1o\n\n```python\nimport vnlunar\n\njd = vnlunar.jdn(7, 11, 2025)\n\n# L\u1ea5y c\u00e1c gi\u1edd Ho\u00e0ng \u0110\u1ea1o trong ng\u00e0y\ngio_hoang_dao = vnlunar.get_auspicious_hours(jd)\nprint(\"Gi\u1edd Ho\u00e0ng \u0110\u1ea1o:\")\nfor hour in gio_hoang_dao:\n    print(f\"  {hour['hour_name']}: {hour['time_range']}\")\n\n# Ki\u1ec3m tra m\u1ed9t gi\u1edd c\u1ee5 th\u1ec3\ngio_info = vnlunar.check_travel_hour(jd, \"T\u00fd\")\nprint(f\"\\nGi\u1edd {gio_info['zodiac_hour']}: {'T\u1ed0T' if gio_info['is_good'] else 'X\u1ea4U'}\")\n```\n\n## C\u00e1c lo\u1ea1i vi\u1ec7c h\u1ed7 tr\u1ee3 xem ng\u00e0y\n\n- `\"wedding\"`: C\u01b0\u1edbi h\u1ecfi\n- `\"building\"`: X\u00e2y nh\u00e0\n- `\"travel\"`: Xu\u1ea5t h\u00e0nh\n- `\"opening\"`: Khai tr\u01b0\u01a1ng\n- `\"moving\"`: Chuy\u1ec3n nh\u00e0\n- `\"investing\"`: \u0110\u1ea7u t\u01b0\n\n## API Reference\n\n### Core Functions\n\n- `jdn(day, month, year)`: Chuy\u1ec3n ng\u00e0y d\u01b0\u01a1ng l\u1ecbch sang Julian Day Number\n- `jdn2date(jd)`: Chuy\u1ec3n Julian Day Number sang ng\u00e0y d\u01b0\u01a1ng l\u1ecbch\n- `get_lunar_date(day, month, year)`: L\u1ea5y th\u00f4ng tin \u00e2m l\u1ecbch\n- `convert_solar_to_lunar(day, month, year, timezone)`: Chuy\u1ec3n \u0111\u1ed5i v\u1edbi m\u00fai gi\u1edd t\u00f9y ch\u1ec9nh\n\n### Calendar Functions\n\n- `get_can_chi(lunar)`: L\u1ea5y Can Chi c\u1ee7a ng\u00e0y, th\u00e1ng, n\u0103m\n- `get_year_can_chi(year)`: L\u1ea5y Can Chi c\u1ee7a n\u0103m\n- `get_year_element(year)`: L\u1ea5y Ng\u0169 H\u00e0nh c\u1ee7a n\u0103m\n- `get_auspicious_hours(jd)`: L\u1ea5y gi\u1edd Ho\u00e0ng \u0110\u1ea1o\n- `get_day_of_week(jd)`: L\u1ea5y th\u1ee9 trong tu\u1ea7n\n\n### Astrology Functions\n\n- `get_12_stars(lunar_day, lunar_month)`: L\u1ea5y 12 Sao Ki\u1ebfn Tr\u1eeb\n- `get_12_gods(jd)`: L\u1ea5y 12 Th\u1ea7n Ho\u00e0ng \u0110\u1ea1o/H\u1eafc \u0110\u1ea1o\n- `get_12_constructions(lunar_day, lunar_month)`: L\u1ea5y Th\u1eadp Nh\u1ecb Tr\u1ef1c\n- `get_28_mansions(jd)`: L\u1ea5y 28 T\u00fa Sao\n- `get_nayin(jd)`: L\u1ea5y N\u1ea1p \u00c2m\n- `get_day_type(lunar_day, lunar_month)`: Ki\u1ec3m tra Ho\u00e0ng \u0110\u1ea1o/H\u1eafc \u0110\u1ea1o\n- `check_good_day(jd, activity)`: Xem ng\u00e0y t\u1ed1t x\u1ea5u cho vi\u1ec7c\n- `find_good_days(start_jd, end_jd, activity)`: T\u00ecm c\u00e1c ng\u00e0y t\u1ed1t\n\n### Direction Functions\n\n- `get_conflicting_ages(jd, current_year)`: L\u1ea5y th\u00f4ng tin tu\u1ed5i xung\n- `check_age_conflict(jd, birth_year)`: Ki\u1ec3m tra tu\u1ed5i xung\n- `get_direction_info(jd)`: L\u1ea5y h\u01b0\u1edbng theo Ng\u1ecdc H\u1ea1p Th\u00f4ng Th\u01b0\n- `get_god_directions(jd)`: L\u1ea5y h\u01b0\u1edbng th\u1ea7n (Th\u1ea7n T\u00e0i, H\u1ef7 Th\u1ea7n, Ph\u00fac Th\u1ea7n)\n- `get_age_direction(birth_year, current_year)`: H\u01b0\u1edbng theo tu\u1ed5i\n- `get_travel_direction(jd, birth_year, current_year)`: H\u01b0\u1edbng xu\u1ea5t h\u00e0nh t\u1ed5ng h\u1ee3p\n- `check_travel_hour(jd, zodiac_hour)`: Ki\u1ec3m tra gi\u1edd xu\u1ea5t h\u00e0nh\n\n### Main Function\n\n- `get_full_info(day, month, year)`: L\u1ea5y t\u1ea5t c\u1ea3 th\u00f4ng tin c\u1ee7a m\u1ed9t ng\u00e0y\n\n## So s\u00e1nh v\u1edbi cnlunar (L\u1ecbch Trung Qu\u1ed1c)\n\n| T\u00ednh n\u0103ng | vnlunar (VN) | cnlunar (CN) |\n|-----------|----------------|--------------|\n| M\u00fai gi\u1edd m\u1eb7c \u0111\u1ecbnh | UTC+7 (VN) | UTC+8 (CN) |\n| Thu\u1eadt to\u00e1n | Thi\u00ean v\u0103n VN | Thi\u00ean v\u0103n CN |\n| T\u00ean Can Chi | Ti\u1ebfng Vi\u1ec7t | Ti\u1ebfng Trung |\n| Con gi\u00e1p | M\u00e8o (n\u0103m M\u00e3o) | Th\u1ecf (n\u0103m M\u00e3o) |\n| Ti\u1ebft kh\u00ed | Ti\u1ebfng Vi\u1ec7t | Ti\u1ebfng Trung |\n| H\u01b0\u1edbng xu\u1ea5t h\u00e0nh | Theo truy\u1ec1n th\u1ed1ng VN | Theo truy\u1ec1n th\u1ed1ng CN |\n\n## \u0110\u00f3ng g\u00f3p / Contributing\n\nM\u1ecdi \u0111\u00f3ng g\u00f3p \u0111\u1ec1u \u0111\u01b0\u1ee3c hoan ngh\u00eanh! Vui l\u00f2ng:\n\n1. Fork repository\n2. T\u1ea1o branch m\u1edbi (`git checkout -b feature/AmazingFeature`)\n3. Commit changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to branch (`git push origin feature/AmazingFeature`)\n5. M\u1edf Pull Request\n\n## License\n\nFree for personal and non-commercial use.\n\n## Version\n\nCurrent version: **1.0.3**\n\n## Credits\n\n- D\u1ef1a tr\u00ean thu\u1eadt to\u00e1n thi\u00ean v\u0103n c\u1ee7a Ho Ngoc Duc\n- Tham kh\u1ea3o: \"L\u1ecbch Vi\u1ec7t Nam - Nguy\u00ean l\u00fd v\u00e0 c\u00e1c b\u1ea3ng tra c\u1ee9u\" - Ho\u00e0ng Xu\u00e2n H\u00e3n\n\n## Li\u00ean h\u1ec7 / Contact\n\n- GitHub Issues: [https://github.com/min9802/pyvnlunar/issues](https://github.com/min9802/pyvnlunar/issues)\n\n---\n\nMade with \u2764\ufe0f for Vietnamese Lunar Calendar\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Vietnamese Lunar Calendar Library for Python - Th\u01b0 vi\u1ec7n \u00c2m l\u1ecbch Vi\u1ec7t Nam",
    "version": "1.0.3",
    "project_urls": {
        "Bug Reports": "https://github.com/yourusername/vnlunar/issues",
        "Documentation": "https://github.com/yourusername/vnlunar#readme",
        "Homepage": "https://github.com/min9802/pyvnlunar",
        "Source": "https://github.com/yourusername/vnlunar"
    },
    "split_keywords": [
        "vietnamese",
        "lunar",
        "calendar",
        "amlich",
        "lich",
        "am",
        "vietnam",
        "astronomy"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5866b41ebde65e78b7f3e76e4a76e6be972b49564ccd5f525d0ea7986b6e62bc",
                "md5": "532268292c652a192995e9e26827763f",
                "sha256": "fc2860679e9936fef80563b6156ca55f7f2cb73fb026a0547defa54fb52174d4"
            },
            "downloads": -1,
            "filename": "vnlunar-1.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "532268292c652a192995e9e26827763f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 23374,
            "upload_time": "2025-11-07T15:49:20",
            "upload_time_iso_8601": "2025-11-07T15:49:20.628536Z",
            "url": "https://files.pythonhosted.org/packages/58/66/b41ebde65e78b7f3e76e4a76e6be972b49564ccd5f525d0ea7986b6e62bc/vnlunar-1.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e25f347905126dad804b8358ce5be53c033519074fcae17d6b8a085313896e5b",
                "md5": "a34554674d876f4689388f8ef1da5242",
                "sha256": "9178b200908fad94a80eff2f15d7c9b5121eaf3a19c9c8f5997c2f6588004c36"
            },
            "downloads": -1,
            "filename": "vnlunar-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a34554674d876f4689388f8ef1da5242",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 27596,
            "upload_time": "2025-11-07T15:49:21",
            "upload_time_iso_8601": "2025-11-07T15:49:21.442491Z",
            "url": "https://files.pythonhosted.org/packages/e2/5f/347905126dad804b8358ce5be53c033519074fcae17d6b8a085313896e5b/vnlunar-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-07 15:49:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "min9802",
    "github_project": "pyvnlunar",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "vnlunar"
}
        
Min
Elapsed time: 3.22260s