mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-10 14:50:41 -08:00
feat: improve text display for dynamic search
This commit is contained in:
@@ -23,9 +23,11 @@ try:
|
||||
strip_markdown,
|
||||
wrap_text,
|
||||
)
|
||||
|
||||
ANSI_UTILS_AVAILABLE = True
|
||||
except ImportError:
|
||||
ANSI_UTILS_AVAILABLE = False
|
||||
|
||||
# Fallback if _ansi_utils is not available
|
||||
def get_terminal_width():
|
||||
return int(os.environ.get("FZF_PREVIEW_COLUMNS", "80"))
|
||||
@@ -41,15 +43,18 @@ except ImportError:
|
||||
|
||||
def strip_markdown(text):
|
||||
import re
|
||||
text = re.sub(r'\*\*(.+?)\*\*', r'\1', text)
|
||||
text = re.sub(r'__(.+?)__', r'\1', text)
|
||||
text = re.sub(r'\*(.+?)\*', r'\1', text)
|
||||
text = re.sub(r'_(.+?)_', r'\1', text)
|
||||
|
||||
text = re.sub(r"\*\*(.+?)\*\*", r"\1", text)
|
||||
text = re.sub(r"__(.+?)__", r"\1", text)
|
||||
text = re.sub(r"\*(.+?)\*", r"\1", text)
|
||||
text = re.sub(r"_(.+?)_", r"\1", text)
|
||||
return text
|
||||
|
||||
def wrap_text(text, width):
|
||||
import textwrap
|
||||
return '\n'.join(textwrap.wrap(text, width))
|
||||
|
||||
return "\n".join(textwrap.wrap(text, width))
|
||||
|
||||
|
||||
# --- Template Variables (Injected by Python) ---
|
||||
SEARCH_RESULTS_FILE = Path("{SEARCH_RESULTS_FILE}")
|
||||
@@ -325,7 +330,12 @@ def main():
|
||||
|
||||
# Extract media information
|
||||
title_obj = media.get("title", {})
|
||||
title = title_obj.get("english") or title_obj.get("romaji") or title_obj.get("native") or "Unknown"
|
||||
title = (
|
||||
title_obj.get("english")
|
||||
or title_obj.get("romaji")
|
||||
or title_obj.get("native")
|
||||
or "Unknown"
|
||||
)
|
||||
|
||||
# Show image if in image or full mode
|
||||
if PREVIEW_MODE in ("image", "full"):
|
||||
|
||||
@@ -31,7 +31,9 @@ if not QUERY.strip():
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def make_graphql_request(endpoint: str, query: str, variables: dict, auth_token: str = "") -> dict | None:
|
||||
def make_graphql_request(
|
||||
endpoint: str, query: str, variables: dict, auth_token: str = ""
|
||||
) -> dict | None:
|
||||
"""
|
||||
Make a GraphQL request to the specified endpoint.
|
||||
|
||||
@@ -44,15 +46,9 @@ def make_graphql_request(endpoint: str, query: str, variables: dict, auth_token:
|
||||
Returns:
|
||||
Response JSON as a dictionary, or None if request fails
|
||||
"""
|
||||
payload = {
|
||||
"query": query,
|
||||
"variables": variables
|
||||
}
|
||||
payload = {"query": query, "variables": variables}
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"User-Agent": "viu/1.0"
|
||||
}
|
||||
headers = {"Content-Type": "application/json", "User-Agent": "viu/1.0"}
|
||||
|
||||
if auth_token:
|
||||
headers["Authorization"] = auth_token
|
||||
@@ -62,7 +58,7 @@ def make_graphql_request(endpoint: str, query: str, variables: dict, auth_token:
|
||||
endpoint,
|
||||
data=json.dumps(payload).encode("utf-8"),
|
||||
headers=headers,
|
||||
method="POST"
|
||||
method="POST",
|
||||
)
|
||||
|
||||
with request.urlopen(req, timeout=10) as response:
|
||||
@@ -84,10 +80,10 @@ def extract_title(media_item: dict) -> str:
|
||||
"""
|
||||
title_obj = media_item.get("title", {})
|
||||
return (
|
||||
title_obj.get("english") or
|
||||
title_obj.get("romaji") or
|
||||
title_obj.get("native") or
|
||||
"Unknown"
|
||||
title_obj.get("english")
|
||||
or title_obj.get("romaji")
|
||||
or title_obj.get("native")
|
||||
or "Unknown"
|
||||
)
|
||||
|
||||
|
||||
@@ -100,15 +96,12 @@ def main():
|
||||
"query": QUERY,
|
||||
"type": "ANIME",
|
||||
"per_page": 50,
|
||||
"genre_not_in": ["Hentai"]
|
||||
"genre_not_in": ["Hentai"],
|
||||
}
|
||||
|
||||
# Make the GraphQL request
|
||||
response = make_graphql_request(
|
||||
GRAPHQL_ENDPOINT,
|
||||
GRAPHQL_QUERY,
|
||||
variables,
|
||||
AUTH_HEADER
|
||||
GRAPHQL_ENDPOINT, GRAPHQL_QUERY, variables, AUTH_HEADER
|
||||
)
|
||||
|
||||
if response is None:
|
||||
|
||||
@@ -12,9 +12,7 @@ logger = logging.getLogger(__name__)
|
||||
SEARCH_CACHE_DIR = APP_CACHE_DIR / "search"
|
||||
SEARCH_RESULTS_FILE = SEARCH_CACHE_DIR / "current_search_results.json"
|
||||
FZF_SCRIPTS_DIR = SCRIPTS_DIR / "fzf"
|
||||
SEARCH_TEMPLATE_SCRIPT = (FZF_SCRIPTS_DIR / "search.py").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
SEARCH_TEMPLATE_SCRIPT = (FZF_SCRIPTS_DIR / "search.py").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
@session.menu
|
||||
|
||||
Reference in New Issue
Block a user