Spaces:
Running
Running
Update app/screener.py
Browse files- app/screener.py +3 -14
app/screener.py
CHANGED
|
@@ -4,20 +4,9 @@ from bs4 import BeautifulSoup
|
|
| 4 |
from typing import List, Tuple
|
| 5 |
|
| 6 |
from . import persist
|
|
|
|
| 7 |
|
| 8 |
|
| 9 |
-
# ===============================
|
| 10 |
-
# Screener name → URL mapping
|
| 11 |
-
# ===============================
|
| 12 |
-
SCREENER_MAP = {
|
| 13 |
-
"from_high": "https://www.screener.in/screens/3355081/from-high/",
|
| 14 |
-
"sales_wise": "https://www.screener.in/screens/880780/sales_wise/",
|
| 15 |
-
"fii_buying": "https://www.screener.in/screens/343087/fii-buying/",
|
| 16 |
-
"debt_reduction": "https://www.screener.in/screens/126864/debt-reduction/",
|
| 17 |
-
"magic_formula": "https://www.screener.in/screens/59/magic-formula/",
|
| 18 |
-
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
|
| 22 |
# ===============================
|
| 23 |
# Public API
|
|
@@ -28,7 +17,7 @@ def fetch_screener(screen_name: str) -> str:
|
|
| 28 |
Uses disk persistence (HTML primary, CSV secondary).
|
| 29 |
"""
|
| 30 |
|
| 31 |
-
if screen_name not in SCREENER_MAP:
|
| 32 |
return _error_html(f"Invalid screener: {screen_name}")
|
| 33 |
|
| 34 |
cache_name = f"SCREENER_{screen_name.upper()}"
|
|
@@ -38,7 +27,7 @@ def fetch_screener(screen_name: str) -> str:
|
|
| 38 |
return persist.load(cache_name, "html")
|
| 39 |
|
| 40 |
# 2️⃣ Fetch live
|
| 41 |
-
headers, rows = _fetch_table(SCREENER_MAP[screen_name])
|
| 42 |
|
| 43 |
if not headers or not rows:
|
| 44 |
return _error_html("No data available")
|
|
|
|
| 4 |
from typing import List, Tuple
|
| 5 |
|
| 6 |
from . import persist
|
| 7 |
+
from . import router
|
| 8 |
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
# ===============================
|
| 12 |
# Public API
|
|
|
|
| 17 |
Uses disk persistence (HTML primary, CSV secondary).
|
| 18 |
"""
|
| 19 |
|
| 20 |
+
if screen_name not in router.SCREENER_MAP:
|
| 21 |
return _error_html(f"Invalid screener: {screen_name}")
|
| 22 |
|
| 23 |
cache_name = f"SCREENER_{screen_name.upper()}"
|
|
|
|
| 27 |
return persist.load(cache_name, "html")
|
| 28 |
|
| 29 |
# 2️⃣ Fetch live
|
| 30 |
+
headers, rows = _fetch_table(router.SCREENER_MAP[screen_name])
|
| 31 |
|
| 32 |
if not headers or not rows:
|
| 33 |
return _error_html("No data available")
|