python-library-ff14-the-hunt 0.0.3__tar.gz → 0.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/.cursor/skills/ff14_the_hunt-package-changelog/SKILL.md +4 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/PKG-INFO +1 -1
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/region_fetch.py +3 -1
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/pyproject.toml +1 -1
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_map_data.py +12 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/.cursor/skills/ff14_the_hunt-package-design/SKILL.md +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/.cursor/skills/ff14_the_hunt-package-preload/SKILL.md +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/.gitignore +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/README.md +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/example/__main__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/example/spawn_map_io.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/example.bat +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/client.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/enrich.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/fate_timer.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/resources.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/spawn_points.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/spawn_window.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/bear_tracker/timer_theme.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/ff14_the_hunt.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/cn.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/data/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/data/hunts_zh.json +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/data/regions_zh.json +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/detect.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/display.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/en.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/names.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/spawn_map_display.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/tag.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/models.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/loop.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/monitor_mode.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/scheduler.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/sleep_plan.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/sleep_settings.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/spawn_dedup.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/window_remaining.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/attach.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/coordinates.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/layout.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/png_meta.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/points.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/spawn_map/region_image.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/test.bat +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/__init__.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_fate_timer.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_ff14_the_hunt_service.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_locale_cn.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_monitor_mode.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_poll_scheduler.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_poll_sleep.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_dedup.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_map_points.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_window.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_untimed_marks_filter.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tools/build_locale_data.py +0 -0
- {python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/update.bat +0 -0
|
@@ -7,6 +7,10 @@ description: ff14_the_hunt 包:要求与决议;最新在上。
|
|
|
7
7
|
|
|
8
8
|
(规则见 `~/.cursor/skills/agent-project-changelog/SKILL.md`。)
|
|
9
9
|
|
|
10
|
+
## 2026-06-09
|
|
11
|
+
|
|
12
|
+
- **决议**:``region_map_image_url`` 对区域名做 URL 编码,修复含空格等区域名(如 ``Yak T'el``)拉取狩猎地图时 ``InvalidURL`` 导致 ff14hub 崩溃。发布 ``0.0.4``。
|
|
13
|
+
|
|
10
14
|
## 2026-06-08
|
|
11
15
|
|
|
12
16
|
- **决议**:``wait_or_stop`` 改为分段 ``Event.wait``(默认 1 秒一片),便于 ``stop()`` / Ctrl+C 尽快打断长睡。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import urllib.error
|
|
4
|
+
import urllib.parse
|
|
4
5
|
import urllib.request
|
|
5
6
|
|
|
6
7
|
|
|
@@ -15,7 +16,8 @@ def site_root_from_api_base(base_url: str) -> str:
|
|
|
15
16
|
def region_map_image_url(site_root: str, region: str) -> str:
|
|
16
17
|
"""区域狩猎地图 PNG 地址(与站点 ``HuntRegions`` 目录一致)。"""
|
|
17
18
|
root = site_root.rstrip("/")
|
|
18
|
-
|
|
19
|
+
encoded_region = urllib.parse.quote(region, safe="")
|
|
20
|
+
return f"{root}/static/images/HuntRegions/{encoded_region}.png"
|
|
19
21
|
|
|
20
22
|
|
|
21
23
|
class RegionMapFetcher:
|
|
@@ -48,6 +48,18 @@ def test_with_pixel_coordinates() -> None:
|
|
|
48
48
|
assert enriched[0].pixel_y == 250.0
|
|
49
49
|
|
|
50
50
|
|
|
51
|
+
def test_region_map_image_url_encodes_special_characters() -> None:
|
|
52
|
+
from ff14_the_hunt.spawn_map.region_fetch import region_map_image_url
|
|
53
|
+
|
|
54
|
+
url = region_map_image_url("https://tracker.beartoolkit.com", "Yak T'el")
|
|
55
|
+
assert (
|
|
56
|
+
url
|
|
57
|
+
== "https://tracker.beartoolkit.com/static/images/HuntRegions/Yak%20T%27el.png"
|
|
58
|
+
)
|
|
59
|
+
plain = region_map_image_url("https://tracker.beartoolkit.com", "Shaaloani")
|
|
60
|
+
assert plain == "https://tracker.beartoolkit.com/static/images/HuntRegions/Shaaloani.png"
|
|
61
|
+
|
|
62
|
+
|
|
51
63
|
def test_build_region_map_image_round_trip() -> None:
|
|
52
64
|
from ff14_the_hunt.spawn_map.region_fetch import RegionMapFetcher
|
|
53
65
|
from ff14_the_hunt.spawn_map.region_image import build_region_map_image
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/example/__main__.py
RENAMED
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/example/spawn_map_io.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/cn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/locale/en.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/models.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/ff14_the_hunt/poll/loop.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_fate_timer.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_locale_cn.py
RENAMED
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_monitor_mode.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_poll_sleep.py
RENAMED
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_dedup.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tests/test_spawn_window.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_library_ff14_the_hunt-0.0.3 → python_library_ff14_the_hunt-0.0.4}/tools/build_locale_data.py
RENAMED
|
File without changes
|
|
File without changes
|