| import os |
| import random |
| import re |
| import string |
| from urllib.parse import urlparse |
|
|
|
|
| def is_image_link(url): |
| image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'] |
| if any(url.endswith(ext) for ext in image_extensions): |
| return True |
|
|
| return False |
|
|
|
|
| def extract_filename_from_url(url): |
| parsed_url = urlparse(url) |
| return os.path.basename(parsed_url.path) |
|
|
|
|
| def clean_ansi(text): |
| return re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', text) |
|
|
|
|
| |
| def generate_random_string(length=12): |
| characters = string.ascii_letters + string.digits |
| return ''.join(random.choice(characters) for i in range(length)) |
|
|
|
|
| def extract_urls(text): |
| url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+' |
| all_matched_urls = re.findall(url_pattern, text) |
| return all_matched_urls |
|
|
|
|
| def replace_latex_format(s): |
| |
| s = re.sub(r'\\\((.*?)\\\)', r'$$\1$$', s, flags=re.DOTALL) |
|
|
| |
| s = re.sub(r'\\\[(.*?)\\\]', r'$$\1$$', s, flags=re.DOTALL) |
|
|
| return s |
|
|
|
|
| def extract_and_replace_url(text): |
| url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+' |
| all_matched_urls = re.findall(url_pattern, text) |
| |
| text = text.replace("Generated an image: ", "") |
| text = text.replace("Generated files on server: ", "") |
|
|
| new_urls = [] |
| for extracted_url in all_matched_urls: |
| if is_image_link(extracted_url): |
| new_url = f'' |
| else: |
| filename = extract_filename_from_url(extracted_url) |
| new_url = f'[{filename}]({extracted_url})' |
|
|
| new_urls.append(new_url) |
| text = text.replace(extracted_url, "") |
|
|
| text = re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', text) |
|
|
| return f'```python\n{text}```' + "\n" + "\n".join(new_urls) |
|
|
|
|
| def contains_chinese(input_context: str) -> bool: |
| for char in input_context: |
| if '\u4e00' <= char <= '\u9fff': |
| return True |
| return False |
|
|