commit b66f683dfb73ed7c7ac0ce72647cd9eb76482cf7 Author: HuangHai <10402852@qq.com> Date: Mon Jan 12 07:49:18 2026 +0800 'commit' diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/Crawler.iml b/.idea/Crawler.iml new file mode 100644 index 0000000..4ba3f29 --- /dev/null +++ b/.idea/Crawler.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..fad0e18 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,196 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a1ff0d1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f1a2754 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..3f1db62 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Apps/Json/Ref/T6_PaChongGaoDe.py b/Apps/Json/Ref/T6_PaChongGaoDe.py new file mode 100644 index 0000000..a04ad16 --- /dev/null +++ b/Apps/Json/Ref/T6_PaChongGaoDe.py @@ -0,0 +1,888 @@ +""" +高德地图高精度坐标获取工具 + +使用说明: +1、注册用户,实名认证 +2、手动登录,选择微信登录,生成cookie +3、复用这个cookie,打开浏览器,传入单位名称,查询坐标,得到小数点6位的坐标数据 +""" +import json +import os +import random +import re +import sys +import time +import weakref + +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.chrome.service import Service +from selenium.webdriver.common.by import By +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait + +# 添加SQLAlchemy同步操作 +from sqlalchemy import create_engine, text +from sqlalchemy.orm import sessionmaker + +# 数据库连接配置 +from Config.Config import POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DATABASE + +# 创建同步数据库连接URL +db_url = f"postgresql://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" + +# 创建数据库引擎和会话工厂 +engine = create_engine(db_url) +SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) + +# 数据库操作函数 +def find(sql, params=None): + """ + 执行SQL查询,返回所有结果 + + Args: + sql: SQL查询语句 + params: 参数字典 + + Returns: + list: 查询结果的字典列表 + """ + with SessionLocal() as session: + result = session.execute(text(sql), params) + rows = result.fetchall() + return [dict(zip(result.keys(), row)) for row in rows] + + +def findFirst(sql, params=None): + """ + 执行SQL查询,返回第一条结果 + + Args: + sql: SQL查询语句 + params: 参数字典 + + Returns: + dict or None: 第一条查询结果的字典,或None(如果没有结果) + """ + with SessionLocal() as session: + result = session.execute(text(sql), params) + row = result.fetchone() + if row: + return dict(zip(result.keys(), row)) + return None + + +def execute_update(sql, params=None): + """ + 执行SQL更新操作 + + Args: + sql: SQL语句 + params: 参数字典 + + Returns: + int: 受影响的行数 + """ + with SessionLocal() as session: + with session.begin(): + result = session.execute(text(sql), params) + return result.rowcount + + +# 是否使用无头模式运行(True=无头模式,False=有界面模式) +HEADLESS = False + +# 最大重试次数 +MAX_RETRIES = 1 + +# WebDriver超时设置(秒) +TIMEOUT_SHORT = 5 +TIMEOUT_MEDIUM = 10 +TIMEOUT_LONG = 15 + + +def parse_coordinates_info(text): + """解析坐标信息,提取第一个搜索结果的坐标""" + # 检查输入参数 + if not text: + return None + + try: + # 清理文本,移除可能的干扰字符 + clean_text = re.sub(r'[\u3000\t\n\r ]+', ',', text) # 替换空格和制表符为逗号 + clean_text = re.sub(r'[,,]+', ',', clean_text) # 统一使用英文逗号 + clean_text = clean_text.strip(',') # 移除首尾逗号 + + # 匹配高德地图坐标格式 - 中国地区的坐标范围,放宽小数位数要求 + pattern = r'([7-9]?[0-9]\.[0-9]{1,}|1[0-3][0-9]\.[0-9]{1,})[,,]\s*([1-8]?[0-9]\.[0-9]{1,}|90\.[0-9]{1,})' + matches = re.finditer(pattern, clean_text) + + valid_coordinates = [] + + for match in matches: + lng = match.group(1).strip() + lat = match.group(2).strip() + + # 转换为浮点数进行范围验证 + try: + lng_float = float(lng) + lat_float = float(lat) + + # 检查坐标是否在中国地区合理范围内 + if 70 <= lng_float <= 140 and 0 <= lat_float <= 60: + # 计算坐标的精度(小数位数) + lng_precision = len(lng.split('.')[1]) if '.' in lng else 0 + lat_precision = len(lat.split('.')[1]) if '.' in lat else 0 + + # 接受至少有1位小数的坐标,不再严格要求4位小数 + valid_coordinates.append((lng_float, lat_float, lng, lat)) + except ValueError: + continue + + if valid_coordinates: + # 如果找到多个有效坐标,选择小数位数最多的 + valid_coordinates.sort( + key=lambda x: len(x[2].split('.')[1]) + len(x[3].split('.')[1]) if '.' in x[2] and '.' in x[3] else 0, + reverse=True) + _, _, lng, lat = valid_coordinates[0] + + return { + 'lng': lng, + 'lat': lat + } + else: + return None + + except Exception as e: + return None + + +def export_cookies_from_browser(driver, output_file='amap_cookies.json'): + """ + 导出浏览器中的Cookie到文件 + + Args: + driver: WebDriver实例 + output_file: Cookie导出文件路径 + + Returns: + bool: 导出是否成功 + """ + # 检查输入参数 + if not driver: + print("❌ WebDriver实例无效") + return False + + if not output_file: + print("❌ Cookie输出文件路径无效") + return False + + try: + print(f"正在导出Cookie到文件: {output_file}") + + # 确保目录存在 + output_dir = os.path.dirname(output_file) + if output_dir and not os.path.exists(output_dir): + try: + os.makedirs(output_dir, exist_ok=True) + except Exception as e: + print(f"创建输出目录失败: {str(e)}") + return False + + # 获取Cookie + cookies = driver.get_cookies() + + if not cookies: + print("⚠️ 未获取到任何Cookie") + return False + + # 保存Cookie到文件 + with open(output_file, 'w', encoding='utf-8') as f: + json.dump(cookies, f, ensure_ascii=False, indent=2) + + print(f"成功导出 {len(cookies)} 个Cookie") + print(f"Cookie已成功导出到: {os.path.abspath(output_file)}") + return True + except Exception as e: + print(f"导出Cookie失败: {str(e)}") + return False + + +def load_cookies_to_browser(driver, cookie_file='amap_cookies.json'): + """ + 从文件加载Cookie到浏览器 + + Args: + driver: WebDriver实例 + cookie_file: Cookie文件路径 + + Returns: + bool: 加载是否成功 + """ + try: + # 检查输入参数 + if not driver: + print("❌ WebDriver实例无效") + return False + + if not cookie_file: + print("❌ Cookie文件路径无效") + return False + + if not os.path.exists(cookie_file): + return False + + # 先访问高德域名,确保Cookie可以被正确设置 + import ssl + ssl._create_default_https_context = ssl._create_unverified_context + driver.get('https://www.amap.com') + + time.sleep(1) # 等待页面加载 + + # 加载Cookie + with open(cookie_file, 'r', encoding='utf-8') as f: + cookies = json.load(f) + + # 添加每个Cookie + success_count = 0 + for cookie in cookies: + # 移除可能导致问题的属性 + if 'expiry' in cookie: + cookie['expiry'] = int(cookie['expiry']) + if 'sameSite' in cookie and cookie['sameSite'] not in ['Strict', 'Lax', 'None']: + del cookie['sameSite'] + + try: + driver.add_cookie(cookie) + success_count += 1 + except Exception as e: + #print(f"添加Cookie失败 (可能是安全策略限制): {cookie.get('name')} - {str(e)}") + pass + + return True + except Exception as e: + print(f"加载Cookie失败: {str(e)}") + return False + + +def get_location_coordinates(location_name, headless=False, cookie_file='amap_cookies.json', driver=None, + reuse_driver=False): + """ + 获取指定名称地点的坐标信息 + + Args: + location_name (str): 要搜索的地点名称 + headless (bool): 是否使用无头模式,默认False(有界面) + cookie_file (str): Cookie文件路径 + driver: 可选的WebDriver实例(用于复用) + reuse_driver: 是否复用WebDriver实例 + + Returns: + dict or None: 包含名称、经度和纬度的字典,失败时返回None + """ + # 检查输入参数 + if not location_name or not location_name.strip(): + print("❌ 地点名称无效") + return None + + if not cookie_file or not os.path.exists(cookie_file): + print(f"❌ Cookie文件不存在或无效: {cookie_file}") + return None + + # 浏览器管理标志 + need_quit_driver = False + + try: + # 如果没有提供driver,创建新的 + if not driver: + # 设置Chrome浏览器参数 + chrome_options = Options() + if headless: + chrome_options.add_argument('--headless') + + # 添加必要的配置参数 + # 我有GPU,可以放开 + # chrome_options.add_argument('--disable-gpu') + chrome_options.add_argument('--no-sandbox') + chrome_options.add_argument('--disable-dev-shm-usage') + chrome_options.add_argument('--window-size=1920,1080') + chrome_options.add_argument('--lang=zh-CN') + + # 禁用自动化控制特征 + chrome_options.add_experimental_option('useAutomationExtension', False) + chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 防止自动化检测,关闭浏览器控制显示 + chrome_options.add_argument('-ignore-certificate-errors') # 忽略证书错误 + chrome_options.add_argument('-ignore-ssl-errors') # 忽略相关错误 + chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) # 防止自动化检测 + chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) # 防止自动化日志输出检测 + + # 添加随机User-Agent + user_agent = f'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{random.randint(80, 99)}.0.{random.randint(4000, 5000)}.{random.randint(100, 200)} Safari/537.36' + chrome_options.add_argument(f'user-agent={user_agent}') + + # 尝试初始化WebDriver + service = Service() + try: + from webdriver_manager.chrome import ChromeDriverManager + driver_path = ChromeDriverManager().install() + service = Service(driver_path) + except: + pass + + # 初始化WebDriver + driver = webdriver.Chrome(service=service, options=chrome_options) + need_quit_driver = True + + # 最大化窗口(如果不是无头模式) + if not headless: + driver.maximize_window() + + # 禁用自动化特征 + driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { + "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" + }) + + # 使用Cookie方式认证 + cookies_loaded = load_cookies_to_browser(driver, cookie_file) + if not cookies_loaded: + print("Cookie认证失败,无法继续获取高精度坐标") + return None + + # 访问高德地图坐标拾取工具 + url = 'https://lbs.amap.com/tools/picker' + driver.get(url) + + time.sleep(2) # 等待页面完全加载 + + # 定位搜索输入框并输入查询内容 + try: + # 使用ID定位搜索框 + search_input = WebDriverWait(driver, TIMEOUT_MEDIUM).until( + EC.presence_of_element_located((By.ID, 'txtSearch')) + ) + except Exception as e: + print(f"定位搜索输入框失败: {e}") + return None + + # 输入搜索内容 + search_input.clear() + search_input.send_keys(location_name) + + # 定位搜索按钮并点击 + try: + # 尝试使用class选择器定位搜索按钮 + search_button = WebDriverWait(driver, TIMEOUT_SHORT).until( + EC.presence_of_element_located((By.CLASS_NAME, 'btn-search')) + ) + search_button.click() + except Exception as e: + print(f"定位搜索按钮失败: {e}") + # 尝试按回车键搜索 + try: + search_input.send_keys(Keys.ENTER) + except Exception as e2: + print(f"回车键搜索也失败: {e2}") + return None + + # 等待搜索结果加载完成并显示坐标 + time.sleep(3) # 等待时间,确保页面完全加载并显示搜索结果和坐标 + + # 获取坐标信息 - 只使用成功的方式(从txtCoordinate元素的value属性获取) + coordinate_text = None + + # 查找ID为txtCoordinate的元素(这是高德地图坐标拾取器的核心坐标显示元素) + try: + coordinate_element = WebDriverWait(driver, TIMEOUT_MEDIUM).until( + EC.presence_of_element_located((By.ID, 'txtCoordinate')) + ) + + # 获取value属性(这是input元素存储值的标准方式) + coordinate_value = coordinate_element.get_attribute('value') + if coordinate_value and coordinate_value.strip(): + coordinate_text = coordinate_value.strip() + else: + print("警告: txtCoordinate元素的value属性为空") + + # 作为备选,尝试获取text内容 + coordinate_text_content = coordinate_element.text.strip() + if coordinate_text_content: + coordinate_text = coordinate_text_content + print(f"从text内容获取到坐标文本: '{coordinate_text}'") + except Exception as e: + print(f"查找或获取坐标元素失败: {e}") + return None + + # 如果没有获取到坐标,返回失败 + if not coordinate_text or coordinate_text.strip() == '': + print("未能获取到有效的坐标文本") + return None + + # 解析坐标信息 + print(f"解析坐标文本: '{coordinate_text}'") + + coordinate_info = parse_coordinates_info(coordinate_text) + if coordinate_info: + # 进一步验证坐标的合理性(中国地区范围) + try: + lng = float(coordinate_info['lng']) + lat = float(coordinate_info['lat']) + + # 中国地区的合理坐标范围 + if 70 <= lng <= 140 and 0 <= lat <= 60: + print(f"成功获取坐标: {coordinate_info['lng']},{coordinate_info['lat']}") + return coordinate_info + else: + print(f"坐标超出中国地区合理范围 - 经度: {lng}, 纬度: {lat}") + return None + except (ValueError, TypeError): + print(f"坐标数值验证失败: {coordinate_info}") + return None + else: + print("坐标解析失败") + return None + + except Exception as e: + print(f"获取坐标时发生错误: {e}") + return None + finally: + # 关闭浏览器(如果不是复用的) + if not reuse_driver and need_quit_driver and driver: + driver.close() + driver.quit() + + +def get_multiple_locations_coordinates(location_names, headless=False, cookie_file='amap_cookies.json'): + """ + 批量获取多个地点的坐标信息 + + Args: + location_names (list): 地点名称列表 + headless (bool): 是否使用无头模式,默认False(有界面) + cookie_file (str): Cookie文件路径 + + Returns: + dict: 包含所有地点坐标信息的字典,键为地点名称,值为坐标信息字典或None(失败时) + """ + # 检查输入参数 + if not location_names: + print("❌ 地点列表为空,无需获取坐标") + return {} + + print(f"开始批量获取坐标信息 - 地点数量: {len(location_names)}, 无头模式: {headless}") + + # 存储所有地点的坐标信息 + all_coordinates = {} + success_count = 0 + failure_count = 0 + skipped_count = 0 + invalid_coord_count = 0 + + # 创建并复用浏览器实例 + created_driver = None + + # 记录是否已经退出,避免重复退出 + driver_closed = False + + try: + # 初始化Chrome浏览器 + chrome_options = Options() + if headless: + chrome_options.add_argument('--headless') + + # 添加必要的配置参数 + # chrome_options.add_argument('--disable-gpu') + chrome_options.add_argument('--no-sandbox') + chrome_options.add_argument('--disable-dev-shm-usage') + chrome_options.add_argument('--window-size=1920,1080') + chrome_options.add_argument('--lang=zh-CN') + chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 防止自动化检测,关闭浏览器控制显示 + chrome_options.add_argument('-ignore-certificate-errors') # 忽略证书错误 + chrome_options.add_argument('-ignore-ssl-errors') # 忽略相关错误 + chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) # 防止自动化检测 + chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) # 防止自动化日志输出检测 + chrome_options.add_experimental_option('useAutomationExtension', False) + + # 添加随机User-Agent + user_agent = f'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{random.randint(80, 99)}.0.{random.randint(4000, 5000)}.{random.randint(100, 200)} Safari/537.36' + chrome_options.add_argument(f'user-agent={user_agent}') + + # 尝试使用webdriver_manager + try: + from webdriver_manager.chrome import ChromeDriverManager + driver_path = ChromeDriverManager().install() + service = Service(driver_path) + print(f"成功使用webdriver_manager安装驱动: {driver_path}") + except: + print("使用系统默认的Chrome驱动") + service = Service() + + # 初始化WebDriver + created_driver = webdriver.Chrome(service=service, options=chrome_options) + + # 将创建的driver实例添加到全局跟踪集合中 + if 'driver_instances' in globals(): + driver_instances.add(created_driver) + + # 最大化窗口(如果不是无头模式) + if not headless: + created_driver.maximize_window() + + # 禁用自动化特征 + created_driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { + "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" + }) + + # 使用Cookie方式认证 + print("尝试使用Cookie文件进行认证") + cookies_loaded = load_cookies_to_browser(created_driver, cookie_file) + if not cookies_loaded: + print("Cookie认证失败,无法继续获取高精度坐标") + return all_coordinates + + # 访问高德地图坐标拾取工具 + url = 'https://lbs.amap.com/tools/picker' + created_driver.get(url) + time.sleep(2) # 增加等待时间以确保页面完全加载 + + # 循环获取每个地点的坐标 + for i, location_name in enumerate(location_names, 1): + print(f"处理地点 {i}/{len(location_names)}: '{location_name}'") + + # 对每个地点查询 + try: + # 调用get_location_coordinates获取坐标 + result = get_location_coordinates(location_name, headless=headless, cookie_file=cookie_file, + driver=created_driver, reuse_driver=True) + except Exception as e: + print(f"❌ 地点: {location_name} - 查询出错: {str(e)},跳过该地点") + result = None + skipped_count += 1 + + # 存储结果 + all_coordinates[location_name] = result + + # 坐标获取成功,进行有效性验证 + if result: + # 验证坐标的地理合理性(中国地区范围) + try: + lng = float(result['lng']) + lat = float(result['lat']) + + # 中国地区的合理坐标范围 + if 70 <= lng <= 140 and 0 <= lat <= 60: + # 检查坐标精度(至少4位小数) + lng_precision = len(result['lng'].split('.')[1]) if '.' in result['lng'] else 0 + lat_precision = len(result['lat'].split('.')[1]) if '.' in result['lat'] else 0 + + if lng_precision >= 4 and lat_precision >= 4: + print(f"✅ 地点: {location_name} - 坐标获取成功: {result['lng']},{result['lat']}") + success_count += 1 + else: + print( + f"⚠️ 地点: {location_name} - 坐标精度不足: {result['lng']},{result['lat']} (经度{lng_precision}位, 纬度{lat_precision}位小数)") + invalid_coord_count += 1 + else: + print(f"⚠️ 地点: {location_name} - 坐标超出中国地区合理范围: {result['lng']},{result['lat']}") + invalid_coord_count += 1 + except (ValueError, TypeError): + print(f"⚠️ 地点: {location_name} - 坐标数值无效: {result}") + invalid_coord_count += 1 + else: + print(f"❌ 地点: {location_name} - 未能获取有效的坐标信息") + failure_count += 1 + + # 如果不是最后一个地点,添加短暂延迟以避免过快请求 + if i < len(location_names): + delay_time = random.uniform(0.5, 2) # 减少延迟时间到0.5-2秒 + print(f"添加延迟: {delay_time:.2f}秒") + time.sleep(delay_time) + + except Exception as e: + print(f"❌ 批量坐标获取过程中发生错误: {str(e)}") + + finally: + created_driver.close() + + # 打印详细统计信息 + print(f"\n{'=' * 60}") + print("批量坐标获取完成") + print(f"{'=' * 60}") + print(f"总查询地点数: {len(location_names)}") + print(f"成功获取: {success_count}") + print(f"获取失败: {failure_count}") + print(f"超时跳过: {skipped_count}") + print(f"无效坐标: {invalid_coord_count}") + print(f"获取到坐标数据的地点数: {len([c for c in all_coordinates.values() if c is not None])}") + + # 计算实际成功率(只考虑成功获取的有效坐标) + actual_processed = success_count + failure_count + skipped_count + invalid_coord_count + if actual_processed > 0: + actual_success_rate = (success_count / actual_processed) * 100 + print(f"实际成功率: {actual_success_rate:.1f}%") + else: + print("实际成功率: 0%") + + print(f"{'=' * 60}") + + # 返回结果字典 + return all_coordinates + + +def create_cookie_export_tool(): + """ + 创建一个Cookie导出工具,帮助用户手动登录后导出Cookie + """ + print("\n===== Cookie导出工具 =====") + print("此工具将打开一个Chrome浏览器窗口,让您手动登录高德地图账号,") + print("登录成功后,按Enter键导出Cookie到文件。") + print("==========================") + + # 设置Chrome浏览器参数 + chrome_options = Options() + chrome_options.add_argument('--disable-gpu') + chrome_options.add_argument('--window-size=1920,1080') + chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) + chrome_options.add_experimental_option('useAutomationExtension', False) + + # 初始化WebDriver + driver = None + try: + # 尝试使用webdriver_manager + try: + from webdriver_manager.chrome import ChromeDriverManager + driver_path = ChromeDriverManager().install() + service = Service(driver_path) + except: + service = Service() + + driver = webdriver.Chrome(service=service, options=chrome_options) + driver.maximize_window() + + # 禁用自动化特征 + driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { + "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" + }) + + # 访问高德地图坐标拾取工具 + url = 'https://lbs.amap.com/tools/picker' + print(f"\n正在打开高德地图坐标拾取工具: {url}") + import ssl + ssl._create_default_https_context = ssl._create_unverified_context + driver.get(url) + + print("\n请在浏览器中手动登录高德地图账号。") + print("提示:建议使用微信扫码登录以避免验证码问题") + print("登录成功后,请按Enter键继续...") + input() + + # 导出Cookie - 使用基于当前脚本所在目录的绝对路径 + script_dir = os.path.dirname(os.path.abspath(__file__)) + cookie_file = os.path.join(script_dir, '../Test/amap_cookies.json') + export_success = export_cookies_from_browser(driver, cookie_file) + + if export_success: + print(f"\nCookie导出成功!文件保存为: {os.path.abspath(cookie_file)}") + print("您现在可以使用这个Cookie文件获取高精度坐标了。") + print("\n重要提示:") + print("1. 请妥善保管您的Cookie文件,不要分享给他人") + print("2. Cookie文件包含您的登录状态信息,请确保安全存储") + print("3. 当Cookie过期后,您需要重新运行此工具生成新的Cookie文件") + + except Exception as e: + print(f"\n发生错误: {str(e)}") + finally: + if driver: + print("\n正在关闭浏览器...") + driver.quit() + + +def main(): + """ + 主函数,用于测试和运行高德地图坐标获取工具 + """ + print("=== 高德地图高精度坐标获取工具 ====") + + # 初始化参数 + # 使用基于当前脚本所在目录的相对路径,确保在不同环境下都能正确访问 + script_dir = os.path.dirname(os.path.abspath(__file__)) + cookie_file = os.path.join(script_dir, '../Test/amap_cookies.json') + + # 询问是否清空所有数据的经纬度 + clear_coords = input("是否清空所有数据的经纬度,全新开始更新坐标?(y/n,默认n): ").strip().lower() == 'y' + if clear_coords: + print("正在清空所有学校的经纬度数据...") + try: + execute_update("UPDATE t_school SET longitude=0, latitude=0") + print("✅ 经纬度数据已清空") + except Exception as e: + print(f"❌ 清空经纬度数据失败: {str(e)}") + sys.exit(1) + + # 从数据库查询需要更新坐标的学校(经纬度为0的学校) + print("正在从数据库查询需要更新坐标的学校...") + try: + results = find("SELECT org_name FROM t_school WHERE longitude=0 AND latitude=0 order by region_level1,region_level2,region_level3,school_type") + locations = [result['org_name'] for result in results] + print(f"✅ 找到 {len(locations)} 所需要更新坐标的学校") + + if not locations: + print("所有学校都已有坐标数据,程序退出。") + sys.exit(0) + + # 显示前10个学校作为预览 + print("\n待处理学校列表预览:") + for i, loc in enumerate(locations[:10], 1): + print(f" {i}. {loc}") + if len(locations) > 10: + print(f" ... 等{len(locations) - 10}个学校") + + except Exception as e: + print(f"❌ 查询学校列表失败: {str(e)}") + sys.exit(1) + + # 检查Cookie文件 + if not os.path.exists(cookie_file): + print(f"\nCookie文件 '{cookie_file}' 不存在。") + if input("是否现在运行Cookie导出工具? (y/n): ").strip().lower() == 'y': + create_cookie_export_tool() + else: + print("\n程序退出。没有有效的Cookie文件,无法获取高精度坐标。") + sys.exit(1) + + print(f"\n运行参数: 无头模式{'启用' if HEADLESS else '禁用'}") + + # 逐个获取坐标并立即更新数据库 + print("\n开始逐个获取坐标并更新数据库...") + success_updates = 0 + total_locations = len(locations) + + # 创建浏览器实例(复用) + chrome_options = Options() + if HEADLESS: + chrome_options.add_argument('--headless') + + # 添加必要的配置参数 + chrome_options.add_argument('--no-sandbox') + chrome_options.add_argument('--disable-dev-shm-usage') + chrome_options.add_argument('--window-size=1920,1080') + chrome_options.add_argument('--lang=zh-CN') + chrome_options.add_argument("--disable-blink-features=AutomationControlled") + chrome_options.add_argument('-ignore-certificate-errors') + chrome_options.add_argument('-ignore-ssl-errors') + chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) + chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) + chrome_options.add_experimental_option('useAutomationExtension', False) + + # 随机User-Agent + user_agent = f'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{random.randint(80, 99)}.0.{random.randint(4000, 5000)}.{random.randint(100, 200)} Safari/537.36' + chrome_options.add_argument(f'user-agent={user_agent}') + + # 初始化WebDriver + try: + from webdriver_manager.chrome import ChromeDriverManager + driver_path = ChromeDriverManager().install() + service = Service(driver_path) + print(f"成功使用webdriver_manager安装驱动: {driver_path}") + except: + print("使用系统默认的Chrome驱动") + service = Service() + + driver = webdriver.Chrome(service=service, options=chrome_options) + + # 添加到全局跟踪集合 + if 'driver_instances' in globals(): + driver_instances.add(driver) + + # 最大化窗口(如果不是无头模式) + if not HEADLESS: + driver.maximize_window() + + # 禁用自动化特征 + driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { + "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" + }) + + # 使用Cookie方式认证 + cookies_loaded = load_cookies_to_browser(driver, cookie_file) + if not cookies_loaded: + print("Cookie认证失败,无法继续获取高精度坐标") + driver.quit() + return + + # 访问高德地图坐标拾取工具 + url = 'https://lbs.amap.com/tools/picker' + driver.get(url) + time.sleep(2) # 等待页面完全加载 + + update_sql = "UPDATE t_school SET longitude = :lng, latitude = :lat WHERE org_name = :org_name" + + try: + # 逐个处理每个地点 + for i, location_name in enumerate(locations, 1): + print(f"处理地点 {i}/{total_locations}: '{location_name}'") + + # 获取单个地点的坐标 + try: + coords = get_location_coordinates( + location_name, + headless=HEADLESS, + cookie_file=cookie_file, + driver=driver, + reuse_driver=True + ) + + # 如果成功获取到坐标,立即更新数据库 + if coords: + try: + execute_update(update_sql, { + 'lng': coords['lng'], + 'lat': coords['lat'], + 'org_name': location_name + }) + success_updates += 1 + print(f"✅ 地点: {location_name} - 坐标获取成功并更新数据库: {coords['lng']},{coords['lat']}") + except Exception as e: + print(f" ❌ 更新地点'{location_name}'失败: {str(e)}") + else: + print(f"❌ 地点: {location_name} - 未能获取有效的坐标信息") + + # 添加短暂延迟以避免过快请求 + if i < total_locations: + delay_time = random.uniform(0.5, 2) + print(f"添加延迟: {delay_time:.2f}秒") + time.sleep(delay_time) + + except Exception as e: + print(f"❌ 地点: {location_name} - 查询出错: {str(e)}") + + # 添加延迟后继续处理下一个地点 + if i < total_locations: + time.sleep(random.uniform(0.5, 2)) + + finally: + # 关闭浏览器 + driver.close() + driver.quit() + + print(f"\n✅ 数据库更新完成,成功{success_updates}/{total_locations}条记录") + + print("\n✅ 程序执行完成!") + print("\n提示:如需重新批量更新所有学校坐标,下次运行程序时选择清空所有数据的经纬度即可。") + + +if __name__ == "__main__": + # 全局变量,用于跟踪所有创建的WebDriver实例 + driver_instances = weakref.WeakSet() + + try: + print("=== 高德地图高精度坐标获取工具 ===") + print("正在初始化...") + # 直接运行主程序 + main() + except KeyboardInterrupt: + print("\n⚠️ 接收到键盘中断,退出程序") + except Exception as main_error: + print(f"\n❌ 主程序运行出错: {main_error}") + + print("\n程序已退出") diff --git a/Apps/Json/Ref/T7_PaChongGaoDePatch.py b/Apps/Json/Ref/T7_PaChongGaoDePatch.py new file mode 100644 index 0000000..e1dbede --- /dev/null +++ b/Apps/Json/Ref/T7_PaChongGaoDePatch.py @@ -0,0 +1,810 @@ +import json +import random +import asyncio +import math +from typing import List, Tuple, Dict, Any + +from DbKit.Db import Db + + +def is_point_in_polygon(point: Tuple[float, float], polygon: List[Tuple[float, float]]) -> bool: + """ + 射线法判断点是否在多边形内 + :param point: (经度, 纬度) + :param polygon: 多边形顶点坐标列表 + :return: True表示在多边形内 + """ + x, y = point + n = len(polygon) + inside = False + + for i in range(n): + x1, y1 = polygon[i] + x2, y2 = polygon[(i + 1) % n] + + # 检查点是否在边的y范围内 + if ((y1 > y) != (y2 > y)): + # 计算交点x坐标 + x_intersect = (x2 - x1) * (y - y1) / (y2 - y1) + x1 + + if x_intersect > x: + inside = not inside + + return inside + + +def load_geojson(json_path: str) -> List[List[Tuple[float, float]]]: + """ + 从GeoJSON文件加载多边形数据(支持Polygon和MultiPolygon) + 返回: 多边形列表,每个多边形是(经度, 纬度)元组的列表 + """ + with open(json_path, 'r', encoding='utf-8') as f: + geo_data = json.load(f) + + polygons = [] + geometry_type = geo_data['features'][0]['geometry']['type'] + coordinates = geo_data['features'][0]['geometry']['coordinates'] + + if geometry_type == 'Polygon': + polygons.append(coordinates[0]) + elif geometry_type == 'MultiPolygon': + for polygon_coords in coordinates: + polygons.append(polygon_coords[0]) + + return polygons + + +# 计算点集的分布统计信息 +def calculate_distribution_statistics(points): + """ + 计算点集的分布统计信息 + + :param points: 点集 [(lon, lat), ...] + :return: 包含min_lon, max_lon, min_lat, max_lat, center_lon, center_lat, std_lon, std_lat的字典 + """ + if not points: + return None + + lons = [p[0] for p in points] + lats = [p[1] for p in points] + + min_lon, max_lon = min(lons), max(lons) + min_lat, max_lat = min(lats), max(lats) + + # 计算中心点 + center_lon = (min_lon + max_lon) / 2 + center_lat = (min_lat + max_lat) / 2 + + # 计算标准差(衡量分布的分散程度) + mean_lon = sum(lons) / len(lons) + mean_lat = sum(lats) / len(lats) + + std_lon = math.sqrt(sum((lon - mean_lon) ** 2 for lon in lons) / len(lons)) + std_lat = math.sqrt(sum((lat - mean_lat) ** 2 for lat in lats) / len(lats)) + + return { + "min_lon": min_lon, + "max_lon": max_lon, + "min_lat": min_lat, + "max_lat": max_lat, + "center_lon": center_lon, + "center_lat": center_lat, + "std_lon": std_lon, + "std_lat": std_lat + } + +# 线性映射函数 +def linear_map(value, from_min, from_max, to_min, to_max): + """ + 将值从一个范围线性映射到另一个范围 + + :param value: 输入值 + :param from_min: 原始范围最小值 + :param from_max: 原始范围最大值 + :param to_min: 目标范围最小值 + :param to_max: 目标范围最大值 + :return: 映射后的值 + """ + # 处理除零情况 + if from_max == from_min: + return (to_min + to_max) / 2 + # 计算映射值 + return (value - from_min) * (to_max - to_min) / (from_max - from_min) + to_min + +# 计算点到线段的最近点 +def closest_point_on_segment(point, line_start, line_end): + """ + 计算点到线段的最近点 + + :param point: 点 [lon, lat] + :param line_start: 线段起点 [lon, lat] + :param line_end: 线段终点 [lon, lat] + :return: 线段上的最近点 [lon, lat] + """ + # 将经纬度转换为向量 + a = [point[0] - line_start[0], point[1] - line_start[1]] + b = [line_end[0] - line_start[0], line_end[1] - line_start[1]] + + # 计算投影参数t + t = max(0, min(1, (a[0] * b[0] + a[1] * b[1]) / (b[0] ** 2 + b[1] ** 2) if (b[0] ** 2 + b[1] ** 2) > 0 else 0)) + + # 计算投影点 + return [line_start[0] + t * b[0], line_start[1] + t * b[1]] + +# 计算两点之间的距离 +def calculate_distance(point1, point2): + """ + 计算两点之间的欧几里得距离 + + :param point1: 第一个点 [lon, lat] + :param point2: 第二个点 [lon, lat] + :return: 两点之间的距离 + """ + return math.sqrt((point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2) + +# 调整点到多边形边界 +def adjust_to_polygon_boundary(point, polygons): + """ + 调整点到最近的多边形边界 + + :param point: 需要调整的点 [lon, lat] + :param polygons: 多边形列表 + :return: 调整后的点 [lon, lat] + """ + min_distance = float('inf') + closest_point = point + + for polygon in polygons: + for i in range(len(polygon)): + p1 = polygon[i] + p2 = polygon[(i + 1) % len(polygon)] + + # 计算点到线段的最近点 + proj_point = closest_point_on_segment(point, p1, p2) + distance = calculate_distance(point, proj_point) + + if distance < min_distance: + min_distance = distance + closest_point = proj_point + + return closest_point + +# 将原始坐标映射到目标区域,保持相对位置关系 +def map_coordinates(original_points, polygons): + """ + 将原始坐标映射到目标区域,保持相对位置关系 + + :param original_points: 原始坐标列表 [(original_lon, original_lat), ...] + :param polygons: 目标区域的多边形列表 + :return: 映射后的坐标列表 [(mapped_lon, mapped_lat), ...] + """ + if not original_points or not polygons: + return [] + + # 计算原始点集的分布统计 + original_stats = calculate_distribution_statistics(original_points) + if not original_stats: + return [] + + # 获取目标区域的边界信息 + all_target_points = [] + for polygon in polygons: + all_target_points.extend(polygon) + + if not all_target_points: + return [] + + target_lons = [p[0] for p in all_target_points] + target_lats = [p[1] for p in all_target_points] + + target_min_lon, target_max_lon = min(target_lons), max(target_lons) + target_min_lat, target_max_lat = min(target_lats), max(target_lats) + + # 收缩目标边界框,使生成的坐标更靠近县区中心 + shrink_factor = 0.25 # 收缩25%,增大收缩比例使坐标更靠近中心 + delta_lon = (target_max_lon - target_min_lon) * shrink_factor + delta_lat = (target_max_lat - target_min_lat) * shrink_factor + target_min_lon += delta_lon + target_max_lon -= delta_lon + target_min_lat += delta_lat + target_max_lat -= delta_lat + + # 计算原始点集的边界 + original_min_lon = original_stats["min_lon"] + original_max_lon = original_stats["max_lon"] + original_min_lat = original_stats["min_lat"] + original_max_lat = original_stats["max_lat"] + + mapped_points = [] + for original_lon, original_lat in original_points: + # 线性映射经度和纬度 + mapped_lon = linear_map(original_lon, original_min_lon, original_max_lon, target_min_lon, target_max_lon) + mapped_lat = linear_map(original_lat, original_min_lat, original_max_lat, target_min_lat, target_max_lat) + + # 检查映射后的点是否在目标区域内 + if any(is_point_in_polygon((mapped_lon, mapped_lat), polygon) for polygon in polygons): + mapped_points.append((mapped_lon, mapped_lat)) + else: + # 如果映射后的点不在目标区域内,调整到最近的边界 + adjusted_lon, adjusted_lat = adjust_to_polygon_boundary([mapped_lon, mapped_lat], polygons) + mapped_points.append((adjusted_lon, adjusted_lat)) + + return mapped_points + +# 传统的均匀分布点生成算法(作为回退方案) +def generate_uniform_points_fallback(polygons, n_points): + """ + 在指定的多边形区域内生成均匀分布的点(回退方案) + + :param polygons: 多边形列表,每个多边形是坐标点的列表 + :param n_points: 需要生成的点数 + :return: 生成的点列表 [(lon, lat), ...] + """ + if not polygons: + return [] + + # 计算整体边界框 + all_lons = [p[0] for polygon in polygons for p in polygon] + all_lats = [p[1] for polygon in polygons for p in polygon] + min_lon, max_lon = min(all_lons), max(all_lons) + min_lat, max_lat = min(all_lats), max(all_lats) + + # 收缩边界框,使生成的坐标更靠近县区中心 + lon_margin = (max_lon - min_lon) * 0.25 # 收缩25%,增大收缩比例使坐标更靠近中心 + lat_margin = (max_lat - min_lat) * 0.25 + min_lon = min_lon + lon_margin + max_lon = max_lon - lon_margin + min_lat = min_lat + lat_margin + max_lat = max_lat - lat_margin + + # 计算每个多边形的面积,用于按比例分配点数 + def calculate_polygon_area(polygon): + # 使用Shoelace公式计算多边形面积 + area = 0.0 + n = len(polygon) + for i in range(n): + j = (i + 1) % n + area += polygon[i][0] * polygon[j][1] + area -= polygon[j][0] * polygon[i][1] + return abs(area) / 2.0 + + # 计算每个多边形的面积 + polygon_areas = [calculate_polygon_area(polygon) for polygon in polygons] + total_area = sum(polygon_areas) + + # 根据面积比例分配每个多边形需要生成的点数 + if total_area > 0: + points_per_polygon = [max(1, int(area / total_area * n_points)) for area in polygon_areas] + # 调整点数,确保总和等于n_points + points_per_polygon[-1] += n_points - sum(points_per_polygon) + else: + points_per_polygon = [n_points // len(polygons)] * len(polygons) + points_per_polygon[-1] += n_points - sum(points_per_polygon) + + points = [] + + # 为每个多边形单独生成点 + for polygon_index, (polygon, points_needed) in enumerate(zip(polygons, points_per_polygon)): + if points_needed <= 0: + continue + + # 计算当前多边形的边界框 + polygon_lons = [p[0] for p in polygon] + polygon_lats = [p[1] for p in polygon] + poly_min_lon, poly_max_lon = min(polygon_lons), max(polygon_lons) + poly_min_lat, poly_max_lat = min(polygon_lats), max(polygon_lats) + + # 收缩当前多边形的边界框,使其更靠近中心 + poly_lon_margin = (poly_max_lon - poly_min_lon) * 0.25 # 收缩25%,与全局收缩比例保持一致 + poly_lat_margin = (poly_max_lat - poly_min_lat) * 0.25 + poly_min_lon += poly_lon_margin + poly_max_lon -= poly_lon_margin + poly_min_lat += poly_lat_margin + poly_max_lat -= poly_lat_margin + + # 为当前多边形生成足够的网格 + cells_needed = max(points_needed * 2, 10) # 网格数量是点数的2倍,确保分布均匀 + cols = math.ceil(math.sqrt(cells_needed)) + rows = math.ceil(cells_needed / cols) + + cell_width = (poly_max_lon - poly_min_lon) / cols + cell_height = (poly_max_lat - poly_min_lat) / rows + + # 记录哪些网格已经生成了点 + filled_cells = [] + max_attempts_per_cell = 50 + + # 按网格生成点 + for attempt in range(rows * cols * 2): # 增加尝试次数 + if len(points) >= n_points: + break + + # 随机选择一个网格 + i = random.randint(0, rows - 1) + j = random.randint(0, cols - 1) + cell_key = (i, j) + + # 如果这个网格已经生成了足够的点,跳过 + if filled_cells.count(cell_key) >= math.ceil(points_needed / (rows * cols)): + continue + + # 当前网格范围 + cell_min_lon = poly_min_lon + j * cell_width + cell_max_lon = poly_min_lon + (j + 1) * cell_width + cell_min_lat = poly_min_lat + i * cell_height + cell_max_lat = poly_min_lat + (i + 1) * cell_height + + # 在网格内尝试生成有效点 + for _ in range(max_attempts_per_cell): + lon = random.uniform(cell_min_lon, cell_max_lon) + lat = random.uniform(cell_min_lat, cell_max_lat) + + # 检查点是否在当前多边形内 + if is_point_in_polygon((lon, lat), polygon): + points.append((lon, lat)) + filled_cells.append(cell_key) + break + + # 如果当前多边形的点数不足,使用均匀分布补充 + while len(points) < sum(points_per_polygon[:polygon_index+1]): + lon = random.uniform(poly_min_lon, poly_max_lon) + lat = random.uniform(poly_min_lat, poly_max_lat) + + if is_point_in_polygon((lon, lat), polygon): + points.append((lon, lat)) + + # 如果总点数还是不足,使用全局均匀分布补充 + while len(points) < n_points: + # 随机选择一个多边形 + polygon = random.choice(polygons) + + # 计算该多边形的边界框 + polygon_lons = [p[0] for p in polygon] + polygon_lats = [p[1] for p in polygon] + poly_min_lon, poly_max_lon = min(polygon_lons), max(polygon_lons) + poly_min_lat, poly_max_lat = min(polygon_lats), max(polygon_lats) + + # 在边界框内随机生成点 + for _ in range(100): # 最多尝试100次 + lon = random.uniform(poly_min_lon, poly_max_lon) + lat = random.uniform(poly_min_lat, poly_max_lat) + + if is_point_in_polygon((lon, lat), polygon): + points.append((lon, lat)) + break + + return points[:n_points] + +# 在指定的多边形区域内生成均匀分布的点 +async def generate_uniform_points(polygons: List[List[Tuple[float, float]]], num_points: int, original_coords=None) -> List[Tuple[float, float]]: + """ + 在指定的多边形区域内生成均匀分布的点 + + :param polygons: 多边形列表,每个多边形是坐标点的列表 + :param num_points: 需要生成的点数 + :param original_coords: 原始坐标列表,用于参考相对位置关系 + :return: 生成的点列表 [(lon, lat), ...] + """ + if not polygons: + return [] + + # 如果提供了原始坐标,使用坐标映射算法 + if original_coords and len(original_coords) > 1: + # 过滤掉None值的原始坐标 + valid_original_coords = [(coord["original_longitude"], coord["original_latitude"]) + for coord in original_coords + if coord["original_longitude"] is not None + and coord["original_latitude"] is not None] + + if len(valid_original_coords) >= num_points: + # 如果原始坐标足够,直接使用映射算法 + return map_coordinates(valid_original_coords[:num_points], polygons) + elif valid_original_coords: # 如果有部分原始坐标,先映射这些,再补充生成 + mapped_points = map_coordinates(valid_original_coords, polygons) + # 计算还需要生成的点数 + remaining_points = num_points - len(mapped_points) + if remaining_points > 0: + # 补充生成均匀分布的点 + fallback_points = generate_uniform_points_fallback(polygons, remaining_points) + mapped_points.extend(fallback_points) + return mapped_points[:num_points] + + # 如果没有原始坐标或原始坐标不足,使用传统的均匀分布点生成算法 + return generate_uniform_points_fallback(polygons, num_points) + + +# 导入数据库操作类 +db = Db() + +# 一共有哪些县区 +async def getAllArea(): + sql = "select area_code,area_name from t_dm_area where area_level=3 order by area_code" + return await db.find(sql) + + +# 根据名称获取县区代码 +async def getAreaCode(areaName): + sql = "select area_code from t_dm_area where area_level=3 and area_name=:area_name" + res = await db.findFirst(sql, {"area_name": areaName}) + # 需要去掉最后的三个0 + return str(res["area_code"])[:-3] + +# 从t_school_xy表获取指定县区和学校类型的原始坐标数据 +async def get_original_school_coordinates(region_level3: str, school_types: List[str]) -> List[Dict[str, Any]]: + """ + 从t_school_xy表获取指定县区和学校类型的原始坐标数据 + + :param region_level3: 县区名称 + :param school_types: 学校类型列表 + :return: 包含学校信息和原始坐标的列表 + """ + if not school_types: + return [] + + # 构建SQL查询,获取原始坐标数据 + placeholders = ",".join([f":type{i}" for i in range(len(school_types))]) + sql = f""" + SELECT org_name, school_type, longitude AS original_longitude, latitude AS original_latitude, + region_level1, region_level2, region_level3, region_level4, region_level5 + FROM t_school_xy + WHERE region_level3 = :region_level3 AND school_type IN ({placeholders}) + """ + + params = {"region_level3": region_level3} + # 添加每个学校类型的参数 + for i, st in enumerate(school_types): + params[f"type{i}"] = st + + # 获取原始坐标数据 + original_coords = await db.find(sql, params) + + # 转换坐标数据类型,确保longitude和latitude是float类型 + # 这可以避免与代码中其他float类型进行数学运算时出现类型不兼容错误 + from decimal import Decimal + for coord in original_coords: + if isinstance(coord.get("original_longitude"), Decimal): + coord["original_longitude"] = float(coord["original_longitude"]) + if isinstance(coord.get("original_latitude"), Decimal): + coord["original_latitude"] = float(coord["original_latitude"]) + + return original_coords + + +def get_school_types_by_education_level(education_level: str) -> List[str]: + """ + 根据学段获取对应的学校类型列表 + + :param education_level: 学段名称,可选值:学前、小学、初中、高中 + :return: 对应学校类型的列表,用于SQL查询中的in子句 + """ + # 定义学段到学校类型的映射关系 + school_type_mapping = { + "学前": ["附设幼儿班", "幼儿园"], + "小学": ["小学教学点", "小学", "附设小学班"], + "初中": ["初级中学", "专门学校", "附设普通初中班", "附设职业初中班", "九年一贯制学校"], + "高中": ["附设普通高中班", "高级中学", "十二年一贯制学校", "完全中学"] + } + + # 返回对应的学校类型列表,如果输入无效则返回空列表 + return school_type_mapping.get(education_level, []) + + +# 获取指定县区+指定学校类型的学校,同时包含原始坐标信息 +async def getSchoolList(region_level3, school_type): + # region_level3 是指县区的名称 + # 检查是否传入的是学段名称 + if school_type in ["学前", "小学", "初中", "高中"]: + school_types = get_school_types_by_education_level(school_type) + if not school_types: + return [] + # 使用in子句查询多个学校类型 + placeholders = ",".join([f":type{i}" for i in range(len(school_types))]) + + # 1. 从t_school表获取需要更新的学校列表 + sql_school = f""" + select region_level1,region_level2,region_level3,region_level4,region_level5,school_type,org_name + from t_school + where region_level3=:region_level3 and school_type in ({placeholders}) + order by region_level1,region_level2,region_level3,region_level4,region_level5,school_type + """ + params = {"region_level3": region_level3} + # 添加每个学校类型的参数 + for i, st in enumerate(school_types): + params[f"type{i}"] = st + + schools = await db.find(sql_school, params) + + if not schools: + return [] + + # 2. 从t_school_xy表获取原始坐标数据 + original_coords = await get_original_school_coordinates(region_level3, school_types) + + # 3. 创建原始坐标字典,方便查找 + original_coords_dict = {} + for coord in original_coords: + original_coords_dict[coord["org_name"]] = { + "original_longitude": coord["original_longitude"], + "original_latitude": coord["original_latitude"] + } + + # 4. 合并原始坐标信息到学校列表 + for school in schools: + org_name = school["org_name"] + if org_name in original_coords_dict: + school["original_longitude"] = original_coords_dict[org_name]["original_longitude"] + school["original_latitude"] = original_coords_dict[org_name]["original_latitude"] + else: + # 如果没有原始坐标,设置为None + school["original_longitude"] = None + school["original_latitude"] = None + + return schools + else: + # 原有的单个学校类型查询逻辑(简化版,不包含原始坐标合并) + sql = "select region_level1,region_level2,region_level3,region_level4,region_level5,school_type,org_name from t_school where region_level3=:region_level3 and school_type=:school_type order by region_level1,region_level2,region_level3,region_level4,region_level5,school_type" + schools = await db.find(sql, {"region_level3": region_level3, "school_type": school_type}) + + # 获取原始坐标并合并 + original_coords = await get_original_school_coordinates(region_level3, [school_type]) + original_coords_dict = { + coord["org_name"]: { + "original_longitude": coord["original_longitude"], + "original_latitude": coord["original_latitude"] + } + for coord in original_coords + } + + for school in schools: + org_name = school["org_name"] + if org_name in original_coords_dict: + school["original_longitude"] = original_coords_dict[org_name]["original_longitude"] + school["original_latitude"] = original_coords_dict[org_name]["original_latitude"] + else: + school["original_longitude"] = None + school["original_latitude"] = None + + return schools + + +# 获取指定县区下+指定学段的学校数量 +async def getSchoolCount(region_level3, school_type): + # 检查是否传入的是学段名称 + if school_type in ["学前", "小学", "初中", "高中"]: + school_types = get_school_types_by_education_level(school_type) + if not school_types: + return {"c": 0} + # 使用in子句查询多个学校类型 + placeholders = ",".join([f":type{i}" for i in range(len(school_types))]) + sql = f"select count(1) as c from t_school where region_level3=:region_level3 and school_type in ({placeholders})" + params = {"region_level3": region_level3} + # 添加每个学校类型的参数 + for i, st in enumerate(school_types): + params[f"type{i}"] = st + return await db.findFirst(sql, params) + else: + # 原有的单个学校类型查询逻辑 + sql = "select count(1) as c from t_school where region_level3=:region_level3 and school_type=:school_type" + return await db.findFirst(sql, {"region_level3": region_level3, "school_type": school_type}) + + +# 更新学校经纬度 +async def updateSchool(org_name, longitude, latitude): + sql = "update t_school set longitude=:longitude,latitude=:latitude where org_name=:org_name" + return await db.execute_update(sql, {"org_name": org_name, "longitude": longitude, "latitude": latitude}) + +# 重置所有学校坐标为0 +async def reset_all_school_coordinates(): + """ + 将所有学校的经纬度坐标重置为0 + """ + print("\n正在重置所有学校坐标...") + sql = "update t_school set longitude=0,latitude=0" + try: + result = await db.execute_update(sql, {}) + print(f"✅ 成功重置 {result} 条学校记录的坐标") + return True + except Exception as e: + print(f"❌ 重置坐标失败: {str(e)}") + return False + +async def get_schools_by_county_and_level(county_name, education_level): + """ + 获取指定县区和学段的学校列表,包含当前坐标信息 + 只从t_school表获取数据,不依赖t_school_xy表 + """ + # 获取对应的学校类型列表 + school_types = get_school_types_by_education_level(education_level) + if not school_types: + return [] + + # 使用in子句查询多个学校类型 + placeholders = ",".join([f":type{i}" for i in range(len(school_types))]) + + # 从t_school表获取学校数据和当前坐标 + sql = f""" + select region_level1, region_level2, region_level3, region_level4, region_level5, + school_type, org_name, longitude, latitude + from t_school + where region_level3=:county_name and school_type in ({placeholders}) + order by region_level1, region_level2, region_level3, region_level4, region_level5, school_type + """ + + params = {"county_name": county_name} + # 添加每个学校类型的参数 + for i, st in enumerate(school_types): + params[f"type{i}"] = st + + schools = await db.find(sql, params) + + # 转换坐标数据类型,确保longitude和latitude是float类型 + from decimal import Decimal + for school in schools: + if isinstance(school.get("longitude"), Decimal): + school["longitude"] = float(school["longitude"]) + if isinstance(school.get("latitude"), Decimal): + school["latitude"] = float(school["latitude"]) + + return schools + +def optimize_school_distribution(schools, polygons): + """ + 优化学校坐标分布 + - 对于已经在多边形内部的坐标,保持不变 + - 对于不在多边形内部的坐标,将其调整到多边形中 + """ + if not schools: + return [] + + # 获取目标区域的边界信息 + all_target_points = [] + for polygon in polygons: + all_target_points.extend(polygon) + + target_lons = [p[0] for p in all_target_points] + target_lats = [p[1] for p in all_target_points] + + target_min_lon, target_max_lon = min(target_lons), max(target_lons) + target_min_lat, target_max_lat = min(target_lats), max(target_lats) + + # 处理每个学校的坐标 + optimized_coords = [] + for school in schools: + lon, lat = school["longitude"], school["latitude"] + + # 检查坐标是否已经在多边形内 + if any(is_point_in_polygon((lon, lat), polygon) for polygon in polygons): + # 如果在多边形内,保持原坐标不变 + optimized_coords.append((lon, lat)) + else: + # 如果不在多边形内,将其调整到最近的多边形边界 + adjusted_lon, adjusted_lat = adjust_to_polygon_boundary([lon, lat], polygons) + optimized_coords.append((adjusted_lon, adjusted_lat)) + + return optimized_coords + +async def process_school_coordinates(): + """ + 优化t_school表中现有学校坐标分布 + 按县区和学段分组处理,美化坐标分布 + 注意:这是一个补丁程序,只修改现有坐标,不重置为0 + """ + print("\n===== 学校坐标分布优化补丁 =====") + print("正在开始优化现有学校坐标分布...") + + try: + # 1. 获取所有县区信息 + areas = await getAllArea() + print(f"\n✅ 成功获取 {len(areas)} 个县区信息") + + # 2. 定义需要处理的学段 + education_levels = ["学前", "小学", "初中", "高中"] + + # 3. 统计信息 + total_schools = 0 + processed_schools = 0 + failed_counties = 0 + + # 4. 遍历所有县区 + for area in areas: + county_name = area["area_name"] + area_code = str(area["area_code"])[:-3] # 去掉最后三位0 + + print(f"\n🔄 正在处理: {county_name} (代码: {area_code})") + + # 5. 构建GeoJSON文件路径 + geojson_path = f"d:\\dsWork\\YunNanProject\\Init\\Json\\{area_code}.json" + + try: + # 6. 加载县区边界数据 + polygons = load_geojson(geojson_path) + print(f"✅ 成功加载 {county_name} 边界数据") + + # 7. 遍历所有学段 + for education_level in education_levels: + print(f" 📚 学段: {education_level}") + + try: + # 8. 获取该县区该学段的学校列表及其现有坐标 + schools = await get_schools_by_county_and_level(county_name, education_level) + + if not schools: + print(f" ⏭️ 该学段无待处理学校") + continue + + # 过滤掉没有坐标的学校 + schools_with_coords = [s for s in schools if s["longitude"] is not None and s["latitude"] is not None] + + if not schools_with_coords: + print(f" ⏭️ 该学段没有有效坐标的学校") + continue + + print(f" 📋 找到 {len(schools_with_coords)} 所需要优化坐标的学校") + total_schools += len(schools_with_coords) + + # 9. 优化学校坐标分布 + optimized_coords = optimize_school_distribution(schools_with_coords, polygons) + + # 10. 更新学校坐标 + for i, (school, (lon, lat)) in enumerate(zip(schools_with_coords, optimized_coords), 1): + org_name = school["org_name"] + result = await updateSchool(org_name, lon, lat) + if result: + processed_schools += 1 + print(f" ✅ {i}/{len(schools_with_coords)} 已优化: {org_name}") + else: + print(f" ❌ {i}/{len(schools_with_coords)} 优化失败: {org_name}") + + except Exception as e: + print(f" ⚠️ 处理{education_level}学段时出错: {str(e)}") + continue + + except FileNotFoundError: + print(f"❌ 未找到 {county_name} 的GeoJSON文件: {geojson_path}") + failed_counties += 1 + except Exception as e: + print(f"❌ 处理{county_name}时出错: {str(e)}") + failed_counties += 1 + continue + + # 12. 输出统计结果 + print("\n" + "="*50) + print("🎯 批量处理完成!") + print(f"📊 统计信息:") + print(f" - 总县区数: {len(areas)}") + print(f" - 成功处理县区数: {len(areas) - failed_counties}") + print(f" - 失败县区数: {failed_counties}") + print(f" - 待处理学校总数: {total_schools}") + print(f" - 成功更新学校数: {processed_schools}") + print("="*50) + + except Exception as e: + print(f"\n❌ 批量处理过程中发生错误: {str(e)}") + import traceback + traceback.print_exc() + raise + finally: + # 确保在正常执行和异常情况下都关闭数据库连接 + if 'db' in globals() and hasattr(db, 'engine') and db.engine: + try: + await db.engine.dispose() + print("\n✅ 数据库连接已成功关闭") + except Exception as dispose_error: + print(f"\n❌ 关闭数据库连接时出错: {str(dispose_error)}") + +if __name__ == "__main__": + # 直接开始批量处理 - 为所有学校生成坐标 + try: + asyncio.run(process_school_coordinates()) + except KeyboardInterrupt: + print("\n⚠️ 程序被用户中断") + except Exception as e: + # 捕获并处理所有异常,包括asyncio和SSL相关错误 + print(f"\n❌ 程序执行出错: {str(e)}") + print(" 错误类型:", type(e).__name__) + # 仅在需要详细调试时显示完整堆栈 + print("\n详细错误信息:") + import traceback + traceback.print_exc() + finally: + print("\n程序已退出") \ No newline at end of file diff --git a/Apps/Json/amap_cookies.json b/Apps/Json/amap_cookies.json new file mode 100644 index 0000000..d17d26a --- /dev/null +++ b/Apps/Json/amap_cookies.json @@ -0,0 +1,89 @@ +[ + { + "domain": ".amap.com", + "expiry": 1783436001, + "httpOnly": false, + "name": "tfstk", + "path": "/", + "sameSite": "None", + "secure": true, + "value": "gM_oFfTFRg-71NH4Sv874ohkZ_ZAwUTBK93ppepU0KJXJW9RTebhp6-FyUCRnBWVhe3JzeUHKTWM99fQNBJFL9vd2oUON_TB8RB3WPC5mpKEaTAE8sPe1BAUM3zSaLiH8ReTkUIGoi8Fw8wZHn52hBAEapWe0sRH3QReY9J20CRtUe8FLSv29Bkr8LuUumR93p8e8954iBp2ae8FLsPDObOaUL7FyZyL5IXlLBGRuQxkQ_JPw1bqo3o5OK0E8NSDqdupn2uFoQ5FNSuqSkpNfLK9ptzxref2tTpAQPuDuhj19BXur48R0i_WyZeip3YvehSem7zPiUvkjaKi1mLlYT_HVgcQ1s8PhG964owXiaQ9xdtm385AiL-GxTej8LIGgtxOkx39RtsFLBXqEgoq0coMm2O49ZoIA3RXidFP3WmOJLCWuSVmjptyGQJTiSmIA3RXidF0icYM4IOyB" + }, + { + "domain": ".amap.com", + "httpOnly": true, + "name": "oauth_state", + "path": "/", + "sameSite": "None", + "secure": true, + "value": "e88390e153019eb5fdc2a6a361b08407" + }, + { + "domain": ".amap.com", + "expiry": 1775660027, + "httpOnly": true, + "name": "passport_login", + "path": "/", + "sameSite": "None", + "secure": true, + "value": "MTIyMDQwNjY0MSxhbWFwMjc1OWtPR0wsdGtsaXFqZGE0dDNnbnRrY3dpbHFtZG1nbXdncGE2ZjUsMTc2Nzg4NDAyNyxOVEJpT1dRMVlqaGlOemRsWVRZeE4yRTBNVGswWkRreU5tVTBNVFF5WW1FPQ%3D%3D" + }, + { + "domain": ".amap.com", + "expiry": 1768143203, + "httpOnly": false, + "name": "xlly_s", + "path": "/", + "sameSite": "None", + "secure": true, + "value": "1" + }, + { + "domain": ".amap.com", + "expiry": 1802444002, + "httpOnly": false, + "name": "cna", + "path": "/", + "sameSite": "None", + "secure": true, + "value": "4rLmIViEnl4CAXzrzjwC3UGc" + }, + { + "domain": "lbs.amap.com", + "expiry": 1802444003, + "httpOnly": false, + "name": "_uab_collina", + "path": "/tools", + "sameSite": "Lax", + "secure": false, + "value": "176788400312910602225889" + }, + { + "domain": ".lbs.amap.com", + "httpOnly": false, + "name": "HMACCOUNT", + "path": "/", + "sameSite": "Lax", + "secure": false, + "value": "DAC02E19E8B24CB5" + }, + { + "domain": ".lbs.amap.com", + "httpOnly": false, + "name": "Hm_lpvt_c8ac07c199b1c09a848aaab761f9f909", + "path": "/", + "sameSite": "Lax", + "secure": false, + "value": "1767884002" + }, + { + "domain": ".lbs.amap.com", + "expiry": 1799420002, + "httpOnly": false, + "name": "Hm_lvt_c8ac07c199b1c09a848aaab761f9f909", + "path": "/", + "sameSite": "Lax", + "secure": false, + "value": "1767884002" + } +] \ No newline at end of file diff --git a/Apps/XinDianTu/Coord.py b/Apps/XinDianTu/Coord.py new file mode 100644 index 0000000..3077833 --- /dev/null +++ b/Apps/XinDianTu/Coord.py @@ -0,0 +1,145 @@ +import asyncio +import os +import sys +import logging +from sqlalchemy import text + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +# python -m pip install webdriver-manager selenium +# https://googlechromelabs.github.io/chrome-for-testing/ +# https://storage.googleapis.com/chrome-for-testing-public/143.0.7499.192/win64/chromedriver-win64.zip +# update t_station_profile_scd set coord_x=null,coord_y=null where id='95783932-1d32-48e4-9a38-6a6696a6a423' +# 将项目根目录添加到系统路径,确保可以导入 Util, DbKit 和 Config 模块 +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from Util.PaChongGaoDeKit import PaChongGaoDeKit +from DbKit.Db import Db +from Config.Config import DB_URL + +class CookieInvalidError(Exception): + """自定义异常:表示 Cookie 无效或过期""" + pass + +async def main(check_cookie_first=True): + """ + 坐标回填任务:自动扫描数据库中缺失坐标的场站地址,并通过高德地图补全。 + :param check_cookie_first: 是否在开始前验证 Cookie 有效性 + """ + logger.info("正在启动 T4_Coord: 高德地图坐标回填任务...") + + # 初始化数据库连接 + db = Db(db_url=DB_URL) + await db.init_db() + + # 初始化高德地图工具类(使用无头模式) + # 显式指定 Cookie 路径,确保跨目录运行时能找到文件 + project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + cookie_path = os.path.join(project_root, 'Json', 'amap_cookies.json') + + if not os.path.exists(cookie_path): + logger.error(f"错误:未找到 Cookie 文件:{cookie_path}") + # 如果要求检查且文件不存在,直接抛出异常以便上层处理 + if check_cookie_first: + await db.close() + raise CookieInvalidError("Cookie file not found") + logger.error("请先运行 Tools/T3_GetAmapCookie.py 生成有效 Cookie。") + return + + kit = PaChongGaoDeKit(cookie_file=cookie_path, headless=False) + + try: + # 0. Cookie 有效性探针 + if check_cookie_first: + logger.info("正在验证高德地图 Cookie 有效性...") + loop = asyncio.get_event_loop() + # 使用一个肯定存在的地址进行测试 + test_addr = "北京市天安门" + t_lng, t_lat = await loop.run_in_executor(None, kit.get_coordinate, test_addr) + + if not t_lng: + logger.warning(f"Cookie 验证失败:无法获取测试地址 '{test_addr}' 的坐标。") + logger.warning("判定 Cookie 已失效或过期。") + raise CookieInvalidError("Cookie invalid or expired") + else: + logger.info(f"Cookie 验证通过 (测试坐标: {t_lng}, {t_lat})。") + + async with await db.get_session() as session: + # 1. 查询所有地址不为空但缺失坐标的唯一地址 + sql_missing = """ + SELECT DISTINCT address + FROM t_station_profile_scd + WHERE address IS NOT NULL + AND address != '' + AND (coord_x IS NULL OR coord_y IS NULL) + """ + result = await session.execute(text(sql_missing)) + missing_addresses = [row[0] for row in result.fetchall()] + + logger.info(f"共发现 {len(missing_addresses)} 个缺失坐标的唯一地址。") + + for address in missing_addresses: + logger.info(f"\n正在处理地址: {address}") + + # 2. 检查数据库中其他记录是否已经存有该地址的坐标(去重复查询) + # 这样可以最大程度减少对高德地图接口的调用 + sql_check = """ + SELECT coord_x, coord_y + FROM t_station_profile_scd + WHERE address = :addr + AND coord_x IS NOT NULL + AND coord_y IS NOT NULL + LIMIT 1 + """ + existing = await session.execute(text(sql_check), {"addr": address}) + row = existing.fetchone() + + lng, lat = None, None + + if row: + lng, lat = row[0], row[1] + logger.info(f" -> 在数据库中找到现有坐标: {lng}, {lat}") + else: + # 3. 数据库中没有,调用高德地图进行查询 + logger.info(" -> 数据库中无记录,正在查询高德地图...") + # 在线程池中运行同步的 Selenium 调用,避免阻塞异步循环 + loop = asyncio.get_event_loop() + lng, lat = await loop.run_in_executor(None, kit.get_coordinate, address) + + if lng and lat: + logger.info(f" -> 高德地图返回坐标: {lng}, {lat}") + else: + logger.info(" -> 高德地图未返回有效坐标。") + + # 4. 如果获取到了坐标,更新数据库中所有匹配该地址的记录 + if lng and lat: + sql_update = """ + UPDATE t_station_profile_scd + SET coord_x = :lng, coord_y = :lat + WHERE address = :addr + """ + await session.execute(text(sql_update), { + "lng": lng, + "lat": lat, + "addr": address + }) + await session.commit() + logger.info(f" -> 已成功更新数据库中地址为 '{address}' 的记录。") + else: + logger.info(f" -> 跳过更新 (未找到有效坐标)。") + + except Exception as e: + logger.error(f"执行过程中出错: {e}") + finally: + # 释放资源 + kit.close() + await db.close() + logger.info("\n任务执行结束。") + +if __name__ == "__main__": + # 针对 Windows 平台的异步策略设置 + if sys.platform == 'win32': + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + asyncio.run(main()) diff --git a/Apps/XinDianTu/Crawler.py b/Apps/XinDianTu/Crawler.py new file mode 100644 index 0000000..96550b5 --- /dev/null +++ b/Apps/XinDianTu/Crawler.py @@ -0,0 +1,581 @@ +# coding=utf-8 +import asyncio +import logging +import uuid +import os +import sys +import json +import time +import hashlib +from PIL import Image + +# 将项目根目录添加到 sys.path +project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +if project_root not in sys.path: + sys.path.append(project_root) + +import uiautomator2 as u2 +from Core.BaseCrawler import BaseCrawler +from Util import Kit +from Util.Kit import take_screenshot +from Util.ObsUtil import ObsUploader +from Util.RedisKit import RedisKit +from Util.PaddleOCRKit import get_ocr_kit +import cv2 +from Apps.XinDianTu.Service import XinDianTuService +from Config.Config import ( + OBS_TMP_PREFIX, CDN_DOMAIN, SCROLL_DISTANCE_RATIO, + MAX_SCROLLS, REDIS_STATION_EXPIRE, + WAIT_DETAIL_PAGE_LOAD, WAIT_BACK_TO_LIST, WAIT_AFTER_SCROLL, + MAX_CRAWL_DISTANCE +) + +# --- 用户配置区域 --- +# 是否保留截图文件(True=保留备查,False=随用随删) +KEEP_SCREENSHOTS = True + +# [Testing] 是否在启动时清除 Redis 中的场站处理记录 +# True: 每次运行前清除记录,方便反复测试同一个场站 +# False: 生产模式,保留记录以避免重复爬取 +TEST_CLEAR_REDIS = True + +# 配置说明: +# SCROLL_DISTANCE_RATIO 控制翻页时的滑动距离(在 Config.py 中修改)。 +# 对于华为 Mate 20x 等分辨率较低或屏幕较小的手机,如果发现翻页时跳过了某些场站, +# 请尝试减小 SCROLL_DISTANCE_RATIO(例如设置为 0.4 或 0.3)。 +# 这样每次滑动的距离变短,可以确保所有场站都能被完整显示并识别。 + +# 配置日志输出 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(sys.stdout) + ] +) +logger = logging.getLogger("StationList") + +# 强制设置所有相关模块的日志级别为 INFO,防止被第三方库干扰 +logging.getLogger("PaddleOCRKit").setLevel(logging.INFO) +logging.getLogger("Util.Kit").setLevel(logging.INFO) +logging.getLogger("OpenXinDianTu").setLevel(logging.INFO) +logging.getLogger("FullProcess").setLevel(logging.INFO) + +class XinDianTuCrawler(BaseCrawler): + """ + 新电途小程序爬虫实现 + """ + def __init__(self, service=None): + super().__init__(service) + # 初始化配置参数 + self.max_scrolls = MAX_SCROLLS + self.uploader = ObsUploader() + self.redis_kit = RedisKit() + + async def start(self): + """ + 实现 BaseCrawler 的启动入口 + """ + # 兼容旧逻辑,直接调用 main + await main(self.service) + + async def open_app(self): + # 实际逻辑在 Opener.py,此处可作为封装层 + pass + + async def crawl_list(self): + # 实际逻辑在 get_station_list,此处可作为封装层 + pass + + async def crawl_detail(self, station_info): + pass + +async def get_station_list(d, service, uploader, max_scrolls=MAX_SCROLLS): + """ + 获取场站列表并处理翻页 + """ + all_stations = [] + seen_names = set() + redis_kit = RedisKit() + + # 确保在“找桩”或者首页列表界面 + window_size = d.window_size() + w, h = window_size[0], window_size[1] + + # 获取设备信息以用于坐标计算 + device_info = d.info + device_info['width'] = w + device_info['height'] = h + + logger.info(f"设备信息: {device_info.get('productName')} | 窗口分辨率: {w}x{h}") + + max_distance_reached = False + stop_reason = "max_scrolls_reached" # 默认停止原因:达到最大翻页次数 + + # 存储后台异步任务 + background_tasks = [] + + for i in range(max_scrolls + 1): + if max_distance_reached: + logger.info("已达到最大抓取距离,停止翻页。") + stop_reason = "max_distance_reached" + break + logger.info(f"正在处理第 {i + 1} 页...") + + # 1. 拍摄截图 + logger.info(f"Step [1/6] 正在拍摄列表页截图...") + t_shot = time.time() + image_uuid = str(uuid.uuid4()) + # 使用相对路径: 基于当前脚本目录下的 Images 文件夹 + base_dir = os.path.dirname(os.path.abspath(__file__)) + save_dir = os.path.join(base_dir, "./Images") + screenshot_path = take_screenshot(d, image_uuid, save_dir=save_dir) + logger.info(f"Step [1/6] 列表页截图已完成: {screenshot_path} (耗时: {time.time() - t_shot:.2f}s)") + + # 校验截图实际尺寸 + img_w, img_h = 0, 0 + try: + with Image.open(screenshot_path) as img: + img_w, img_h = img.size + logger.info(f"截图实际尺寸: {img_w}x{img_h}") + # 如果截图尺寸与窗口尺寸不符,更新 device_info 以适配坐标换算 + if img_w != w or img_h != h: + logger.warning(f"检测到截图尺寸 ({img_w}x{img_h}) 与窗口尺寸 ({w}x{h}) 不一致,将以截图尺寸为准进行坐标换算。") + device_info['width'] = img_w + device_info['height'] = img_h + except Exception as e: + logger.warning(f"无法获取截图尺寸信息: {e}") + + # 2. 使用 Kit.crop_cards_from_image 进行切片和生成 _vl.jpg + logger.info("Step [2/6] 正在执行本地图形学切片分析,识别场站卡片并生成绿色方框图...") + t_crop = time.time() + # 这会生成 _vl.jpg 和 .json + Kit.crop_cards_from_image(screenshot_path) + logger.info(f"Step [2/6] 图形学切片分析完成 (耗时: {time.time() - t_crop:.2f}s)") + + # 读取生成的元数据 + json_path = screenshot_path.replace(".jpg", ".json") + vl_img_path = screenshot_path.replace(".jpg", "_vl.jpg") + + if not os.path.exists(json_path) or not os.path.exists(vl_img_path): + logger.error(f"❌ Step [2/6] 失败: 未生成有效的 JSON 或 VL 图片 (JSON: {os.path.exists(json_path)}, VL: {os.path.exists(vl_img_path)})") + logger.warning("可能未识别到任何卡片,跳过当前页") + continue + + logger.info(f"Step [3/6] 绿色方框图已生成: {vl_img_path}") + + with open(json_path, 'r', encoding='utf-8') as f: + json_metadata = json.load(f) + + # --- New Logic: Local OCR via PaddleOCRKit --- + logger.info("Step [4/6] 正在开始本地 OCR 识别流程,将识别出的卡片逐一交给 OCR...") + t_ocr_total = time.time() + + stations = [] + try: + ocr_kit = get_ocr_kit() + + # 读取原始截图进行裁剪 (比读取 _vl.jpg 更干净,没有绿框干扰) + original_img = cv2.imread(screenshot_path) + + if "cards" in json_metadata and original_img is not None: + h_img, w_img = original_img.shape[:2] + num_cards = len(json_metadata['cards']) + logger.info(f"检测到 {num_cards} 个场站卡片,准备开始逐一 OCR 识别...") + + for idx, card in enumerate(json_metadata["cards"]): + # card: {"id": 1, "rect": [x1, y1, x2, y2], "click_point": [cx, cy]} + rect = card.get("rect") + if not rect: continue + x1, y1, x2, y2 = rect + + # 边界检查 + x1 = max(0, min(x1, w_img)) + x2 = max(0, min(x2, w_img)) + y1 = max(0, min(y1, h_img)) + y2 = max(0, min(y2, h_img)) + + if x2 <= x1 or y2 <= y1: continue + + # 裁剪卡片 + cropped_card = original_img[y1:y2, x1:x2] + + # 识别 + logger.info(f"正在识别第 {idx+1}/{num_cards} 个卡片 (区域: {rect})...") + t_card_start = time.time() + parsed_data = ocr_kit.recognize(cropped_card) + t_card_end = time.time() + + # Log detailed OCR result + logger.info(f"卡片 {idx+1} OCR 识别耗时: {t_card_end - t_card_start:.2f}s") + + if parsed_data and parsed_data.get("station_name"): + # 格式化数据以匹配原有结构 + piles_list = parsed_data.get("piles", []) + piles_str_parts = [] + for p in piles_list: + p_type = p.get("type", "") + p_free = p.get("free", 0) + p_total = p.get("total", 0) + piles_str_parts.append(f"{p_type}:{p_free}/{p_total}") + + piles_str = " ".join(piles_str_parts) + + station_info = { + "station_name": parsed_data.get("station_name"), + "price": str(parsed_data.get("price")) if parsed_data.get("price") is not None else "", + "pro_price": "", # 暂未解析 + "piles": piles_str, + "distance": parsed_data.get("distance", ""), + "uia_center_x": card["click_point"][0], + "uia_center_y": card["click_point"][1], + "tags": parsed_data.get("tags", []), + "parking_info": parsed_data.get("parking", "") + } + logger.info(f"✅ 成功解析场站: {station_info['station_name']} | 距离: {station_info['distance']}") + + # 立即记录场站基础状态信息 (电桩、价格等) + try: + await service.record_station_status(station_info) + except Exception as e: + logger.error(f"❌ 记录场站状态失败: {e}") + + stations.append(station_info) + else: + logger.warning(f"⚠️ 卡片 {idx+1} 未能识别出有效场站名称") + + except Exception as e: + logger.error(f"❌ Local OCR processing failed: {e}", exc_info=True) + + logger.info(f"Step [5/6] 本地 OCR 解析完成 (总耗时: {time.time() - t_ocr_total:.2f}s) | 成功识别: {len(stations)}/{len(json_metadata.get('cards', []))}") + + if not stations: + logger.warning("当前页面未检测到任何有效的场站信息") + else: + logger.info(f"Step [6/6] 准备开始逐一点击场站进入详情页 (共 {len(stations)} 个)...") + new_stations_found = False + for s_idx, s in enumerate(stations): + name = s.get("station_name") + + # 过滤掉明显的非场站名称 + if not name: + continue + + # --- 短期去重:检查 Redis 缓存 --- + # 2分钟内如果处理过该场站,则跳过 + redis_key = f"processed_station:{name}" + if await redis_kit.exists(redis_key): + logger.info(f"场站 {name} 在 2 分钟内已处理过,跳过") + continue + + if name in seen_names: + continue + + # 使用从 JSON 元数据中恢复的点击坐标 + x = s.get("uia_center_x") + y = s.get("uia_center_y") + + if x is None or y is None: + logger.warning(f"场站 {name} 缺少坐标信息,无法进入详情页") + continue + + seen_names.add(name) + all_stations.append(s) + new_stations_found = True + + # 打印基本信息 + price = s.get("price") + pro_price = s.get("pro_price") + piles_str = s.get("piles", "") + distance_str = s.get("distance", "") + + # 检查距离 + dist_log_part = "" + if distance_str: + try: + import re + dist_match = re.search(r"(\d+(\.\d+)?)", distance_str) + if dist_match: + dist_val = float(dist_match.group(1)) + is_km = "km" in distance_str.lower() + dist_km = dist_val if is_km else dist_val / 1000.0 + + # 将距离解析结果和限制检查合并到日志中 + dist_log_part = f" (解析: {dist_km:.2f}km / 限: {MAX_CRAWL_DISTANCE}km)" + + if dist_km >= MAX_CRAWL_DISTANCE: + logger.info(f"当前场站 {name} 距离 {dist_km}km (原始: {distance_str}) 已达到或超过限制 {MAX_CRAWL_DISTANCE}km。") + max_distance_reached = True + except Exception as e: + logger.warning(f"解析距离出错: {distance_str}, {e}") + + pro_info = f" | PRO会员价: {pro_price}" if pro_price else "" + # 确保距离始终显示,如果为空则显示 "未知" + display_distance = distance_str if distance_str else "未知" + logger.info(f"正在处理第 {s_idx+1} 个场站: {name} | 价格: {price}{pro_info} | 枪: {piles_str} | 距离: {display_distance}{dist_log_part}") + + if max_distance_reached: + break + + # --- 点击进入详情页记录地址 --- + # 使用相对坐标点击,以适应不同分辨率 + if img_w > 0 and img_h > 0: + rel_x = max(0.0, min(1.0, x / img_w)) + rel_y = max(0.0, min(1.0, y / img_h)) + logger.info(f"👉 正在点击进入详情页: {name} (相对坐标: {rel_x:.3f}, {rel_y:.3f})") + d.click(rel_x, rel_y) + else: + logger.info(f"👉 正在点击进入详情页: {name} (绝对坐标: {x}, {y})") + d.click(x, y) + + await asyncio.sleep(WAIT_DETAIL_PAGE_LOAD) # 等待详情页加载 + + # 尝试获取并保存地址 + address_recorded = False + for retry in range(2): + # 1. 拍摄详情页截图 + t_d_shot = time.time() + detail_uuid = str(uuid.uuid4()) + detail_screenshot_path = take_screenshot(d, detail_uuid, save_dir=save_dir) + logger.info(f"Step [详情页截图] 耗时: {time.time() - t_d_shot:.4f}s") + + # 2. 上传至 OBS + t_d_up = time.time() + detail_object_key = f"{OBS_TMP_PREFIX}/{detail_uuid}.jpg" + up_success, _ = uploader.upload_file(detail_object_key, detail_screenshot_path) + logger.info(f"Step [上传详情页截图] 耗时: {time.time() - t_d_up:.4f}s") + + if up_success: + detail_url = f"https://{CDN_DOMAIN}/{detail_object_key}" + # 3. 解析并保存地址 (异步后台处理) + # 定义异步任务函数 + async def _process_address_task(task_name, task_url, task_dev_info, task_redis_key): + t_addr_task = time.time() + try: + addr_res = await service.process_station_address(task_name, task_url, device_info=task_dev_info) + logger.info(f"Step [解析并保存地址-后台] 耗时: {time.time() - t_addr_task:.4f}s") + if addr_res.get("address"): + logger.info(f"成功记录地址: {addr_res.get('address')}") + # 记录到 Redis,设置过期时间 + await redis_kit.set_data(task_redis_key, "1", expire=REDIS_STATION_EXPIRE) + except Exception as e: + logger.error(f"后台处理地址失败 ({task_name}): {e}") + + # 创建并启动任务 + addr_task = asyncio.create_task(_process_address_task(name, detail_url, device_info, redis_key)) + background_tasks.append(addr_task) + logger.info(f"已提交地址解析任务到后台: {name}") + + # 标记为已记录以跳出 retry 循环 + address_recorded = True + + # 清理详情页临时截图 + if not KEEP_SCREENSHOTS and os.path.exists(detail_screenshot_path): + os.remove(detail_screenshot_path) + + break # 直接跳出 retry 循环 + + # --- 抓取价格时段信息 (New Feature) --- + # 仅在测试模式下或特定需求下启用 + try: + logger.info(f"开始抓取价格时段信息: {name}") + + # 使用几何特征识别 "全部时段" 按钮 + # 临时截图 + temp_uuid = "temp_find_expand" + screenshot_path = take_screenshot(d, temp_uuid, save_dir="Temp") + + # 尝试识别,将调试图片保存到 Images 目录 + t_find = time.time() + pos = Kit.find_expand_button_position(screenshot_path, debug_dir=save_dir, debug_filename_prefix=name) + logger.info(f"Step [识别展开按钮] 耗时: {time.time() - t_find:.4f}s") + + # 清理截图 + try: + os.remove(screenshot_path) + except: + pass + + if pos: + x, y = pos + logger.info(f"通过几何特征找到 '全部时段' 按钮: ({x}, {y})") + d.click(x, y) + await asyncio.sleep(1.5) + + # 抓取3屏截图 + price_image_urls = [] + for p_idx in range(1, 4): + # 使用场站名称的MD5值作为文件名前缀,避免中文和特殊字符导致的URL问题 + t_p_loop = time.time() + name_md5 = hashlib.md5(name.encode('utf-8')).hexdigest() + p_uuid = f"{name_md5}_price_{p_idx}" + p_path = take_screenshot(d, p_uuid, save_dir=save_dir) + logger.info(f"已保存价格时段截图 {p_idx} (Station: {name}, MD5: {name_md5}): {p_path}") + + # 上传到 OBS + p_object_key = f"{OBS_TMP_PREFIX}/{p_uuid}.jpg" + success, _ = uploader.upload_file(p_object_key, p_path) + if success: + p_url = f"https://{CDN_DOMAIN}/{p_object_key}" + price_image_urls.append(p_url) + logger.info(f"截图上传成功: {p_url}") + else: + logger.warning(f"截图上传失败: {p_path}") + + logger.info(f"Step [价格截图与上传-{p_idx}] 耗时: {time.time() - t_p_loop:.4f}s") + + if p_idx < 3: + d.swipe_ext("up", scale=0.7) + await asyncio.sleep(1.0) + + # 调用服务解析价格时段 (异步后台处理) + if price_image_urls: + logger.info(f"正在调用接口解析电费时段数据 ({len(price_image_urls)} 张图片) - 转入后台...") + + async def _process_price_task(task_name, task_urls, task_dev_info): + t_price_task = time.time() + try: + await service.process_price_schedule(task_name, task_urls, device_info=task_dev_info) + logger.info(f"Step [解析电费时段数据-后台] 耗时: {time.time() - t_price_task:.4f}s") + logger.info(f"电费时段数据解析完成: {task_name}") + except Exception as e: + logger.error(f"后台处理价格时段失败 ({task_name}): {e}") + + price_task = asyncio.create_task(_process_price_task(name, price_image_urls, device_info)) + background_tasks.append(price_task) + else: + logger.warning("未能获取到有效的价格时段截图,跳过解析") + else: + logger.warning(f"未能通过几何特征识别 '全部时段' 按钮") + + except Exception as e: + logger.warning(f"抓取价格时段信息时发生异常: {e}") + + # 测试模式:仅处理第一个场站 + # logger.info("测试模式:仅处理第一个场站,即将退出 (Y3)") + # return all_stations + + # 返回列表页 + d.press("back") + await asyncio.sleep(WAIT_BACK_TO_LIST) # 等待列表页重新稳定 + + if not new_stations_found and i > 0: + logger.info("未发现更多新场站,停止下拉。") + # 如果需要强行爬取所有,可以注释掉 break + # break + + # 5. 如果还没到最后一页,执行下拉 + if i < max_scrolls and not max_distance_reached: + logger.info(f"执行下拉翻页 (距离比例: {SCROLL_DISTANCE_RATIO})...") + # 根据配置的比例计算滑动起始和终点 + # 保证滑动在屏幕中心区域进行 + start_y = 0.5 + (SCROLL_DISTANCE_RATIO / 2) + end_y = 0.5 - (SCROLL_DISTANCE_RATIO / 2) + d.swipe(w * 0.5, h * start_y, w * 0.5, h * end_y, duration=0.5) + await asyncio.sleep(WAIT_AFTER_SCROLL) # 等待页面加载和列表稳定 + + # 清理列表页截图 + if not KEEP_SCREENSHOTS: + if os.path.exists(screenshot_path): + os.remove(screenshot_path) + if os.path.exists(vl_img_path): + os.remove(vl_img_path) + if os.path.exists(json_path): + os.remove(json_path) + + logger.info(f"爬取任务结束,正在等待 {len(background_tasks)} 个后台处理任务完成...") + if background_tasks: + await asyncio.gather(*background_tasks) + logger.info("所有后台任务已完成。") + + logger.info(f"任务结束,共采集到 {len(all_stations)} 个场站。停止原因: {stop_reason}") + return all_stations + +def clean_images_dir(): + """清理 Images 目录下除保留文件外的所有文件""" + base_dir = os.path.dirname(os.path.abspath(__file__)) + images_dir = os.path.join(base_dir, "Images") + + if not os.path.exists(images_dir): + return + + keep_files = {'1.jpg', '2.jpg', '3.jpg', '4.jpg'} + logger.info(f"正在清理 Images 目录 (保留: {keep_files})...") + + deleted_count = 0 + for filename in os.listdir(images_dir): + if filename in keep_files: + continue + + file_path = os.path.join(images_dir, filename) + try: + if os.path.isfile(file_path): + os.remove(file_path) + deleted_count += 1 + except Exception as e: + logger.warning(f"删除文件失败 {filename}: {e}") + + logger.info(f"清理完成,共删除 {deleted_count} 个文件。") + +async def clean_redis_data(redis_kit): + """清除 Redis 中的场站处理记录""" + if TEST_CLEAR_REDIS: + logger.info("测试模式开启:正在清除 Redis 中的场站处理记录 (processed_station:*)...") + keys = await redis_kit.keys("processed_station:*") + if keys: + count = await redis_kit.delete(*keys) + logger.info(f"已清除 {count} 条场站处理记录") + else: + logger.info("未发现旧的场站处理记录") + +async def main(service=None, do_cleanup=True): + # 连接设备 + d = u2.connect() + + # 初始化服务 + should_close_service = False + if service is None: + service = XinDianTuService() + should_close_service = True + # 初始化数据库连接(XinDianTuService 需要) + await service.init_db() + + uploader = ObsUploader() + redis_kit = RedisKit() + + try: + if do_cleanup: + # 清理图片目录 + clean_images_dir() + + # [Testing] 如果配置为测试模式,启动时清除 Redis 记录 + await clean_redis_data(redis_kit) + + # 清理过期数据 + # await service.cleanup_old_data() + + # 获取场站列表 + stations = await get_station_list(d, service, uploader, max_scrolls=MAX_SCROLLS) + + if stations: + logger.info("场站列表采集完成。") + else: + logger.warning("未采集到任何场站信息。") + + return True + + except Exception as e: + logger.exception(f"运行过程中出现异常: {e}") + return False + finally: + # 关闭数据库连接 + if should_close_service: + await service.close_db() + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + logger.info("程序被用户中断.") + except Exception as e: + logger.exception(f"程序崩溃: {e}") diff --git a/Apps/XinDianTu/GetCookie.py b/Apps/XinDianTu/GetCookie.py new file mode 100644 index 0000000..9e67a81 --- /dev/null +++ b/Apps/XinDianTu/GetCookie.py @@ -0,0 +1,64 @@ +import os +import sys +import logging + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +# pip install selenium +# 将项目根目录添加到系统路径,确保可以导入 Util 模块 +# 注意:PaChongGaoDeKit 位于 Util 目录下 +current_dir = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(os.path.join(current_dir, '..')) + +from Util.PaChongGaoDeKit import PaChongGaoDeKit + +def run_login_tool(force=False): + """ + 运行高德地图 Cookie 获取工具。 + :param force: 如果为 True,则跳过 'Cookie 已存在' 的询问,直接开始流程。 + :return: Boolean, True 表示获取成功, False 表示失败或取消。 + """ + logger.info("正在启动高德地图 Cookie 获取工具,使用手机号18686619970+验证码登录即可!") + + # 默认将 Cookie 保存到项目根目录下的 Json/amap_cookies.json + cookie_path = os.path.join(current_dir, '../Json/amap_cookies.json') + + # 检查 Cookie 文件是否已存在 + if os.path.exists(cookie_path) and not force: + logger.info(f"提示:检测到已存在 Cookie 文件: {os.path.abspath(cookie_path)}") + logger.info("如果您本地的 Cookie 文件没有过期且可以正常使用,则不需要重新生成。") + + user_choice = input("是否仍要继续运行并重新获取 Cookie?(y/n): ").strip().lower() + if user_choice != 'y': + logger.info("用户取消操作,程序退出。") + return False + + logger.info("\n" + "-"*60) + logger.info("即将开始获取 Cookie,请按照以下步骤操作:") + logger.info("1. 程序将自动打开一个 Chrome 浏览器窗口。") + logger.info("2. 请在该窗口中完成高德地图账号登录(扫码或账号密码)。") + logger.info("3. 登录成功后,保持页面处于控制台或个人中心状态。") + logger.info("4. 回到此终端窗口,按下回车键,程序将保存 Cookie 并自动关闭浏览器。") + logger.info("-"*60 + "\n") + + # 初始化工具类,强制开启非无头模式(显示浏览器窗口)以便手动登录 + # 确保 Json 目录存在 + os.makedirs(os.path.dirname(cookie_path), exist_ok=True) + + kit = PaChongGaoDeKit(headless=False, cookie_file=cookie_path) + + try: + # 执行登录并保存流程 + return kit.login_and_save_cookies() + except Exception as e: + logger.error(f"执行过程中发生意外错误: {e}") + return False + finally: + # 关闭浏览器资源 + kit.close() + logger.info("工具运行结束。") + +if __name__ == "__main__": + run_login_tool() diff --git a/Apps/XinDianTu/Images/.OKUU_flag_expand.jpg b/Apps/XinDianTu/Images/.OKUU_flag_expand.jpg new file mode 100644 index 0000000..dbebdf9 Binary files /dev/null and b/Apps/XinDianTu/Images/.OKUU_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/000a46ca-21de-40fe-853b-7ab733e789dc.jpg b/Apps/XinDianTu/Images/000a46ca-21de-40fe-853b-7ab733e789dc.jpg new file mode 100644 index 0000000..fa6f192 Binary files /dev/null and b/Apps/XinDianTu/Images/000a46ca-21de-40fe-853b-7ab733e789dc.jpg differ diff --git a/Apps/XinDianTu/Images/00593070-d0f8-47b1-a5bc-274b2e41aed7.jpg b/Apps/XinDianTu/Images/00593070-d0f8-47b1-a5bc-274b2e41aed7.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/00593070-d0f8-47b1-a5bc-274b2e41aed7.jpg differ diff --git a/Apps/XinDianTu/Images/007da665-7d1b-40dd-8d28-93d376270a8e.jpg b/Apps/XinDianTu/Images/007da665-7d1b-40dd-8d28-93d376270a8e.jpg new file mode 100644 index 0000000..8a801cf Binary files /dev/null and b/Apps/XinDianTu/Images/007da665-7d1b-40dd-8d28-93d376270a8e.jpg differ diff --git a/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_1.jpg b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_1.jpg new file mode 100644 index 0000000..8641633 Binary files /dev/null and b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_2.jpg b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_2.jpg new file mode 100644 index 0000000..8447b32 Binary files /dev/null and b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_3.jpg b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_3.jpg new file mode 100644 index 0000000..be86ec3 Binary files /dev/null and b/Apps/XinDianTu/Images/008df3941d343f6e848811d4f61b18b4_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_1.jpg b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_1.jpg new file mode 100644 index 0000000..cb52507 Binary files /dev/null and b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_2.jpg b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_2.jpg new file mode 100644 index 0000000..1949d24 Binary files /dev/null and b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_3.jpg b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_3.jpg new file mode 100644 index 0000000..7542fa3 Binary files /dev/null and b/Apps/XinDianTu/Images/009322986cc21b2cc65982ec0e4742d2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef.jpg b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef.jpg new file mode 100644 index 0000000..5cee03d Binary files /dev/null and b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef.jpg differ diff --git a/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_flag.jpg b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_flag.jpg new file mode 100644 index 0000000..f4ada23 Binary files /dev/null and b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_flag.jpg differ diff --git a/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_vl.jpg b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_vl.jpg new file mode 100644 index 0000000..e54774e Binary files /dev/null and b/Apps/XinDianTu/Images/00c3c976-07e8-4039-aa27-523fa00208ef_vl.jpg differ diff --git a/Apps/XinDianTu/Images/00cdb168-4bb4-4a9d-ae7c-98e324ccfb51.jpg b/Apps/XinDianTu/Images/00cdb168-4bb4-4a9d-ae7c-98e324ccfb51.jpg new file mode 100644 index 0000000..ba99a9e Binary files /dev/null and b/Apps/XinDianTu/Images/00cdb168-4bb4-4a9d-ae7c-98e324ccfb51.jpg differ diff --git a/Apps/XinDianTu/Images/0177a88f-daf7-42d7-8b28-c9cbce8a76a6.jpg b/Apps/XinDianTu/Images/0177a88f-daf7-42d7-8b28-c9cbce8a76a6.jpg new file mode 100644 index 0000000..bb7ea22 Binary files /dev/null and b/Apps/XinDianTu/Images/0177a88f-daf7-42d7-8b28-c9cbce8a76a6.jpg differ diff --git a/Apps/XinDianTu/Images/020e54a4-3d68-4612-9a0b-1c9976e8ec50.jpg b/Apps/XinDianTu/Images/020e54a4-3d68-4612-9a0b-1c9976e8ec50.jpg new file mode 100644 index 0000000..05614d4 Binary files /dev/null and b/Apps/XinDianTu/Images/020e54a4-3d68-4612-9a0b-1c9976e8ec50.jpg differ diff --git a/Apps/XinDianTu/Images/02b78492-9d8a-4c47-a6ee-87def2890163.jpg b/Apps/XinDianTu/Images/02b78492-9d8a-4c47-a6ee-87def2890163.jpg new file mode 100644 index 0000000..75b783d Binary files /dev/null and b/Apps/XinDianTu/Images/02b78492-9d8a-4c47-a6ee-87def2890163.jpg differ diff --git a/Apps/XinDianTu/Images/0313040f-efb2-467b-ab22-8798ce322ac3.jpg b/Apps/XinDianTu/Images/0313040f-efb2-467b-ab22-8798ce322ac3.jpg new file mode 100644 index 0000000..4b06c90 Binary files /dev/null and b/Apps/XinDianTu/Images/0313040f-efb2-467b-ab22-8798ce322ac3.jpg differ diff --git a/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6.jpg b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6.jpg new file mode 100644 index 0000000..64c7113 Binary files /dev/null and b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6.jpg differ diff --git a/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_flag.jpg b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_flag.jpg new file mode 100644 index 0000000..80c9d50 Binary files /dev/null and b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_vl.jpg b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_vl.jpg new file mode 100644 index 0000000..c872db2 Binary files /dev/null and b/Apps/XinDianTu/Images/032ceeb4-1f23-402b-bb56-a5d3dba395e6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_1.jpg b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_1.jpg new file mode 100644 index 0000000..18d2630 Binary files /dev/null and b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_2.jpg b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_2.jpg new file mode 100644 index 0000000..a3a6d44 Binary files /dev/null and b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_3.jpg b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_3.jpg new file mode 100644 index 0000000..83d403c Binary files /dev/null and b/Apps/XinDianTu/Images/03691cd6ea88646d7ee2f7320844f36b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/03ddecac-0f44-4ae9-80d1-fa6fb34cb1e9.jpg b/Apps/XinDianTu/Images/03ddecac-0f44-4ae9-80d1-fa6fb34cb1e9.jpg new file mode 100644 index 0000000..7162a9f Binary files /dev/null and b/Apps/XinDianTu/Images/03ddecac-0f44-4ae9-80d1-fa6fb34cb1e9.jpg differ diff --git a/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14.jpg b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14.jpg new file mode 100644 index 0000000..c5c0161 Binary files /dev/null and b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14.jpg differ diff --git a/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_flag.jpg b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_flag.jpg new file mode 100644 index 0000000..a10349c Binary files /dev/null and b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_vl.jpg b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_vl.jpg new file mode 100644 index 0000000..7d4b559 Binary files /dev/null and b/Apps/XinDianTu/Images/0455a9de-6a2e-4e36-a287-8ad9d7b2cb14_vl.jpg differ diff --git a/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_1.jpg b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_1.jpg new file mode 100644 index 0000000..782047e Binary files /dev/null and b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_2.jpg b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_2.jpg new file mode 100644 index 0000000..0843b34 Binary files /dev/null and b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_3.jpg b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_3.jpg new file mode 100644 index 0000000..95453b8 Binary files /dev/null and b/Apps/XinDianTu/Images/04584f4b077b02da8231de5219b3cea0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/046f1b02-291f-46be-80a3-e7c0a90b3fe3.jpg b/Apps/XinDianTu/Images/046f1b02-291f-46be-80a3-e7c0a90b3fe3.jpg new file mode 100644 index 0000000..09202e8 Binary files /dev/null and b/Apps/XinDianTu/Images/046f1b02-291f-46be-80a3-e7c0a90b3fe3.jpg differ diff --git a/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_1.jpg b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_1.jpg new file mode 100644 index 0000000..3b9a777 Binary files /dev/null and b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_2.jpg b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_2.jpg new file mode 100644 index 0000000..1289b6a Binary files /dev/null and b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_3.jpg b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_3.jpg new file mode 100644 index 0000000..ccb61e9 Binary files /dev/null and b/Apps/XinDianTu/Images/048759d6c266651539d5a7d848eede57_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.jpg b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.jpg new file mode 100644 index 0000000..2aeb11b Binary files /dev/null and b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.jpg differ diff --git a/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.json b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.json new file mode 100644 index 0000000..f609a9a --- /dev/null +++ b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844.json @@ -0,0 +1,20 @@ +{ + "image": "04b5e613-8e21-408b-ae93-b878a6126844.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 226, + 720, + 428 + ], + "click_point": [ + 124, + 266 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_flag.jpg b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_flag.jpg new file mode 100644 index 0000000..949eb6b Binary files /dev/null and b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_flag.jpg differ diff --git a/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_vl.jpg b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_vl.jpg new file mode 100644 index 0000000..e4b4db2 Binary files /dev/null and b/Apps/XinDianTu/Images/04b5e613-8e21-408b-ae93-b878a6126844_vl.jpg differ diff --git a/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.jpg b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.jpg new file mode 100644 index 0000000..aed3cda Binary files /dev/null and b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.jpg differ diff --git a/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.json b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.json new file mode 100644 index 0000000..8a22ae9 --- /dev/null +++ b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc.json @@ -0,0 +1,59 @@ +{ + "image": "04fb17c6-124c-4661-9c50-ead044d94ebc.jpg", + "width": 720, + "height": 259, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 581 + ], + "click_point": [ + 121, + 439 + ] + }, + { + "id": 2, + "rect": [ + 19, + 595, + 700, + 844 + ], + "click_point": [ + 121, + 644 + ] + }, + { + "id": 3, + "rect": [ + 19, + 852, + 700, + 1101 + ], + "click_point": [ + 121, + 901 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1115, + 700, + 1374 + ], + "click_point": [ + 121, + 1166 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_flag.jpg b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_flag.jpg new file mode 100644 index 0000000..440f942 Binary files /dev/null and b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_flag.jpg differ diff --git a/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_vl.jpg b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_vl.jpg new file mode 100644 index 0000000..03847c5 Binary files /dev/null and b/Apps/XinDianTu/Images/04fb17c6-124c-4661-9c50-ead044d94ebc_vl.jpg differ diff --git a/Apps/XinDianTu/Images/051ffe99-ba1e-4363-8ec4-e7e3133a8c4b.jpg b/Apps/XinDianTu/Images/051ffe99-ba1e-4363-8ec4-e7e3133a8c4b.jpg new file mode 100644 index 0000000..c6c657b Binary files /dev/null and b/Apps/XinDianTu/Images/051ffe99-ba1e-4363-8ec4-e7e3133a8c4b.jpg differ diff --git a/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_1.jpg b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_1.jpg new file mode 100644 index 0000000..ed08442 Binary files /dev/null and b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_2.jpg b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_2.jpg new file mode 100644 index 0000000..d525c48 Binary files /dev/null and b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_3.jpg b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_3.jpg new file mode 100644 index 0000000..9f1c727 Binary files /dev/null and b/Apps/XinDianTu/Images/05233e7d863ef07ae8fc3bdbd77a70b2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_1.jpg b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_1.jpg new file mode 100644 index 0000000..e6ddbb4 Binary files /dev/null and b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_2.jpg b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_2.jpg new file mode 100644 index 0000000..d810351 Binary files /dev/null and b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_3.jpg b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_3.jpg new file mode 100644 index 0000000..8af26a8 Binary files /dev/null and b/Apps/XinDianTu/Images/058a66080f5f62810bc61df5edb88343_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/05915ddc-4f28-40a6-ae99-aa65fa382ef6.jpg b/Apps/XinDianTu/Images/05915ddc-4f28-40a6-ae99-aa65fa382ef6.jpg new file mode 100644 index 0000000..d3bfae4 Binary files /dev/null and b/Apps/XinDianTu/Images/05915ddc-4f28-40a6-ae99-aa65fa382ef6.jpg differ diff --git a/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.jpg b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.jpg new file mode 100644 index 0000000..3620df7 Binary files /dev/null and b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.jpg differ diff --git a/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.json b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.json new file mode 100644 index 0000000..9bb897b --- /dev/null +++ b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb.json @@ -0,0 +1,46 @@ +{ + "image": "05af72de-43b4-445f-9435-935bf4a3f9fb.jpg", + "width": 720, + "height": 140, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 428, + 700, + 677 + ], + "click_point": [ + 121, + 477 + ] + }, + { + "id": 2, + "rect": [ + 19, + 690, + 700, + 965 + ], + "click_point": [ + 121, + 745 + ] + }, + { + "id": 3, + "rect": [ + 19, + 979, + 700, + 1228 + ], + "click_point": [ + 121, + 1028 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_flag.jpg b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_flag.jpg new file mode 100644 index 0000000..7f58f04 Binary files /dev/null and b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_vl.jpg b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_vl.jpg new file mode 100644 index 0000000..9a9e383 Binary files /dev/null and b/Apps/XinDianTu/Images/05af72de-43b4-445f-9435-935bf4a3f9fb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/05eaf8a3-8236-4b9e-bee1-3115217f49d5.jpg b/Apps/XinDianTu/Images/05eaf8a3-8236-4b9e-bee1-3115217f49d5.jpg new file mode 100644 index 0000000..2ef5250 Binary files /dev/null and b/Apps/XinDianTu/Images/05eaf8a3-8236-4b9e-bee1-3115217f49d5.jpg differ diff --git a/Apps/XinDianTu/Images/05ff2b26-72c7-4014-8657-d63c47c2d47f.jpg b/Apps/XinDianTu/Images/05ff2b26-72c7-4014-8657-d63c47c2d47f.jpg new file mode 100644 index 0000000..0529894 Binary files /dev/null and b/Apps/XinDianTu/Images/05ff2b26-72c7-4014-8657-d63c47c2d47f.jpg differ diff --git a/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed.jpg b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed.jpg new file mode 100644 index 0000000..b26ff47 Binary files /dev/null and b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed.jpg differ diff --git a/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_flag.jpg b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_flag.jpg new file mode 100644 index 0000000..b7f22b9 Binary files /dev/null and b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_flag.jpg differ diff --git a/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_vl.jpg b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_vl.jpg new file mode 100644 index 0000000..a2bc820 Binary files /dev/null and b/Apps/XinDianTu/Images/06091644-a1fc-480e-a2fd-7c6565a8aaed_vl.jpg differ diff --git a/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_1.jpg b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_1.jpg new file mode 100644 index 0000000..6a4b680 Binary files /dev/null and b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_2.jpg b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_2.jpg new file mode 100644 index 0000000..99f4875 Binary files /dev/null and b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_3.jpg b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_3.jpg new file mode 100644 index 0000000..271baa2 Binary files /dev/null and b/Apps/XinDianTu/Images/06717523240dc3e8dad859ff6101434c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556.jpg b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556.jpg new file mode 100644 index 0000000..d3534d9 Binary files /dev/null and b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556.jpg differ diff --git a/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_flag.jpg b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_flag.jpg new file mode 100644 index 0000000..f1bf085 Binary files /dev/null and b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_flag.jpg differ diff --git a/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_vl.jpg b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_vl.jpg new file mode 100644 index 0000000..bd3a94d Binary files /dev/null and b/Apps/XinDianTu/Images/06757ffa-6f6f-4706-884a-d3d255474556_vl.jpg differ diff --git a/Apps/XinDianTu/Images/06bf220a-f218-423f-88cf-44ad06545a99.jpg b/Apps/XinDianTu/Images/06bf220a-f218-423f-88cf-44ad06545a99.jpg new file mode 100644 index 0000000..ba03456 Binary files /dev/null and b/Apps/XinDianTu/Images/06bf220a-f218-423f-88cf-44ad06545a99.jpg differ diff --git a/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.jpg b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.jpg new file mode 100644 index 0000000..b441f37 Binary files /dev/null and b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.jpg differ diff --git a/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.json b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.json new file mode 100644 index 0000000..67d8918 --- /dev/null +++ b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e.json @@ -0,0 +1,46 @@ +{ + "image": "06ec294c-ce75-4a42-9c15-caaa2d57e60e.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 491, + 700, + 740 + ], + "click_point": [ + 121, + 540 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 997 + ], + "click_point": [ + 121, + 797 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1011, + 700, + 1260 + ], + "click_point": [ + 121, + 1060 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_flag.jpg b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_flag.jpg new file mode 100644 index 0000000..a10474e Binary files /dev/null and b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_vl.jpg b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_vl.jpg new file mode 100644 index 0000000..e43771e Binary files /dev/null and b/Apps/XinDianTu/Images/06ec294c-ce75-4a42-9c15-caaa2d57e60e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.jpg b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.jpg new file mode 100644 index 0000000..2f8dd90 Binary files /dev/null and b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.jpg differ diff --git a/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.json b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.json new file mode 100644 index 0000000..384bb54 --- /dev/null +++ b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06.json @@ -0,0 +1,46 @@ +{ + "image": "07237cb5-4f55-4e7f-8ae6-3a927d046e06.jpg", + "width": 720, + "height": 243, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 514, + 700, + 789 + ], + "click_point": [ + 121, + 569 + ] + }, + { + "id": 2, + "rect": [ + 19, + 802, + 700, + 1117 + ], + "click_point": [ + 121, + 865 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1131, + 700, + 1374 + ], + "click_point": [ + 121, + 1179 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_flag.jpg b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_flag.jpg new file mode 100644 index 0000000..ee71ced Binary files /dev/null and b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_flag.jpg differ diff --git a/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_vl.jpg b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_vl.jpg new file mode 100644 index 0000000..a5524b7 Binary files /dev/null and b/Apps/XinDianTu/Images/07237cb5-4f55-4e7f-8ae6-3a927d046e06_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.jpg b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.jpg new file mode 100644 index 0000000..ed66bf9 Binary files /dev/null and b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.jpg differ diff --git a/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.json b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.json new file mode 100644 index 0000000..e523a27 --- /dev/null +++ b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52.json @@ -0,0 +1,46 @@ +{ + "image": "0724d0ef-941c-4d3c-a911-4b3e84343e52.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 515, + 700, + 764 + ], + "click_point": [ + 121, + 564 + ] + }, + { + "id": 2, + "rect": [ + 19, + 772, + 700, + 1021 + ], + "click_point": [ + 121, + 821 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1035, + 700, + 1284 + ], + "click_point": [ + 121, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_flag.jpg b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_flag.jpg new file mode 100644 index 0000000..d416c0f Binary files /dev/null and b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_vl.jpg b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_vl.jpg new file mode 100644 index 0000000..18a9e8b Binary files /dev/null and b/Apps/XinDianTu/Images/0724d0ef-941c-4d3c-a911-4b3e84343e52_vl.jpg differ diff --git a/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.jpg b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.jpg new file mode 100644 index 0000000..df09105 Binary files /dev/null and b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.jpg differ diff --git a/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.json b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.json new file mode 100644 index 0000000..d63a424 --- /dev/null +++ b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45.json @@ -0,0 +1,20 @@ +{ + "image": "072e1a31-67c9-427e-9979-67118ea0df45.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 170, + 720, + 372 + ], + "click_point": [ + 124, + 210 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_flag.jpg b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_flag.jpg new file mode 100644 index 0000000..674374b Binary files /dev/null and b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_flag.jpg differ diff --git a/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_vl.jpg b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_vl.jpg new file mode 100644 index 0000000..3716a82 Binary files /dev/null and b/Apps/XinDianTu/Images/072e1a31-67c9-427e-9979-67118ea0df45_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0770ecef-1903-4684-9dac-a3fb01ee1d80.jpg b/Apps/XinDianTu/Images/0770ecef-1903-4684-9dac-a3fb01ee1d80.jpg new file mode 100644 index 0000000..b2100d0 Binary files /dev/null and b/Apps/XinDianTu/Images/0770ecef-1903-4684-9dac-a3fb01ee1d80.jpg differ diff --git a/Apps/XinDianTu/Images/0775d83c-8912-4fa0-9c07-d2ff5a577081.jpg b/Apps/XinDianTu/Images/0775d83c-8912-4fa0-9c07-d2ff5a577081.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/0775d83c-8912-4fa0-9c07-d2ff5a577081.jpg differ diff --git a/Apps/XinDianTu/Images/07aa2084-03b9-4777-aac4-a89e18ca25f5.jpg b/Apps/XinDianTu/Images/07aa2084-03b9-4777-aac4-a89e18ca25f5.jpg new file mode 100644 index 0000000..4867acb Binary files /dev/null and b/Apps/XinDianTu/Images/07aa2084-03b9-4777-aac4-a89e18ca25f5.jpg differ diff --git a/Apps/XinDianTu/Images/07afb5d0-c7a4-4bc5-ab3b-7c4421f204a9.jpg b/Apps/XinDianTu/Images/07afb5d0-c7a4-4bc5-ab3b-7c4421f204a9.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/07afb5d0-c7a4-4bc5-ab3b-7c4421f204a9.jpg differ diff --git a/Apps/XinDianTu/Images/07e1c7a0-24a3-4581-842e-b450de6cd5e4.jpg b/Apps/XinDianTu/Images/07e1c7a0-24a3-4581-842e-b450de6cd5e4.jpg new file mode 100644 index 0000000..41598a5 Binary files /dev/null and b/Apps/XinDianTu/Images/07e1c7a0-24a3-4581-842e-b450de6cd5e4.jpg differ diff --git a/Apps/XinDianTu/Images/082fc1ff-85e3-4017-a3ec-c47cc4ea5359.jpg b/Apps/XinDianTu/Images/082fc1ff-85e3-4017-a3ec-c47cc4ea5359.jpg new file mode 100644 index 0000000..10f8498 Binary files /dev/null and b/Apps/XinDianTu/Images/082fc1ff-85e3-4017-a3ec-c47cc4ea5359.jpg differ diff --git a/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_1.jpg b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_1.jpg new file mode 100644 index 0000000..74480ba Binary files /dev/null and b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_2.jpg b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_2.jpg new file mode 100644 index 0000000..cead87c Binary files /dev/null and b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_3.jpg b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_3.jpg new file mode 100644 index 0000000..de6e100 Binary files /dev/null and b/Apps/XinDianTu/Images/0833fa0b08b5cc569d1416c9f656fa84_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0843ec15-d861-4abc-87fe-d8cd4bbf218f.jpg b/Apps/XinDianTu/Images/0843ec15-d861-4abc-87fe-d8cd4bbf218f.jpg new file mode 100644 index 0000000..2ad26f4 Binary files /dev/null and b/Apps/XinDianTu/Images/0843ec15-d861-4abc-87fe-d8cd4bbf218f.jpg differ diff --git a/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_1.jpg b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_1.jpg new file mode 100644 index 0000000..c632488 Binary files /dev/null and b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_2.jpg b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_2.jpg new file mode 100644 index 0000000..66b9912 Binary files /dev/null and b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_3.jpg b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_3.jpg new file mode 100644 index 0000000..21ed55f Binary files /dev/null and b/Apps/XinDianTu/Images/085453222c05d3aa8bbaa295940c5aff_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0876054b-01a4-483b-946d-bf63cf1dc320.jpg b/Apps/XinDianTu/Images/0876054b-01a4-483b-946d-bf63cf1dc320.jpg new file mode 100644 index 0000000..5fdafc8 Binary files /dev/null and b/Apps/XinDianTu/Images/0876054b-01a4-483b-946d-bf63cf1dc320.jpg differ diff --git a/Apps/XinDianTu/Images/0884d0c8-56b5-4dbf-bcd4-85eda9fd895f.jpg b/Apps/XinDianTu/Images/0884d0c8-56b5-4dbf-bcd4-85eda9fd895f.jpg new file mode 100644 index 0000000..8c78c19 Binary files /dev/null and b/Apps/XinDianTu/Images/0884d0c8-56b5-4dbf-bcd4-85eda9fd895f.jpg differ diff --git a/Apps/XinDianTu/Images/08a7a15e-b116-4f34-872b-3656251da8ed.jpg b/Apps/XinDianTu/Images/08a7a15e-b116-4f34-872b-3656251da8ed.jpg new file mode 100644 index 0000000..390b5fa Binary files /dev/null and b/Apps/XinDianTu/Images/08a7a15e-b116-4f34-872b-3656251da8ed.jpg differ diff --git a/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.jpg b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.jpg new file mode 100644 index 0000000..ab5343b Binary files /dev/null and b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.jpg differ diff --git a/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.json b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.json new file mode 100644 index 0000000..2b17fc6 --- /dev/null +++ b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3.json @@ -0,0 +1,59 @@ +{ + "image": "08ab4e30-0758-4b32-b101-9d3a408308e3.jpg", + "width": 720, + "height": 162, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 612 + ], + "click_point": [ + 121, + 445 + ] + }, + { + "id": 2, + "rect": [ + 19, + 625, + 700, + 871 + ], + "click_point": [ + 121, + 674 + ] + }, + { + "id": 3, + "rect": [ + 19, + 884, + 700, + 1199 + ], + "click_point": [ + 121, + 947 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1212, + 700, + 1374 + ], + "click_point": [ + 121, + 1244 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_flag.jpg b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_flag.jpg new file mode 100644 index 0000000..12cb663 Binary files /dev/null and b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_vl.jpg b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_vl.jpg new file mode 100644 index 0000000..d6971c4 Binary files /dev/null and b/Apps/XinDianTu/Images/08ab4e30-0758-4b32-b101-9d3a408308e3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/09bbd08e-cafe-48da-8ac2-ec4808795fce.jpg b/Apps/XinDianTu/Images/09bbd08e-cafe-48da-8ac2-ec4808795fce.jpg new file mode 100644 index 0000000..be87543 Binary files /dev/null and b/Apps/XinDianTu/Images/09bbd08e-cafe-48da-8ac2-ec4808795fce.jpg differ diff --git a/Apps/XinDianTu/Images/0a0acaf4-101d-4765-b222-a8176f5588ee.jpg b/Apps/XinDianTu/Images/0a0acaf4-101d-4765-b222-a8176f5588ee.jpg new file mode 100644 index 0000000..db226a8 Binary files /dev/null and b/Apps/XinDianTu/Images/0a0acaf4-101d-4765-b222-a8176f5588ee.jpg differ diff --git a/Apps/XinDianTu/Images/0a14e0af-2b26-4595-9b94-6cfe02fbc442.jpg b/Apps/XinDianTu/Images/0a14e0af-2b26-4595-9b94-6cfe02fbc442.jpg new file mode 100644 index 0000000..2689abc Binary files /dev/null and b/Apps/XinDianTu/Images/0a14e0af-2b26-4595-9b94-6cfe02fbc442.jpg differ diff --git a/Apps/XinDianTu/Images/0a5311ec-3051-4949-ab58-b2dcd4d42924.jpg b/Apps/XinDianTu/Images/0a5311ec-3051-4949-ab58-b2dcd4d42924.jpg new file mode 100644 index 0000000..2289221 Binary files /dev/null and b/Apps/XinDianTu/Images/0a5311ec-3051-4949-ab58-b2dcd4d42924.jpg differ diff --git a/Apps/XinDianTu/Images/0a620483-2ebc-4a9b-8fad-6d0c64d471df.jpg b/Apps/XinDianTu/Images/0a620483-2ebc-4a9b-8fad-6d0c64d471df.jpg new file mode 100644 index 0000000..b1f4054 Binary files /dev/null and b/Apps/XinDianTu/Images/0a620483-2ebc-4a9b-8fad-6d0c64d471df.jpg differ diff --git a/Apps/XinDianTu/Images/0ab47780-46ed-42fd-af27-937afa48f7f8.jpg b/Apps/XinDianTu/Images/0ab47780-46ed-42fd-af27-937afa48f7f8.jpg new file mode 100644 index 0000000..df98f49 Binary files /dev/null and b/Apps/XinDianTu/Images/0ab47780-46ed-42fd-af27-937afa48f7f8.jpg differ diff --git a/Apps/XinDianTu/Images/0b478652-986f-4fcc-8d6b-d9334246d920.jpg b/Apps/XinDianTu/Images/0b478652-986f-4fcc-8d6b-d9334246d920.jpg new file mode 100644 index 0000000..bde9559 Binary files /dev/null and b/Apps/XinDianTu/Images/0b478652-986f-4fcc-8d6b-d9334246d920.jpg differ diff --git a/Apps/XinDianTu/Images/0b7df473-aa76-4b44-bb11-cea4518346af.jpg b/Apps/XinDianTu/Images/0b7df473-aa76-4b44-bb11-cea4518346af.jpg new file mode 100644 index 0000000..2100572 Binary files /dev/null and b/Apps/XinDianTu/Images/0b7df473-aa76-4b44-bb11-cea4518346af.jpg differ diff --git a/Apps/XinDianTu/Images/0b93c421-fdef-418b-8d37-79796db52ee3.jpg b/Apps/XinDianTu/Images/0b93c421-fdef-418b-8d37-79796db52ee3.jpg new file mode 100644 index 0000000..d3e1039 Binary files /dev/null and b/Apps/XinDianTu/Images/0b93c421-fdef-418b-8d37-79796db52ee3.jpg differ diff --git a/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23.jpg b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23.jpg new file mode 100644 index 0000000..d59743d Binary files /dev/null and b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23.jpg differ diff --git a/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_flag.jpg b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_flag.jpg new file mode 100644 index 0000000..35f299c Binary files /dev/null and b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_vl.jpg b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_vl.jpg new file mode 100644 index 0000000..13a1e86 Binary files /dev/null and b/Apps/XinDianTu/Images/0c2dab60-017f-4cb5-a046-6fdcf3569b23_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_1.jpg b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_1.jpg new file mode 100644 index 0000000..6ded888 Binary files /dev/null and b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_2.jpg b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_2.jpg new file mode 100644 index 0000000..f55df14 Binary files /dev/null and b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_3.jpg b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_3.jpg new file mode 100644 index 0000000..ac5212d Binary files /dev/null and b/Apps/XinDianTu/Images/0c4795df818e465f846e919f181d2f95_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.jpg b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.jpg new file mode 100644 index 0000000..c7a9b27 Binary files /dev/null and b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.jpg differ diff --git a/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.json b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.json new file mode 100644 index 0000000..7c6ca01 --- /dev/null +++ b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362.json @@ -0,0 +1,46 @@ +{ + "image": "0ccc94f1-ef6c-4bc5-932d-c7158d828362.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 489, + 700, + 740 + ], + "click_point": [ + 121, + 539 + ] + }, + { + "id": 2, + "rect": [ + 19, + 754, + 700, + 1000 + ], + "click_point": [ + 121, + 803 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1009, + 700, + 1260 + ], + "click_point": [ + 121, + 1059 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_flag.jpg b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_flag.jpg new file mode 100644 index 0000000..75d26ac Binary files /dev/null and b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_vl.jpg b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_vl.jpg new file mode 100644 index 0000000..0b72850 Binary files /dev/null and b/Apps/XinDianTu/Images/0ccc94f1-ef6c-4bc5-932d-c7158d828362_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c.jpg b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c.jpg new file mode 100644 index 0000000..5cd4340 Binary files /dev/null and b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c.jpg differ diff --git a/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_flag.jpg b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_flag.jpg new file mode 100644 index 0000000..aa092aa Binary files /dev/null and b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_vl.jpg b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_vl.jpg new file mode 100644 index 0000000..ec7c899 Binary files /dev/null and b/Apps/XinDianTu/Images/0d49288d-830f-4f43-8ce9-74c6c0543a9c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0d631c9c-1e16-444d-a575-af033ba88f69.jpg b/Apps/XinDianTu/Images/0d631c9c-1e16-444d-a575-af033ba88f69.jpg new file mode 100644 index 0000000..67f0025 Binary files /dev/null and b/Apps/XinDianTu/Images/0d631c9c-1e16-444d-a575-af033ba88f69.jpg differ diff --git a/Apps/XinDianTu/Images/0da5854a-c01f-43e2-bd12-1235a87cac71.jpg b/Apps/XinDianTu/Images/0da5854a-c01f-43e2-bd12-1235a87cac71.jpg new file mode 100644 index 0000000..db140bb Binary files /dev/null and b/Apps/XinDianTu/Images/0da5854a-c01f-43e2-bd12-1235a87cac71.jpg differ diff --git a/Apps/XinDianTu/Images/0da58656-73fd-4e6d-82d5-d8dfbfb07bea.jpg b/Apps/XinDianTu/Images/0da58656-73fd-4e6d-82d5-d8dfbfb07bea.jpg new file mode 100644 index 0000000..bb2c845 Binary files /dev/null and b/Apps/XinDianTu/Images/0da58656-73fd-4e6d-82d5-d8dfbfb07bea.jpg differ diff --git a/Apps/XinDianTu/Images/0dc1e4a6-4825-4776-8a65-507595d973fc.jpg b/Apps/XinDianTu/Images/0dc1e4a6-4825-4776-8a65-507595d973fc.jpg new file mode 100644 index 0000000..588b0a1 Binary files /dev/null and b/Apps/XinDianTu/Images/0dc1e4a6-4825-4776-8a65-507595d973fc.jpg differ diff --git a/Apps/XinDianTu/Images/0dd664bf-998c-4559-bd79-6349ffdad5d2.jpg b/Apps/XinDianTu/Images/0dd664bf-998c-4559-bd79-6349ffdad5d2.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/0dd664bf-998c-4559-bd79-6349ffdad5d2.jpg differ diff --git a/Apps/XinDianTu/Images/0de0be35-f520-434a-889c-91e81048452c.jpg b/Apps/XinDianTu/Images/0de0be35-f520-434a-889c-91e81048452c.jpg new file mode 100644 index 0000000..173aff6 Binary files /dev/null and b/Apps/XinDianTu/Images/0de0be35-f520-434a-889c-91e81048452c.jpg differ diff --git a/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0.jpg b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0.jpg new file mode 100644 index 0000000..ad3d201 Binary files /dev/null and b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0.jpg differ diff --git a/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_flag.jpg b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_flag.jpg new file mode 100644 index 0000000..d972a8e Binary files /dev/null and b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_vl.jpg b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_vl.jpg new file mode 100644 index 0000000..fd0c874 Binary files /dev/null and b/Apps/XinDianTu/Images/0e429da1-f362-4225-be6c-b219b53ea9c0_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0e5fcc12-1477-4492-a0b5-e7f92dc5d43b.jpg b/Apps/XinDianTu/Images/0e5fcc12-1477-4492-a0b5-e7f92dc5d43b.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/0e5fcc12-1477-4492-a0b5-e7f92dc5d43b.jpg differ diff --git a/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400.jpg b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400.jpg new file mode 100644 index 0000000..05eb257 Binary files /dev/null and b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400.jpg differ diff --git a/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_flag.jpg b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_flag.jpg new file mode 100644 index 0000000..ce89e43 Binary files /dev/null and b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_vl.jpg b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_vl.jpg new file mode 100644 index 0000000..7700ad5 Binary files /dev/null and b/Apps/XinDianTu/Images/0e78b587-4e6f-49f0-84e2-9c854d217400_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_1.jpg b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_1.jpg new file mode 100644 index 0000000..34e914c Binary files /dev/null and b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_2.jpg b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_2.jpg new file mode 100644 index 0000000..9bd266c Binary files /dev/null and b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_3.jpg b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_3.jpg new file mode 100644 index 0000000..9201bf7 Binary files /dev/null and b/Apps/XinDianTu/Images/0e90394b07744d490c13f89b78f6dba0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0ee63453-6749-4b73-97d8-da17017f0e0e.jpg b/Apps/XinDianTu/Images/0ee63453-6749-4b73-97d8-da17017f0e0e.jpg new file mode 100644 index 0000000..f587eee Binary files /dev/null and b/Apps/XinDianTu/Images/0ee63453-6749-4b73-97d8-da17017f0e0e.jpg differ diff --git a/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.jpg b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.jpg new file mode 100644 index 0000000..e947525 Binary files /dev/null and b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.jpg differ diff --git a/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.json b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.json new file mode 100644 index 0000000..f3ab092 --- /dev/null +++ b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c.json @@ -0,0 +1,46 @@ +{ + "image": "0f39b0af-3ce1-42c8-a060-6a6037fd318c.jpg", + "width": 720, + "height": 275, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 467, + 700, + 716 + ], + "click_point": [ + 121, + 516 + ] + }, + { + "id": 2, + "rect": [ + 19, + 724, + 700, + 973 + ], + "click_point": [ + 121, + 773 + ] + }, + { + "id": 3, + "rect": [ + 19, + 986, + 700, + 1261 + ], + "click_point": [ + 121, + 1041 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_flag.jpg b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_flag.jpg new file mode 100644 index 0000000..f5700a2 Binary files /dev/null and b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_vl.jpg b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_vl.jpg new file mode 100644 index 0000000..87a59fb Binary files /dev/null and b/Apps/XinDianTu/Images/0f39b0af-3ce1-42c8-a060-6a6037fd318c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_1.jpg b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_1.jpg new file mode 100644 index 0000000..e1f691f Binary files /dev/null and b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_2.jpg b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_2.jpg new file mode 100644 index 0000000..e24a5b5 Binary files /dev/null and b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_3.jpg b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_3.jpg new file mode 100644 index 0000000..edb83e6 Binary files /dev/null and b/Apps/XinDianTu/Images/0f5876b9e2336e16780663d94fd75f68_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9.jpg b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9.jpg new file mode 100644 index 0000000..ce81d78 Binary files /dev/null and b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9.jpg differ diff --git a/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_flag.jpg b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_flag.jpg new file mode 100644 index 0000000..3a87e8a Binary files /dev/null and b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_vl.jpg b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_vl.jpg new file mode 100644 index 0000000..8115962 Binary files /dev/null and b/Apps/XinDianTu/Images/0f860345-7a56-4bbe-9e6c-215a80b5c3d9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.jpg b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.jpg new file mode 100644 index 0000000..2e54cb8 Binary files /dev/null and b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.jpg differ diff --git a/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.json b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.json new file mode 100644 index 0000000..0ed6e7a --- /dev/null +++ b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac.json @@ -0,0 +1,46 @@ +{ + "image": "0fb4025f-444d-4197-865c-82698cfbb5ac.jpg", + "width": 720, + "height": 274, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 481, + 700, + 732 + ], + "click_point": [ + 121, + 531 + ] + }, + { + "id": 2, + "rect": [ + 19, + 746, + 700, + 992 + ], + "click_point": [ + 121, + 795 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1006, + 700, + 1280 + ], + "click_point": [ + 121, + 1060 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_flag.jpg b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_flag.jpg new file mode 100644 index 0000000..a6f6d18 Binary files /dev/null and b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_flag.jpg differ diff --git a/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_vl.jpg b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_vl.jpg new file mode 100644 index 0000000..7dab539 Binary files /dev/null and b/Apps/XinDianTu/Images/0fb4025f-444d-4197-865c-82698cfbb5ac_vl.jpg differ diff --git a/Apps/XinDianTu/Images/0fc04f82-4d2d-4237-a7c4-95507186d4a1.jpg b/Apps/XinDianTu/Images/0fc04f82-4d2d-4237-a7c4-95507186d4a1.jpg new file mode 100644 index 0000000..a8ab690 Binary files /dev/null and b/Apps/XinDianTu/Images/0fc04f82-4d2d-4237-a7c4-95507186d4a1.jpg differ diff --git a/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_1.jpg b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_1.jpg new file mode 100644 index 0000000..f0f311f Binary files /dev/null and b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_2.jpg b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_2.jpg new file mode 100644 index 0000000..8285d0c Binary files /dev/null and b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_3.jpg b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_3.jpg new file mode 100644 index 0000000..d0b8ea6 Binary files /dev/null and b/Apps/XinDianTu/Images/0fc65107e57a93a5c0d852f6e8265bc0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/0fd0dd67-239c-4ad8-b86a-1fa8176b8e20.jpg b/Apps/XinDianTu/Images/0fd0dd67-239c-4ad8-b86a-1fa8176b8e20.jpg new file mode 100644 index 0000000..b1dbb3f Binary files /dev/null and b/Apps/XinDianTu/Images/0fd0dd67-239c-4ad8-b86a-1fa8176b8e20.jpg differ diff --git a/Apps/XinDianTu/Images/0fe1fa87-e01e-41f5-a64f-7d2f5b4fd11f.jpg b/Apps/XinDianTu/Images/0fe1fa87-e01e-41f5-a64f-7d2f5b4fd11f.jpg new file mode 100644 index 0000000..3277dcf Binary files /dev/null and b/Apps/XinDianTu/Images/0fe1fa87-e01e-41f5-a64f-7d2f5b4fd11f.jpg differ diff --git a/Apps/XinDianTu/Images/0fe41967-2df0-4217-8e84-53ca5f3ed598.jpg b/Apps/XinDianTu/Images/0fe41967-2df0-4217-8e84-53ca5f3ed598.jpg new file mode 100644 index 0000000..c84209a Binary files /dev/null and b/Apps/XinDianTu/Images/0fe41967-2df0-4217-8e84-53ca5f3ed598.jpg differ diff --git a/Apps/XinDianTu/Images/1.0768_flag_expand.jpg b/Apps/XinDianTu/Images/1.0768_flag_expand.jpg new file mode 100644 index 0000000..d989438 Binary files /dev/null and b/Apps/XinDianTu/Images/1.0768_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/103便民充电站_flag_expand.jpg b/Apps/XinDianTu/Images/103便民充电站_flag_expand.jpg new file mode 100644 index 0000000..2fe1050 Binary files /dev/null and b/Apps/XinDianTu/Images/103便民充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/105f3cf5-601b-4dfd-8496-86df4feb38c8.jpg b/Apps/XinDianTu/Images/105f3cf5-601b-4dfd-8496-86df4feb38c8.jpg new file mode 100644 index 0000000..7a721fb Binary files /dev/null and b/Apps/XinDianTu/Images/105f3cf5-601b-4dfd-8496-86df4feb38c8.jpg differ diff --git a/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6.jpg b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6.jpg new file mode 100644 index 0000000..812392c Binary files /dev/null and b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6.jpg differ diff --git a/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_flag.jpg b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_flag.jpg new file mode 100644 index 0000000..750cf8c Binary files /dev/null and b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_vl.jpg b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_vl.jpg new file mode 100644 index 0000000..8b9dc9a Binary files /dev/null and b/Apps/XinDianTu/Images/107df946-d2b5-4754-8aae-b35f36c6dfb6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_1.jpg b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_1.jpg new file mode 100644 index 0000000..2e5d797 Binary files /dev/null and b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_2.jpg b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_2.jpg new file mode 100644 index 0000000..e89a1d1 Binary files /dev/null and b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_3.jpg b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_3.jpg new file mode 100644 index 0000000..6a8a6a8 Binary files /dev/null and b/Apps/XinDianTu/Images/10922eedd7d94c6fd52c5501e1eeae44_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_1.jpg b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_1.jpg new file mode 100644 index 0000000..ebac5f8 Binary files /dev/null and b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_2.jpg b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_2.jpg new file mode 100644 index 0000000..030432b Binary files /dev/null and b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_3.jpg b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_3.jpg new file mode 100644 index 0000000..62408ea Binary files /dev/null and b/Apps/XinDianTu/Images/10df39e58400c3a51efa88e8ca3839a5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/10e39149-db4a-4c4f-8d7e-2997f20ea4fa.jpg b/Apps/XinDianTu/Images/10e39149-db4a-4c4f-8d7e-2997f20ea4fa.jpg new file mode 100644 index 0000000..7c48ffb Binary files /dev/null and b/Apps/XinDianTu/Images/10e39149-db4a-4c4f-8d7e-2997f20ea4fa.jpg differ diff --git a/Apps/XinDianTu/Images/1150402a-91ea-4028-be4a-c5f2f0aa4bc4.jpg b/Apps/XinDianTu/Images/1150402a-91ea-4028-be4a-c5f2f0aa4bc4.jpg new file mode 100644 index 0000000..cadfafb Binary files /dev/null and b/Apps/XinDianTu/Images/1150402a-91ea-4028-be4a-c5f2f0aa4bc4.jpg differ diff --git a/Apps/XinDianTu/Images/117c8f78-da76-4596-bb9f-ec3a57dadd76.jpg b/Apps/XinDianTu/Images/117c8f78-da76-4596-bb9f-ec3a57dadd76.jpg new file mode 100644 index 0000000..4bce638 Binary files /dev/null and b/Apps/XinDianTu/Images/117c8f78-da76-4596-bb9f-ec3a57dadd76.jpg differ diff --git a/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_1.jpg b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_1.jpg new file mode 100644 index 0000000..0826089 Binary files /dev/null and b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_2.jpg b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_2.jpg new file mode 100644 index 0000000..cd6451a Binary files /dev/null and b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_3.jpg b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_3.jpg new file mode 100644 index 0000000..e121887 Binary files /dev/null and b/Apps/XinDianTu/Images/11a032146324bcce219948ed1f3a9116_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/11d64b2c-e96d-45eb-994f-624525ced6ce.jpg b/Apps/XinDianTu/Images/11d64b2c-e96d-45eb-994f-624525ced6ce.jpg new file mode 100644 index 0000000..31f732e Binary files /dev/null and b/Apps/XinDianTu/Images/11d64b2c-e96d-45eb-994f-624525ced6ce.jpg differ diff --git a/Apps/XinDianTu/Images/12229aa2-dbd3-4974-a43f-bda126236a25.jpg b/Apps/XinDianTu/Images/12229aa2-dbd3-4974-a43f-bda126236a25.jpg new file mode 100644 index 0000000..fc61f29 Binary files /dev/null and b/Apps/XinDianTu/Images/12229aa2-dbd3-4974-a43f-bda126236a25.jpg differ diff --git a/Apps/XinDianTu/Images/122b29ee-b1fe-4220-abb6-235d84cbd858.jpg b/Apps/XinDianTu/Images/122b29ee-b1fe-4220-abb6-235d84cbd858.jpg new file mode 100644 index 0000000..f125954 Binary files /dev/null and b/Apps/XinDianTu/Images/122b29ee-b1fe-4220-abb6-235d84cbd858.jpg differ diff --git a/Apps/XinDianTu/Images/12e3dfc2-d0dc-4022-95a7-9f993ec4ca84.jpg b/Apps/XinDianTu/Images/12e3dfc2-d0dc-4022-95a7-9f993ec4ca84.jpg new file mode 100644 index 0000000..c49093e Binary files /dev/null and b/Apps/XinDianTu/Images/12e3dfc2-d0dc-4022-95a7-9f993ec4ca84.jpg differ diff --git a/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.jpg b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.jpg new file mode 100644 index 0000000..4851be8 Binary files /dev/null and b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.jpg differ diff --git a/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.json b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.json new file mode 100644 index 0000000..440fb59 --- /dev/null +++ b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4.json @@ -0,0 +1,46 @@ +{ + "image": "12efc390-24d3-4e1c-b274-36e839c7b1a4.jpg", + "width": 720, + "height": 248, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 540, + 700, + 788 + ], + "click_point": [ + 121, + 589 + ] + }, + { + "id": 2, + "rect": [ + 19, + 801, + 700, + 1047 + ], + "click_point": [ + 121, + 850 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1060, + 700, + 1308 + ], + "click_point": [ + 121, + 1109 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_flag.jpg b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_flag.jpg new file mode 100644 index 0000000..6c414d3 Binary files /dev/null and b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_flag.jpg differ diff --git a/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_vl.jpg b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_vl.jpg new file mode 100644 index 0000000..ace0b88 Binary files /dev/null and b/Apps/XinDianTu/Images/12efc390-24d3-4e1c-b274-36e839c7b1a4_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1331a921-8276-451b-96be-364fb8cdc5da.jpg b/Apps/XinDianTu/Images/1331a921-8276-451b-96be-364fb8cdc5da.jpg new file mode 100644 index 0000000..3b46765 Binary files /dev/null and b/Apps/XinDianTu/Images/1331a921-8276-451b-96be-364fb8cdc5da.jpg differ diff --git a/Apps/XinDianTu/Images/136324b0-03d6-48b7-80df-bae9e689524a.jpg b/Apps/XinDianTu/Images/136324b0-03d6-48b7-80df-bae9e689524a.jpg new file mode 100644 index 0000000..abf6a8d Binary files /dev/null and b/Apps/XinDianTu/Images/136324b0-03d6-48b7-80df-bae9e689524a.jpg differ diff --git a/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_1.jpg b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_1.jpg new file mode 100644 index 0000000..4602151 Binary files /dev/null and b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_2.jpg b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_2.jpg new file mode 100644 index 0000000..506230a Binary files /dev/null and b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_3.jpg b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_3.jpg new file mode 100644 index 0000000..3446c2b Binary files /dev/null and b/Apps/XinDianTu/Images/1382fd3275ca6547d5cc22f740c0eca7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_1.jpg b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_1.jpg new file mode 100644 index 0000000..9e984af Binary files /dev/null and b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_2.jpg b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_2.jpg new file mode 100644 index 0000000..7029425 Binary files /dev/null and b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_3.jpg b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_3.jpg new file mode 100644 index 0000000..c9212a1 Binary files /dev/null and b/Apps/XinDianTu/Images/141225706b307805ec6cc373811ecbf5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/142b5ae4-ebdb-4c59-9cfd-782f31ca1c4f.jpg b/Apps/XinDianTu/Images/142b5ae4-ebdb-4c59-9cfd-782f31ca1c4f.jpg new file mode 100644 index 0000000..3f2f9db Binary files /dev/null and b/Apps/XinDianTu/Images/142b5ae4-ebdb-4c59-9cfd-782f31ca1c4f.jpg differ diff --git a/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.jpg b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.jpg new file mode 100644 index 0000000..b20ab0d Binary files /dev/null and b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.jpg differ diff --git a/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.json b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.json new file mode 100644 index 0000000..4f74e86 --- /dev/null +++ b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461.json @@ -0,0 +1,46 @@ +{ + "image": "144884b2-3950-4855-b363-a90f09e0b461.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 537, + 700, + 788 + ], + "click_point": [ + 121, + 587 + ] + }, + { + "id": 2, + "rect": [ + 19, + 802, + 700, + 1048 + ], + "click_point": [ + 121, + 851 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1057, + 700, + 1308 + ], + "click_point": [ + 121, + 1107 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_flag.jpg b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_flag.jpg new file mode 100644 index 0000000..f9dfe88 Binary files /dev/null and b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_flag.jpg differ diff --git a/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_vl.jpg b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_vl.jpg new file mode 100644 index 0000000..033c1a0 Binary files /dev/null and b/Apps/XinDianTu/Images/144884b2-3950-4855-b363-a90f09e0b461_vl.jpg differ diff --git a/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_1.jpg b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_1.jpg new file mode 100644 index 0000000..b77fbfa Binary files /dev/null and b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_2.jpg b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_2.jpg new file mode 100644 index 0000000..1ab1aed Binary files /dev/null and b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_3.jpg b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_3.jpg new file mode 100644 index 0000000..9feec86 Binary files /dev/null and b/Apps/XinDianTu/Images/146d5145417966bcd3c41f4d42e90743_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/14d64ce3-dc07-40d9-9fca-7966e12d7255.jpg b/Apps/XinDianTu/Images/14d64ce3-dc07-40d9-9fca-7966e12d7255.jpg new file mode 100644 index 0000000..d0008c3 Binary files /dev/null and b/Apps/XinDianTu/Images/14d64ce3-dc07-40d9-9fca-7966e12d7255.jpg differ diff --git a/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_1.jpg b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_1.jpg new file mode 100644 index 0000000..12aa917 Binary files /dev/null and b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_2.jpg b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_2.jpg new file mode 100644 index 0000000..c784cfc Binary files /dev/null and b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_3.jpg b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_3.jpg new file mode 100644 index 0000000..5c3b831 Binary files /dev/null and b/Apps/XinDianTu/Images/150854c607bf6e2a0065eff403492c32_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_1.jpg b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_1.jpg new file mode 100644 index 0000000..3e6007d Binary files /dev/null and b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_2.jpg b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_2.jpg new file mode 100644 index 0000000..4b6b626 Binary files /dev/null and b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_3.jpg b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_3.jpg new file mode 100644 index 0000000..de587b6 Binary files /dev/null and b/Apps/XinDianTu/Images/1551babfe1bb3b67b05248aed2bdcb06_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/15f28117-37d5-4009-9216-832e6aca8ae2.jpg b/Apps/XinDianTu/Images/15f28117-37d5-4009-9216-832e6aca8ae2.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/15f28117-37d5-4009-9216-832e6aca8ae2.jpg differ diff --git a/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_1.jpg b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_1.jpg new file mode 100644 index 0000000..89555d5 Binary files /dev/null and b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_2.jpg b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_2.jpg new file mode 100644 index 0000000..529eb5f Binary files /dev/null and b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_3.jpg b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_3.jpg new file mode 100644 index 0000000..6cf7738 Binary files /dev/null and b/Apps/XinDianTu/Images/16362c8ac1d27dfc3ee9274c0df267a6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.jpg b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.jpg new file mode 100644 index 0000000..e333967 Binary files /dev/null and b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.jpg differ diff --git a/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.json b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.json new file mode 100644 index 0000000..790d7be --- /dev/null +++ b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa.json @@ -0,0 +1,46 @@ +{ + "image": "1718ff81-5ea0-4643-bf38-e0a976e4fdfa.jpg", + "width": 720, + "height": 149, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 444, + 700, + 692 + ], + "click_point": [ + 121, + 493 + ] + }, + { + "id": 2, + "rect": [ + 19, + 705, + 700, + 951 + ], + "click_point": [ + 121, + 754 + ] + }, + { + "id": 3, + "rect": [ + 19, + 964, + 700, + 1212 + ], + "click_point": [ + 121, + 1013 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_flag.jpg b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_flag.jpg new file mode 100644 index 0000000..174c68d Binary files /dev/null and b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_vl.jpg b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_vl.jpg new file mode 100644 index 0000000..cd0765c Binary files /dev/null and b/Apps/XinDianTu/Images/1718ff81-5ea0-4643-bf38-e0a976e4fdfa_vl.jpg differ diff --git a/Apps/XinDianTu/Images/172463a4-f526-4b0b-b619-fd912352644c.jpg b/Apps/XinDianTu/Images/172463a4-f526-4b0b-b619-fd912352644c.jpg new file mode 100644 index 0000000..fc84d08 Binary files /dev/null and b/Apps/XinDianTu/Images/172463a4-f526-4b0b-b619-fd912352644c.jpg differ diff --git a/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.jpg b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.jpg new file mode 100644 index 0000000..de62923 Binary files /dev/null and b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.jpg differ diff --git a/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.json b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.json new file mode 100644 index 0000000..95a35d8 --- /dev/null +++ b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3.json @@ -0,0 +1,46 @@ +{ + "image": "1739219c-6d22-41a0-94a5-7cd745b118f3.jpg", + "width": 720, + "height": 148, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 418, + 700, + 692 + ], + "click_point": [ + 121, + 472 + ] + }, + { + "id": 2, + "rect": [ + 19, + 706, + 700, + 952 + ], + "click_point": [ + 121, + 755 + ] + }, + { + "id": 3, + "rect": [ + 19, + 961, + 700, + 1212 + ], + "click_point": [ + 121, + 1011 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_flag.jpg b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_flag.jpg new file mode 100644 index 0000000..dd3e0d8 Binary files /dev/null and b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_vl.jpg b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_vl.jpg new file mode 100644 index 0000000..2037570 Binary files /dev/null and b/Apps/XinDianTu/Images/1739219c-6d22-41a0-94a5-7cd745b118f3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5.jpg b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5.jpg new file mode 100644 index 0000000..632e9cf Binary files /dev/null and b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5.jpg differ diff --git a/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_flag.jpg b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_flag.jpg new file mode 100644 index 0000000..758d731 Binary files /dev/null and b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_vl.jpg b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_vl.jpg new file mode 100644 index 0000000..6f96015 Binary files /dev/null and b/Apps/XinDianTu/Images/1999fc34-69b7-4e8f-8efa-84e418d539c5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9.jpg b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9.jpg new file mode 100644 index 0000000..a498aa9 Binary files /dev/null and b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9.jpg differ diff --git a/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_flag.jpg b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_flag.jpg new file mode 100644 index 0000000..6c1e891 Binary files /dev/null and b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_vl.jpg b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_vl.jpg new file mode 100644 index 0000000..633573b Binary files /dev/null and b/Apps/XinDianTu/Images/19d2ffff-71c2-4469-b1b7-2867bc6540b9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/19ed0a48-506c-4d04-9262-aac0e36987cd.jpg b/Apps/XinDianTu/Images/19ed0a48-506c-4d04-9262-aac0e36987cd.jpg new file mode 100644 index 0000000..061a14a Binary files /dev/null and b/Apps/XinDianTu/Images/19ed0a48-506c-4d04-9262-aac0e36987cd.jpg differ diff --git a/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_1.jpg b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_1.jpg new file mode 100644 index 0000000..622fe30 Binary files /dev/null and b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_2.jpg b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_2.jpg new file mode 100644 index 0000000..56bda5e Binary files /dev/null and b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_3.jpg b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_3.jpg new file mode 100644 index 0000000..25bd00e Binary files /dev/null and b/Apps/XinDianTu/Images/19fae0897cde48cde7a239db72995628_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1a34ee77-88d0-468a-9722-258dfba1739a.jpg b/Apps/XinDianTu/Images/1a34ee77-88d0-468a-9722-258dfba1739a.jpg new file mode 100644 index 0000000..9ad4a3c Binary files /dev/null and b/Apps/XinDianTu/Images/1a34ee77-88d0-468a-9722-258dfba1739a.jpg differ diff --git a/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.jpg b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.jpg new file mode 100644 index 0000000..8bc72ef Binary files /dev/null and b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.jpg differ diff --git a/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.json b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.json new file mode 100644 index 0000000..3ffc7b7 --- /dev/null +++ b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8.json @@ -0,0 +1,46 @@ +{ + "image": "1a47e9cb-acf3-489b-9ca7-c66775a116f8.jpg", + "width": 720, + "height": 138, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 459, + 700, + 708 + ], + "click_point": [ + 121, + 508 + ] + }, + { + "id": 2, + "rect": [ + 19, + 716, + 700, + 965 + ], + "click_point": [ + 121, + 765 + ] + }, + { + "id": 3, + "rect": [ + 19, + 979, + 700, + 1228 + ], + "click_point": [ + 121, + 1028 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_flag.jpg b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_flag.jpg new file mode 100644 index 0000000..879fe4e Binary files /dev/null and b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_vl.jpg b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_vl.jpg new file mode 100644 index 0000000..8fe2500 Binary files /dev/null and b/Apps/XinDianTu/Images/1a47e9cb-acf3-489b-9ca7-c66775a116f8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.jpg b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.jpg new file mode 100644 index 0000000..eca2561 Binary files /dev/null and b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.jpg differ diff --git a/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.json b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.json new file mode 100644 index 0000000..0af9c9e --- /dev/null +++ b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812.json @@ -0,0 +1,59 @@ +{ + "image": "1a9ca99e-7873-4a31-893b-128633355812.jpg", + "width": 720, + "height": 205, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 636 + ], + "click_point": [ + 121, + 450 + ] + }, + { + "id": 2, + "rect": [ + 19, + 649, + 700, + 895 + ], + "click_point": [ + 121, + 698 + ] + }, + { + "id": 3, + "rect": [ + 19, + 908, + 700, + 1156 + ], + "click_point": [ + 121, + 957 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1169, + 700, + 1374 + ], + "click_point": [ + 121, + 1210 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_flag.jpg b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_flag.jpg new file mode 100644 index 0000000..3ab0441 Binary files /dev/null and b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_vl.jpg b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_vl.jpg new file mode 100644 index 0000000..8256b60 Binary files /dev/null and b/Apps/XinDianTu/Images/1a9ca99e-7873-4a31-893b-128633355812_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.jpg b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.jpg new file mode 100644 index 0000000..6d8566e Binary files /dev/null and b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.jpg differ diff --git a/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.json b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.json new file mode 100644 index 0000000..05fcefb --- /dev/null +++ b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3.json @@ -0,0 +1,46 @@ +{ + "image": "1aaa6400-3fd6-4750-abe6-7efb59fb59e3.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 466, + 700, + 740 + ], + "click_point": [ + 121, + 520 + ] + }, + { + "id": 2, + "rect": [ + 19, + 754, + 700, + 999 + ], + "click_point": [ + 121, + 803 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_flag.jpg b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_flag.jpg new file mode 100644 index 0000000..b358ae1 Binary files /dev/null and b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_vl.jpg b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_vl.jpg new file mode 100644 index 0000000..6ecdf95 Binary files /dev/null and b/Apps/XinDianTu/Images/1aaa6400-3fd6-4750-abe6-7efb59fb59e3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1abfb181-74a3-4f05-8c4c-b5f4127e0fdb.jpg b/Apps/XinDianTu/Images/1abfb181-74a3-4f05-8c4c-b5f4127e0fdb.jpg new file mode 100644 index 0000000..d9c0e45 Binary files /dev/null and b/Apps/XinDianTu/Images/1abfb181-74a3-4f05-8c4c-b5f4127e0fdb.jpg differ diff --git a/Apps/XinDianTu/Images/1ac5237a-c466-4a85-b2f0-8ee1fc1c3a10.jpg b/Apps/XinDianTu/Images/1ac5237a-c466-4a85-b2f0-8ee1fc1c3a10.jpg new file mode 100644 index 0000000..d1e30ee Binary files /dev/null and b/Apps/XinDianTu/Images/1ac5237a-c466-4a85-b2f0-8ee1fc1c3a10.jpg differ diff --git a/Apps/XinDianTu/Images/1adf3b19-493d-4764-8595-41936b647207.jpg b/Apps/XinDianTu/Images/1adf3b19-493d-4764-8595-41936b647207.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/1adf3b19-493d-4764-8595-41936b647207.jpg differ diff --git a/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_1.jpg b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_1.jpg new file mode 100644 index 0000000..77bfb5c Binary files /dev/null and b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_2.jpg b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_2.jpg new file mode 100644 index 0000000..c52b553 Binary files /dev/null and b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_3.jpg b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_3.jpg new file mode 100644 index 0000000..903bbae Binary files /dev/null and b/Apps/XinDianTu/Images/1b08ff9d15fcb506882a3cac53e56d4e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.jpg b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.jpg new file mode 100644 index 0000000..5c1cb37 Binary files /dev/null and b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.jpg differ diff --git a/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.json b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.json new file mode 100644 index 0000000..7517634 --- /dev/null +++ b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf.json @@ -0,0 +1,46 @@ +{ + "image": "1b41ce05-e895-4266-88b0-c500e0645daf.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 460, + 700, + 734 + ], + "click_point": [ + 121, + 514 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_flag.jpg b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_flag.jpg new file mode 100644 index 0000000..1059792 Binary files /dev/null and b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_vl.jpg b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_vl.jpg new file mode 100644 index 0000000..b724914 Binary files /dev/null and b/Apps/XinDianTu/Images/1b41ce05-e895-4266-88b0-c500e0645daf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.jpg b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.jpg new file mode 100644 index 0000000..2e06834 Binary files /dev/null and b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.jpg differ diff --git a/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.json b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.json new file mode 100644 index 0000000..ed370c5 --- /dev/null +++ b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.json @@ -0,0 +1,46 @@ +{ + "image": "1b81f0d7-3d14-4449-8b99-b1e7555ca1ed.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 546, + 700, + 792 + ], + "click_point": [ + 121, + 595 + ] + }, + { + "id": 2, + "rect": [ + 19, + 801, + 700, + 1044 + ], + "click_point": [ + 121, + 849 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1058, + 700, + 1304 + ], + "click_point": [ + 121, + 1107 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_flag.jpg b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_flag.jpg new file mode 100644 index 0000000..6f211a6 Binary files /dev/null and b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_vl.jpg b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_vl.jpg new file mode 100644 index 0000000..8012b72 Binary files /dev/null and b/Apps/XinDianTu/Images/1b81f0d7-3d14-4449-8b99-b1e7555ca1ed_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1bb03c60-dd62-4c1f-b7e0-b7d401eccc43.jpg b/Apps/XinDianTu/Images/1bb03c60-dd62-4c1f-b7e0-b7d401eccc43.jpg new file mode 100644 index 0000000..8b6cd36 Binary files /dev/null and b/Apps/XinDianTu/Images/1bb03c60-dd62-4c1f-b7e0-b7d401eccc43.jpg differ diff --git a/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.jpg b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.jpg new file mode 100644 index 0000000..1e4870e Binary files /dev/null and b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.jpg differ diff --git a/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.json b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.json new file mode 100644 index 0000000..0c47970 --- /dev/null +++ b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781.json @@ -0,0 +1,59 @@ +{ + "image": "1bc1fef5-477e-44a4-a496-7b1458369781.jpg", + "width": 720, + "height": 226, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 615 + ], + "click_point": [ + 121, + 446 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 876 + ], + "click_point": [ + 121, + 677 + ] + }, + { + "id": 3, + "rect": [ + 19, + 889, + 700, + 1135 + ], + "click_point": [ + 121, + 938 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1148, + 700, + 1374 + ], + "click_point": [ + 121, + 1193 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_flag.jpg b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_flag.jpg new file mode 100644 index 0000000..8c954c4 Binary files /dev/null and b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_vl.jpg b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_vl.jpg new file mode 100644 index 0000000..65a97f0 Binary files /dev/null and b/Apps/XinDianTu/Images/1bc1fef5-477e-44a4-a496-7b1458369781_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.jpg b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.jpg new file mode 100644 index 0000000..b6b13ab Binary files /dev/null and b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.jpg differ diff --git a/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.json b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.json new file mode 100644 index 0000000..6e7661e --- /dev/null +++ b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8.json @@ -0,0 +1,46 @@ +{ + "image": "1bc826eb-8096-431d-b19e-145feef681f8.jpg", + "width": 720, + "height": 310, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 569, + 700, + 764 + ], + "click_point": [ + 121, + 608 + ] + }, + { + "id": 2, + "rect": [ + 19, + 776, + 700, + 1052 + ], + "click_point": [ + 121, + 831 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1064, + 700, + 1374 + ], + "click_point": [ + 121, + 1126 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_flag.jpg b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_flag.jpg new file mode 100644 index 0000000..5e56240 Binary files /dev/null and b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_vl.jpg b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_vl.jpg new file mode 100644 index 0000000..7882f48 Binary files /dev/null and b/Apps/XinDianTu/Images/1bc826eb-8096-431d-b19e-145feef681f8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_1.jpg b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_1.jpg new file mode 100644 index 0000000..f8cd558 Binary files /dev/null and b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_2.jpg b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_2.jpg new file mode 100644 index 0000000..f62edd0 Binary files /dev/null and b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_3.jpg b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_3.jpg new file mode 100644 index 0000000..c3cb6a9 Binary files /dev/null and b/Apps/XinDianTu/Images/1be1daa56d27d12d2f5a8e0c96799b1f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1c7d1c61-46a8-408e-8b27-64e8c2a9efdc.jpg b/Apps/XinDianTu/Images/1c7d1c61-46a8-408e-8b27-64e8c2a9efdc.jpg new file mode 100644 index 0000000..3f0f257 Binary files /dev/null and b/Apps/XinDianTu/Images/1c7d1c61-46a8-408e-8b27-64e8c2a9efdc.jpg differ diff --git a/Apps/XinDianTu/Images/1cb85453-362a-4052-980e-2e0793d1e0f5.jpg b/Apps/XinDianTu/Images/1cb85453-362a-4052-980e-2e0793d1e0f5.jpg new file mode 100644 index 0000000..14a202c Binary files /dev/null and b/Apps/XinDianTu/Images/1cb85453-362a-4052-980e-2e0793d1e0f5.jpg differ diff --git a/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_1.jpg b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_1.jpg new file mode 100644 index 0000000..627c778 Binary files /dev/null and b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_2.jpg b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_2.jpg new file mode 100644 index 0000000..9397e75 Binary files /dev/null and b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_3.jpg b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_3.jpg new file mode 100644 index 0000000..37618dc Binary files /dev/null and b/Apps/XinDianTu/Images/1cdd99887a30ac54aba6ce6df6bf4b2e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1cef69e3-8ec0-452c-a456-57443b4ae5a6.jpg b/Apps/XinDianTu/Images/1cef69e3-8ec0-452c-a456-57443b4ae5a6.jpg new file mode 100644 index 0000000..78cb8bc Binary files /dev/null and b/Apps/XinDianTu/Images/1cef69e3-8ec0-452c-a456-57443b4ae5a6.jpg differ diff --git a/Apps/XinDianTu/Images/1d1e004c-2bf7-421f-95d0-8a621eed34fb.jpg b/Apps/XinDianTu/Images/1d1e004c-2bf7-421f-95d0-8a621eed34fb.jpg new file mode 100644 index 0000000..acb006f Binary files /dev/null and b/Apps/XinDianTu/Images/1d1e004c-2bf7-421f-95d0-8a621eed34fb.jpg differ diff --git a/Apps/XinDianTu/Images/1d33f95e-1c32-492a-b35c-962e9175b051.jpg b/Apps/XinDianTu/Images/1d33f95e-1c32-492a-b35c-962e9175b051.jpg new file mode 100644 index 0000000..7ced238 Binary files /dev/null and b/Apps/XinDianTu/Images/1d33f95e-1c32-492a-b35c-962e9175b051.jpg differ diff --git a/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.jpg b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.jpg new file mode 100644 index 0000000..d84cd90 Binary files /dev/null and b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.jpg differ diff --git a/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.json b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.json new file mode 100644 index 0000000..34bab38 --- /dev/null +++ b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78.json @@ -0,0 +1,46 @@ +{ + "image": "1d6c617b-b19e-4771-9b19-39d8b9da4f78.jpg", + "width": 720, + "height": 253, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 572, + 700, + 820 + ], + "click_point": [ + 121, + 621 + ] + }, + { + "id": 2, + "rect": [ + 19, + 832, + 700, + 1108 + ], + "click_point": [ + 121, + 887 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1121, + 700, + 1374 + ], + "click_point": [ + 121, + 1171 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_flag.jpg b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_flag.jpg new file mode 100644 index 0000000..909079f Binary files /dev/null and b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_vl.jpg b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_vl.jpg new file mode 100644 index 0000000..d0e74c3 Binary files /dev/null and b/Apps/XinDianTu/Images/1d6c617b-b19e-4771-9b19-39d8b9da4f78_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_1.jpg b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_1.jpg new file mode 100644 index 0000000..dedceff Binary files /dev/null and b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_2.jpg b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_2.jpg new file mode 100644 index 0000000..dab16e9 Binary files /dev/null and b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_3.jpg b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_3.jpg new file mode 100644 index 0000000..84fb4e7 Binary files /dev/null and b/Apps/XinDianTu/Images/1da00f0e2f55fa81ad1c897f00b1dac8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1dfe3cc6-0965-412c-8e2d-c72612c27a79.jpg b/Apps/XinDianTu/Images/1dfe3cc6-0965-412c-8e2d-c72612c27a79.jpg new file mode 100644 index 0000000..4d0a8f0 Binary files /dev/null and b/Apps/XinDianTu/Images/1dfe3cc6-0965-412c-8e2d-c72612c27a79.jpg differ diff --git a/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.jpg b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.jpg new file mode 100644 index 0000000..a396a79 Binary files /dev/null and b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.jpg differ diff --git a/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.json b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.json new file mode 100644 index 0000000..5805723 --- /dev/null +++ b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418.json @@ -0,0 +1,33 @@ +{ + "image": "1e5bed23-d00d-4cf6-b2d8-67e6d0461418.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_flag.jpg b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_flag.jpg new file mode 100644 index 0000000..58c2194 Binary files /dev/null and b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_vl.jpg b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_vl.jpg new file mode 100644 index 0000000..bc2cd75 Binary files /dev/null and b/Apps/XinDianTu/Images/1e5bed23-d00d-4cf6-b2d8-67e6d0461418_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_1.jpg b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_1.jpg new file mode 100644 index 0000000..5bf02f9 Binary files /dev/null and b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_2.jpg b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_2.jpg new file mode 100644 index 0000000..0324a21 Binary files /dev/null and b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_3.jpg b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_3.jpg new file mode 100644 index 0000000..1452371 Binary files /dev/null and b/Apps/XinDianTu/Images/1e6c3428aaf71fa7f2b8d3a6a8514b83_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/1f256466-0b5d-4212-8c78-c58ed59c5fa7.jpg b/Apps/XinDianTu/Images/1f256466-0b5d-4212-8c78-c58ed59c5fa7.jpg new file mode 100644 index 0000000..1a779ee Binary files /dev/null and b/Apps/XinDianTu/Images/1f256466-0b5d-4212-8c78-c58ed59c5fa7.jpg differ diff --git a/Apps/XinDianTu/Images/1f7f9df8-2d05-44d1-8e31-2a44c5248dd1.jpg b/Apps/XinDianTu/Images/1f7f9df8-2d05-44d1-8e31-2a44c5248dd1.jpg new file mode 100644 index 0000000..170bd32 Binary files /dev/null and b/Apps/XinDianTu/Images/1f7f9df8-2d05-44d1-8e31-2a44c5248dd1.jpg differ diff --git a/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7.jpg b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7.jpg new file mode 100644 index 0000000..91a085d Binary files /dev/null and b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7.jpg differ diff --git a/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_flag.jpg b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_flag.jpg new file mode 100644 index 0000000..a2bce02 Binary files /dev/null and b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_vl.jpg b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_vl.jpg new file mode 100644 index 0000000..d5a4791 Binary files /dev/null and b/Apps/XinDianTu/Images/1f946336-f302-4114-b25d-a7015b17cfe7_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.jpg b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.jpg new file mode 100644 index 0000000..8571c53 Binary files /dev/null and b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.jpg differ diff --git a/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.json b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.json new file mode 100644 index 0000000..b94731e --- /dev/null +++ b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225.json @@ -0,0 +1,46 @@ +{ + "image": "1fe06d69-c4c9-4050-9782-2d99a71fb225.jpg", + "width": 720, + "height": 154, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 441, + 700, + 687 + ], + "click_point": [ + 121, + 490 + ] + }, + { + "id": 2, + "rect": [ + 19, + 700, + 700, + 948 + ], + "click_point": [ + 121, + 749 + ] + }, + { + "id": 3, + "rect": [ + 19, + 961, + 700, + 1207 + ], + "click_point": [ + 121, + 1010 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_flag.jpg b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_flag.jpg new file mode 100644 index 0000000..4c2ad39 Binary files /dev/null and b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_vl.jpg b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_vl.jpg new file mode 100644 index 0000000..dadd294 Binary files /dev/null and b/Apps/XinDianTu/Images/1fe06d69-c4c9-4050-9782-2d99a71fb225_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.jpg b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.jpg new file mode 100644 index 0000000..219304a Binary files /dev/null and b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.jpg differ diff --git a/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.json b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.json new file mode 100644 index 0000000..f2e2346 --- /dev/null +++ b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9.json @@ -0,0 +1,46 @@ +{ + "image": "1ff1de21-5569-41df-a3e1-fd49731b74b9.jpg", + "width": 720, + "height": 130, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 436, + 700, + 684 + ], + "click_point": [ + 121, + 485 + ] + }, + { + "id": 2, + "rect": [ + 19, + 696, + 700, + 972 + ], + "click_point": [ + 121, + 751 + ] + }, + { + "id": 3, + "rect": [ + 19, + 985, + 700, + 1231 + ], + "click_point": [ + 121, + 1034 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_flag.jpg b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_flag.jpg new file mode 100644 index 0000000..afe6abd Binary files /dev/null and b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_vl.jpg b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_vl.jpg new file mode 100644 index 0000000..4430e4b Binary files /dev/null and b/Apps/XinDianTu/Images/1ff1de21-5569-41df-a3e1-fd49731b74b9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/1ff3591b-0488-416e-8ae2-27d822ed0661.jpg b/Apps/XinDianTu/Images/1ff3591b-0488-416e-8ae2-27d822ed0661.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/1ff3591b-0488-416e-8ae2-27d822ed0661.jpg differ diff --git a/Apps/XinDianTu/Images/200ca460-5485-4fd1-9660-b77d20c7438f.jpg b/Apps/XinDianTu/Images/200ca460-5485-4fd1-9660-b77d20c7438f.jpg new file mode 100644 index 0000000..a862577 Binary files /dev/null and b/Apps/XinDianTu/Images/200ca460-5485-4fd1-9660-b77d20c7438f.jpg differ diff --git a/Apps/XinDianTu/Images/20761508-1037-4b8f-aa6f-8614325b78ee.jpg b/Apps/XinDianTu/Images/20761508-1037-4b8f-aa6f-8614325b78ee.jpg new file mode 100644 index 0000000..a9116a6 Binary files /dev/null and b/Apps/XinDianTu/Images/20761508-1037-4b8f-aa6f-8614325b78ee.jpg differ diff --git a/Apps/XinDianTu/Images/2088b1f6-5b4d-4a11-b622-86f27c974a97.jpg b/Apps/XinDianTu/Images/2088b1f6-5b4d-4a11-b622-86f27c974a97.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/2088b1f6-5b4d-4a11-b622-86f27c974a97.jpg differ diff --git a/Apps/XinDianTu/Images/2123ecae-617e-4763-8249-a0dfb04af1b3.jpg b/Apps/XinDianTu/Images/2123ecae-617e-4763-8249-a0dfb04af1b3.jpg new file mode 100644 index 0000000..9026a9d Binary files /dev/null and b/Apps/XinDianTu/Images/2123ecae-617e-4763-8249-a0dfb04af1b3.jpg differ diff --git a/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_1.jpg b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_1.jpg new file mode 100644 index 0000000..115344f Binary files /dev/null and b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_2.jpg b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_2.jpg new file mode 100644 index 0000000..baee6fa Binary files /dev/null and b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_3.jpg b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_3.jpg new file mode 100644 index 0000000..0d4ee62 Binary files /dev/null and b/Apps/XinDianTu/Images/224bb7bf3220155ae08be472c903b598_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.jpg b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.jpg new file mode 100644 index 0000000..febd31d Binary files /dev/null and b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.jpg differ diff --git a/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.json b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.json new file mode 100644 index 0000000..360673f --- /dev/null +++ b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de.json @@ -0,0 +1,33 @@ +{ + "image": "22702e95-d549-490b-9619-bfa1a91591de.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_flag.jpg b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_flag.jpg new file mode 100644 index 0000000..47c4032 Binary files /dev/null and b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_flag.jpg differ diff --git a/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_vl.jpg b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_vl.jpg new file mode 100644 index 0000000..a8febd3 Binary files /dev/null and b/Apps/XinDianTu/Images/22702e95-d549-490b-9619-bfa1a91591de_vl.jpg differ diff --git a/Apps/XinDianTu/Images/22c19ad1-b65a-4ff0-8669-aa451facdd40.jpg b/Apps/XinDianTu/Images/22c19ad1-b65a-4ff0-8669-aa451facdd40.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/22c19ad1-b65a-4ff0-8669-aa451facdd40.jpg differ diff --git a/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.jpg b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.jpg new file mode 100644 index 0000000..f71da1c Binary files /dev/null and b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.jpg differ diff --git a/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.json b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.json new file mode 100644 index 0000000..d4c8d7e --- /dev/null +++ b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872.json @@ -0,0 +1,46 @@ +{ + "image": "22c8524e-daee-4d42-a292-254a3d260872.jpg", + "width": 720, + "height": 166, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 428, + 700, + 676 + ], + "click_point": [ + 121, + 477 + ] + }, + { + "id": 2, + "rect": [ + 19, + 689, + 700, + 935 + ], + "click_point": [ + 121, + 738 + ] + }, + { + "id": 3, + "rect": [ + 19, + 948, + 700, + 1196 + ], + "click_point": [ + 121, + 997 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_flag.jpg b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_flag.jpg new file mode 100644 index 0000000..99e3605 Binary files /dev/null and b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_flag.jpg differ diff --git a/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_vl.jpg b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_vl.jpg new file mode 100644 index 0000000..dc956ed Binary files /dev/null and b/Apps/XinDianTu/Images/22c8524e-daee-4d42-a292-254a3d260872_vl.jpg differ diff --git a/Apps/XinDianTu/Images/22e03cee-84f5-41b7-837a-1a78ae490c62.jpg b/Apps/XinDianTu/Images/22e03cee-84f5-41b7-837a-1a78ae490c62.jpg new file mode 100644 index 0000000..00a42f2 Binary files /dev/null and b/Apps/XinDianTu/Images/22e03cee-84f5-41b7-837a-1a78ae490c62.jpg differ diff --git a/Apps/XinDianTu/Images/2315ed14-7afa-46be-a795-b131b106bc45.jpg b/Apps/XinDianTu/Images/2315ed14-7afa-46be-a795-b131b106bc45.jpg new file mode 100644 index 0000000..10f8498 Binary files /dev/null and b/Apps/XinDianTu/Images/2315ed14-7afa-46be-a795-b131b106bc45.jpg differ diff --git a/Apps/XinDianTu/Images/23606c9a-4f0c-4179-a3a5-9f759ee076c7.jpg b/Apps/XinDianTu/Images/23606c9a-4f0c-4179-a3a5-9f759ee076c7.jpg new file mode 100644 index 0000000..f00c410 Binary files /dev/null and b/Apps/XinDianTu/Images/23606c9a-4f0c-4179-a3a5-9f759ee076c7.jpg differ diff --git a/Apps/XinDianTu/Images/23d78378-844d-4bbf-bef8-b7891d824132.jpg b/Apps/XinDianTu/Images/23d78378-844d-4bbf-bef8-b7891d824132.jpg new file mode 100644 index 0000000..51f0827 Binary files /dev/null and b/Apps/XinDianTu/Images/23d78378-844d-4bbf-bef8-b7891d824132.jpg differ diff --git a/Apps/XinDianTu/Images/2438b8ea-5d31-4e3d-aa04-6751abb878e8.jpg b/Apps/XinDianTu/Images/2438b8ea-5d31-4e3d-aa04-6751abb878e8.jpg new file mode 100644 index 0000000..3cc593d Binary files /dev/null and b/Apps/XinDianTu/Images/2438b8ea-5d31-4e3d-aa04-6751abb878e8.jpg differ diff --git a/Apps/XinDianTu/Images/244b5974-1082-4c9c-91a1-46dc83cfb3cd.jpg b/Apps/XinDianTu/Images/244b5974-1082-4c9c-91a1-46dc83cfb3cd.jpg new file mode 100644 index 0000000..2f38155 Binary files /dev/null and b/Apps/XinDianTu/Images/244b5974-1082-4c9c-91a1-46dc83cfb3cd.jpg differ diff --git a/Apps/XinDianTu/Images/246626bc-7545-4839-bd85-16f32b1c5150.jpg b/Apps/XinDianTu/Images/246626bc-7545-4839-bd85-16f32b1c5150.jpg new file mode 100644 index 0000000..66d2d32 Binary files /dev/null and b/Apps/XinDianTu/Images/246626bc-7545-4839-bd85-16f32b1c5150.jpg differ diff --git a/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_1.jpg b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_1.jpg new file mode 100644 index 0000000..22ab944 Binary files /dev/null and b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_2.jpg b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_2.jpg new file mode 100644 index 0000000..1a07df1 Binary files /dev/null and b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_3.jpg b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_3.jpg new file mode 100644 index 0000000..2660d50 Binary files /dev/null and b/Apps/XinDianTu/Images/248486b5675d31482aa54d3b04ec625c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/25068c96-74e0-4080-932f-1ba8be0e3c1d.jpg b/Apps/XinDianTu/Images/25068c96-74e0-4080-932f-1ba8be0e3c1d.jpg new file mode 100644 index 0000000..eae11ad Binary files /dev/null and b/Apps/XinDianTu/Images/25068c96-74e0-4080-932f-1ba8be0e3c1d.jpg differ diff --git a/Apps/XinDianTu/Images/2521f0b6-f0d1-4fe7-85d1-7d5be0be0741.jpg b/Apps/XinDianTu/Images/2521f0b6-f0d1-4fe7-85d1-7d5be0be0741.jpg new file mode 100644 index 0000000..bef5cea Binary files /dev/null and b/Apps/XinDianTu/Images/2521f0b6-f0d1-4fe7-85d1-7d5be0be0741.jpg differ diff --git a/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_1.jpg b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_1.jpg new file mode 100644 index 0000000..16cbbba Binary files /dev/null and b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_2.jpg b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_2.jpg new file mode 100644 index 0000000..904dba7 Binary files /dev/null and b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_3.jpg b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_3.jpg new file mode 100644 index 0000000..69dd4f0 Binary files /dev/null and b/Apps/XinDianTu/Images/257b8217701b891b273f7ae8619a8d61_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/25c14065-084e-4868-8c4e-a4dc7e5bbd69.jpg b/Apps/XinDianTu/Images/25c14065-084e-4868-8c4e-a4dc7e5bbd69.jpg new file mode 100644 index 0000000..a2d3d8b Binary files /dev/null and b/Apps/XinDianTu/Images/25c14065-084e-4868-8c4e-a4dc7e5bbd69.jpg differ diff --git a/Apps/XinDianTu/Images/25c2d575-ec9d-4a0c-992d-0ff630b0c341.jpg b/Apps/XinDianTu/Images/25c2d575-ec9d-4a0c-992d-0ff630b0c341.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/25c2d575-ec9d-4a0c-992d-0ff630b0c341.jpg differ diff --git a/Apps/XinDianTu/Images/25f9f4a3-ac34-4178-8c95-aabdf3c89f5a.jpg b/Apps/XinDianTu/Images/25f9f4a3-ac34-4178-8c95-aabdf3c89f5a.jpg new file mode 100644 index 0000000..040deab Binary files /dev/null and b/Apps/XinDianTu/Images/25f9f4a3-ac34-4178-8c95-aabdf3c89f5a.jpg differ diff --git a/Apps/XinDianTu/Images/26055c1c-6166-440c-884e-170b1d78e43f.jpg b/Apps/XinDianTu/Images/26055c1c-6166-440c-884e-170b1d78e43f.jpg new file mode 100644 index 0000000..441a1a3 Binary files /dev/null and b/Apps/XinDianTu/Images/26055c1c-6166-440c-884e-170b1d78e43f.jpg differ diff --git a/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_1.jpg b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_1.jpg new file mode 100644 index 0000000..1d35191 Binary files /dev/null and b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_2.jpg b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_2.jpg new file mode 100644 index 0000000..9349132 Binary files /dev/null and b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_3.jpg b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_3.jpg new file mode 100644 index 0000000..3782f81 Binary files /dev/null and b/Apps/XinDianTu/Images/261ef902278897794a375d002cebcbe5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_1.jpg b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_1.jpg new file mode 100644 index 0000000..a1e1948 Binary files /dev/null and b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_2.jpg b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_2.jpg new file mode 100644 index 0000000..1bef1fb Binary files /dev/null and b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_3.jpg b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_3.jpg new file mode 100644 index 0000000..be96231 Binary files /dev/null and b/Apps/XinDianTu/Images/262af466ab8cd6410f042203288a9882_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_1.jpg b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_1.jpg new file mode 100644 index 0000000..fc1c725 Binary files /dev/null and b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_2.jpg b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_2.jpg new file mode 100644 index 0000000..4925d5d Binary files /dev/null and b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_3.jpg b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_3.jpg new file mode 100644 index 0000000..5ed6ba0 Binary files /dev/null and b/Apps/XinDianTu/Images/264802909ee0d95457dc1d0cb3e843d0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b.jpg b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b.jpg new file mode 100644 index 0000000..febe602 Binary files /dev/null and b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b.jpg differ diff --git a/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_flag.jpg b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_flag.jpg new file mode 100644 index 0000000..3591ef4 Binary files /dev/null and b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_vl.jpg b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_vl.jpg new file mode 100644 index 0000000..1127be6 Binary files /dev/null and b/Apps/XinDianTu/Images/267f22b0-01fb-4ca8-a735-5393eb15f89b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.jpg b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.jpg new file mode 100644 index 0000000..4f8ebef Binary files /dev/null and b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.jpg differ diff --git a/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.json b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.json new file mode 100644 index 0000000..2b48f43 --- /dev/null +++ b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.json @@ -0,0 +1,46 @@ +{ + "image": "26871553-02dc-4ac0-9fa8-30e9a4f7c2a8.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 506, + 700, + 772 + ], + "click_point": [ + 121, + 559 + ] + }, + { + "id": 2, + "rect": [ + 19, + 778, + 700, + 1060 + ], + "click_point": [ + 121, + 834 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1068, + 700, + 1317 + ], + "click_point": [ + 121, + 1117 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_flag.jpg b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_flag.jpg new file mode 100644 index 0000000..786ffd0 Binary files /dev/null and b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_vl.jpg b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_vl.jpg new file mode 100644 index 0000000..6c6e5d9 Binary files /dev/null and b/Apps/XinDianTu/Images/26871553-02dc-4ac0-9fa8-30e9a4f7c2a8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/26b2dd06-670f-44cf-9b21-a5dda48efefb.jpg b/Apps/XinDianTu/Images/26b2dd06-670f-44cf-9b21-a5dda48efefb.jpg new file mode 100644 index 0000000..30eb657 Binary files /dev/null and b/Apps/XinDianTu/Images/26b2dd06-670f-44cf-9b21-a5dda48efefb.jpg differ diff --git a/Apps/XinDianTu/Images/26e8344b-999c-48e2-a0d0-40ee29f9ac03.jpg b/Apps/XinDianTu/Images/26e8344b-999c-48e2-a0d0-40ee29f9ac03.jpg new file mode 100644 index 0000000..a701bb0 Binary files /dev/null and b/Apps/XinDianTu/Images/26e8344b-999c-48e2-a0d0-40ee29f9ac03.jpg differ diff --git a/Apps/XinDianTu/Images/2700ec34-3766-46fd-a679-26157701580e.jpg b/Apps/XinDianTu/Images/2700ec34-3766-46fd-a679-26157701580e.jpg new file mode 100644 index 0000000..56abf96 Binary files /dev/null and b/Apps/XinDianTu/Images/2700ec34-3766-46fd-a679-26157701580e.jpg differ diff --git a/Apps/XinDianTu/Images/27849736-d453-48b1-9177-3f24a938f497.jpg b/Apps/XinDianTu/Images/27849736-d453-48b1-9177-3f24a938f497.jpg new file mode 100644 index 0000000..629bc23 Binary files /dev/null and b/Apps/XinDianTu/Images/27849736-d453-48b1-9177-3f24a938f497.jpg differ diff --git a/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_1.jpg b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_1.jpg new file mode 100644 index 0000000..e1622f3 Binary files /dev/null and b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_2.jpg b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_2.jpg new file mode 100644 index 0000000..09fc625 Binary files /dev/null and b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_3.jpg b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_3.jpg new file mode 100644 index 0000000..8aece1d Binary files /dev/null and b/Apps/XinDianTu/Images/27cd67d06379ded91549878cb557fb59_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/27dce550-6982-426c-894d-5e5cdb5623c0.jpg b/Apps/XinDianTu/Images/27dce550-6982-426c-894d-5e5cdb5623c0.jpg new file mode 100644 index 0000000..320e75f Binary files /dev/null and b/Apps/XinDianTu/Images/27dce550-6982-426c-894d-5e5cdb5623c0.jpg differ diff --git a/Apps/XinDianTu/Images/27e4b78b-7545-4ddb-a16e-c6a5cf6cec54.jpg b/Apps/XinDianTu/Images/27e4b78b-7545-4ddb-a16e-c6a5cf6cec54.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/27e4b78b-7545-4ddb-a16e-c6a5cf6cec54.jpg differ diff --git a/Apps/XinDianTu/Images/2811694e-50fe-4402-9dce-a2c1018588c8.jpg b/Apps/XinDianTu/Images/2811694e-50fe-4402-9dce-a2c1018588c8.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/2811694e-50fe-4402-9dce-a2c1018588c8.jpg differ diff --git a/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_1.jpg b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_1.jpg new file mode 100644 index 0000000..5fbd848 Binary files /dev/null and b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_2.jpg b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_2.jpg new file mode 100644 index 0000000..25088cc Binary files /dev/null and b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_3.jpg b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_3.jpg new file mode 100644 index 0000000..c857883 Binary files /dev/null and b/Apps/XinDianTu/Images/286cfad82cf40322775281e0c65f82b5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2874b431-3faf-481a-94a0-9b8f602e5311.jpg b/Apps/XinDianTu/Images/2874b431-3faf-481a-94a0-9b8f602e5311.jpg new file mode 100644 index 0000000..0961c76 Binary files /dev/null and b/Apps/XinDianTu/Images/2874b431-3faf-481a-94a0-9b8f602e5311.jpg differ diff --git a/Apps/XinDianTu/Images/28803ab9-0743-456a-9d91-c1ca30815832.jpg b/Apps/XinDianTu/Images/28803ab9-0743-456a-9d91-c1ca30815832.jpg new file mode 100644 index 0000000..f521026 Binary files /dev/null and b/Apps/XinDianTu/Images/28803ab9-0743-456a-9d91-c1ca30815832.jpg differ diff --git a/Apps/XinDianTu/Images/28d2ca4f-fc44-4b00-bfd6-f4b68d0f9493.jpg b/Apps/XinDianTu/Images/28d2ca4f-fc44-4b00-bfd6-f4b68d0f9493.jpg new file mode 100644 index 0000000..2dcd561 Binary files /dev/null and b/Apps/XinDianTu/Images/28d2ca4f-fc44-4b00-bfd6-f4b68d0f9493.jpg differ diff --git a/Apps/XinDianTu/Images/29494739-45eb-43d9-96a9-25a66db1936f.jpg b/Apps/XinDianTu/Images/29494739-45eb-43d9-96a9-25a66db1936f.jpg new file mode 100644 index 0000000..a19dd3a Binary files /dev/null and b/Apps/XinDianTu/Images/29494739-45eb-43d9-96a9-25a66db1936f.jpg differ diff --git a/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.jpg b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.jpg new file mode 100644 index 0000000..0ad7592 Binary files /dev/null and b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.jpg differ diff --git a/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.json b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.json new file mode 100644 index 0000000..0df3bac --- /dev/null +++ b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.json @@ -0,0 +1,59 @@ +{ + "image": "29584ac0-e5c4-4f0b-aa02-5687ff64d4d9.jpg", + "width": 720, + "height": 228, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 612 + ], + "click_point": [ + 121, + 445 + ] + }, + { + "id": 2, + "rect": [ + 19, + 626, + 700, + 872 + ], + "click_point": [ + 121, + 675 + ] + }, + { + "id": 3, + "rect": [ + 19, + 881, + 700, + 1132 + ], + "click_point": [ + 121, + 931 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1146, + 700, + 1374 + ], + "click_point": [ + 121, + 1191 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_flag.jpg b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_flag.jpg new file mode 100644 index 0000000..c0fdc06 Binary files /dev/null and b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_vl.jpg b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_vl.jpg new file mode 100644 index 0000000..83130c2 Binary files /dev/null and b/Apps/XinDianTu/Images/29584ac0-e5c4-4f0b-aa02-5687ff64d4d9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.jpg b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.jpg new file mode 100644 index 0000000..cbfe373 Binary files /dev/null and b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.jpg differ diff --git a/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.json b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.json new file mode 100644 index 0000000..02e72d6 --- /dev/null +++ b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c.json @@ -0,0 +1,46 @@ +{ + "image": "296116f3-d5d6-49b3-91ec-61ef1b9c913c.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 537, + 700, + 783 + ], + "click_point": [ + 121, + 586 + ] + }, + { + "id": 2, + "rect": [ + 19, + 796, + 700, + 1044 + ], + "click_point": [ + 121, + 845 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1057, + 700, + 1303 + ], + "click_point": [ + 121, + 1106 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_flag.jpg b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_flag.jpg new file mode 100644 index 0000000..eecde06 Binary files /dev/null and b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_vl.jpg b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_vl.jpg new file mode 100644 index 0000000..40b9b29 Binary files /dev/null and b/Apps/XinDianTu/Images/296116f3-d5d6-49b3-91ec-61ef1b9c913c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_1.jpg b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_1.jpg new file mode 100644 index 0000000..035a671 Binary files /dev/null and b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_2.jpg b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_2.jpg new file mode 100644 index 0000000..eae517c Binary files /dev/null and b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_3.jpg b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_3.jpg new file mode 100644 index 0000000..cddaed8 Binary files /dev/null and b/Apps/XinDianTu/Images/29c5908ff11cd498b9bc91ff6f62042d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/29cc2603-fd26-44c3-8581-e85479ac70f1.jpg b/Apps/XinDianTu/Images/29cc2603-fd26-44c3-8581-e85479ac70f1.jpg new file mode 100644 index 0000000..11a9689 Binary files /dev/null and b/Apps/XinDianTu/Images/29cc2603-fd26-44c3-8581-e85479ac70f1.jpg differ diff --git a/Apps/XinDianTu/Images/2a2e0157-5d85-4119-a050-062c2ea96429.jpg b/Apps/XinDianTu/Images/2a2e0157-5d85-4119-a050-062c2ea96429.jpg new file mode 100644 index 0000000..1382763 Binary files /dev/null and b/Apps/XinDianTu/Images/2a2e0157-5d85-4119-a050-062c2ea96429.jpg differ diff --git a/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.jpg b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.jpg new file mode 100644 index 0000000..b1611de Binary files /dev/null and b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.jpg differ diff --git a/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.json b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.json new file mode 100644 index 0000000..b211273 --- /dev/null +++ b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5.json @@ -0,0 +1,46 @@ +{ + "image": "2a6b5ae5-7bf4-4135-968b-967dae73f9a5.jpg", + "width": 720, + "height": 292, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 564, + 700, + 813 + ], + "click_point": [ + 121, + 613 + ] + }, + { + "id": 2, + "rect": [ + 19, + 827, + 700, + 1076 + ], + "click_point": [ + 121, + 876 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1082, + 700, + 1374 + ], + "click_point": [ + 121, + 1140 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_flag.jpg b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_flag.jpg new file mode 100644 index 0000000..f3e49df Binary files /dev/null and b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_vl.jpg b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_vl.jpg new file mode 100644 index 0000000..b1bdd1c Binary files /dev/null and b/Apps/XinDianTu/Images/2a6b5ae5-7bf4-4135-968b-967dae73f9a5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.jpg b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.jpg new file mode 100644 index 0000000..4c4801b Binary files /dev/null and b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.jpg differ diff --git a/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.json b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.json new file mode 100644 index 0000000..f20db33 --- /dev/null +++ b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda.json @@ -0,0 +1,59 @@ +{ + "image": "2a7d95e2-fafd-4947-8abe-fece8e9d1dda.jpg", + "width": 720, + "height": 228, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 612 + ], + "click_point": [ + 121, + 445 + ] + }, + { + "id": 2, + "rect": [ + 19, + 626, + 700, + 872 + ], + "click_point": [ + 121, + 675 + ] + }, + { + "id": 3, + "rect": [ + 19, + 881, + 700, + 1132 + ], + "click_point": [ + 121, + 931 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1146, + 700, + 1374 + ], + "click_point": [ + 121, + 1191 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_flag.jpg b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_flag.jpg new file mode 100644 index 0000000..823e04b Binary files /dev/null and b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_vl.jpg b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_vl.jpg new file mode 100644 index 0000000..691f707 Binary files /dev/null and b/Apps/XinDianTu/Images/2a7d95e2-fafd-4947-8abe-fece8e9d1dda_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2ab216b4-f1e4-4d16-970e-056b89824fef.jpg b/Apps/XinDianTu/Images/2ab216b4-f1e4-4d16-970e-056b89824fef.jpg new file mode 100644 index 0000000..6388a07 Binary files /dev/null and b/Apps/XinDianTu/Images/2ab216b4-f1e4-4d16-970e-056b89824fef.jpg differ diff --git a/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_1.jpg b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_1.jpg new file mode 100644 index 0000000..3b60393 Binary files /dev/null and b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_2.jpg b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_2.jpg new file mode 100644 index 0000000..e6e75a3 Binary files /dev/null and b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_3.jpg b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_3.jpg new file mode 100644 index 0000000..ff00cd1 Binary files /dev/null and b/Apps/XinDianTu/Images/2ac4e662f05497d2b134339e0a185662_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_1.jpg b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_1.jpg new file mode 100644 index 0000000..81db86e Binary files /dev/null and b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_2.jpg b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_2.jpg new file mode 100644 index 0000000..14eb2a7 Binary files /dev/null and b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_3.jpg b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_3.jpg new file mode 100644 index 0000000..04812c3 Binary files /dev/null and b/Apps/XinDianTu/Images/2b099f377adcad33d219e99e6a7123bf_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_1.jpg b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_1.jpg new file mode 100644 index 0000000..76800b0 Binary files /dev/null and b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_2.jpg b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_2.jpg new file mode 100644 index 0000000..b17d113 Binary files /dev/null and b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_3.jpg b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_3.jpg new file mode 100644 index 0000000..a0d84a5 Binary files /dev/null and b/Apps/XinDianTu/Images/2b0c93cc0753965c4483ab8478f23671_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.jpg b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.jpg new file mode 100644 index 0000000..082c5d9 Binary files /dev/null and b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.jpg differ diff --git a/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.json b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.json new file mode 100644 index 0000000..26cd46f --- /dev/null +++ b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816.json @@ -0,0 +1,59 @@ +{ + "image": "2b721ea3-5e4b-493e-bc45-144527fe8816.jpg", + "width": 720, + "height": 186, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 403, + 700, + 655 + ], + "click_point": [ + 121, + 453 + ] + }, + { + "id": 2, + "rect": [ + 19, + 668, + 700, + 916 + ], + "click_point": [ + 121, + 717 + ] + }, + { + "id": 3, + "rect": [ + 19, + 929, + 700, + 1175 + ], + "click_point": [ + 121, + 978 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1188, + 700, + 1374 + ], + "click_point": [ + 121, + 1225 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_flag.jpg b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_flag.jpg new file mode 100644 index 0000000..3b48e70 Binary files /dev/null and b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_vl.jpg b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_vl.jpg new file mode 100644 index 0000000..dfcea97 Binary files /dev/null and b/Apps/XinDianTu/Images/2b721ea3-5e4b-493e-bc45-144527fe8816_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2b7c58bd-4271-430e-aaab-577d6671e90a.jpg b/Apps/XinDianTu/Images/2b7c58bd-4271-430e-aaab-577d6671e90a.jpg new file mode 100644 index 0000000..2bc27d1 Binary files /dev/null and b/Apps/XinDianTu/Images/2b7c58bd-4271-430e-aaab-577d6671e90a.jpg differ diff --git a/Apps/XinDianTu/Images/2b8d36df-b374-4ec7-bd5f-fb799b7a223f.jpg b/Apps/XinDianTu/Images/2b8d36df-b374-4ec7-bd5f-fb799b7a223f.jpg new file mode 100644 index 0000000..9e8e56c Binary files /dev/null and b/Apps/XinDianTu/Images/2b8d36df-b374-4ec7-bd5f-fb799b7a223f.jpg differ diff --git a/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_1.jpg b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_1.jpg new file mode 100644 index 0000000..0bbd5e7 Binary files /dev/null and b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_2.jpg b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_2.jpg new file mode 100644 index 0000000..e1c5a03 Binary files /dev/null and b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_3.jpg b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_3.jpg new file mode 100644 index 0000000..60f9661 Binary files /dev/null and b/Apps/XinDianTu/Images/2bc3454229b525136a5b8e156e9d8359_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2bc6b54b-c3cb-45a8-99ab-8c1d61bdd68b.jpg b/Apps/XinDianTu/Images/2bc6b54b-c3cb-45a8-99ab-8c1d61bdd68b.jpg new file mode 100644 index 0000000..6ceed5c Binary files /dev/null and b/Apps/XinDianTu/Images/2bc6b54b-c3cb-45a8-99ab-8c1d61bdd68b.jpg differ diff --git a/Apps/XinDianTu/Images/2be4a5eb-be51-45fb-af52-37d4a7dea78e.jpg b/Apps/XinDianTu/Images/2be4a5eb-be51-45fb-af52-37d4a7dea78e.jpg new file mode 100644 index 0000000..47fa682 Binary files /dev/null and b/Apps/XinDianTu/Images/2be4a5eb-be51-45fb-af52-37d4a7dea78e.jpg differ diff --git a/Apps/XinDianTu/Images/2bfcb741-400e-4965-a385-f70e09450163.jpg b/Apps/XinDianTu/Images/2bfcb741-400e-4965-a385-f70e09450163.jpg new file mode 100644 index 0000000..fa47857 Binary files /dev/null and b/Apps/XinDianTu/Images/2bfcb741-400e-4965-a385-f70e09450163.jpg differ diff --git a/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_1.jpg b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_1.jpg new file mode 100644 index 0000000..e80fcf3 Binary files /dev/null and b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_2.jpg b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_2.jpg new file mode 100644 index 0000000..cf54000 Binary files /dev/null and b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_3.jpg b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_3.jpg new file mode 100644 index 0000000..426bc55 Binary files /dev/null and b/Apps/XinDianTu/Images/2c0779252aae27fff8c40f080b5f876a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_1.jpg b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_1.jpg new file mode 100644 index 0000000..2f5f360 Binary files /dev/null and b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_2.jpg b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_2.jpg new file mode 100644 index 0000000..19e0ab9 Binary files /dev/null and b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_3.jpg b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_3.jpg new file mode 100644 index 0000000..a06390a Binary files /dev/null and b/Apps/XinDianTu/Images/2c2e09d33d0091272e58778f20e82f0a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_1.jpg b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_1.jpg new file mode 100644 index 0000000..5de4761 Binary files /dev/null and b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_2.jpg b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_2.jpg new file mode 100644 index 0000000..d2167dc Binary files /dev/null and b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_3.jpg b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_3.jpg new file mode 100644 index 0000000..bd36a2b Binary files /dev/null and b/Apps/XinDianTu/Images/2c594eb65c42fa3d83bbaf05665debe7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_1.jpg b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_1.jpg new file mode 100644 index 0000000..841c8c3 Binary files /dev/null and b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_2.jpg b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_2.jpg new file mode 100644 index 0000000..f72c46a Binary files /dev/null and b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_3.jpg b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_3.jpg new file mode 100644 index 0000000..a06558a Binary files /dev/null and b/Apps/XinDianTu/Images/2c93ab55bf45efb69ae20ff1dbb8ed2d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.jpg b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.jpg new file mode 100644 index 0000000..49cbd60 Binary files /dev/null and b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.jpg differ diff --git a/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.json b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.json new file mode 100644 index 0000000..811e94e --- /dev/null +++ b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731.json @@ -0,0 +1,46 @@ +{ + "image": "2cc88195-457f-4d80-ad87-863905e75731.jpg", + "width": 720, + "height": 170, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 647 + ], + "click_point": [ + 121, + 452 + ] + }, + { + "id": 2, + "rect": [ + 19, + 656, + 700, + 902 + ], + "click_point": [ + 121, + 705 + ] + }, + { + "id": 3, + "rect": [ + 19, + 916, + 700, + 1190 + ], + "click_point": [ + 121, + 970 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_flag.jpg b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_flag.jpg new file mode 100644 index 0000000..53d80ab Binary files /dev/null and b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_vl.jpg b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_vl.jpg new file mode 100644 index 0000000..097b77f Binary files /dev/null and b/Apps/XinDianTu/Images/2cc88195-457f-4d80-ad87-863905e75731_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5.jpg b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5.jpg new file mode 100644 index 0000000..798c1b6 Binary files /dev/null and b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5.jpg differ diff --git a/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_flag.jpg b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_flag.jpg new file mode 100644 index 0000000..c07d5a8 Binary files /dev/null and b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_vl.jpg b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_vl.jpg new file mode 100644 index 0000000..e2ceb93 Binary files /dev/null and b/Apps/XinDianTu/Images/2d1f7382-45a5-483e-be60-bf65d96a53c5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2d6690e0-0edf-4d6c-b250-f61d028fcc20.jpg b/Apps/XinDianTu/Images/2d6690e0-0edf-4d6c-b250-f61d028fcc20.jpg new file mode 100644 index 0000000..03ccf14 Binary files /dev/null and b/Apps/XinDianTu/Images/2d6690e0-0edf-4d6c-b250-f61d028fcc20.jpg differ diff --git a/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.jpg b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.jpg new file mode 100644 index 0000000..3312ee9 Binary files /dev/null and b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.jpg differ diff --git a/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.json b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.json new file mode 100644 index 0000000..c2dba1c --- /dev/null +++ b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7.json @@ -0,0 +1,46 @@ +{ + "image": "2d6fac22-8666-411c-9c6e-5d2cc60e04a7.jpg", + "width": 720, + "height": 160, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 434, + 700, + 680 + ], + "click_point": [ + 121, + 483 + ] + }, + { + "id": 2, + "rect": [ + 19, + 689, + 700, + 940 + ], + "click_point": [ + 121, + 739 + ] + }, + { + "id": 3, + "rect": [ + 19, + 954, + 700, + 1200 + ], + "click_point": [ + 121, + 1003 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_flag.jpg b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_flag.jpg new file mode 100644 index 0000000..a27ea4d Binary files /dev/null and b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_vl.jpg b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_vl.jpg new file mode 100644 index 0000000..e702335 Binary files /dev/null and b/Apps/XinDianTu/Images/2d6fac22-8666-411c-9c6e-5d2cc60e04a7_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.jpg b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.jpg new file mode 100644 index 0000000..c3e32f3 Binary files /dev/null and b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.jpg differ diff --git a/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.json b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.json new file mode 100644 index 0000000..59f0e9e --- /dev/null +++ b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.json @@ -0,0 +1,59 @@ +{ + "image": "2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515.jpg", + "width": 720, + "height": 195, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 620 + ], + "click_point": [ + 121, + 447 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 877 + ], + "click_point": [ + 121, + 677 + ] + }, + { + "id": 3, + "rect": [ + 19, + 890, + 700, + 1165 + ], + "click_point": [ + 121, + 945 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1179, + 700, + 1374 + ], + "click_point": [ + 121, + 1218 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_flag.jpg b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_flag.jpg new file mode 100644 index 0000000..59599ce Binary files /dev/null and b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_vl.jpg b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_vl.jpg new file mode 100644 index 0000000..b2fc966 Binary files /dev/null and b/Apps/XinDianTu/Images/2dc1fd3d-dae3-4fd7-b37f-4a40f4f96515_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_1.jpg b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_1.jpg new file mode 100644 index 0000000..1eef130 Binary files /dev/null and b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_2.jpg b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_2.jpg new file mode 100644 index 0000000..3f60b47 Binary files /dev/null and b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_3.jpg b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_3.jpg new file mode 100644 index 0000000..71f9976 Binary files /dev/null and b/Apps/XinDianTu/Images/2dee20791a6e13d398cb5750e115e25a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.jpg b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.jpg new file mode 100644 index 0000000..9d97b1a Binary files /dev/null and b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.jpg differ diff --git a/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.json b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.json new file mode 100644 index 0000000..6c34d5a --- /dev/null +++ b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691.json @@ -0,0 +1,59 @@ +{ + "image": "2e10a0cc-e45b-49d8-8ea7-bea771a02691.jpg", + "width": 720, + "height": 260, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 580 + ], + "click_point": [ + 121, + 439 + ] + }, + { + "id": 2, + "rect": [ + 19, + 594, + 700, + 840 + ], + "click_point": [ + 121, + 643 + ] + }, + { + "id": 3, + "rect": [ + 19, + 849, + 700, + 1100 + ], + "click_point": [ + 121, + 899 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1114, + 700, + 1374 + ], + "click_point": [ + 121, + 1166 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_flag.jpg b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_flag.jpg new file mode 100644 index 0000000..0c99123 Binary files /dev/null and b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_vl.jpg b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_vl.jpg new file mode 100644 index 0000000..2782563 Binary files /dev/null and b/Apps/XinDianTu/Images/2e10a0cc-e45b-49d8-8ea7-bea771a02691_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2e23e43d-becb-4802-9d47-6493ace95c8e.jpg b/Apps/XinDianTu/Images/2e23e43d-becb-4802-9d47-6493ace95c8e.jpg new file mode 100644 index 0000000..744b3ff Binary files /dev/null and b/Apps/XinDianTu/Images/2e23e43d-becb-4802-9d47-6493ace95c8e.jpg differ diff --git a/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_1.jpg b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_1.jpg new file mode 100644 index 0000000..d28eeeb Binary files /dev/null and b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_2.jpg b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_2.jpg new file mode 100644 index 0000000..023473e Binary files /dev/null and b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_3.jpg b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_3.jpg new file mode 100644 index 0000000..db95400 Binary files /dev/null and b/Apps/XinDianTu/Images/2e55ffa8542c55ad2e43e0f6eb15bbb7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.jpg b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.jpg new file mode 100644 index 0000000..2dca735 Binary files /dev/null and b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.jpg differ diff --git a/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.json b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.json new file mode 100644 index 0000000..8ab6e19 --- /dev/null +++ b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200.json @@ -0,0 +1,46 @@ +{ + "image": "2ea1e346-95ca-410e-9452-8da33a14e200.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 572, + 700, + 821 + ], + "click_point": [ + 121, + 621 + ] + }, + { + "id": 2, + "rect": [ + 19, + 835, + 700, + 1084 + ], + "click_point": [ + 121, + 884 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1092, + 700, + 1341 + ], + "click_point": [ + 121, + 1141 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_flag.jpg b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_flag.jpg new file mode 100644 index 0000000..5a2cd08 Binary files /dev/null and b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_vl.jpg b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_vl.jpg new file mode 100644 index 0000000..e5643d7 Binary files /dev/null and b/Apps/XinDianTu/Images/2ea1e346-95ca-410e-9452-8da33a14e200_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_1.jpg b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_1.jpg new file mode 100644 index 0000000..7f23c69 Binary files /dev/null and b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_2.jpg b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_2.jpg new file mode 100644 index 0000000..2802dd7 Binary files /dev/null and b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_3.jpg b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_3.jpg new file mode 100644 index 0000000..7856ef1 Binary files /dev/null and b/Apps/XinDianTu/Images/2ee94c6a513746db707b4ab713736c5d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2f3a9346-a307-4c7c-ae0a-8e8af6aa94bc.jpg b/Apps/XinDianTu/Images/2f3a9346-a307-4c7c-ae0a-8e8af6aa94bc.jpg new file mode 100644 index 0000000..70f31fa Binary files /dev/null and b/Apps/XinDianTu/Images/2f3a9346-a307-4c7c-ae0a-8e8af6aa94bc.jpg differ diff --git a/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a.jpg b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a.jpg new file mode 100644 index 0000000..2c9acc7 Binary files /dev/null and b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a.jpg differ diff --git a/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_flag.jpg b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_flag.jpg new file mode 100644 index 0000000..f3fb3ec Binary files /dev/null and b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_vl.jpg b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_vl.jpg new file mode 100644 index 0000000..d2c5d7c Binary files /dev/null and b/Apps/XinDianTu/Images/2f4311e9-7958-4c76-81c5-c7f4ffc2d25a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2f4411b5-63c0-4a19-af0e-0f8cdb8f7358.jpg b/Apps/XinDianTu/Images/2f4411b5-63c0-4a19-af0e-0f8cdb8f7358.jpg new file mode 100644 index 0000000..b065fa2 Binary files /dev/null and b/Apps/XinDianTu/Images/2f4411b5-63c0-4a19-af0e-0f8cdb8f7358.jpg differ diff --git a/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.jpg b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.jpg new file mode 100644 index 0000000..928f789 Binary files /dev/null and b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.jpg differ diff --git a/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.json b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.json new file mode 100644 index 0000000..0d94170 --- /dev/null +++ b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c.json @@ -0,0 +1,46 @@ +{ + "image": "2f88b71a-73e9-4c4a-9743-2ced018e728c.jpg", + "width": 720, + "height": 150, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 622 + ], + "click_point": [ + 121, + 447 + ] + }, + { + "id": 2, + "rect": [ + 19, + 636, + 700, + 950 + ], + "click_point": [ + 121, + 698 + ] + }, + { + "id": 3, + "rect": [ + 19, + 964, + 700, + 1215 + ], + "click_point": [ + 121, + 1014 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_flag.jpg b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_flag.jpg new file mode 100644 index 0000000..b130e29 Binary files /dev/null and b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_vl.jpg b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_vl.jpg new file mode 100644 index 0000000..f4a5e50 Binary files /dev/null and b/Apps/XinDianTu/Images/2f88b71a-73e9-4c4a-9743-2ced018e728c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2fb06e6c-0877-4ded-8592-97b50fe973b2.jpg b/Apps/XinDianTu/Images/2fb06e6c-0877-4ded-8592-97b50fe973b2.jpg new file mode 100644 index 0000000..431e2f4 Binary files /dev/null and b/Apps/XinDianTu/Images/2fb06e6c-0877-4ded-8592-97b50fe973b2.jpg differ diff --git a/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_1.jpg b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_1.jpg new file mode 100644 index 0000000..bcddf20 Binary files /dev/null and b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_2.jpg b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_2.jpg new file mode 100644 index 0000000..ec352bd Binary files /dev/null and b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_3.jpg b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_3.jpg new file mode 100644 index 0000000..5d362e1 Binary files /dev/null and b/Apps/XinDianTu/Images/2fc61a1de988d57a4b14d5766589a876_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_1.jpg b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_1.jpg new file mode 100644 index 0000000..5220570 Binary files /dev/null and b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_2.jpg b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_2.jpg new file mode 100644 index 0000000..c075bd4 Binary files /dev/null and b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_3.jpg b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_3.jpg new file mode 100644 index 0000000..bdb416b Binary files /dev/null and b/Apps/XinDianTu/Images/2fe3733c21b415d224a3598a8adbf8e3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8.jpg b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8.jpg new file mode 100644 index 0000000..5ffffa3 Binary files /dev/null and b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8.jpg differ diff --git a/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_flag.jpg b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_flag.jpg new file mode 100644 index 0000000..5ca0f6d Binary files /dev/null and b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_vl.jpg b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_vl.jpg new file mode 100644 index 0000000..0de5ec7 Binary files /dev/null and b/Apps/XinDianTu/Images/2fe857ff-7309-46a1-aa15-263720d4f4b8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/2ffd7b67-0e32-44cb-8f3f-bcc35ace6b04.jpg b/Apps/XinDianTu/Images/2ffd7b67-0e32-44cb-8f3f-bcc35ace6b04.jpg new file mode 100644 index 0000000..7b2fb88 Binary files /dev/null and b/Apps/XinDianTu/Images/2ffd7b67-0e32-44cb-8f3f-bcc35ace6b04.jpg differ diff --git a/Apps/XinDianTu/Images/2ffe8171-78d7-4569-b05b-80aec5ab6720.jpg b/Apps/XinDianTu/Images/2ffe8171-78d7-4569-b05b-80aec5ab6720.jpg new file mode 100644 index 0000000..45be2c1 Binary files /dev/null and b/Apps/XinDianTu/Images/2ffe8171-78d7-4569-b05b-80aec5ab6720.jpg differ diff --git a/Apps/XinDianTu/Images/300cf978-0fd5-4827-a1ac-49e579418c87.jpg b/Apps/XinDianTu/Images/300cf978-0fd5-4827-a1ac-49e579418c87.jpg new file mode 100644 index 0000000..bff04f5 Binary files /dev/null and b/Apps/XinDianTu/Images/300cf978-0fd5-4827-a1ac-49e579418c87.jpg differ diff --git a/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_1.jpg b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_1.jpg new file mode 100644 index 0000000..60b83c8 Binary files /dev/null and b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_2.jpg b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_2.jpg new file mode 100644 index 0000000..9f9fb98 Binary files /dev/null and b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_3.jpg b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_3.jpg new file mode 100644 index 0000000..8fb28c4 Binary files /dev/null and b/Apps/XinDianTu/Images/300d866c1124e8ce94a421ea5c69128e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/301c40d6-8c59-4fdc-a1c7-eac0d2a8271f.jpg b/Apps/XinDianTu/Images/301c40d6-8c59-4fdc-a1c7-eac0d2a8271f.jpg new file mode 100644 index 0000000..2d051bc Binary files /dev/null and b/Apps/XinDianTu/Images/301c40d6-8c59-4fdc-a1c7-eac0d2a8271f.jpg differ diff --git a/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_1.jpg b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_1.jpg new file mode 100644 index 0000000..20cac75 Binary files /dev/null and b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_2.jpg b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_2.jpg new file mode 100644 index 0000000..6bafaa0 Binary files /dev/null and b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_3.jpg b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_3.jpg new file mode 100644 index 0000000..ab14420 Binary files /dev/null and b/Apps/XinDianTu/Images/302a88d94c579fd88553734607c0cdcc_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5.jpg b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5.jpg new file mode 100644 index 0000000..94c00f7 Binary files /dev/null and b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5.jpg differ diff --git a/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_flag.jpg b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_flag.jpg new file mode 100644 index 0000000..805ba5c Binary files /dev/null and b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_vl.jpg b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_vl.jpg new file mode 100644 index 0000000..b5f03ed Binary files /dev/null and b/Apps/XinDianTu/Images/305dadf8-440e-42c9-b982-8a4d6c59dfa5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3069bfa5-6498-4efd-90e7-c333b538b319.jpg b/Apps/XinDianTu/Images/3069bfa5-6498-4efd-90e7-c333b538b319.jpg new file mode 100644 index 0000000..48b480b Binary files /dev/null and b/Apps/XinDianTu/Images/3069bfa5-6498-4efd-90e7-c333b538b319.jpg differ diff --git a/Apps/XinDianTu/Images/3084da95-e3af-462e-8357-d1ae35b11927.jpg b/Apps/XinDianTu/Images/3084da95-e3af-462e-8357-d1ae35b11927.jpg new file mode 100644 index 0000000..5ac9c2d Binary files /dev/null and b/Apps/XinDianTu/Images/3084da95-e3af-462e-8357-d1ae35b11927.jpg differ diff --git a/Apps/XinDianTu/Images/30b8385a-d032-4cfa-a9c5-65b2c16fae3b.jpg b/Apps/XinDianTu/Images/30b8385a-d032-4cfa-a9c5-65b2c16fae3b.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/30b8385a-d032-4cfa-a9c5-65b2c16fae3b.jpg differ diff --git a/Apps/XinDianTu/Images/30e4f92e-488e-4bbf-909f-efa6ad653a40.jpg b/Apps/XinDianTu/Images/30e4f92e-488e-4bbf-909f-efa6ad653a40.jpg new file mode 100644 index 0000000..739aee0 Binary files /dev/null and b/Apps/XinDianTu/Images/30e4f92e-488e-4bbf-909f-efa6ad653a40.jpg differ diff --git a/Apps/XinDianTu/Images/310f731c-c44e-446b-a5ef-53c3e0101055.jpg b/Apps/XinDianTu/Images/310f731c-c44e-446b-a5ef-53c3e0101055.jpg new file mode 100644 index 0000000..a087bda Binary files /dev/null and b/Apps/XinDianTu/Images/310f731c-c44e-446b-a5ef-53c3e0101055.jpg differ diff --git a/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.jpg b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.jpg new file mode 100644 index 0000000..34eea98 Binary files /dev/null and b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.jpg differ diff --git a/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.json b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.json new file mode 100644 index 0000000..986f6b4 --- /dev/null +++ b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107.json @@ -0,0 +1,59 @@ +{ + "image": "312075ce-f823-4e52-8e39-dcb36405e107.jpg", + "width": 720, + "height": 210, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 607 + ], + "click_point": [ + 121, + 444 + ] + }, + { + "id": 2, + "rect": [ + 19, + 616, + 700, + 862 + ], + "click_point": [ + 121, + 665 + ] + }, + { + "id": 3, + "rect": [ + 19, + 876, + 700, + 1150 + ], + "click_point": [ + 121, + 930 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1164, + 700, + 1374 + ], + "click_point": [ + 121, + 1206 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_flag.jpg b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_flag.jpg new file mode 100644 index 0000000..27b2f27 Binary files /dev/null and b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_flag.jpg differ diff --git a/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_vl.jpg b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_vl.jpg new file mode 100644 index 0000000..bd88f55 Binary files /dev/null and b/Apps/XinDianTu/Images/312075ce-f823-4e52-8e39-dcb36405e107_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_1.jpg b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_1.jpg new file mode 100644 index 0000000..503df6d Binary files /dev/null and b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_2.jpg b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_2.jpg new file mode 100644 index 0000000..c58b787 Binary files /dev/null and b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_3.jpg b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_3.jpg new file mode 100644 index 0000000..de6cbc3 Binary files /dev/null and b/Apps/XinDianTu/Images/3141a2ef40757d810bed6e5857f147d9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.jpg b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.jpg new file mode 100644 index 0000000..fb5a240 Binary files /dev/null and b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.jpg differ diff --git a/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.json b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.json new file mode 100644 index 0000000..3c1a700 --- /dev/null +++ b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421.json @@ -0,0 +1,59 @@ +{ + "image": "318c0c1b-b109-465e-aa1f-0aab45231421.jpg", + "width": 720, + "height": 216, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 596 + ], + "click_point": [ + 121, + 442 + ] + }, + { + "id": 2, + "rect": [ + 19, + 610, + 700, + 884 + ], + "click_point": [ + 121, + 664 + ] + }, + { + "id": 3, + "rect": [ + 19, + 898, + 700, + 1144 + ], + "click_point": [ + 121, + 947 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1158, + 700, + 1374 + ], + "click_point": [ + 121, + 1201 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_flag.jpg b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_flag.jpg new file mode 100644 index 0000000..f1a8e9d Binary files /dev/null and b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_flag.jpg differ diff --git a/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_vl.jpg b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_vl.jpg new file mode 100644 index 0000000..b56e533 Binary files /dev/null and b/Apps/XinDianTu/Images/318c0c1b-b109-465e-aa1f-0aab45231421_vl.jpg differ diff --git a/Apps/XinDianTu/Images/31ada685-6fba-4d7c-b894-434026bb37d4.jpg b/Apps/XinDianTu/Images/31ada685-6fba-4d7c-b894-434026bb37d4.jpg new file mode 100644 index 0000000..60c42a7 Binary files /dev/null and b/Apps/XinDianTu/Images/31ada685-6fba-4d7c-b894-434026bb37d4.jpg differ diff --git a/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_1.jpg b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_1.jpg new file mode 100644 index 0000000..fe2a5c3 Binary files /dev/null and b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_2.jpg b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_2.jpg new file mode 100644 index 0000000..6a68867 Binary files /dev/null and b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_3.jpg b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_3.jpg new file mode 100644 index 0000000..ae48002 Binary files /dev/null and b/Apps/XinDianTu/Images/31f2659eec061c2361f31bd1513019e8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/32781951-4c03-4db4-a801-791d25d0c3d7.jpg b/Apps/XinDianTu/Images/32781951-4c03-4db4-a801-791d25d0c3d7.jpg new file mode 100644 index 0000000..66a0a50 Binary files /dev/null and b/Apps/XinDianTu/Images/32781951-4c03-4db4-a801-791d25d0c3d7.jpg differ diff --git a/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_1.jpg b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_1.jpg new file mode 100644 index 0000000..fd24de1 Binary files /dev/null and b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_2.jpg b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_2.jpg new file mode 100644 index 0000000..cdff85f Binary files /dev/null and b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_3.jpg b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_3.jpg new file mode 100644 index 0000000..79398d9 Binary files /dev/null and b/Apps/XinDianTu/Images/32b629c84d7b5a0d4d1aaa3b5f646cc2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/32d5b959-6668-40f1-9015-b9f4ed21b741.jpg b/Apps/XinDianTu/Images/32d5b959-6668-40f1-9015-b9f4ed21b741.jpg new file mode 100644 index 0000000..4a6d105 Binary files /dev/null and b/Apps/XinDianTu/Images/32d5b959-6668-40f1-9015-b9f4ed21b741.jpg differ diff --git a/Apps/XinDianTu/Images/33476cf8-d9e3-4685-852b-38b587e701c1.jpg b/Apps/XinDianTu/Images/33476cf8-d9e3-4685-852b-38b587e701c1.jpg new file mode 100644 index 0000000..1e604f5 Binary files /dev/null and b/Apps/XinDianTu/Images/33476cf8-d9e3-4685-852b-38b587e701c1.jpg differ diff --git a/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.jpg b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.jpg new file mode 100644 index 0000000..3a45c6b Binary files /dev/null and b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.jpg differ diff --git a/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.json b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.json new file mode 100644 index 0000000..acaa84e --- /dev/null +++ b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e.json @@ -0,0 +1,46 @@ +{ + "image": "33542fa5-77a4-4c8e-91e5-b12e1722728e.jpg", + "width": 720, + "height": 241, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 481, + 700, + 727 + ], + "click_point": [ + 121, + 530 + ] + }, + { + "id": 2, + "rect": [ + 19, + 740, + 700, + 1015 + ], + "click_point": [ + 121, + 795 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1028, + 700, + 1269 + ], + "click_point": [ + 121, + 1076 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_flag.jpg b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_flag.jpg new file mode 100644 index 0000000..938ae52 Binary files /dev/null and b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_vl.jpg b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_vl.jpg new file mode 100644 index 0000000..595cb9c Binary files /dev/null and b/Apps/XinDianTu/Images/33542fa5-77a4-4c8e-91e5-b12e1722728e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/33ad73eb-2f4f-48d1-9315-e54f71b5737b.jpg b/Apps/XinDianTu/Images/33ad73eb-2f4f-48d1-9315-e54f71b5737b.jpg new file mode 100644 index 0000000..4a5ef20 Binary files /dev/null and b/Apps/XinDianTu/Images/33ad73eb-2f4f-48d1-9315-e54f71b5737b.jpg differ diff --git a/Apps/XinDianTu/Images/3415debd-ccca-4ba8-9ce0-837606820db7.jpg b/Apps/XinDianTu/Images/3415debd-ccca-4ba8-9ce0-837606820db7.jpg new file mode 100644 index 0000000..b0301b8 Binary files /dev/null and b/Apps/XinDianTu/Images/3415debd-ccca-4ba8-9ce0-837606820db7.jpg differ diff --git a/Apps/XinDianTu/Images/348dc972-e6ec-4f24-a4c2-5b23c5636418.jpg b/Apps/XinDianTu/Images/348dc972-e6ec-4f24-a4c2-5b23c5636418.jpg new file mode 100644 index 0000000..30b4450 Binary files /dev/null and b/Apps/XinDianTu/Images/348dc972-e6ec-4f24-a4c2-5b23c5636418.jpg differ diff --git a/Apps/XinDianTu/Images/349a7215-25c8-41d0-91fd-bf818cc81d26.jpg b/Apps/XinDianTu/Images/349a7215-25c8-41d0-91fd-bf818cc81d26.jpg new file mode 100644 index 0000000..661b46f Binary files /dev/null and b/Apps/XinDianTu/Images/349a7215-25c8-41d0-91fd-bf818cc81d26.jpg differ diff --git a/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.jpg b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.jpg new file mode 100644 index 0000000..ff9b0c3 Binary files /dev/null and b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.jpg differ diff --git a/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.json b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.json new file mode 100644 index 0000000..7184c8a --- /dev/null +++ b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5.json @@ -0,0 +1,59 @@ +{ + "image": "34b7570d-88ca-4b27-9732-340ab08ad1b5.jpg", + "width": 720, + "height": 226, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 615 + ], + "click_point": [ + 121, + 446 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 876 + ], + "click_point": [ + 121, + 677 + ] + }, + { + "id": 3, + "rect": [ + 19, + 889, + 700, + 1135 + ], + "click_point": [ + 121, + 938 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1148, + 700, + 1374 + ], + "click_point": [ + 121, + 1193 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_flag.jpg b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_flag.jpg new file mode 100644 index 0000000..92312d6 Binary files /dev/null and b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_vl.jpg b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_vl.jpg new file mode 100644 index 0000000..5cbbbcf Binary files /dev/null and b/Apps/XinDianTu/Images/34b7570d-88ca-4b27-9732-340ab08ad1b5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.jpg b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.jpg new file mode 100644 index 0000000..e447585 Binary files /dev/null and b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.jpg differ diff --git a/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.json b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.json new file mode 100644 index 0000000..3778227 --- /dev/null +++ b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc.json @@ -0,0 +1,46 @@ +{ + "image": "3544ba39-533e-40f0-a808-edd7643e78fc.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 563, + 700, + 812 + ], + "click_point": [ + 121, + 612 + ] + }, + { + "id": 2, + "rect": [ + 19, + 820, + 700, + 1069 + ], + "click_point": [ + 121, + 869 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1083, + 700, + 1332 + ], + "click_point": [ + 121, + 1132 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_flag.jpg b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_flag.jpg new file mode 100644 index 0000000..209bdf6 Binary files /dev/null and b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_vl.jpg b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_vl.jpg new file mode 100644 index 0000000..e77620b Binary files /dev/null and b/Apps/XinDianTu/Images/3544ba39-533e-40f0-a808-edd7643e78fc_vl.jpg differ diff --git a/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.jpg b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.jpg new file mode 100644 index 0000000..a1f3191 Binary files /dev/null and b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.jpg differ diff --git a/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.json b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.json new file mode 100644 index 0000000..da75737 --- /dev/null +++ b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76.json @@ -0,0 +1,46 @@ +{ + "image": "35a7cd50-54a9-40d4-8419-013eda396c76.jpg", + "width": 720, + "height": 101, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 505, + 700, + 756 + ], + "click_point": [ + 121, + 555 + ] + }, + { + "id": 2, + "rect": [ + 19, + 770, + 700, + 1056 + ], + "click_point": [ + 121, + 827 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1065, + 700, + 1264 + ], + "click_point": [ + 121, + 1104 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_flag.jpg b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_flag.jpg new file mode 100644 index 0000000..68a77a6 Binary files /dev/null and b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_flag.jpg differ diff --git a/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_vl.jpg b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_vl.jpg new file mode 100644 index 0000000..98e944b Binary files /dev/null and b/Apps/XinDianTu/Images/35a7cd50-54a9-40d4-8419-013eda396c76_vl.jpg differ diff --git a/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_1.jpg b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_1.jpg new file mode 100644 index 0000000..7afebb5 Binary files /dev/null and b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_2.jpg b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_2.jpg new file mode 100644 index 0000000..20aec8c Binary files /dev/null and b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_3.jpg b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_3.jpg new file mode 100644 index 0000000..7cb3c03 Binary files /dev/null and b/Apps/XinDianTu/Images/35fe44301197b5bf8a54ecb54c688481_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595.jpg b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595.jpg new file mode 100644 index 0000000..a3d4fe7 Binary files /dev/null and b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595.jpg differ diff --git a/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_flag.jpg b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_flag.jpg new file mode 100644 index 0000000..81f5e77 Binary files /dev/null and b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_flag.jpg differ diff --git a/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_vl.jpg b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_vl.jpg new file mode 100644 index 0000000..9fd8321 Binary files /dev/null and b/Apps/XinDianTu/Images/36048be3-a3f2-4084-8ba4-08e4dff07595_vl.jpg differ diff --git a/Apps/XinDianTu/Images/365dba7b-3226-4b0e-9f87-1f858c16f962.jpg b/Apps/XinDianTu/Images/365dba7b-3226-4b0e-9f87-1f858c16f962.jpg new file mode 100644 index 0000000..e1cd19c Binary files /dev/null and b/Apps/XinDianTu/Images/365dba7b-3226-4b0e-9f87-1f858c16f962.jpg differ diff --git a/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71.jpg b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71.jpg new file mode 100644 index 0000000..287c569 Binary files /dev/null and b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71.jpg differ diff --git a/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_flag.jpg b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_flag.jpg new file mode 100644 index 0000000..d932e8d Binary files /dev/null and b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_flag.jpg differ diff --git a/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_vl.jpg b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_vl.jpg new file mode 100644 index 0000000..58df70b Binary files /dev/null and b/Apps/XinDianTu/Images/36c4f387-7488-4e80-9e80-3fe2610fde71_vl.jpg differ diff --git a/Apps/XinDianTu/Images/36fd34d8-ae12-4467-950a-58dc1d0a1e70.jpg b/Apps/XinDianTu/Images/36fd34d8-ae12-4467-950a-58dc1d0a1e70.jpg new file mode 100644 index 0000000..ba556c1 Binary files /dev/null and b/Apps/XinDianTu/Images/36fd34d8-ae12-4467-950a-58dc1d0a1e70.jpg differ diff --git a/Apps/XinDianTu/Images/36ff278d-b85c-40e2-85ae-3119e75345b2.jpg b/Apps/XinDianTu/Images/36ff278d-b85c-40e2-85ae-3119e75345b2.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/36ff278d-b85c-40e2-85ae-3119e75345b2.jpg differ diff --git a/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.jpg b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.jpg new file mode 100644 index 0000000..bab5389 Binary files /dev/null and b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.jpg differ diff --git a/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.json b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.json new file mode 100644 index 0000000..c548962 --- /dev/null +++ b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524.json @@ -0,0 +1,46 @@ +{ + "image": "370037fe-360b-4a7d-8440-c2d6d7d61524.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 570, + 700, + 816 + ], + "click_point": [ + 121, + 619 + ] + }, + { + "id": 2, + "rect": [ + 19, + 825, + 700, + 1076 + ], + "click_point": [ + 121, + 875 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1090, + 700, + 1336 + ], + "click_point": [ + 121, + 1139 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_flag.jpg b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_flag.jpg new file mode 100644 index 0000000..6a4c4cd Binary files /dev/null and b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_flag.jpg differ diff --git a/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_vl.jpg b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_vl.jpg new file mode 100644 index 0000000..658d78b Binary files /dev/null and b/Apps/XinDianTu/Images/370037fe-360b-4a7d-8440-c2d6d7d61524_vl.jpg differ diff --git a/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_1.jpg b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_1.jpg new file mode 100644 index 0000000..28c0703 Binary files /dev/null and b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_2.jpg b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_2.jpg new file mode 100644 index 0000000..9194231 Binary files /dev/null and b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_3.jpg b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_3.jpg new file mode 100644 index 0000000..d630cd6 Binary files /dev/null and b/Apps/XinDianTu/Images/371ebbd47ac3d1f5f647de65cf8c5f68_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_1.jpg b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_1.jpg new file mode 100644 index 0000000..aaf6cf4 Binary files /dev/null and b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_2.jpg b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_2.jpg new file mode 100644 index 0000000..f2ef9b5 Binary files /dev/null and b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_3.jpg b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_3.jpg new file mode 100644 index 0000000..77f8b15 Binary files /dev/null and b/Apps/XinDianTu/Images/372a872c213d229da28a9d8c298739b6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.jpg b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.jpg new file mode 100644 index 0000000..e4fba0c Binary files /dev/null and b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.jpg differ diff --git a/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.json b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.json new file mode 100644 index 0000000..6ab59a4 --- /dev/null +++ b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44.json @@ -0,0 +1,46 @@ +{ + "image": "3752e811-5ffb-4b28-8a7f-fa2195570d44.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 420, + 700, + 734 + ], + "click_point": [ + 121, + 482 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_flag.jpg b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_flag.jpg new file mode 100644 index 0000000..07d223f Binary files /dev/null and b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_vl.jpg b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_vl.jpg new file mode 100644 index 0000000..9dc977b Binary files /dev/null and b/Apps/XinDianTu/Images/3752e811-5ffb-4b28-8a7f-fa2195570d44_vl.jpg differ diff --git a/Apps/XinDianTu/Images/37950833-2cd4-4dd8-8af7-5cd1ca1c7e6b.jpg b/Apps/XinDianTu/Images/37950833-2cd4-4dd8-8af7-5cd1ca1c7e6b.jpg new file mode 100644 index 0000000..1f5634a Binary files /dev/null and b/Apps/XinDianTu/Images/37950833-2cd4-4dd8-8af7-5cd1ca1c7e6b.jpg differ diff --git a/Apps/XinDianTu/Images/3801be6a-bf76-456d-9b16-02a7c4ce9959.jpg b/Apps/XinDianTu/Images/3801be6a-bf76-456d-9b16-02a7c4ce9959.jpg new file mode 100644 index 0000000..ce0be01 Binary files /dev/null and b/Apps/XinDianTu/Images/3801be6a-bf76-456d-9b16-02a7c4ce9959.jpg differ diff --git a/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_1.jpg b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_1.jpg new file mode 100644 index 0000000..82c3b1e Binary files /dev/null and b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_2.jpg b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_2.jpg new file mode 100644 index 0000000..edf84b0 Binary files /dev/null and b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_3.jpg b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_3.jpg new file mode 100644 index 0000000..a445b5f Binary files /dev/null and b/Apps/XinDianTu/Images/3819253d16da8a9fba1bd4ee8fca8f60_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3887d639-dc4c-4017-9eed-330aaf972c06.jpg b/Apps/XinDianTu/Images/3887d639-dc4c-4017-9eed-330aaf972c06.jpg new file mode 100644 index 0000000..9b499d6 Binary files /dev/null and b/Apps/XinDianTu/Images/3887d639-dc4c-4017-9eed-330aaf972c06.jpg differ diff --git a/Apps/XinDianTu/Images/3900d4d9-f1cf-435c-88c8-69f9190ce3e7.jpg b/Apps/XinDianTu/Images/3900d4d9-f1cf-435c-88c8-69f9190ce3e7.jpg new file mode 100644 index 0000000..4c95239 Binary files /dev/null and b/Apps/XinDianTu/Images/3900d4d9-f1cf-435c-88c8-69f9190ce3e7.jpg differ diff --git a/Apps/XinDianTu/Images/3961e2f3-ac95-4936-b757-a6651f97b896.jpg b/Apps/XinDianTu/Images/3961e2f3-ac95-4936-b757-a6651f97b896.jpg new file mode 100644 index 0000000..10f8498 Binary files /dev/null and b/Apps/XinDianTu/Images/3961e2f3-ac95-4936-b757-a6651f97b896.jpg differ diff --git a/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_1.jpg b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_1.jpg new file mode 100644 index 0000000..36359b6 Binary files /dev/null and b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_2.jpg b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_2.jpg new file mode 100644 index 0000000..4baf39b Binary files /dev/null and b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_3.jpg b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_3.jpg new file mode 100644 index 0000000..22e9594 Binary files /dev/null and b/Apps/XinDianTu/Images/39d86c5ca5f561e2cb728db522fce3f0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.jpg b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.jpg new file mode 100644 index 0000000..997e766 Binary files /dev/null and b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.jpg differ diff --git a/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.json b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.json new file mode 100644 index 0000000..55bad35 --- /dev/null +++ b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.json @@ -0,0 +1,59 @@ +{ + "image": "39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec.jpg", + "width": 720, + "height": 194, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 403, + 700, + 647 + ], + "click_point": [ + 121, + 451 + ] + }, + { + "id": 2, + "rect": [ + 19, + 660, + 700, + 908 + ], + "click_point": [ + 121, + 709 + ] + }, + { + "id": 3, + "rect": [ + 19, + 921, + 700, + 1167 + ], + "click_point": [ + 121, + 970 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1180, + 700, + 1374 + ], + "click_point": [ + 121, + 1218 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_flag.jpg b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_flag.jpg new file mode 100644 index 0000000..8c1cb8f Binary files /dev/null and b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_flag.jpg differ diff --git a/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_vl.jpg b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_vl.jpg new file mode 100644 index 0000000..2513b1d Binary files /dev/null and b/Apps/XinDianTu/Images/39faa7ba-c3ff-4ea9-b15d-8a3f02e62dec_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3a07d9bc-0962-4cb6-8f14-32fe00ecaa78.jpg b/Apps/XinDianTu/Images/3a07d9bc-0962-4cb6-8f14-32fe00ecaa78.jpg new file mode 100644 index 0000000..faedb09 Binary files /dev/null and b/Apps/XinDianTu/Images/3a07d9bc-0962-4cb6-8f14-32fe00ecaa78.jpg differ diff --git a/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_1.jpg b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_1.jpg new file mode 100644 index 0000000..1e1bc2e Binary files /dev/null and b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_2.jpg b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_2.jpg new file mode 100644 index 0000000..702ec9e Binary files /dev/null and b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_3.jpg b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_3.jpg new file mode 100644 index 0000000..151962c Binary files /dev/null and b/Apps/XinDianTu/Images/3a27c15881b8b8ae8fd14ea6c8813311_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_1.jpg b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_1.jpg new file mode 100644 index 0000000..f3dea37 Binary files /dev/null and b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_2.jpg b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_2.jpg new file mode 100644 index 0000000..24fce26 Binary files /dev/null and b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_3.jpg b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_3.jpg new file mode 100644 index 0000000..1c86a1d Binary files /dev/null and b/Apps/XinDianTu/Images/3a2f7d16ce4a3bfd9e64cb06feab0c00_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.jpg b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.jpg new file mode 100644 index 0000000..2699bb3 Binary files /dev/null and b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.jpg differ diff --git a/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.json b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.json new file mode 100644 index 0000000..5bd1f98 --- /dev/null +++ b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b.json @@ -0,0 +1,46 @@ +{ + "image": "3a7b18f0-7999-487e-93f9-4812cb01c39b.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 444, + 700, + 733 + ], + "click_point": [ + 121, + 501 + ] + }, + { + "id": 2, + "rect": [ + 19, + 746, + 700, + 1021 + ], + "click_point": [ + 121, + 801 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1035, + 700, + 1284 + ], + "click_point": [ + 121, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_flag.jpg b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_flag.jpg new file mode 100644 index 0000000..0432f05 Binary files /dev/null and b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_vl.jpg b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_vl.jpg new file mode 100644 index 0000000..4629674 Binary files /dev/null and b/Apps/XinDianTu/Images/3a7b18f0-7999-487e-93f9-4812cb01c39b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3a8efa14-0642-4bc4-a5e0-d1f711d2110b.jpg b/Apps/XinDianTu/Images/3a8efa14-0642-4bc4-a5e0-d1f711d2110b.jpg new file mode 100644 index 0000000..b6a0ee9 Binary files /dev/null and b/Apps/XinDianTu/Images/3a8efa14-0642-4bc4-a5e0-d1f711d2110b.jpg differ diff --git a/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.jpg b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.jpg new file mode 100644 index 0000000..39a53f5 Binary files /dev/null and b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.jpg differ diff --git a/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.json b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.json new file mode 100644 index 0000000..4a4ba26 --- /dev/null +++ b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.json @@ -0,0 +1,46 @@ +{ + "image": "3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0.jpg", + "width": 720, + "height": 300, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 554, + 700, + 800 + ], + "click_point": [ + 121, + 603 + ] + }, + { + "id": 2, + "rect": [ + 19, + 809, + 700, + 1060 + ], + "click_point": [ + 121, + 859 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1074, + 700, + 1374 + ], + "click_point": [ + 121, + 1134 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_flag.jpg b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_flag.jpg new file mode 100644 index 0000000..dea3245 Binary files /dev/null and b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_vl.jpg b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_vl.jpg new file mode 100644 index 0000000..937c22e Binary files /dev/null and b/Apps/XinDianTu/Images/3ae9284e-5c0d-4d13-bf00-49bf6d19fcb0_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3b1f812d-c5e8-4f97-9f8f-aa5c54fdf540.jpg b/Apps/XinDianTu/Images/3b1f812d-c5e8-4f97-9f8f-aa5c54fdf540.jpg new file mode 100644 index 0000000..191f94f Binary files /dev/null and b/Apps/XinDianTu/Images/3b1f812d-c5e8-4f97-9f8f-aa5c54fdf540.jpg differ diff --git a/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_1.jpg b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_1.jpg new file mode 100644 index 0000000..be6b243 Binary files /dev/null and b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_2.jpg b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_2.jpg new file mode 100644 index 0000000..ab6a02d Binary files /dev/null and b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_3.jpg b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_3.jpg new file mode 100644 index 0000000..19d1c97 Binary files /dev/null and b/Apps/XinDianTu/Images/3b3736efdb165309b51905d6b23168b6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3b702ad0-edd0-49b3-b97a-f5681532d5a9.jpg b/Apps/XinDianTu/Images/3b702ad0-edd0-49b3-b97a-f5681532d5a9.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/3b702ad0-edd0-49b3-b97a-f5681532d5a9.jpg differ diff --git a/Apps/XinDianTu/Images/3b8f37bd-943a-4133-83a4-a2e802514cd6.jpg b/Apps/XinDianTu/Images/3b8f37bd-943a-4133-83a4-a2e802514cd6.jpg new file mode 100644 index 0000000..bc2035a Binary files /dev/null and b/Apps/XinDianTu/Images/3b8f37bd-943a-4133-83a4-a2e802514cd6.jpg differ diff --git a/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628.jpg b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628.jpg new file mode 100644 index 0000000..19a0f85 Binary files /dev/null and b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628.jpg differ diff --git a/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_flag.jpg b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_flag.jpg new file mode 100644 index 0000000..36e710c Binary files /dev/null and b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_vl.jpg b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_vl.jpg new file mode 100644 index 0000000..b373a6a Binary files /dev/null and b/Apps/XinDianTu/Images/3b975610-8d11-446d-96ac-60e546a60628_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_1.jpg b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_1.jpg new file mode 100644 index 0000000..eb764c6 Binary files /dev/null and b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_2.jpg b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_2.jpg new file mode 100644 index 0000000..bda4cca Binary files /dev/null and b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_3.jpg b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_3.jpg new file mode 100644 index 0000000..9171709 Binary files /dev/null and b/Apps/XinDianTu/Images/3b9ef1c2e37fe3df2a3b9d578246a77c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_1.jpg b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_1.jpg new file mode 100644 index 0000000..f9e5a39 Binary files /dev/null and b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_2.jpg b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_2.jpg new file mode 100644 index 0000000..84f90aa Binary files /dev/null and b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_3.jpg b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_3.jpg new file mode 100644 index 0000000..08e1e09 Binary files /dev/null and b/Apps/XinDianTu/Images/3bc721c862950803c106a29f36570095_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9.jpg b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9.jpg new file mode 100644 index 0000000..ef0b4ba Binary files /dev/null and b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9.jpg differ diff --git a/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_flag.jpg b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_flag.jpg new file mode 100644 index 0000000..02fea09 Binary files /dev/null and b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_vl.jpg b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_vl.jpg new file mode 100644 index 0000000..e5158b6 Binary files /dev/null and b/Apps/XinDianTu/Images/3c9d515d-1480-4979-929d-527ccdbc54b9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3caeef31-6342-457f-9ca0-c4faae810ab5.jpg b/Apps/XinDianTu/Images/3caeef31-6342-457f-9ca0-c4faae810ab5.jpg new file mode 100644 index 0000000..4abcf96 Binary files /dev/null and b/Apps/XinDianTu/Images/3caeef31-6342-457f-9ca0-c4faae810ab5.jpg differ diff --git a/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_1.jpg b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_1.jpg new file mode 100644 index 0000000..51248e3 Binary files /dev/null and b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_2.jpg b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_2.jpg new file mode 100644 index 0000000..d0f41fa Binary files /dev/null and b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_3.jpg b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_3.jpg new file mode 100644 index 0000000..d249849 Binary files /dev/null and b/Apps/XinDianTu/Images/3cc33368ea4a48998b9614d11be4b685_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_1.jpg b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_1.jpg new file mode 100644 index 0000000..4b1475f Binary files /dev/null and b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_2.jpg b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_2.jpg new file mode 100644 index 0000000..e228515 Binary files /dev/null and b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_3.jpg b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_3.jpg new file mode 100644 index 0000000..d5b612f Binary files /dev/null and b/Apps/XinDianTu/Images/3d371e6cf37922d5ef28d1181e230870_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c.jpg b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c.jpg new file mode 100644 index 0000000..f85fdce Binary files /dev/null and b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c.jpg differ diff --git a/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_flag.jpg b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_flag.jpg new file mode 100644 index 0000000..d741fc7 Binary files /dev/null and b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_vl.jpg b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_vl.jpg new file mode 100644 index 0000000..df9ea8f Binary files /dev/null and b/Apps/XinDianTu/Images/3d5c172f-3ac8-4afb-a0dc-80ab62e53d5c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.jpg b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.jpg new file mode 100644 index 0000000..262a0f1 Binary files /dev/null and b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.jpg differ diff --git a/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.json b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.json new file mode 100644 index 0000000..a6bedde --- /dev/null +++ b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.json @@ -0,0 +1,33 @@ +{ + "image": "3d76ecf4-df6f-4023-8b53-ccc08e0a88bd.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_flag.jpg b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_flag.jpg new file mode 100644 index 0000000..d97863a Binary files /dev/null and b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_vl.jpg b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_vl.jpg new file mode 100644 index 0000000..083133c Binary files /dev/null and b/Apps/XinDianTu/Images/3d76ecf4-df6f-4023-8b53-ccc08e0a88bd_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_1.jpg b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_1.jpg new file mode 100644 index 0000000..ed0adf1 Binary files /dev/null and b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_2.jpg b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_2.jpg new file mode 100644 index 0000000..25b8669 Binary files /dev/null and b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_3.jpg b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_3.jpg new file mode 100644 index 0000000..732a547 Binary files /dev/null and b/Apps/XinDianTu/Images/3e1bce2fdf00c344e8fa6c8145a21352_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3e35feb3-26cf-44a7-9199-8b2b5d4c7938.jpg b/Apps/XinDianTu/Images/3e35feb3-26cf-44a7-9199-8b2b5d4c7938.jpg new file mode 100644 index 0000000..a8b260c Binary files /dev/null and b/Apps/XinDianTu/Images/3e35feb3-26cf-44a7-9199-8b2b5d4c7938.jpg differ diff --git a/Apps/XinDianTu/Images/3e5b9de6-936d-48e3-8347-590d1a3d811b.jpg b/Apps/XinDianTu/Images/3e5b9de6-936d-48e3-8347-590d1a3d811b.jpg new file mode 100644 index 0000000..191f94f Binary files /dev/null and b/Apps/XinDianTu/Images/3e5b9de6-936d-48e3-8347-590d1a3d811b.jpg differ diff --git a/Apps/XinDianTu/Images/3e8fcf10-ee6e-4aa8-8380-42a39b047628.jpg b/Apps/XinDianTu/Images/3e8fcf10-ee6e-4aa8-8380-42a39b047628.jpg new file mode 100644 index 0000000..136d8d7 Binary files /dev/null and b/Apps/XinDianTu/Images/3e8fcf10-ee6e-4aa8-8380-42a39b047628.jpg differ diff --git a/Apps/XinDianTu/Images/3e982128-e9b0-478b-b9f2-aefb5a9d017e.jpg b/Apps/XinDianTu/Images/3e982128-e9b0-478b-b9f2-aefb5a9d017e.jpg new file mode 100644 index 0000000..d3245cd Binary files /dev/null and b/Apps/XinDianTu/Images/3e982128-e9b0-478b-b9f2-aefb5a9d017e.jpg differ diff --git a/Apps/XinDianTu/Images/3e9e40d8-cb1a-4d0c-9087-1b63d494d893.jpg b/Apps/XinDianTu/Images/3e9e40d8-cb1a-4d0c-9087-1b63d494d893.jpg new file mode 100644 index 0000000..cfb2989 Binary files /dev/null and b/Apps/XinDianTu/Images/3e9e40d8-cb1a-4d0c-9087-1b63d494d893.jpg differ diff --git a/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_1.jpg b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_1.jpg new file mode 100644 index 0000000..b279d2f Binary files /dev/null and b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_2.jpg b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_2.jpg new file mode 100644 index 0000000..c480c7b Binary files /dev/null and b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_3.jpg b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_3.jpg new file mode 100644 index 0000000..f87b385 Binary files /dev/null and b/Apps/XinDianTu/Images/3ef63bf91d829ed31f42db4b11183518_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/3f0b8312-6388-4b54-be34-299fd8b85798.jpg b/Apps/XinDianTu/Images/3f0b8312-6388-4b54-be34-299fd8b85798.jpg new file mode 100644 index 0000000..d678452 Binary files /dev/null and b/Apps/XinDianTu/Images/3f0b8312-6388-4b54-be34-299fd8b85798.jpg differ diff --git a/Apps/XinDianTu/Images/3f0f103a-f4d1-498b-9df4-31b6d4a47439.jpg b/Apps/XinDianTu/Images/3f0f103a-f4d1-498b-9df4-31b6d4a47439.jpg new file mode 100644 index 0000000..60a028d Binary files /dev/null and b/Apps/XinDianTu/Images/3f0f103a-f4d1-498b-9df4-31b6d4a47439.jpg differ diff --git a/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.jpg b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.jpg new file mode 100644 index 0000000..dabe407 Binary files /dev/null and b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.jpg differ diff --git a/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.json b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.json new file mode 100644 index 0000000..738d915 --- /dev/null +++ b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157.json @@ -0,0 +1,46 @@ +{ + "image": "3f1f4eaf-92b6-4866-a7dc-e22f16e55157.jpg", + "width": 720, + "height": 116, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 450, + 700, + 724 + ], + "click_point": [ + 121, + 504 + ] + }, + { + "id": 2, + "rect": [ + 19, + 738, + 700, + 984 + ], + "click_point": [ + 121, + 787 + ] + }, + { + "id": 3, + "rect": [ + 19, + 993, + 700, + 1244 + ], + "click_point": [ + 121, + 1043 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_flag.jpg b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_flag.jpg new file mode 100644 index 0000000..c388e7d Binary files /dev/null and b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_vl.jpg b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_vl.jpg new file mode 100644 index 0000000..3e9fb4a Binary files /dev/null and b/Apps/XinDianTu/Images/3f1f4eaf-92b6-4866-a7dc-e22f16e55157_vl.jpg differ diff --git a/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.jpg b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.jpg new file mode 100644 index 0000000..7921e3d Binary files /dev/null and b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.jpg differ diff --git a/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.json b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.json new file mode 100644 index 0000000..5763b30 --- /dev/null +++ b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.json @@ -0,0 +1,46 @@ +{ + "image": "3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6.jpg", + "width": 720, + "height": 322, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 532, + 700, + 780 + ], + "click_point": [ + 121, + 581 + ] + }, + { + "id": 2, + "rect": [ + 19, + 793, + 700, + 1039 + ], + "click_point": [ + 121, + 842 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1052, + 700, + 1374 + ], + "click_point": [ + 121, + 1116 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_flag.jpg b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_flag.jpg new file mode 100644 index 0000000..791a193 Binary files /dev/null and b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_vl.jpg b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_vl.jpg new file mode 100644 index 0000000..eb8cdf2 Binary files /dev/null and b/Apps/XinDianTu/Images/3f5b51ae-ac8a-43e2-ab64-c8191bc49ca6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/400d5e52-3ac7-4431-a313-28f76a142369.jpg b/Apps/XinDianTu/Images/400d5e52-3ac7-4431-a313-28f76a142369.jpg new file mode 100644 index 0000000..0e6c22f Binary files /dev/null and b/Apps/XinDianTu/Images/400d5e52-3ac7-4431-a313-28f76a142369.jpg differ diff --git a/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.jpg b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.jpg new file mode 100644 index 0000000..e6e5f86 Binary files /dev/null and b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.jpg differ diff --git a/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.json b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.json new file mode 100644 index 0000000..525741e --- /dev/null +++ b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f.json @@ -0,0 +1,46 @@ +{ + "image": "4019e577-0d04-4c4a-8918-65c1be57561f.jpg", + "width": 720, + "height": 118, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 448, + 700, + 724 + ], + "click_point": [ + 121, + 503 + ] + }, + { + "id": 2, + "rect": [ + 19, + 737, + 700, + 983 + ], + "click_point": [ + 121, + 786 + ] + }, + { + "id": 3, + "rect": [ + 19, + 996, + 700, + 1244 + ], + "click_point": [ + 121, + 1045 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_flag.jpg b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_flag.jpg new file mode 100644 index 0000000..e954a74 Binary files /dev/null and b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_vl.jpg b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_vl.jpg new file mode 100644 index 0000000..3a19de0 Binary files /dev/null and b/Apps/XinDianTu/Images/4019e577-0d04-4c4a-8918-65c1be57561f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_1.jpg b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_1.jpg new file mode 100644 index 0000000..8bf3eb4 Binary files /dev/null and b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_2.jpg b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_2.jpg new file mode 100644 index 0000000..5ca139a Binary files /dev/null and b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_3.jpg b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_3.jpg new file mode 100644 index 0000000..04103e1 Binary files /dev/null and b/Apps/XinDianTu/Images/404cec960fd9c44700e321cc89bf9668_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4078ad5b-59d4-4bb1-ad6e-d8ea18706c35.jpg b/Apps/XinDianTu/Images/4078ad5b-59d4-4bb1-ad6e-d8ea18706c35.jpg new file mode 100644 index 0000000..8277f0f Binary files /dev/null and b/Apps/XinDianTu/Images/4078ad5b-59d4-4bb1-ad6e-d8ea18706c35.jpg differ diff --git a/Apps/XinDianTu/Images/408efd84-29e1-466f-832f-d4022d440ba4.jpg b/Apps/XinDianTu/Images/408efd84-29e1-466f-832f-d4022d440ba4.jpg new file mode 100644 index 0000000..f987796 Binary files /dev/null and b/Apps/XinDianTu/Images/408efd84-29e1-466f-832f-d4022d440ba4.jpg differ diff --git a/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854.jpg b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854.jpg new file mode 100644 index 0000000..51fbfe5 Binary files /dev/null and b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854.jpg differ diff --git a/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_flag.jpg b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_flag.jpg new file mode 100644 index 0000000..a46f1ea Binary files /dev/null and b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_flag.jpg differ diff --git a/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_vl.jpg b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_vl.jpg new file mode 100644 index 0000000..d164992 Binary files /dev/null and b/Apps/XinDianTu/Images/40aad3bd-37f6-44a9-9c78-91829bfe7854_vl.jpg differ diff --git a/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_1.jpg b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_1.jpg new file mode 100644 index 0000000..1db2ff4 Binary files /dev/null and b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_2.jpg b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_2.jpg new file mode 100644 index 0000000..baa3544 Binary files /dev/null and b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_3.jpg b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_3.jpg new file mode 100644 index 0000000..7a33a34 Binary files /dev/null and b/Apps/XinDianTu/Images/413ebbfd4b12ed5780999abf2fc32c31_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/41452967-430c-4b09-a573-c66cfea4a3dd.jpg b/Apps/XinDianTu/Images/41452967-430c-4b09-a573-c66cfea4a3dd.jpg new file mode 100644 index 0000000..1795a9f Binary files /dev/null and b/Apps/XinDianTu/Images/41452967-430c-4b09-a573-c66cfea4a3dd.jpg differ diff --git a/Apps/XinDianTu/Images/41c64cb3-c1ef-4455-b09b-9dd2bae14829.jpg b/Apps/XinDianTu/Images/41c64cb3-c1ef-4455-b09b-9dd2bae14829.jpg new file mode 100644 index 0000000..c88d42f Binary files /dev/null and b/Apps/XinDianTu/Images/41c64cb3-c1ef-4455-b09b-9dd2bae14829.jpg differ diff --git a/Apps/XinDianTu/Images/41d35ecd-5a0d-43fc-9d08-22b4b1025f40.jpg b/Apps/XinDianTu/Images/41d35ecd-5a0d-43fc-9d08-22b4b1025f40.jpg new file mode 100644 index 0000000..234b9af Binary files /dev/null and b/Apps/XinDianTu/Images/41d35ecd-5a0d-43fc-9d08-22b4b1025f40.jpg differ diff --git a/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_1.jpg b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_1.jpg new file mode 100644 index 0000000..0eee5c8 Binary files /dev/null and b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_2.jpg b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_2.jpg new file mode 100644 index 0000000..f39d437 Binary files /dev/null and b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_3.jpg b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_3.jpg new file mode 100644 index 0000000..28bd1ce Binary files /dev/null and b/Apps/XinDianTu/Images/41e0861901270870f9b8c31c459cfb86_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4217f121-581d-47c9-8ba5-c03b9be72644.jpg b/Apps/XinDianTu/Images/4217f121-581d-47c9-8ba5-c03b9be72644.jpg new file mode 100644 index 0000000..6e8b6a5 Binary files /dev/null and b/Apps/XinDianTu/Images/4217f121-581d-47c9-8ba5-c03b9be72644.jpg differ diff --git a/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.jpg b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.jpg new file mode 100644 index 0000000..7277950 Binary files /dev/null and b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.jpg differ diff --git a/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.json b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.json new file mode 100644 index 0000000..699e61c --- /dev/null +++ b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088.json @@ -0,0 +1,46 @@ +{ + "image": "42272eae-83f2-4594-9088-695e84cb3088.jpg", + "width": 720, + "height": 274, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 538, + 700, + 784 + ], + "click_point": [ + 121, + 587 + ] + }, + { + "id": 2, + "rect": [ + 19, + 793, + 700, + 1044 + ], + "click_point": [ + 121, + 843 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1058, + 700, + 1332 + ], + "click_point": [ + 121, + 1112 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_flag.jpg b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_flag.jpg new file mode 100644 index 0000000..e3fa296 Binary files /dev/null and b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_flag.jpg differ diff --git a/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_vl.jpg b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_vl.jpg new file mode 100644 index 0000000..85cb49f Binary files /dev/null and b/Apps/XinDianTu/Images/42272eae-83f2-4594-9088-695e84cb3088_vl.jpg differ diff --git a/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38.jpg b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38.jpg new file mode 100644 index 0000000..7e00f08 Binary files /dev/null and b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38.jpg differ diff --git a/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_flag.jpg b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_flag.jpg new file mode 100644 index 0000000..d28a37e Binary files /dev/null and b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_flag.jpg differ diff --git a/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_vl.jpg b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_vl.jpg new file mode 100644 index 0000000..2c9bee1 Binary files /dev/null and b/Apps/XinDianTu/Images/42c0e7d8-1431-443c-b557-6e7b89db6a38_vl.jpg differ diff --git a/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_1.jpg b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_1.jpg new file mode 100644 index 0000000..b969556 Binary files /dev/null and b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_2.jpg b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_2.jpg new file mode 100644 index 0000000..7c5d2d1 Binary files /dev/null and b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_3.jpg b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_3.jpg new file mode 100644 index 0000000..2329c7c Binary files /dev/null and b/Apps/XinDianTu/Images/430c7cfb669ef748f405db298869984e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/437dc6f5-96bc-468f-8aa3-cebbc86df194.jpg b/Apps/XinDianTu/Images/437dc6f5-96bc-468f-8aa3-cebbc86df194.jpg new file mode 100644 index 0000000..eaf0264 Binary files /dev/null and b/Apps/XinDianTu/Images/437dc6f5-96bc-468f-8aa3-cebbc86df194.jpg differ diff --git a/Apps/XinDianTu/Images/437f0d93-1044-451a-b1e2-96170ff5de5e.jpg b/Apps/XinDianTu/Images/437f0d93-1044-451a-b1e2-96170ff5de5e.jpg new file mode 100644 index 0000000..bc37f7c Binary files /dev/null and b/Apps/XinDianTu/Images/437f0d93-1044-451a-b1e2-96170ff5de5e.jpg differ diff --git a/Apps/XinDianTu/Images/438f790d-1a92-4a4c-afc2-a51b97fed0c6.jpg b/Apps/XinDianTu/Images/438f790d-1a92-4a4c-afc2-a51b97fed0c6.jpg new file mode 100644 index 0000000..5e6a153 Binary files /dev/null and b/Apps/XinDianTu/Images/438f790d-1a92-4a4c-afc2-a51b97fed0c6.jpg differ diff --git a/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_1.jpg b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_1.jpg new file mode 100644 index 0000000..93f6699 Binary files /dev/null and b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_2.jpg b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_2.jpg new file mode 100644 index 0000000..6bda667 Binary files /dev/null and b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_3.jpg b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_3.jpg new file mode 100644 index 0000000..56165ed Binary files /dev/null and b/Apps/XinDianTu/Images/43b32db8f9c7f59f6c81444a5fec617b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_1.jpg b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_1.jpg new file mode 100644 index 0000000..d7fbfc5 Binary files /dev/null and b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_2.jpg b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_2.jpg new file mode 100644 index 0000000..aabcc2b Binary files /dev/null and b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_3.jpg b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_3.jpg new file mode 100644 index 0000000..69110a3 Binary files /dev/null and b/Apps/XinDianTu/Images/43c4f9efce82deed7bf23de5982e9a31_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/43e48da7-48bb-4c94-9652-869a280ddba9.jpg b/Apps/XinDianTu/Images/43e48da7-48bb-4c94-9652-869a280ddba9.jpg new file mode 100644 index 0000000..5c311d8 Binary files /dev/null and b/Apps/XinDianTu/Images/43e48da7-48bb-4c94-9652-869a280ddba9.jpg differ diff --git a/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_1.jpg b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_1.jpg new file mode 100644 index 0000000..77470ee Binary files /dev/null and b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_2.jpg b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_2.jpg new file mode 100644 index 0000000..6b543d6 Binary files /dev/null and b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_3.jpg b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_3.jpg new file mode 100644 index 0000000..85f52b5 Binary files /dev/null and b/Apps/XinDianTu/Images/43f9144d236276db2c7cd8421aa29773_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_1.jpg b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_1.jpg new file mode 100644 index 0000000..9c3ec0c Binary files /dev/null and b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_2.jpg b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_2.jpg new file mode 100644 index 0000000..0a15919 Binary files /dev/null and b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_3.jpg b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_3.jpg new file mode 100644 index 0000000..799655b Binary files /dev/null and b/Apps/XinDianTu/Images/4401fa0cbb4188f9eccdfdb08f8d1590_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_1.jpg b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_1.jpg new file mode 100644 index 0000000..9fea8b9 Binary files /dev/null and b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_2.jpg b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_2.jpg new file mode 100644 index 0000000..f4648f0 Binary files /dev/null and b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_3.jpg b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_3.jpg new file mode 100644 index 0000000..2901505 Binary files /dev/null and b/Apps/XinDianTu/Images/441781a1119f18f4e1f0f544aa9212a2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/442ecaa6-cefb-4239-9fd5-8a871c7856c8.jpg b/Apps/XinDianTu/Images/442ecaa6-cefb-4239-9fd5-8a871c7856c8.jpg new file mode 100644 index 0000000..b9acdcf Binary files /dev/null and b/Apps/XinDianTu/Images/442ecaa6-cefb-4239-9fd5-8a871c7856c8.jpg differ diff --git a/Apps/XinDianTu/Images/442f2595-3081-4551-a360-b2f7a91fe52b.jpg b/Apps/XinDianTu/Images/442f2595-3081-4551-a360-b2f7a91fe52b.jpg new file mode 100644 index 0000000..a4213a8 Binary files /dev/null and b/Apps/XinDianTu/Images/442f2595-3081-4551-a360-b2f7a91fe52b.jpg differ diff --git a/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_1.jpg b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_1.jpg new file mode 100644 index 0000000..13c2723 Binary files /dev/null and b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_2.jpg b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_2.jpg new file mode 100644 index 0000000..786a24d Binary files /dev/null and b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_3.jpg b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_3.jpg new file mode 100644 index 0000000..a348677 Binary files /dev/null and b/Apps/XinDianTu/Images/4432f450d30b88b0f8c90ce87317e341_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4433873f-9535-4bb4-8af8-9b202187e9c1.jpg b/Apps/XinDianTu/Images/4433873f-9535-4bb4-8af8-9b202187e9c1.jpg new file mode 100644 index 0000000..1608286 Binary files /dev/null and b/Apps/XinDianTu/Images/4433873f-9535-4bb4-8af8-9b202187e9c1.jpg differ diff --git a/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_1.jpg b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_1.jpg new file mode 100644 index 0000000..5aef13b Binary files /dev/null and b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_2.jpg b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_2.jpg new file mode 100644 index 0000000..0437811 Binary files /dev/null and b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_3.jpg b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_3.jpg new file mode 100644 index 0000000..fa0c380 Binary files /dev/null and b/Apps/XinDianTu/Images/4469ac9e0bac972fe2193280c7afd927_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/447ee3d8-9cd1-40e3-a160-a1d2177db0f9.jpg b/Apps/XinDianTu/Images/447ee3d8-9cd1-40e3-a160-a1d2177db0f9.jpg new file mode 100644 index 0000000..01ff65e Binary files /dev/null and b/Apps/XinDianTu/Images/447ee3d8-9cd1-40e3-a160-a1d2177db0f9.jpg differ diff --git a/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.jpg b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.jpg new file mode 100644 index 0000000..23c86c1 Binary files /dev/null and b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.jpg differ diff --git a/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.json b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.json new file mode 100644 index 0000000..1f75110 --- /dev/null +++ b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56.json @@ -0,0 +1,46 @@ +{ + "image": "44ce2269-a354-499a-9c79-f723098f1e56.jpg", + "width": 720, + "height": 124, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 426, + 700, + 700 + ], + "click_point": [ + 121, + 480 + ] + }, + { + "id": 2, + "rect": [ + 19, + 714, + 700, + 960 + ], + "click_point": [ + 121, + 763 + ] + }, + { + "id": 3, + "rect": [ + 19, + 974, + 700, + 1236 + ], + "click_point": [ + 121, + 1026 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_flag.jpg b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_flag.jpg new file mode 100644 index 0000000..a00f9e4 Binary files /dev/null and b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_flag.jpg differ diff --git a/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_vl.jpg b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_vl.jpg new file mode 100644 index 0000000..d3f31c3 Binary files /dev/null and b/Apps/XinDianTu/Images/44ce2269-a354-499a-9c79-f723098f1e56_vl.jpg differ diff --git a/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd.jpg b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd.jpg new file mode 100644 index 0000000..72e9248 Binary files /dev/null and b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd.jpg differ diff --git a/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_flag.jpg b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_flag.jpg new file mode 100644 index 0000000..43b5ae1 Binary files /dev/null and b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_flag.jpg differ diff --git a/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_vl.jpg b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_vl.jpg new file mode 100644 index 0000000..5ba7cc4 Binary files /dev/null and b/Apps/XinDianTu/Images/452f9f27-db25-45ba-bda4-f533b7fea1bd_vl.jpg differ diff --git a/Apps/XinDianTu/Images/456c6520-312f-49c9-8a27-4a46e3d85f9b.jpg b/Apps/XinDianTu/Images/456c6520-312f-49c9-8a27-4a46e3d85f9b.jpg new file mode 100644 index 0000000..a248adf Binary files /dev/null and b/Apps/XinDianTu/Images/456c6520-312f-49c9-8a27-4a46e3d85f9b.jpg differ diff --git a/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.jpg b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.jpg new file mode 100644 index 0000000..ab899ae Binary files /dev/null and b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.jpg differ diff --git a/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.json b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.json new file mode 100644 index 0000000..e9b654d --- /dev/null +++ b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68.json @@ -0,0 +1,59 @@ +{ + "image": "45aeffbe-7c7b-493a-b6b5-16183bbb6c68.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 644 + ], + "click_point": [ + 121, + 452 + ] + }, + { + "id": 2, + "rect": [ + 19, + 652, + 700, + 901 + ], + "click_point": [ + 121, + 701 + ] + }, + { + "id": 3, + "rect": [ + 19, + 915, + 700, + 1164 + ], + "click_point": [ + 121, + 964 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1172, + 700, + 1374 + ], + "click_point": [ + 121, + 1212 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_flag.jpg b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_flag.jpg new file mode 100644 index 0000000..6a9f875 Binary files /dev/null and b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_flag.jpg differ diff --git a/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_vl.jpg b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_vl.jpg new file mode 100644 index 0000000..9c6e8ba Binary files /dev/null and b/Apps/XinDianTu/Images/45aeffbe-7c7b-493a-b6b5-16183bbb6c68_vl.jpg differ diff --git a/Apps/XinDianTu/Images/45bced78-e7df-4b5d-8fa0-fcff767c80f2.jpg b/Apps/XinDianTu/Images/45bced78-e7df-4b5d-8fa0-fcff767c80f2.jpg new file mode 100644 index 0000000..31a915c Binary files /dev/null and b/Apps/XinDianTu/Images/45bced78-e7df-4b5d-8fa0-fcff767c80f2.jpg differ diff --git a/Apps/XinDianTu/Images/45f3d5a4-1bfc-49b7-a072-2e2da3abb2fc.jpg b/Apps/XinDianTu/Images/45f3d5a4-1bfc-49b7-a072-2e2da3abb2fc.jpg new file mode 100644 index 0000000..726aab2 Binary files /dev/null and b/Apps/XinDianTu/Images/45f3d5a4-1bfc-49b7-a072-2e2da3abb2fc.jpg differ diff --git a/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.jpg b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.jpg new file mode 100644 index 0000000..17fb53c Binary files /dev/null and b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.jpg differ diff --git a/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.json b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.json new file mode 100644 index 0000000..3e1d7cd --- /dev/null +++ b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4.json @@ -0,0 +1,46 @@ +{ + "image": "4635da8e-532a-4850-8318-cc177f41b7e4.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 546, + 700, + 792 + ], + "click_point": [ + 121, + 595 + ] + }, + { + "id": 2, + "rect": [ + 19, + 806, + 700, + 1080 + ], + "click_point": [ + 121, + 860 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1089, + 700, + 1340 + ], + "click_point": [ + 121, + 1139 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_flag.jpg b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_flag.jpg new file mode 100644 index 0000000..61fab5f Binary files /dev/null and b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_vl.jpg b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_vl.jpg new file mode 100644 index 0000000..bb306e5 Binary files /dev/null and b/Apps/XinDianTu/Images/4635da8e-532a-4850-8318-cc177f41b7e4_vl.jpg differ diff --git a/Apps/XinDianTu/Images/464fdfe3-3d64-4712-9dd1-d42ea419fc6f.jpg b/Apps/XinDianTu/Images/464fdfe3-3d64-4712-9dd1-d42ea419fc6f.jpg new file mode 100644 index 0000000..4a6eccf Binary files /dev/null and b/Apps/XinDianTu/Images/464fdfe3-3d64-4712-9dd1-d42ea419fc6f.jpg differ diff --git a/Apps/XinDianTu/Images/468c19ef-fa53-41af-8d42-c7e268fc76f0.jpg b/Apps/XinDianTu/Images/468c19ef-fa53-41af-8d42-c7e268fc76f0.jpg new file mode 100644 index 0000000..b24ac3c Binary files /dev/null and b/Apps/XinDianTu/Images/468c19ef-fa53-41af-8d42-c7e268fc76f0.jpg differ diff --git a/Apps/XinDianTu/Images/46b801b7-0eaa-4a8c-89e4-12aaaeced42a.jpg b/Apps/XinDianTu/Images/46b801b7-0eaa-4a8c-89e4-12aaaeced42a.jpg new file mode 100644 index 0000000..19a4a6a Binary files /dev/null and b/Apps/XinDianTu/Images/46b801b7-0eaa-4a8c-89e4-12aaaeced42a.jpg differ diff --git a/Apps/XinDianTu/Images/46b8c5a6-1250-4d9c-8912-c3bbd1f5ea19.jpg b/Apps/XinDianTu/Images/46b8c5a6-1250-4d9c-8912-c3bbd1f5ea19.jpg new file mode 100644 index 0000000..c529b04 Binary files /dev/null and b/Apps/XinDianTu/Images/46b8c5a6-1250-4d9c-8912-c3bbd1f5ea19.jpg differ diff --git a/Apps/XinDianTu/Images/46c53dd0-8def-43e0-86b2-bb78d669a320.jpg b/Apps/XinDianTu/Images/46c53dd0-8def-43e0-86b2-bb78d669a320.jpg new file mode 100644 index 0000000..c95304a Binary files /dev/null and b/Apps/XinDianTu/Images/46c53dd0-8def-43e0-86b2-bb78d669a320.jpg differ diff --git a/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_1.jpg b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_1.jpg new file mode 100644 index 0000000..3b36b24 Binary files /dev/null and b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_2.jpg b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_2.jpg new file mode 100644 index 0000000..762a5cd Binary files /dev/null and b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_3.jpg b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_3.jpg new file mode 100644 index 0000000..38a0c32 Binary files /dev/null and b/Apps/XinDianTu/Images/472558ae579dff78c6e04b53a9fcc0fb_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/474f36db-d7d4-44c9-8b5a-ed699593da19.jpg b/Apps/XinDianTu/Images/474f36db-d7d4-44c9-8b5a-ed699593da19.jpg new file mode 100644 index 0000000..43f4292 Binary files /dev/null and b/Apps/XinDianTu/Images/474f36db-d7d4-44c9-8b5a-ed699593da19.jpg differ diff --git a/Apps/XinDianTu/Images/477ba52e-099d-4689-868d-d4f2e4c3dd5c.jpg b/Apps/XinDianTu/Images/477ba52e-099d-4689-868d-d4f2e4c3dd5c.jpg new file mode 100644 index 0000000..814caaa Binary files /dev/null and b/Apps/XinDianTu/Images/477ba52e-099d-4689-868d-d4f2e4c3dd5c.jpg differ diff --git a/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_1.jpg b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_1.jpg new file mode 100644 index 0000000..65ab05d Binary files /dev/null and b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_2.jpg b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_2.jpg new file mode 100644 index 0000000..aed2cd1 Binary files /dev/null and b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_3.jpg b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_3.jpg new file mode 100644 index 0000000..ab8780d Binary files /dev/null and b/Apps/XinDianTu/Images/47f646e21bf82ca72d3dfd56683dcad2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4861e50f-070b-43a6-995f-30e37b73ebfe.jpg b/Apps/XinDianTu/Images/4861e50f-070b-43a6-995f-30e37b73ebfe.jpg new file mode 100644 index 0000000..fc3f71b Binary files /dev/null and b/Apps/XinDianTu/Images/4861e50f-070b-43a6-995f-30e37b73ebfe.jpg differ diff --git a/Apps/XinDianTu/Images/48830e39-bac6-42c0-a277-779e281e3ea4.jpg b/Apps/XinDianTu/Images/48830e39-bac6-42c0-a277-779e281e3ea4.jpg new file mode 100644 index 0000000..927b6fb Binary files /dev/null and b/Apps/XinDianTu/Images/48830e39-bac6-42c0-a277-779e281e3ea4.jpg differ diff --git a/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.jpg b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.jpg new file mode 100644 index 0000000..1f2606b Binary files /dev/null and b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.jpg differ diff --git a/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.json b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.json new file mode 100644 index 0000000..83bfbbd --- /dev/null +++ b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095.json @@ -0,0 +1,33 @@ +{ + "image": "489065dd-c55c-4a8b-a880-7965a8a1b095.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_flag.jpg b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_flag.jpg new file mode 100644 index 0000000..0ba3858 Binary files /dev/null and b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_flag.jpg differ diff --git a/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_vl.jpg b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_vl.jpg new file mode 100644 index 0000000..0f2ff70 Binary files /dev/null and b/Apps/XinDianTu/Images/489065dd-c55c-4a8b-a880-7965a8a1b095_vl.jpg differ diff --git a/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_1.jpg b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_1.jpg new file mode 100644 index 0000000..87b6271 Binary files /dev/null and b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_2.jpg b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_2.jpg new file mode 100644 index 0000000..6e02d77 Binary files /dev/null and b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_3.jpg b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_3.jpg new file mode 100644 index 0000000..0a18ebf Binary files /dev/null and b/Apps/XinDianTu/Images/48b63126df65bfb173b6c342710cecd9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.jpg b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.jpg new file mode 100644 index 0000000..27afe47 Binary files /dev/null and b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.jpg differ diff --git a/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.json b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.json new file mode 100644 index 0000000..4a896d6 --- /dev/null +++ b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99.json @@ -0,0 +1,46 @@ +{ + "image": "4956d6e0-7082-4c24-93cc-7f1a531a8b99.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_flag.jpg b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_flag.jpg new file mode 100644 index 0000000..467bbfe Binary files /dev/null and b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_vl.jpg b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_vl.jpg new file mode 100644 index 0000000..c1e4048 Binary files /dev/null and b/Apps/XinDianTu/Images/4956d6e0-7082-4c24-93cc-7f1a531a8b99_vl.jpg differ diff --git a/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_1.jpg b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_1.jpg new file mode 100644 index 0000000..6cc04b1 Binary files /dev/null and b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_2.jpg b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_2.jpg new file mode 100644 index 0000000..a95faa1 Binary files /dev/null and b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_3.jpg b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_3.jpg new file mode 100644 index 0000000..039a0b7 Binary files /dev/null and b/Apps/XinDianTu/Images/496ff3a8bf7c5d9abb042d703af1ffa2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/49b71da9-d6f3-4cfe-a1e3-130b8e4e8216.jpg b/Apps/XinDianTu/Images/49b71da9-d6f3-4cfe-a1e3-130b8e4e8216.jpg new file mode 100644 index 0000000..702f4e0 Binary files /dev/null and b/Apps/XinDianTu/Images/49b71da9-d6f3-4cfe-a1e3-130b8e4e8216.jpg differ diff --git a/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.jpg b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.jpg new file mode 100644 index 0000000..c91dabd Binary files /dev/null and b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.jpg differ diff --git a/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.json b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.json new file mode 100644 index 0000000..d169c9c --- /dev/null +++ b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b.json @@ -0,0 +1,46 @@ +{ + "image": "49fb2e10-498f-42b6-856b-ede5b458fc4b.jpg", + "width": 720, + "height": 142, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 452, + 700, + 700 + ], + "click_point": [ + 121, + 501 + ] + }, + { + "id": 2, + "rect": [ + 19, + 713, + 700, + 959 + ], + "click_point": [ + 121, + 762 + ] + }, + { + "id": 3, + "rect": [ + 19, + 972, + 700, + 1220 + ], + "click_point": [ + 121, + 1021 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_flag.jpg b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_flag.jpg new file mode 100644 index 0000000..03ad9bc Binary files /dev/null and b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_vl.jpg b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_vl.jpg new file mode 100644 index 0000000..8307eea Binary files /dev/null and b/Apps/XinDianTu/Images/49fb2e10-498f-42b6-856b-ede5b458fc4b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/4aadbb6c-4d38-4422-8b71-fa6b0a56fcf4.jpg b/Apps/XinDianTu/Images/4aadbb6c-4d38-4422-8b71-fa6b0a56fcf4.jpg new file mode 100644 index 0000000..4a94403 Binary files /dev/null and b/Apps/XinDianTu/Images/4aadbb6c-4d38-4422-8b71-fa6b0a56fcf4.jpg differ diff --git a/Apps/XinDianTu/Images/4ac7c76b-9995-4a03-8c98-9a34bd31f04e.jpg b/Apps/XinDianTu/Images/4ac7c76b-9995-4a03-8c98-9a34bd31f04e.jpg new file mode 100644 index 0000000..c9fb58a Binary files /dev/null and b/Apps/XinDianTu/Images/4ac7c76b-9995-4a03-8c98-9a34bd31f04e.jpg differ diff --git a/Apps/XinDianTu/Images/4aec4748-0a72-4df6-907f-1e4991d35d3c.jpg b/Apps/XinDianTu/Images/4aec4748-0a72-4df6-907f-1e4991d35d3c.jpg new file mode 100644 index 0000000..91fbf5f Binary files /dev/null and b/Apps/XinDianTu/Images/4aec4748-0a72-4df6-907f-1e4991d35d3c.jpg differ diff --git a/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.jpg b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.jpg new file mode 100644 index 0000000..a746fb8 Binary files /dev/null and b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.jpg differ diff --git a/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.json b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.json new file mode 100644 index 0000000..1570ec1 --- /dev/null +++ b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6.json @@ -0,0 +1,46 @@ +{ + "image": "4b664132-2400-4f1f-84b6-7d4869b8a2d6.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 538, + 700, + 820 + ], + "click_point": [ + 121, + 594 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1077 + ], + "click_point": [ + 121, + 877 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1091, + 700, + 1337 + ], + "click_point": [ + 121, + 1140 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_flag.jpg b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_flag.jpg new file mode 100644 index 0000000..9f2f26b Binary files /dev/null and b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_vl.jpg b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_vl.jpg new file mode 100644 index 0000000..aad7ba1 Binary files /dev/null and b/Apps/XinDianTu/Images/4b664132-2400-4f1f-84b6-7d4869b8a2d6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/4b76d9c0-4efd-4226-84f7-92ea88cde3f4.jpg b/Apps/XinDianTu/Images/4b76d9c0-4efd-4226-84f7-92ea88cde3f4.jpg new file mode 100644 index 0000000..ede5272 Binary files /dev/null and b/Apps/XinDianTu/Images/4b76d9c0-4efd-4226-84f7-92ea88cde3f4.jpg differ diff --git a/Apps/XinDianTu/Images/4b8f2621-6f68-4ae4-b039-37317d150508.jpg b/Apps/XinDianTu/Images/4b8f2621-6f68-4ae4-b039-37317d150508.jpg new file mode 100644 index 0000000..8aada27 Binary files /dev/null and b/Apps/XinDianTu/Images/4b8f2621-6f68-4ae4-b039-37317d150508.jpg differ diff --git a/Apps/XinDianTu/Images/4bab7c7b-95e6-4db6-b511-6a0ae2c196ff.jpg b/Apps/XinDianTu/Images/4bab7c7b-95e6-4db6-b511-6a0ae2c196ff.jpg new file mode 100644 index 0000000..978c715 Binary files /dev/null and b/Apps/XinDianTu/Images/4bab7c7b-95e6-4db6-b511-6a0ae2c196ff.jpg differ diff --git a/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_1.jpg b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_1.jpg new file mode 100644 index 0000000..79ca012 Binary files /dev/null and b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_2.jpg b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_2.jpg new file mode 100644 index 0000000..e166899 Binary files /dev/null and b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_3.jpg b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_3.jpg new file mode 100644 index 0000000..d53a7a4 Binary files /dev/null and b/Apps/XinDianTu/Images/4bbd712569a5bd108a02c6ff3a70ec3e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_1.jpg b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_1.jpg new file mode 100644 index 0000000..85006c1 Binary files /dev/null and b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_2.jpg b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_2.jpg new file mode 100644 index 0000000..bbd44ae Binary files /dev/null and b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_3.jpg b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_3.jpg new file mode 100644 index 0000000..5c80351 Binary files /dev/null and b/Apps/XinDianTu/Images/4bbda6d25273a895ee79e1dc4c4c166d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_1.jpg b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_1.jpg new file mode 100644 index 0000000..da6d10c Binary files /dev/null and b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_2.jpg b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_2.jpg new file mode 100644 index 0000000..4e8d1da Binary files /dev/null and b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_3.jpg b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_3.jpg new file mode 100644 index 0000000..9b533e1 Binary files /dev/null and b/Apps/XinDianTu/Images/4be0672cc8bb1a202a5b7be59f02c1e8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4be19216-d2e3-46a2-a564-706b22cd46a3.jpg b/Apps/XinDianTu/Images/4be19216-d2e3-46a2-a564-706b22cd46a3.jpg new file mode 100644 index 0000000..23c5ec8 Binary files /dev/null and b/Apps/XinDianTu/Images/4be19216-d2e3-46a2-a564-706b22cd46a3.jpg differ diff --git a/Apps/XinDianTu/Images/4c35e094-4bb4-4635-ae44-50e07d5e79d8.jpg b/Apps/XinDianTu/Images/4c35e094-4bb4-4635-ae44-50e07d5e79d8.jpg new file mode 100644 index 0000000..2a187dc Binary files /dev/null and b/Apps/XinDianTu/Images/4c35e094-4bb4-4635-ae44-50e07d5e79d8.jpg differ diff --git a/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e.jpg b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e.jpg new file mode 100644 index 0000000..a23efb6 Binary files /dev/null and b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e.jpg differ diff --git a/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_flag.jpg b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_flag.jpg new file mode 100644 index 0000000..ee2bc9e Binary files /dev/null and b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_vl.jpg b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_vl.jpg new file mode 100644 index 0000000..56e75b6 Binary files /dev/null and b/Apps/XinDianTu/Images/4c576a34-7990-498b-89d6-d688baab8e1e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_1.jpg b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_1.jpg new file mode 100644 index 0000000..5994de1 Binary files /dev/null and b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_2.jpg b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_2.jpg new file mode 100644 index 0000000..cfb5d2b Binary files /dev/null and b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_3.jpg b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_3.jpg new file mode 100644 index 0000000..1167155 Binary files /dev/null and b/Apps/XinDianTu/Images/4c96a07e19adc085cb583899071c94ca_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f.jpg b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f.jpg new file mode 100644 index 0000000..cc9ea5c Binary files /dev/null and b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f.jpg differ diff --git a/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_flag.jpg b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_flag.jpg new file mode 100644 index 0000000..41f8ae9 Binary files /dev/null and b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_vl.jpg b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_vl.jpg new file mode 100644 index 0000000..79053d8 Binary files /dev/null and b/Apps/XinDianTu/Images/4ca9f7f1-7cd7-4583-8ca3-7ab2f2c34b0f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/4cf5785f-b6b1-4485-88a1-0296d60f5e05.jpg b/Apps/XinDianTu/Images/4cf5785f-b6b1-4485-88a1-0296d60f5e05.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/4cf5785f-b6b1-4485-88a1-0296d60f5e05.jpg differ diff --git a/Apps/XinDianTu/Images/4d62d6a2-5041-4207-bab7-47e3480b9005.jpg b/Apps/XinDianTu/Images/4d62d6a2-5041-4207-bab7-47e3480b9005.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/4d62d6a2-5041-4207-bab7-47e3480b9005.jpg differ diff --git a/Apps/XinDianTu/Images/4dc4a74c-1763-4e1d-a90e-0b2054050e55.jpg b/Apps/XinDianTu/Images/4dc4a74c-1763-4e1d-a90e-0b2054050e55.jpg new file mode 100644 index 0000000..9c66909 Binary files /dev/null and b/Apps/XinDianTu/Images/4dc4a74c-1763-4e1d-a90e-0b2054050e55.jpg differ diff --git a/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f.jpg b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f.jpg new file mode 100644 index 0000000..c4e876c Binary files /dev/null and b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f.jpg differ diff --git a/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_flag.jpg b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_flag.jpg new file mode 100644 index 0000000..a93a788 Binary files /dev/null and b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_vl.jpg b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_vl.jpg new file mode 100644 index 0000000..41afd3b Binary files /dev/null and b/Apps/XinDianTu/Images/4dd2f75a-3d4c-45eb-96b3-ac4637fd0f7f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/4e08f65f-a102-4e4a-a329-31dbe6491cb0.jpg b/Apps/XinDianTu/Images/4e08f65f-a102-4e4a-a329-31dbe6491cb0.jpg new file mode 100644 index 0000000..b065fa2 Binary files /dev/null and b/Apps/XinDianTu/Images/4e08f65f-a102-4e4a-a329-31dbe6491cb0.jpg differ diff --git a/Apps/XinDianTu/Images/4e24f8ef-d15a-43ef-9989-96c594720a20.jpg b/Apps/XinDianTu/Images/4e24f8ef-d15a-43ef-9989-96c594720a20.jpg new file mode 100644 index 0000000..d94a742 Binary files /dev/null and b/Apps/XinDianTu/Images/4e24f8ef-d15a-43ef-9989-96c594720a20.jpg differ diff --git a/Apps/XinDianTu/Images/4e2c0bd4-bf0d-4605-8aff-24ebc8ef1e5f.jpg b/Apps/XinDianTu/Images/4e2c0bd4-bf0d-4605-8aff-24ebc8ef1e5f.jpg new file mode 100644 index 0000000..0f5a9c1 Binary files /dev/null and b/Apps/XinDianTu/Images/4e2c0bd4-bf0d-4605-8aff-24ebc8ef1e5f.jpg differ diff --git a/Apps/XinDianTu/Images/4e33d1de-d8d2-45e4-b405-e6c5b0304bed.jpg b/Apps/XinDianTu/Images/4e33d1de-d8d2-45e4-b405-e6c5b0304bed.jpg new file mode 100644 index 0000000..e763937 Binary files /dev/null and b/Apps/XinDianTu/Images/4e33d1de-d8d2-45e4-b405-e6c5b0304bed.jpg differ diff --git a/Apps/XinDianTu/Images/4e64fadf-c52a-4f59-88ac-2db5f45c650a.jpg b/Apps/XinDianTu/Images/4e64fadf-c52a-4f59-88ac-2db5f45c650a.jpg new file mode 100644 index 0000000..3370734 Binary files /dev/null and b/Apps/XinDianTu/Images/4e64fadf-c52a-4f59-88ac-2db5f45c650a.jpg differ diff --git a/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_1.jpg b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_1.jpg new file mode 100644 index 0000000..13f8eff Binary files /dev/null and b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_2.jpg b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_2.jpg new file mode 100644 index 0000000..d6dee08 Binary files /dev/null and b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_3.jpg b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_3.jpg new file mode 100644 index 0000000..53a1d71 Binary files /dev/null and b/Apps/XinDianTu/Images/4e8288b89938c2a05b0d7934f04b2f3e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/4ec41bfa-bae1-4211-8c95-b382c0a3a9ac.jpg b/Apps/XinDianTu/Images/4ec41bfa-bae1-4211-8c95-b382c0a3a9ac.jpg new file mode 100644 index 0000000..2549bbe Binary files /dev/null and b/Apps/XinDianTu/Images/4ec41bfa-bae1-4211-8c95-b382c0a3a9ac.jpg differ diff --git a/Apps/XinDianTu/Images/4f597d61-a488-4203-ab77-812769f4685b.jpg b/Apps/XinDianTu/Images/4f597d61-a488-4203-ab77-812769f4685b.jpg new file mode 100644 index 0000000..56ac4c9 Binary files /dev/null and b/Apps/XinDianTu/Images/4f597d61-a488-4203-ab77-812769f4685b.jpg differ diff --git a/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_1.jpg b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_1.jpg new file mode 100644 index 0000000..48bd3f2 Binary files /dev/null and b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_2.jpg b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_2.jpg new file mode 100644 index 0000000..adceca4 Binary files /dev/null and b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_3.jpg b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_3.jpg new file mode 100644 index 0000000..bc50973 Binary files /dev/null and b/Apps/XinDianTu/Images/4f8c1f9a8c6cf8616f07635dfc307e68_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_1.jpg b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_1.jpg new file mode 100644 index 0000000..3b0fe52 Binary files /dev/null and b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_2.jpg b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_2.jpg new file mode 100644 index 0000000..d45fc3d Binary files /dev/null and b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_3.jpg b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_3.jpg new file mode 100644 index 0000000..0dfc938 Binary files /dev/null and b/Apps/XinDianTu/Images/5009ae88967682e03212dd2d8cf43d6b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/504bfe6d-3928-4789-b330-1a2458607e11.jpg b/Apps/XinDianTu/Images/504bfe6d-3928-4789-b330-1a2458607e11.jpg new file mode 100644 index 0000000..3862227 Binary files /dev/null and b/Apps/XinDianTu/Images/504bfe6d-3928-4789-b330-1a2458607e11.jpg differ diff --git a/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04.jpg b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04.jpg new file mode 100644 index 0000000..c91c038 Binary files /dev/null and b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04.jpg differ diff --git a/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_flag.jpg b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_flag.jpg new file mode 100644 index 0000000..62efa95 Binary files /dev/null and b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_flag.jpg differ diff --git a/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_vl.jpg b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_vl.jpg new file mode 100644 index 0000000..b9f1745 Binary files /dev/null and b/Apps/XinDianTu/Images/50c4a70a-dcc1-4355-8df2-0d7251849b04_vl.jpg differ diff --git a/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_1.jpg b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_1.jpg new file mode 100644 index 0000000..e686b4f Binary files /dev/null and b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_2.jpg b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_2.jpg new file mode 100644 index 0000000..e686b4f Binary files /dev/null and b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_3.jpg b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_3.jpg new file mode 100644 index 0000000..e686b4f Binary files /dev/null and b/Apps/XinDianTu/Images/51526d4d3ee2ba8e069732b43b6e283e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/51658f41-8b93-453d-824e-548342e786ab.jpg b/Apps/XinDianTu/Images/51658f41-8b93-453d-824e-548342e786ab.jpg new file mode 100644 index 0000000..49ccae0 Binary files /dev/null and b/Apps/XinDianTu/Images/51658f41-8b93-453d-824e-548342e786ab.jpg differ diff --git a/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.jpg b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.jpg new file mode 100644 index 0000000..7c66eda Binary files /dev/null and b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.jpg differ diff --git a/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.json b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.json new file mode 100644 index 0000000..dd55d43 --- /dev/null +++ b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d.json @@ -0,0 +1,59 @@ +{ + "image": "5192b572-f670-40bb-b80d-18d3eed3b65d.jpg", + "width": 720, + "height": 173, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 420, + 700, + 668 + ], + "click_point": [ + 121, + 469 + ] + }, + { + "id": 2, + "rect": [ + 19, + 681, + 700, + 927 + ], + "click_point": [ + 121, + 730 + ] + }, + { + "id": 3, + "rect": [ + 19, + 940, + 700, + 1188 + ], + "click_point": [ + 121, + 989 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1201, + 700, + 1374 + ], + "click_point": [ + 121, + 1235 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_flag.jpg b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_flag.jpg new file mode 100644 index 0000000..d9fbeb1 Binary files /dev/null and b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_vl.jpg b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_vl.jpg new file mode 100644 index 0000000..7957118 Binary files /dev/null and b/Apps/XinDianTu/Images/5192b572-f670-40bb-b80d-18d3eed3b65d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5198afa6-e6f8-418a-aae3-b217cef8d902.jpg b/Apps/XinDianTu/Images/5198afa6-e6f8-418a-aae3-b217cef8d902.jpg new file mode 100644 index 0000000..452efc1 Binary files /dev/null and b/Apps/XinDianTu/Images/5198afa6-e6f8-418a-aae3-b217cef8d902.jpg differ diff --git a/Apps/XinDianTu/Images/51f35e99-6b84-4a77-94a7-a838c1d70234.jpg b/Apps/XinDianTu/Images/51f35e99-6b84-4a77-94a7-a838c1d70234.jpg new file mode 100644 index 0000000..60a8af5 Binary files /dev/null and b/Apps/XinDianTu/Images/51f35e99-6b84-4a77-94a7-a838c1d70234.jpg differ diff --git a/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.jpg b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.jpg new file mode 100644 index 0000000..fd34d4f Binary files /dev/null and b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.jpg differ diff --git a/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.json b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.json new file mode 100644 index 0000000..ea9bd2c --- /dev/null +++ b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716.json @@ -0,0 +1,46 @@ +{ + "image": "5238e4d6-1af7-4632-bd91-303a10a59716.jpg", + "width": 720, + "height": 138, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 457, + 700, + 703 + ], + "click_point": [ + 121, + 506 + ] + }, + { + "id": 2, + "rect": [ + 19, + 716, + 700, + 964 + ], + "click_point": [ + 121, + 765 + ] + }, + { + "id": 3, + "rect": [ + 19, + 977, + 700, + 1223 + ], + "click_point": [ + 121, + 1026 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_flag.jpg b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_flag.jpg new file mode 100644 index 0000000..f693001 Binary files /dev/null and b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_vl.jpg b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_vl.jpg new file mode 100644 index 0000000..c81c57e Binary files /dev/null and b/Apps/XinDianTu/Images/5238e4d6-1af7-4632-bd91-303a10a59716_vl.jpg differ diff --git a/Apps/XinDianTu/Images/52a3a950-8f74-4b00-8067-33b9ecceac07.jpg b/Apps/XinDianTu/Images/52a3a950-8f74-4b00-8067-33b9ecceac07.jpg new file mode 100644 index 0000000..5a23c09 Binary files /dev/null and b/Apps/XinDianTu/Images/52a3a950-8f74-4b00-8067-33b9ecceac07.jpg differ diff --git a/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_1.jpg b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_1.jpg new file mode 100644 index 0000000..30723c5 Binary files /dev/null and b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_2.jpg b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_2.jpg new file mode 100644 index 0000000..2039150 Binary files /dev/null and b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_3.jpg b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_3.jpg new file mode 100644 index 0000000..759e34e Binary files /dev/null and b/Apps/XinDianTu/Images/52b782c5752b7d9383db5b623165dac9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.jpg b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.jpg new file mode 100644 index 0000000..2842912 Binary files /dev/null and b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.jpg differ diff --git a/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.json b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.json new file mode 100644 index 0000000..ecab551 --- /dev/null +++ b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27.json @@ -0,0 +1,46 @@ +{ + "image": "532a7670-b287-4aa9-a866-644a9d073a27.jpg", + "width": 720, + "height": 274, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 580, + 700, + 829 + ], + "click_point": [ + 121, + 629 + ] + }, + { + "id": 2, + "rect": [ + 19, + 843, + 700, + 1092 + ], + "click_point": [ + 121, + 892 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1100, + 700, + 1374 + ], + "click_point": [ + 121, + 1154 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_flag.jpg b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_flag.jpg new file mode 100644 index 0000000..469a37a Binary files /dev/null and b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_flag.jpg differ diff --git a/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_vl.jpg b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_vl.jpg new file mode 100644 index 0000000..96a5811 Binary files /dev/null and b/Apps/XinDianTu/Images/532a7670-b287-4aa9-a866-644a9d073a27_vl.jpg differ diff --git a/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_1.jpg b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_1.jpg new file mode 100644 index 0000000..87169ed Binary files /dev/null and b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_2.jpg b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_2.jpg new file mode 100644 index 0000000..adda83b Binary files /dev/null and b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_3.jpg b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_3.jpg new file mode 100644 index 0000000..42e3083 Binary files /dev/null and b/Apps/XinDianTu/Images/537ba37393b449947a195ff6d216659e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.jpg b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.jpg new file mode 100644 index 0000000..605edb7 Binary files /dev/null and b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.jpg differ diff --git a/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.json b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.json new file mode 100644 index 0000000..69561cf --- /dev/null +++ b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb.json @@ -0,0 +1,46 @@ +{ + "image": "53fd7056-4903-4286-921e-72d7d0380edb.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 572, + 700, + 821 + ], + "click_point": [ + 121, + 621 + ] + }, + { + "id": 2, + "rect": [ + 19, + 835, + 700, + 1084 + ], + "click_point": [ + 121, + 884 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1092, + 700, + 1341 + ], + "click_point": [ + 121, + 1141 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_flag.jpg b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_flag.jpg new file mode 100644 index 0000000..f42a425 Binary files /dev/null and b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_vl.jpg b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_vl.jpg new file mode 100644 index 0000000..d7b9e6e Binary files /dev/null and b/Apps/XinDianTu/Images/53fd7056-4903-4286-921e-72d7d0380edb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5412f7dc-451f-4b78-adec-9622d432ec91.jpg b/Apps/XinDianTu/Images/5412f7dc-451f-4b78-adec-9622d432ec91.jpg new file mode 100644 index 0000000..a4fd87c Binary files /dev/null and b/Apps/XinDianTu/Images/5412f7dc-451f-4b78-adec-9622d432ec91.jpg differ diff --git a/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7.jpg b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7.jpg new file mode 100644 index 0000000..bc94dd7 Binary files /dev/null and b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7.jpg differ diff --git a/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_flag.jpg b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_flag.jpg new file mode 100644 index 0000000..3d790b8 Binary files /dev/null and b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_flag.jpg differ diff --git a/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_vl.jpg b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_vl.jpg new file mode 100644 index 0000000..bb3d07a Binary files /dev/null and b/Apps/XinDianTu/Images/545699d3-92bc-4331-b0f7-18251cb103b7_vl.jpg differ diff --git a/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_1.jpg b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_1.jpg new file mode 100644 index 0000000..81f00b9 Binary files /dev/null and b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_2.jpg b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_2.jpg new file mode 100644 index 0000000..ae44b01 Binary files /dev/null and b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_3.jpg b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_3.jpg new file mode 100644 index 0000000..ae44b01 Binary files /dev/null and b/Apps/XinDianTu/Images/54b99239c85a360fb77537170495f315_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.jpg b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.jpg new file mode 100644 index 0000000..3b43880 Binary files /dev/null and b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.jpg differ diff --git a/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.json b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.json new file mode 100644 index 0000000..aa02ec8 --- /dev/null +++ b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105.json @@ -0,0 +1,46 @@ +{ + "image": "54bd17cc-5270-44da-90ed-5d2357b99105.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 500, + 700, + 751 + ], + "click_point": [ + 121, + 550 + ] + }, + { + "id": 2, + "rect": [ + 19, + 760, + 700, + 1079 + ], + "click_point": [ + 121, + 823 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1088, + 700, + 1334 + ], + "click_point": [ + 121, + 1137 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_flag.jpg b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_flag.jpg new file mode 100644 index 0000000..102c43e Binary files /dev/null and b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_flag.jpg differ diff --git a/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_vl.jpg b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_vl.jpg new file mode 100644 index 0000000..816cd4c Binary files /dev/null and b/Apps/XinDianTu/Images/54bd17cc-5270-44da-90ed-5d2357b99105_vl.jpg differ diff --git a/Apps/XinDianTu/Images/54ea18e5-a661-4d4f-9fb1-359b0570e2c9.jpg b/Apps/XinDianTu/Images/54ea18e5-a661-4d4f-9fb1-359b0570e2c9.jpg new file mode 100644 index 0000000..87c69b3 Binary files /dev/null and b/Apps/XinDianTu/Images/54ea18e5-a661-4d4f-9fb1-359b0570e2c9.jpg differ diff --git a/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865.jpg b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865.jpg new file mode 100644 index 0000000..6abfe75 Binary files /dev/null and b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865.jpg differ diff --git a/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_flag.jpg b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_flag.jpg new file mode 100644 index 0000000..c610912 Binary files /dev/null and b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_vl.jpg b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_vl.jpg new file mode 100644 index 0000000..ac466e2 Binary files /dev/null and b/Apps/XinDianTu/Images/5518e461-5105-4dc6-93d2-cdce7723d865_vl.jpg differ diff --git a/Apps/XinDianTu/Images/555944de-520a-4d9c-94f5-1d781f7f2974.jpg b/Apps/XinDianTu/Images/555944de-520a-4d9c-94f5-1d781f7f2974.jpg new file mode 100644 index 0000000..5496a48 Binary files /dev/null and b/Apps/XinDianTu/Images/555944de-520a-4d9c-94f5-1d781f7f2974.jpg differ diff --git a/Apps/XinDianTu/Images/560e1073-834c-4930-9ae9-790e0e46193f.jpg b/Apps/XinDianTu/Images/560e1073-834c-4930-9ae9-790e0e46193f.jpg new file mode 100644 index 0000000..b1a7e6c Binary files /dev/null and b/Apps/XinDianTu/Images/560e1073-834c-4930-9ae9-790e0e46193f.jpg differ diff --git a/Apps/XinDianTu/Images/565c310a-4298-4102-aff2-f722ed563c57.jpg b/Apps/XinDianTu/Images/565c310a-4298-4102-aff2-f722ed563c57.jpg new file mode 100644 index 0000000..4e35e7c Binary files /dev/null and b/Apps/XinDianTu/Images/565c310a-4298-4102-aff2-f722ed563c57.jpg differ diff --git a/Apps/XinDianTu/Images/568cd91b-df7f-4524-8df6-1c8047260d7f.jpg b/Apps/XinDianTu/Images/568cd91b-df7f-4524-8df6-1c8047260d7f.jpg new file mode 100644 index 0000000..0221345 Binary files /dev/null and b/Apps/XinDianTu/Images/568cd91b-df7f-4524-8df6-1c8047260d7f.jpg differ diff --git a/Apps/XinDianTu/Images/5707c04c-621e-4c53-8abb-cf9edab17995.jpg b/Apps/XinDianTu/Images/5707c04c-621e-4c53-8abb-cf9edab17995.jpg new file mode 100644 index 0000000..22be6cd Binary files /dev/null and b/Apps/XinDianTu/Images/5707c04c-621e-4c53-8abb-cf9edab17995.jpg differ diff --git a/Apps/XinDianTu/Images/57313579-b7e4-4e65-a2ff-bf8e2b362bbb.jpg b/Apps/XinDianTu/Images/57313579-b7e4-4e65-a2ff-bf8e2b362bbb.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/57313579-b7e4-4e65-a2ff-bf8e2b362bbb.jpg differ diff --git a/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313.jpg b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313.jpg new file mode 100644 index 0000000..5a924c7 Binary files /dev/null and b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313.jpg differ diff --git a/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_flag.jpg b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_flag.jpg new file mode 100644 index 0000000..e8ee05d Binary files /dev/null and b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_flag.jpg differ diff --git a/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_vl.jpg b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_vl.jpg new file mode 100644 index 0000000..e764609 Binary files /dev/null and b/Apps/XinDianTu/Images/575bbdd5-7d3c-4e75-afaa-625637919313_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5776a58c-22ce-42e8-85e2-8bfa326b40a9.jpg b/Apps/XinDianTu/Images/5776a58c-22ce-42e8-85e2-8bfa326b40a9.jpg new file mode 100644 index 0000000..484ed53 Binary files /dev/null and b/Apps/XinDianTu/Images/5776a58c-22ce-42e8-85e2-8bfa326b40a9.jpg differ diff --git a/Apps/XinDianTu/Images/5782125e-2487-44df-bb3c-fc8b54643cec.jpg b/Apps/XinDianTu/Images/5782125e-2487-44df-bb3c-fc8b54643cec.jpg new file mode 100644 index 0000000..19d251c Binary files /dev/null and b/Apps/XinDianTu/Images/5782125e-2487-44df-bb3c-fc8b54643cec.jpg differ diff --git a/Apps/XinDianTu/Images/57852613-215c-40a1-82bf-e067581df4de.jpg b/Apps/XinDianTu/Images/57852613-215c-40a1-82bf-e067581df4de.jpg new file mode 100644 index 0000000..14fc4ce Binary files /dev/null and b/Apps/XinDianTu/Images/57852613-215c-40a1-82bf-e067581df4de.jpg differ diff --git a/Apps/XinDianTu/Images/578f3851-d017-4f91-b1f7-f766cf6a40f7.jpg b/Apps/XinDianTu/Images/578f3851-d017-4f91-b1f7-f766cf6a40f7.jpg new file mode 100644 index 0000000..edc8b88 Binary files /dev/null and b/Apps/XinDianTu/Images/578f3851-d017-4f91-b1f7-f766cf6a40f7.jpg differ diff --git a/Apps/XinDianTu/Images/5799aa9f-998d-4e1b-a9c7-86f35f628753.jpg b/Apps/XinDianTu/Images/5799aa9f-998d-4e1b-a9c7-86f35f628753.jpg new file mode 100644 index 0000000..9a53a51 Binary files /dev/null and b/Apps/XinDianTu/Images/5799aa9f-998d-4e1b-a9c7-86f35f628753.jpg differ diff --git a/Apps/XinDianTu/Images/57a21f0f-ac29-4077-ba7b-7ae464ba1459.jpg b/Apps/XinDianTu/Images/57a21f0f-ac29-4077-ba7b-7ae464ba1459.jpg new file mode 100644 index 0000000..441a1a3 Binary files /dev/null and b/Apps/XinDianTu/Images/57a21f0f-ac29-4077-ba7b-7ae464ba1459.jpg differ diff --git a/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.jpg b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.jpg new file mode 100644 index 0000000..ede6bca Binary files /dev/null and b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.jpg differ diff --git a/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.json b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.json new file mode 100644 index 0000000..f0ac425 --- /dev/null +++ b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5.json @@ -0,0 +1,46 @@ +{ + "image": "57d056ba-72db-436b-9add-6aa6b9a04cd5.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 545, + 700, + 791 + ], + "click_point": [ + 121, + 594 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1052 + ], + "click_point": [ + 121, + 853 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1065, + 700, + 1311 + ], + "click_point": [ + 121, + 1114 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_flag.jpg b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_flag.jpg new file mode 100644 index 0000000..37a5888 Binary files /dev/null and b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_vl.jpg b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_vl.jpg new file mode 100644 index 0000000..f0e8a40 Binary files /dev/null and b/Apps/XinDianTu/Images/57d056ba-72db-436b-9add-6aa6b9a04cd5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/580509b4-9a59-45ae-9065-bcc42aa6a043.jpg b/Apps/XinDianTu/Images/580509b4-9a59-45ae-9065-bcc42aa6a043.jpg new file mode 100644 index 0000000..e3111d4 Binary files /dev/null and b/Apps/XinDianTu/Images/580509b4-9a59-45ae-9065-bcc42aa6a043.jpg differ diff --git a/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_1.jpg b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_1.jpg new file mode 100644 index 0000000..70769a0 Binary files /dev/null and b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_2.jpg b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_2.jpg new file mode 100644 index 0000000..28c28be Binary files /dev/null and b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_3.jpg b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_3.jpg new file mode 100644 index 0000000..5a97390 Binary files /dev/null and b/Apps/XinDianTu/Images/584f40a3a3b0b1eb8f92468d8b094c91_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/58907250-cb8e-4413-afa0-0e0da3c614eb.jpg b/Apps/XinDianTu/Images/58907250-cb8e-4413-afa0-0e0da3c614eb.jpg new file mode 100644 index 0000000..1289995 Binary files /dev/null and b/Apps/XinDianTu/Images/58907250-cb8e-4413-afa0-0e0da3c614eb.jpg differ diff --git a/Apps/XinDianTu/Images/58b7debc-33db-49c8-a83b-bf8ca016cde5.jpg b/Apps/XinDianTu/Images/58b7debc-33db-49c8-a83b-bf8ca016cde5.jpg new file mode 100644 index 0000000..565c548 Binary files /dev/null and b/Apps/XinDianTu/Images/58b7debc-33db-49c8-a83b-bf8ca016cde5.jpg differ diff --git a/Apps/XinDianTu/Images/59265863-2f20-4c90-b800-8915fe445c6e.jpg b/Apps/XinDianTu/Images/59265863-2f20-4c90-b800-8915fe445c6e.jpg new file mode 100644 index 0000000..d91067e Binary files /dev/null and b/Apps/XinDianTu/Images/59265863-2f20-4c90-b800-8915fe445c6e.jpg differ diff --git a/Apps/XinDianTu/Images/59371d3e-6f7f-4003-b2fa-3d6e7fbda9fc.jpg b/Apps/XinDianTu/Images/59371d3e-6f7f-4003-b2fa-3d6e7fbda9fc.jpg new file mode 100644 index 0000000..2ad26f4 Binary files /dev/null and b/Apps/XinDianTu/Images/59371d3e-6f7f-4003-b2fa-3d6e7fbda9fc.jpg differ diff --git a/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.jpg b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.jpg new file mode 100644 index 0000000..d26978c Binary files /dev/null and b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.jpg differ diff --git a/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.json b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.json new file mode 100644 index 0000000..7f436d3 --- /dev/null +++ b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a.json @@ -0,0 +1,59 @@ +{ + "image": "59375d5d-a7e2-45b4-9556-04a96fb4169a.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 599 + ], + "click_point": [ + 121, + 443 + ] + }, + { + "id": 2, + "rect": [ + 19, + 608, + 700, + 808 + ], + "click_point": [ + 121, + 648 + ] + }, + { + "id": 3, + "rect": [ + 19, + 817, + 700, + 1068 + ], + "click_point": [ + 121, + 867 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1082, + 700, + 1328 + ], + "click_point": [ + 121, + 1131 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_flag.jpg b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_flag.jpg new file mode 100644 index 0000000..9b4d657 Binary files /dev/null and b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_vl.jpg b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_vl.jpg new file mode 100644 index 0000000..946558a Binary files /dev/null and b/Apps/XinDianTu/Images/59375d5d-a7e2-45b4-9556-04a96fb4169a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/59c35a64-3dc9-4686-9876-3026f832e470.jpg b/Apps/XinDianTu/Images/59c35a64-3dc9-4686-9876-3026f832e470.jpg new file mode 100644 index 0000000..3457a34 Binary files /dev/null and b/Apps/XinDianTu/Images/59c35a64-3dc9-4686-9876-3026f832e470.jpg differ diff --git a/Apps/XinDianTu/Images/59e0fae4-e79e-4dbb-af1f-1c0fff0a8760.jpg b/Apps/XinDianTu/Images/59e0fae4-e79e-4dbb-af1f-1c0fff0a8760.jpg new file mode 100644 index 0000000..f6c776b Binary files /dev/null and b/Apps/XinDianTu/Images/59e0fae4-e79e-4dbb-af1f-1c0fff0a8760.jpg differ diff --git a/Apps/XinDianTu/Images/59f4b853-4d71-4052-b850-02813391bee7.jpg b/Apps/XinDianTu/Images/59f4b853-4d71-4052-b850-02813391bee7.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/59f4b853-4d71-4052-b850-02813391bee7.jpg differ diff --git a/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023.jpg b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023.jpg new file mode 100644 index 0000000..7f516cc Binary files /dev/null and b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023.jpg differ diff --git a/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_flag.jpg b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_flag.jpg new file mode 100644 index 0000000..3e37bb8 Binary files /dev/null and b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_vl.jpg b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_vl.jpg new file mode 100644 index 0000000..8b7a668 Binary files /dev/null and b/Apps/XinDianTu/Images/5c22b605-3d66-4853-b0fa-ee818cc19023_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5c40a941-408e-4d1d-83dd-14c718ab23f5.jpg b/Apps/XinDianTu/Images/5c40a941-408e-4d1d-83dd-14c718ab23f5.jpg new file mode 100644 index 0000000..6fefd1b Binary files /dev/null and b/Apps/XinDianTu/Images/5c40a941-408e-4d1d-83dd-14c718ab23f5.jpg differ diff --git a/Apps/XinDianTu/Images/5c99b782-7ed9-440d-94e5-a1d9e9f1665d.jpg b/Apps/XinDianTu/Images/5c99b782-7ed9-440d-94e5-a1d9e9f1665d.jpg new file mode 100644 index 0000000..db0cda0 Binary files /dev/null and b/Apps/XinDianTu/Images/5c99b782-7ed9-440d-94e5-a1d9e9f1665d.jpg differ diff --git a/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_1.jpg b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_1.jpg new file mode 100644 index 0000000..b4413df Binary files /dev/null and b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_2.jpg b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_2.jpg new file mode 100644 index 0000000..339949a Binary files /dev/null and b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_3.jpg b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_3.jpg new file mode 100644 index 0000000..26b9de9 Binary files /dev/null and b/Apps/XinDianTu/Images/5c9c4ffcc37e88e41b6f5c5b54eb5e5c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5ccb9e28-c4d5-40c2-85bb-daae2eae37da.jpg b/Apps/XinDianTu/Images/5ccb9e28-c4d5-40c2-85bb-daae2eae37da.jpg new file mode 100644 index 0000000..aac7569 Binary files /dev/null and b/Apps/XinDianTu/Images/5ccb9e28-c4d5-40c2-85bb-daae2eae37da.jpg differ diff --git a/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_1.jpg b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_1.jpg new file mode 100644 index 0000000..475bb2c Binary files /dev/null and b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_2.jpg b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_2.jpg new file mode 100644 index 0000000..36becd4 Binary files /dev/null and b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_3.jpg b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_3.jpg new file mode 100644 index 0000000..6d1daeb Binary files /dev/null and b/Apps/XinDianTu/Images/5dd24dc2c6b055635b9611b423ca4c05_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5ddd0baa-dd85-474c-b313-a49437cc5103.jpg b/Apps/XinDianTu/Images/5ddd0baa-dd85-474c-b313-a49437cc5103.jpg new file mode 100644 index 0000000..26c6455 Binary files /dev/null and b/Apps/XinDianTu/Images/5ddd0baa-dd85-474c-b313-a49437cc5103.jpg differ diff --git a/Apps/XinDianTu/Images/5e0e15de-c084-4ef0-a3c6-1c40fb3dbcd2.jpg b/Apps/XinDianTu/Images/5e0e15de-c084-4ef0-a3c6-1c40fb3dbcd2.jpg new file mode 100644 index 0000000..5d733a4 Binary files /dev/null and b/Apps/XinDianTu/Images/5e0e15de-c084-4ef0-a3c6-1c40fb3dbcd2.jpg differ diff --git a/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_1.jpg b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_1.jpg new file mode 100644 index 0000000..db9b195 Binary files /dev/null and b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_2.jpg b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_2.jpg new file mode 100644 index 0000000..e104f61 Binary files /dev/null and b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_3.jpg b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_3.jpg new file mode 100644 index 0000000..bd5d704 Binary files /dev/null and b/Apps/XinDianTu/Images/5e18eb3c67fc8cfcfb6c8d99ce073c61_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_1.jpg b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_1.jpg new file mode 100644 index 0000000..53dd7df Binary files /dev/null and b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_2.jpg b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_2.jpg new file mode 100644 index 0000000..36b4ae9 Binary files /dev/null and b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_3.jpg b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_3.jpg new file mode 100644 index 0000000..29896fd Binary files /dev/null and b/Apps/XinDianTu/Images/5e2f6538827b92d40263cc52ffdda4e3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.jpg b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.jpg new file mode 100644 index 0000000..a9c6e7b Binary files /dev/null and b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.jpg differ diff --git a/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.json b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.json new file mode 100644 index 0000000..1684a5a --- /dev/null +++ b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e.json @@ -0,0 +1,59 @@ +{ + "image": "5ebecda3-75c6-480c-8466-789a1af09d1e.jpg", + "width": 720, + "height": 205, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 640 + ], + "click_point": [ + 121, + 451 + ] + }, + { + "id": 2, + "rect": [ + 19, + 649, + 700, + 900 + ], + "click_point": [ + 121, + 699 + ] + }, + { + "id": 3, + "rect": [ + 19, + 914, + 700, + 1160 + ], + "click_point": [ + 121, + 963 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1169, + 700, + 1374 + ], + "click_point": [ + 121, + 1210 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_flag.jpg b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_flag.jpg new file mode 100644 index 0000000..89e42bc Binary files /dev/null and b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_vl.jpg b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_vl.jpg new file mode 100644 index 0000000..106dcec Binary files /dev/null and b/Apps/XinDianTu/Images/5ebecda3-75c6-480c-8466-789a1af09d1e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5ed5b89f-7bda-4415-89f4-b60c54634f1b.jpg b/Apps/XinDianTu/Images/5ed5b89f-7bda-4415-89f4-b60c54634f1b.jpg new file mode 100644 index 0000000..7e2dd8a Binary files /dev/null and b/Apps/XinDianTu/Images/5ed5b89f-7bda-4415-89f4-b60c54634f1b.jpg differ diff --git a/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_1.jpg b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_1.jpg new file mode 100644 index 0000000..cdc9cc2 Binary files /dev/null and b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_2.jpg b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_2.jpg new file mode 100644 index 0000000..d3e766f Binary files /dev/null and b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_3.jpg b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_3.jpg new file mode 100644 index 0000000..25769bf Binary files /dev/null and b/Apps/XinDianTu/Images/5ef7978e956367bb157db8494b629a70_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_1.jpg b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_1.jpg new file mode 100644 index 0000000..43d22bf Binary files /dev/null and b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_2.jpg b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_2.jpg new file mode 100644 index 0000000..94128f4 Binary files /dev/null and b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_3.jpg b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_3.jpg new file mode 100644 index 0000000..f40a50e Binary files /dev/null and b/Apps/XinDianTu/Images/5f217e4e89e271b82821342409c1629c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_1.jpg b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_1.jpg new file mode 100644 index 0000000..0fa38f1 Binary files /dev/null and b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_2.jpg b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_2.jpg new file mode 100644 index 0000000..78b2779 Binary files /dev/null and b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_3.jpg b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_3.jpg new file mode 100644 index 0000000..6a5f369 Binary files /dev/null and b/Apps/XinDianTu/Images/5f33f912f80e5e8e3bea3d5d39efb7d5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.jpg b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.jpg new file mode 100644 index 0000000..3c45da9 Binary files /dev/null and b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.jpg differ diff --git a/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.json b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.json new file mode 100644 index 0000000..2272a8a --- /dev/null +++ b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6.json @@ -0,0 +1,46 @@ +{ + "image": "5f412db9-dc00-469f-b21e-d384083adeb6.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 460, + 700, + 734 + ], + "click_point": [ + 121, + 514 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_flag.jpg b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_flag.jpg new file mode 100644 index 0000000..9bbdbca Binary files /dev/null and b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_vl.jpg b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_vl.jpg new file mode 100644 index 0000000..4b0481d Binary files /dev/null and b/Apps/XinDianTu/Images/5f412db9-dc00-469f-b21e-d384083adeb6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_1.jpg b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_1.jpg new file mode 100644 index 0000000..386d1d2 Binary files /dev/null and b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_2.jpg b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_2.jpg new file mode 100644 index 0000000..d29b75f Binary files /dev/null and b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_3.jpg b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_3.jpg new file mode 100644 index 0000000..426b34f Binary files /dev/null and b/Apps/XinDianTu/Images/5f50fcaa5622304f2a37a87b8f2d35d4_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_1.jpg b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_1.jpg new file mode 100644 index 0000000..26a1ed7 Binary files /dev/null and b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_2.jpg b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_2.jpg new file mode 100644 index 0000000..dfa60df Binary files /dev/null and b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_3.jpg b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_3.jpg new file mode 100644 index 0000000..f826286 Binary files /dev/null and b/Apps/XinDianTu/Images/5f86963820ac06cb25a05cd1f1e129e0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/5fa20c06-6727-484a-b0e1-b4fcbf317ecc.jpg b/Apps/XinDianTu/Images/5fa20c06-6727-484a-b0e1-b4fcbf317ecc.jpg new file mode 100644 index 0000000..0079cdf Binary files /dev/null and b/Apps/XinDianTu/Images/5fa20c06-6727-484a-b0e1-b4fcbf317ecc.jpg differ diff --git a/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_1.jpg b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_1.jpg new file mode 100644 index 0000000..722d0dc Binary files /dev/null and b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_2.jpg b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_2.jpg new file mode 100644 index 0000000..67808f6 Binary files /dev/null and b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_3.jpg b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_3.jpg new file mode 100644 index 0000000..3e5c644 Binary files /dev/null and b/Apps/XinDianTu/Images/60244607e4c6d8a25b31ec39b9c529cc_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6031df7f-fd16-4219-9c63-fad63d1fd167.jpg b/Apps/XinDianTu/Images/6031df7f-fd16-4219-9c63-fad63d1fd167.jpg new file mode 100644 index 0000000..9b43b68 Binary files /dev/null and b/Apps/XinDianTu/Images/6031df7f-fd16-4219-9c63-fad63d1fd167.jpg differ diff --git a/Apps/XinDianTu/Images/60557759-92f7-4870-991b-38b65e3c43b2.jpg b/Apps/XinDianTu/Images/60557759-92f7-4870-991b-38b65e3c43b2.jpg new file mode 100644 index 0000000..81a5836 Binary files /dev/null and b/Apps/XinDianTu/Images/60557759-92f7-4870-991b-38b65e3c43b2.jpg differ diff --git a/Apps/XinDianTu/Images/60817265-bf2f-42c3-9a29-bb41ce151209.jpg b/Apps/XinDianTu/Images/60817265-bf2f-42c3-9a29-bb41ce151209.jpg new file mode 100644 index 0000000..88623e2 Binary files /dev/null and b/Apps/XinDianTu/Images/60817265-bf2f-42c3-9a29-bb41ce151209.jpg differ diff --git a/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e.jpg b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e.jpg new file mode 100644 index 0000000..719a41b Binary files /dev/null and b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e.jpg differ diff --git a/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_flag.jpg b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_flag.jpg new file mode 100644 index 0000000..f8a196c Binary files /dev/null and b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_vl.jpg b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_vl.jpg new file mode 100644 index 0000000..0841aa8 Binary files /dev/null and b/Apps/XinDianTu/Images/609fadba-ff2c-4e1f-9635-d58afaa1f01e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.jpg b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.jpg new file mode 100644 index 0000000..9496ac7 Binary files /dev/null and b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.jpg differ diff --git a/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.json b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.json new file mode 100644 index 0000000..22c4bab --- /dev/null +++ b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c.json @@ -0,0 +1,33 @@ +{ + "image": "60b36f47-550b-4495-86a1-825492684d5c.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_flag.jpg b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_flag.jpg new file mode 100644 index 0000000..22775a6 Binary files /dev/null and b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_vl.jpg b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_vl.jpg new file mode 100644 index 0000000..9fe7143 Binary files /dev/null and b/Apps/XinDianTu/Images/60b36f47-550b-4495-86a1-825492684d5c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_1.jpg b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_1.jpg new file mode 100644 index 0000000..5dc0b11 Binary files /dev/null and b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_2.jpg b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_2.jpg new file mode 100644 index 0000000..982f9a6 Binary files /dev/null and b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_3.jpg b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_3.jpg new file mode 100644 index 0000000..279de6a Binary files /dev/null and b/Apps/XinDianTu/Images/60d912fc3427f2eb4ee5feaee7d48335_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/60e43882-4d1e-44f4-a915-4422a6791ffe.jpg b/Apps/XinDianTu/Images/60e43882-4d1e-44f4-a915-4422a6791ffe.jpg new file mode 100644 index 0000000..b460351 Binary files /dev/null and b/Apps/XinDianTu/Images/60e43882-4d1e-44f4-a915-4422a6791ffe.jpg differ diff --git a/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832.jpg b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832.jpg new file mode 100644 index 0000000..1540448 Binary files /dev/null and b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832.jpg differ diff --git a/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_flag.jpg b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_flag.jpg new file mode 100644 index 0000000..60c5004 Binary files /dev/null and b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_flag.jpg differ diff --git a/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_vl.jpg b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_vl.jpg new file mode 100644 index 0000000..0485262 Binary files /dev/null and b/Apps/XinDianTu/Images/615f5dd8-9f9c-46b8-b4d1-d3b37cb6f832_vl.jpg differ diff --git a/Apps/XinDianTu/Images/61654888-9e33-4c17-b1fe-976c0bf64b81.jpg b/Apps/XinDianTu/Images/61654888-9e33-4c17-b1fe-976c0bf64b81.jpg new file mode 100644 index 0000000..c7c566d Binary files /dev/null and b/Apps/XinDianTu/Images/61654888-9e33-4c17-b1fe-976c0bf64b81.jpg differ diff --git a/Apps/XinDianTu/Images/621d5cee-0c96-4348-8b8f-b87f2f602346.jpg b/Apps/XinDianTu/Images/621d5cee-0c96-4348-8b8f-b87f2f602346.jpg new file mode 100644 index 0000000..62a0292 Binary files /dev/null and b/Apps/XinDianTu/Images/621d5cee-0c96-4348-8b8f-b87f2f602346.jpg differ diff --git a/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.jpg b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.jpg new file mode 100644 index 0000000..25e455b Binary files /dev/null and b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.jpg differ diff --git a/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.json b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.json new file mode 100644 index 0000000..1dddad2 --- /dev/null +++ b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.json @@ -0,0 +1,46 @@ +{ + "image": "625e1cbe-52b5-4e1b-80a8-5ebeda9ea089.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 515, + 700, + 764 + ], + "click_point": [ + 121, + 564 + ] + }, + { + "id": 2, + "rect": [ + 19, + 770, + 700, + 1037 + ], + "click_point": [ + 121, + 823 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1051, + 700, + 1300 + ], + "click_point": [ + 121, + 1100 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_flag.jpg b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_flag.jpg new file mode 100644 index 0000000..a182969 Binary files /dev/null and b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_flag.jpg differ diff --git a/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_vl.jpg b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_vl.jpg new file mode 100644 index 0000000..11764af Binary files /dev/null and b/Apps/XinDianTu/Images/625e1cbe-52b5-4e1b-80a8-5ebeda9ea089_vl.jpg differ diff --git a/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.jpg b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.jpg new file mode 100644 index 0000000..fff17b9 Binary files /dev/null and b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.jpg differ diff --git a/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.json b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.json new file mode 100644 index 0000000..60d6f8c --- /dev/null +++ b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c.json @@ -0,0 +1,59 @@ +{ + "image": "625e53c3-fefb-4614-b301-dc803df3ab1c.jpg", + "width": 720, + "height": 218, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 628 + ], + "click_point": [ + 121, + 448 + ] + }, + { + "id": 2, + "rect": [ + 19, + 636, + 700, + 885 + ], + "click_point": [ + 121, + 685 + ] + }, + { + "id": 3, + "rect": [ + 19, + 899, + 700, + 1148 + ], + "click_point": [ + 121, + 948 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1156, + 700, + 1374 + ], + "click_point": [ + 121, + 1199 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_flag.jpg b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_flag.jpg new file mode 100644 index 0000000..e2c6497 Binary files /dev/null and b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_vl.jpg b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_vl.jpg new file mode 100644 index 0000000..5203e84 Binary files /dev/null and b/Apps/XinDianTu/Images/625e53c3-fefb-4614-b301-dc803df3ab1c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/62b32a22-dbce-4baa-9e0b-47929a2a10ec.jpg b/Apps/XinDianTu/Images/62b32a22-dbce-4baa-9e0b-47929a2a10ec.jpg new file mode 100644 index 0000000..7688760 Binary files /dev/null and b/Apps/XinDianTu/Images/62b32a22-dbce-4baa-9e0b-47929a2a10ec.jpg differ diff --git a/Apps/XinDianTu/Images/62cc0ada-1eba-45e5-8d35-63eea8a5f864.jpg b/Apps/XinDianTu/Images/62cc0ada-1eba-45e5-8d35-63eea8a5f864.jpg new file mode 100644 index 0000000..45fdd40 Binary files /dev/null and b/Apps/XinDianTu/Images/62cc0ada-1eba-45e5-8d35-63eea8a5f864.jpg differ diff --git a/Apps/XinDianTu/Images/62f3ac61-24cf-4c4e-a8ac-7091dce8abc9.jpg b/Apps/XinDianTu/Images/62f3ac61-24cf-4c4e-a8ac-7091dce8abc9.jpg new file mode 100644 index 0000000..be10920 Binary files /dev/null and b/Apps/XinDianTu/Images/62f3ac61-24cf-4c4e-a8ac-7091dce8abc9.jpg differ diff --git a/Apps/XinDianTu/Images/632291ed-0c21-4d38-a68e-f6f972166ac7.jpg b/Apps/XinDianTu/Images/632291ed-0c21-4d38-a68e-f6f972166ac7.jpg new file mode 100644 index 0000000..2cb1442 Binary files /dev/null and b/Apps/XinDianTu/Images/632291ed-0c21-4d38-a68e-f6f972166ac7.jpg differ diff --git a/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.jpg b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.jpg new file mode 100644 index 0000000..e737106 Binary files /dev/null and b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.jpg differ diff --git a/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.json b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.json new file mode 100644 index 0000000..8687200 --- /dev/null +++ b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a.json @@ -0,0 +1,46 @@ +{ + "image": "63785f7c-a11a-4a3b-8237-6fb78cfb344a.jpg", + "width": 720, + "height": 275, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 579, + 700, + 828 + ], + "click_point": [ + 121, + 628 + ] + }, + { + "id": 2, + "rect": [ + 19, + 836, + 700, + 1085 + ], + "click_point": [ + 121, + 885 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1099, + 700, + 1374 + ], + "click_point": [ + 121, + 1154 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_flag.jpg b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_flag.jpg new file mode 100644 index 0000000..7bc0b2e Binary files /dev/null and b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_vl.jpg b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_vl.jpg new file mode 100644 index 0000000..f525227 Binary files /dev/null and b/Apps/XinDianTu/Images/63785f7c-a11a-4a3b-8237-6fb78cfb344a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6385a6e5-f5b4-437f-9559-3d7857f85b5b.jpg b/Apps/XinDianTu/Images/6385a6e5-f5b4-437f-9559-3d7857f85b5b.jpg new file mode 100644 index 0000000..2c67a64 Binary files /dev/null and b/Apps/XinDianTu/Images/6385a6e5-f5b4-437f-9559-3d7857f85b5b.jpg differ diff --git a/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9.jpg b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9.jpg new file mode 100644 index 0000000..3e1c406 Binary files /dev/null and b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9.jpg differ diff --git a/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_flag.jpg b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_flag.jpg new file mode 100644 index 0000000..230d119 Binary files /dev/null and b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_vl.jpg b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_vl.jpg new file mode 100644 index 0000000..bdc2f89 Binary files /dev/null and b/Apps/XinDianTu/Images/63921e5d-1cd3-414c-b2f6-d9071d2040a9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/63e10178-56c2-4a3c-a6dc-10596508cd60.jpg b/Apps/XinDianTu/Images/63e10178-56c2-4a3c-a6dc-10596508cd60.jpg new file mode 100644 index 0000000..66ff00a Binary files /dev/null and b/Apps/XinDianTu/Images/63e10178-56c2-4a3c-a6dc-10596508cd60.jpg differ diff --git a/Apps/XinDianTu/Images/6406cf94-e8da-432b-81c6-ab00e92b5d0d.jpg b/Apps/XinDianTu/Images/6406cf94-e8da-432b-81c6-ab00e92b5d0d.jpg new file mode 100644 index 0000000..bf041a7 Binary files /dev/null and b/Apps/XinDianTu/Images/6406cf94-e8da-432b-81c6-ab00e92b5d0d.jpg differ diff --git a/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_1.jpg b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_1.jpg new file mode 100644 index 0000000..4ab2fcc Binary files /dev/null and b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_2.jpg b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_2.jpg new file mode 100644 index 0000000..1d7b0d9 Binary files /dev/null and b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_3.jpg b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_3.jpg new file mode 100644 index 0000000..2a02379 Binary files /dev/null and b/Apps/XinDianTu/Images/64e50221ec0b8a9c5104778efe3db226_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.jpg b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.jpg new file mode 100644 index 0000000..630ea1c Binary files /dev/null and b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.jpg differ diff --git a/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.json b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.json new file mode 100644 index 0000000..9a7d67d --- /dev/null +++ b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179.json @@ -0,0 +1,59 @@ +{ + "image": "65297e0b-c19a-4015-b9a9-c85173d80179.jpg", + "width": 720, + "height": 162, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 582 + ], + "click_point": [ + 121, + 439 + ] + }, + { + "id": 2, + "rect": [ + 19, + 596, + 700, + 910 + ], + "click_point": [ + 121, + 658 + ] + }, + { + "id": 3, + "rect": [ + 19, + 924, + 700, + 1198 + ], + "click_point": [ + 121, + 978 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1212, + 700, + 1374 + ], + "click_point": [ + 121, + 1244 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_flag.jpg b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_flag.jpg new file mode 100644 index 0000000..93ebce2 Binary files /dev/null and b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_flag.jpg differ diff --git a/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_vl.jpg b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_vl.jpg new file mode 100644 index 0000000..e94c30b Binary files /dev/null and b/Apps/XinDianTu/Images/65297e0b-c19a-4015-b9a9-c85173d80179_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6546fc1f-48c3-43bb-b97c-86019ddd5e20.jpg b/Apps/XinDianTu/Images/6546fc1f-48c3-43bb-b97c-86019ddd5e20.jpg new file mode 100644 index 0000000..690a163 Binary files /dev/null and b/Apps/XinDianTu/Images/6546fc1f-48c3-43bb-b97c-86019ddd5e20.jpg differ diff --git a/Apps/XinDianTu/Images/6598a6d3-d6f4-49dc-8694-1aedebc2b03d.jpg b/Apps/XinDianTu/Images/6598a6d3-d6f4-49dc-8694-1aedebc2b03d.jpg new file mode 100644 index 0000000..b11be71 Binary files /dev/null and b/Apps/XinDianTu/Images/6598a6d3-d6f4-49dc-8694-1aedebc2b03d.jpg differ diff --git a/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_1.jpg b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_1.jpg new file mode 100644 index 0000000..7d7045d Binary files /dev/null and b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_2.jpg b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_2.jpg new file mode 100644 index 0000000..7d22e38 Binary files /dev/null and b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_3.jpg b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_3.jpg new file mode 100644 index 0000000..6812749 Binary files /dev/null and b/Apps/XinDianTu/Images/65abb2a91f474d37cc9027527806ad6a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/65ac9202-a8be-4d28-9177-e26cd4376d5b.jpg b/Apps/XinDianTu/Images/65ac9202-a8be-4d28-9177-e26cd4376d5b.jpg new file mode 100644 index 0000000..f16a99b Binary files /dev/null and b/Apps/XinDianTu/Images/65ac9202-a8be-4d28-9177-e26cd4376d5b.jpg differ diff --git a/Apps/XinDianTu/Images/65b30772-046e-436c-8266-2d7b15c5d4f4.jpg b/Apps/XinDianTu/Images/65b30772-046e-436c-8266-2d7b15c5d4f4.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/65b30772-046e-436c-8266-2d7b15c5d4f4.jpg differ diff --git a/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_1.jpg b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_1.jpg new file mode 100644 index 0000000..aedf802 Binary files /dev/null and b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_2.jpg b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_2.jpg new file mode 100644 index 0000000..6814ece Binary files /dev/null and b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_3.jpg b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_3.jpg new file mode 100644 index 0000000..d996572 Binary files /dev/null and b/Apps/XinDianTu/Images/660f62504b97da46a83411ace99db252_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_1.jpg b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_1.jpg new file mode 100644 index 0000000..a58bf11 Binary files /dev/null and b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_2.jpg b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_2.jpg new file mode 100644 index 0000000..610e32c Binary files /dev/null and b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_3.jpg b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_3.jpg new file mode 100644 index 0000000..387cf8e Binary files /dev/null and b/Apps/XinDianTu/Images/665295d8daec3d0b550bf45582e87936_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/669357ab-9517-4b69-88c7-d6d9b6522b0b.jpg b/Apps/XinDianTu/Images/669357ab-9517-4b69-88c7-d6d9b6522b0b.jpg new file mode 100644 index 0000000..33b914a Binary files /dev/null and b/Apps/XinDianTu/Images/669357ab-9517-4b69-88c7-d6d9b6522b0b.jpg differ diff --git a/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e.jpg b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e.jpg new file mode 100644 index 0000000..db7fa18 Binary files /dev/null and b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e.jpg differ diff --git a/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_flag.jpg b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_flag.jpg new file mode 100644 index 0000000..4f16412 Binary files /dev/null and b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_vl.jpg b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_vl.jpg new file mode 100644 index 0000000..9db772f Binary files /dev/null and b/Apps/XinDianTu/Images/66abce88-68b4-469a-bfcb-e31d0f59d96e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb.jpg b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb.jpg new file mode 100644 index 0000000..b5c4448 Binary files /dev/null and b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb.jpg differ diff --git a/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_flag.jpg b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_flag.jpg new file mode 100644 index 0000000..e917ac0 Binary files /dev/null and b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_vl.jpg b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_vl.jpg new file mode 100644 index 0000000..5d27fae Binary files /dev/null and b/Apps/XinDianTu/Images/674840d1-609d-4c39-8b45-e63119df52fb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816.jpg b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816.jpg new file mode 100644 index 0000000..939eef2 Binary files /dev/null and b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816.jpg differ diff --git a/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_flag.jpg b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_flag.jpg new file mode 100644 index 0000000..1e93afb Binary files /dev/null and b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_flag.jpg differ diff --git a/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_vl.jpg b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_vl.jpg new file mode 100644 index 0000000..cd8bdcb Binary files /dev/null and b/Apps/XinDianTu/Images/67583fa2-806a-4758-b90b-4d0837ffe816_vl.jpg differ diff --git a/Apps/XinDianTu/Images/679fe50f-5310-41a4-bcaa-8e4919b4b272.jpg b/Apps/XinDianTu/Images/679fe50f-5310-41a4-bcaa-8e4919b4b272.jpg new file mode 100644 index 0000000..103e27a Binary files /dev/null and b/Apps/XinDianTu/Images/679fe50f-5310-41a4-bcaa-8e4919b4b272.jpg differ diff --git a/Apps/XinDianTu/Images/67c80638-e7a5-4a2b-8149-6b47e507a4f1.jpg b/Apps/XinDianTu/Images/67c80638-e7a5-4a2b-8149-6b47e507a4f1.jpg new file mode 100644 index 0000000..2c253ea Binary files /dev/null and b/Apps/XinDianTu/Images/67c80638-e7a5-4a2b-8149-6b47e507a4f1.jpg differ diff --git a/Apps/XinDianTu/Images/67d61e1d-5309-44aa-b0e9-204da34c1df0.jpg b/Apps/XinDianTu/Images/67d61e1d-5309-44aa-b0e9-204da34c1df0.jpg new file mode 100644 index 0000000..a5f0beb Binary files /dev/null and b/Apps/XinDianTu/Images/67d61e1d-5309-44aa-b0e9-204da34c1df0.jpg differ diff --git a/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.jpg b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.jpg new file mode 100644 index 0000000..6dd84cb Binary files /dev/null and b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.jpg differ diff --git a/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.json b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.json new file mode 100644 index 0000000..4eacbb7 --- /dev/null +++ b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6.json @@ -0,0 +1,46 @@ +{ + "image": "67d692e9-3a96-450c-bc04-73e41b77b3b6.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 529, + 700, + 775 + ], + "click_point": [ + 121, + 578 + ] + }, + { + "id": 2, + "rect": [ + 19, + 788, + 700, + 1036 + ], + "click_point": [ + 121, + 837 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1049, + 700, + 1295 + ], + "click_point": [ + 121, + 1098 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_flag.jpg b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_flag.jpg new file mode 100644 index 0000000..dcee0eb Binary files /dev/null and b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_vl.jpg b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_vl.jpg new file mode 100644 index 0000000..f9871ce Binary files /dev/null and b/Apps/XinDianTu/Images/67d692e9-3a96-450c-bc04-73e41b77b3b6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/67f1b971-0b4d-4db0-bcbf-85cc48a644e4.jpg b/Apps/XinDianTu/Images/67f1b971-0b4d-4db0-bcbf-85cc48a644e4.jpg new file mode 100644 index 0000000..d520954 Binary files /dev/null and b/Apps/XinDianTu/Images/67f1b971-0b4d-4db0-bcbf-85cc48a644e4.jpg differ diff --git a/Apps/XinDianTu/Images/68158657-f148-4d65-8c33-b29ae115afe8.jpg b/Apps/XinDianTu/Images/68158657-f148-4d65-8c33-b29ae115afe8.jpg new file mode 100644 index 0000000..56f9b91 Binary files /dev/null and b/Apps/XinDianTu/Images/68158657-f148-4d65-8c33-b29ae115afe8.jpg differ diff --git a/Apps/XinDianTu/Images/6825f1e9-54bc-42ea-a069-c77673d1639c.jpg b/Apps/XinDianTu/Images/6825f1e9-54bc-42ea-a069-c77673d1639c.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/6825f1e9-54bc-42ea-a069-c77673d1639c.jpg differ diff --git a/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_1.jpg b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_1.jpg new file mode 100644 index 0000000..4fd1dbd Binary files /dev/null and b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_2.jpg b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_2.jpg new file mode 100644 index 0000000..b2712cb Binary files /dev/null and b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_3.jpg b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_3.jpg new file mode 100644 index 0000000..30f39e9 Binary files /dev/null and b/Apps/XinDianTu/Images/68c1b296cafc1068d978198619f8d252_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/68df053d-9429-4992-a096-d9216d1f8c99.jpg b/Apps/XinDianTu/Images/68df053d-9429-4992-a096-d9216d1f8c99.jpg new file mode 100644 index 0000000..02505bf Binary files /dev/null and b/Apps/XinDianTu/Images/68df053d-9429-4992-a096-d9216d1f8c99.jpg differ diff --git a/Apps/XinDianTu/Images/6903fce0-2ab3-4b66-b463-1e084f542c55.jpg b/Apps/XinDianTu/Images/6903fce0-2ab3-4b66-b463-1e084f542c55.jpg new file mode 100644 index 0000000..fe581b8 Binary files /dev/null and b/Apps/XinDianTu/Images/6903fce0-2ab3-4b66-b463-1e084f542c55.jpg differ diff --git a/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_1.jpg b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_1.jpg new file mode 100644 index 0000000..d235550 Binary files /dev/null and b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_2.jpg b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_2.jpg new file mode 100644 index 0000000..05e86f7 Binary files /dev/null and b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_3.jpg b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_3.jpg new file mode 100644 index 0000000..e350103 Binary files /dev/null and b/Apps/XinDianTu/Images/690f2a893be12bea9dfed55f9185a22b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/692a50b9-40fb-4571-bf0c-2a0f33d77aca.jpg b/Apps/XinDianTu/Images/692a50b9-40fb-4571-bf0c-2a0f33d77aca.jpg new file mode 100644 index 0000000..99a6162 Binary files /dev/null and b/Apps/XinDianTu/Images/692a50b9-40fb-4571-bf0c-2a0f33d77aca.jpg differ diff --git a/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6.jpg b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6.jpg new file mode 100644 index 0000000..7ab7576 Binary files /dev/null and b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6.jpg differ diff --git a/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_flag.jpg b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_flag.jpg new file mode 100644 index 0000000..13c8dc5 Binary files /dev/null and b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_vl.jpg b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_vl.jpg new file mode 100644 index 0000000..32b6260 Binary files /dev/null and b/Apps/XinDianTu/Images/69698d1e-e2c4-474c-af73-e60f23986ea6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/697176ea-a9ec-4640-9c2f-ec8ede98457f.jpg b/Apps/XinDianTu/Images/697176ea-a9ec-4640-9c2f-ec8ede98457f.jpg new file mode 100644 index 0000000..769c6f7 Binary files /dev/null and b/Apps/XinDianTu/Images/697176ea-a9ec-4640-9c2f-ec8ede98457f.jpg differ diff --git a/Apps/XinDianTu/Images/6983b5ed-6a2a-4699-9edf-daae38f0e02f.jpg b/Apps/XinDianTu/Images/6983b5ed-6a2a-4699-9edf-daae38f0e02f.jpg new file mode 100644 index 0000000..602ca4b Binary files /dev/null and b/Apps/XinDianTu/Images/6983b5ed-6a2a-4699-9edf-daae38f0e02f.jpg differ diff --git a/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.jpg b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.jpg new file mode 100644 index 0000000..a54f0e3 Binary files /dev/null and b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.jpg differ diff --git a/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.json b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.json new file mode 100644 index 0000000..5bf3fe1 --- /dev/null +++ b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873.json @@ -0,0 +1,46 @@ +{ + "image": "69badcfd-f2ee-4350-b99c-ff1bbd303873.jpg", + "width": 720, + "height": 268, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 586, + 700, + 832 + ], + "click_point": [ + 121, + 635 + ] + }, + { + "id": 2, + "rect": [ + 19, + 841, + 700, + 1092 + ], + "click_point": [ + 121, + 891 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1106, + 700, + 1374 + ], + "click_point": [ + 121, + 1159 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_flag.jpg b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_flag.jpg new file mode 100644 index 0000000..643f0f2 Binary files /dev/null and b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_flag.jpg differ diff --git a/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_vl.jpg b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_vl.jpg new file mode 100644 index 0000000..509ea2d Binary files /dev/null and b/Apps/XinDianTu/Images/69badcfd-f2ee-4350-b99c-ff1bbd303873_vl.jpg differ diff --git a/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f.jpg b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f.jpg new file mode 100644 index 0000000..d0b1750 Binary files /dev/null and b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f.jpg differ diff --git a/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_flag.jpg b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_flag.jpg new file mode 100644 index 0000000..50b73b7 Binary files /dev/null and b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_vl.jpg b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_vl.jpg new file mode 100644 index 0000000..6d53473 Binary files /dev/null and b/Apps/XinDianTu/Images/69edfc8f-a9b1-49da-bb48-279bcbc96c7f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.jpg b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.jpg new file mode 100644 index 0000000..100e922 Binary files /dev/null and b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.jpg differ diff --git a/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.json b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.json new file mode 100644 index 0000000..0a8ab32 --- /dev/null +++ b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033.json @@ -0,0 +1,46 @@ +{ + "image": "6a0f0155-b63a-4346-ae2f-788e5894f033.jpg", + "width": 720, + "height": 117, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 449, + 700, + 700 + ], + "click_point": [ + 121, + 499 + ] + }, + { + "id": 2, + "rect": [ + 19, + 714, + 700, + 960 + ], + "click_point": [ + 121, + 763 + ] + }, + { + "id": 3, + "rect": [ + 19, + 974, + 700, + 1248 + ], + "click_point": [ + 121, + 1028 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_flag.jpg b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_flag.jpg new file mode 100644 index 0000000..614bce6 Binary files /dev/null and b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_vl.jpg b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_vl.jpg new file mode 100644 index 0000000..f562b36 Binary files /dev/null and b/Apps/XinDianTu/Images/6a0f0155-b63a-4346-ae2f-788e5894f033_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_1.jpg b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_1.jpg new file mode 100644 index 0000000..1d98587 Binary files /dev/null and b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_2.jpg b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_2.jpg new file mode 100644 index 0000000..a55f920 Binary files /dev/null and b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_3.jpg b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_3.jpg new file mode 100644 index 0000000..f35ebed Binary files /dev/null and b/Apps/XinDianTu/Images/6a2b238be2e61cb60301e73269edd419_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6a46a20a-0a57-4b66-aef2-a72d93f27e62.jpg b/Apps/XinDianTu/Images/6a46a20a-0a57-4b66-aef2-a72d93f27e62.jpg new file mode 100644 index 0000000..ad4f9b1 Binary files /dev/null and b/Apps/XinDianTu/Images/6a46a20a-0a57-4b66-aef2-a72d93f27e62.jpg differ diff --git a/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_1.jpg b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_1.jpg new file mode 100644 index 0000000..642118a Binary files /dev/null and b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_2.jpg b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_2.jpg new file mode 100644 index 0000000..12757b0 Binary files /dev/null and b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_3.jpg b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_3.jpg new file mode 100644 index 0000000..111ab9d Binary files /dev/null and b/Apps/XinDianTu/Images/6a56be1db1a5fb4ed8a1de4f234e2a5a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6a836f9b-6ee1-4a94-8050-3d26aedc5e1d.jpg b/Apps/XinDianTu/Images/6a836f9b-6ee1-4a94-8050-3d26aedc5e1d.jpg new file mode 100644 index 0000000..c2584aa Binary files /dev/null and b/Apps/XinDianTu/Images/6a836f9b-6ee1-4a94-8050-3d26aedc5e1d.jpg differ diff --git a/Apps/XinDianTu/Images/6b04f4db-5aa0-417a-a5b9-591eba6d4c18.jpg b/Apps/XinDianTu/Images/6b04f4db-5aa0-417a-a5b9-591eba6d4c18.jpg new file mode 100644 index 0000000..be472f5 Binary files /dev/null and b/Apps/XinDianTu/Images/6b04f4db-5aa0-417a-a5b9-591eba6d4c18.jpg differ diff --git a/Apps/XinDianTu/Images/6b62d610-1064-4ba4-9d3b-8475909ba664.jpg b/Apps/XinDianTu/Images/6b62d610-1064-4ba4-9d3b-8475909ba664.jpg new file mode 100644 index 0000000..975b0da Binary files /dev/null and b/Apps/XinDianTu/Images/6b62d610-1064-4ba4-9d3b-8475909ba664.jpg differ diff --git a/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.jpg b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.jpg new file mode 100644 index 0000000..b003047 Binary files /dev/null and b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.jpg differ diff --git a/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.json b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.json new file mode 100644 index 0000000..6673545 --- /dev/null +++ b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6.json @@ -0,0 +1,46 @@ +{ + "image": "6b7fe8da-36c0-4721-8587-b57dc66953c6.jpg", + "width": 720, + "height": 116, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 473, + 700, + 724 + ], + "click_point": [ + 121, + 523 + ] + }, + { + "id": 2, + "rect": [ + 19, + 738, + 700, + 984 + ], + "click_point": [ + 121, + 787 + ] + }, + { + "id": 3, + "rect": [ + 19, + 993, + 700, + 1244 + ], + "click_point": [ + 121, + 1043 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_flag.jpg b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_flag.jpg new file mode 100644 index 0000000..64aa31e Binary files /dev/null and b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_vl.jpg b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_vl.jpg new file mode 100644 index 0000000..261ac1a Binary files /dev/null and b/Apps/XinDianTu/Images/6b7fe8da-36c0-4721-8587-b57dc66953c6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6b969787-f06f-4c73-96f7-4398e6c1bef3.jpg b/Apps/XinDianTu/Images/6b969787-f06f-4c73-96f7-4398e6c1bef3.jpg new file mode 100644 index 0000000..bd8f100 Binary files /dev/null and b/Apps/XinDianTu/Images/6b969787-f06f-4c73-96f7-4398e6c1bef3.jpg differ diff --git a/Apps/XinDianTu/Images/6c0ada2f-2ff1-4888-8ba2-07fa9b61c72a.jpg b/Apps/XinDianTu/Images/6c0ada2f-2ff1-4888-8ba2-07fa9b61c72a.jpg new file mode 100644 index 0000000..6e8cd0c Binary files /dev/null and b/Apps/XinDianTu/Images/6c0ada2f-2ff1-4888-8ba2-07fa9b61c72a.jpg differ diff --git a/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_1.jpg b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_1.jpg new file mode 100644 index 0000000..b817237 Binary files /dev/null and b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_2.jpg b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_2.jpg new file mode 100644 index 0000000..d0c7f14 Binary files /dev/null and b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_3.jpg b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_3.jpg new file mode 100644 index 0000000..d23d50a Binary files /dev/null and b/Apps/XinDianTu/Images/6c5f1cc9e1d162895b362e694d12c40c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6cbdf389-61b8-4a4b-87c2-9a2028de02f6.jpg b/Apps/XinDianTu/Images/6cbdf389-61b8-4a4b-87c2-9a2028de02f6.jpg new file mode 100644 index 0000000..1c79a03 Binary files /dev/null and b/Apps/XinDianTu/Images/6cbdf389-61b8-4a4b-87c2-9a2028de02f6.jpg differ diff --git a/Apps/XinDianTu/Images/6cd745af-d04f-4c85-ba5d-ea463aaf7d48.jpg b/Apps/XinDianTu/Images/6cd745af-d04f-4c85-ba5d-ea463aaf7d48.jpg new file mode 100644 index 0000000..eef8a58 Binary files /dev/null and b/Apps/XinDianTu/Images/6cd745af-d04f-4c85-ba5d-ea463aaf7d48.jpg differ diff --git a/Apps/XinDianTu/Images/6d2a9ab7-6a63-4985-9317-a1a0941d0604.jpg b/Apps/XinDianTu/Images/6d2a9ab7-6a63-4985-9317-a1a0941d0604.jpg new file mode 100644 index 0000000..4755a94 Binary files /dev/null and b/Apps/XinDianTu/Images/6d2a9ab7-6a63-4985-9317-a1a0941d0604.jpg differ diff --git a/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_1.jpg b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_1.jpg new file mode 100644 index 0000000..bc299cc Binary files /dev/null and b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_2.jpg b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_2.jpg new file mode 100644 index 0000000..00c4d69 Binary files /dev/null and b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_3.jpg b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_3.jpg new file mode 100644 index 0000000..8d529ef Binary files /dev/null and b/Apps/XinDianTu/Images/6d2cf0a7775b13d81e5e5cd4fb6722af_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6d4bf64c-5237-4cc8-aa35-2aea74fb7e7a.jpg b/Apps/XinDianTu/Images/6d4bf64c-5237-4cc8-aa35-2aea74fb7e7a.jpg new file mode 100644 index 0000000..13cd4e1 Binary files /dev/null and b/Apps/XinDianTu/Images/6d4bf64c-5237-4cc8-aa35-2aea74fb7e7a.jpg differ diff --git a/Apps/XinDianTu/Images/6d5d2afa-7161-46c5-a83b-fa4d0acb9ba9.jpg b/Apps/XinDianTu/Images/6d5d2afa-7161-46c5-a83b-fa4d0acb9ba9.jpg new file mode 100644 index 0000000..28587ea Binary files /dev/null and b/Apps/XinDianTu/Images/6d5d2afa-7161-46c5-a83b-fa4d0acb9ba9.jpg differ diff --git a/Apps/XinDianTu/Images/6d621e76-4864-4611-bcda-ab3eaddc0b66.jpg b/Apps/XinDianTu/Images/6d621e76-4864-4611-bcda-ab3eaddc0b66.jpg new file mode 100644 index 0000000..94d79a5 Binary files /dev/null and b/Apps/XinDianTu/Images/6d621e76-4864-4611-bcda-ab3eaddc0b66.jpg differ diff --git a/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.jpg b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.jpg new file mode 100644 index 0000000..327aac4 Binary files /dev/null and b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.jpg differ diff --git a/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.json b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.json new file mode 100644 index 0000000..1010787 --- /dev/null +++ b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3.json @@ -0,0 +1,46 @@ +{ + "image": "6d9b002e-bb81-4401-aa40-b477aea5dbf3.jpg", + "width": 720, + "height": 141, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 436, + 700, + 700 + ], + "click_point": [ + 121, + 488 + ] + }, + { + "id": 2, + "rect": [ + 19, + 713, + 700, + 959 + ], + "click_point": [ + 121, + 762 + ] + }, + { + "id": 3, + "rect": [ + 19, + 972, + 700, + 1220 + ], + "click_point": [ + 121, + 1021 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_flag.jpg b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_flag.jpg new file mode 100644 index 0000000..bea9def Binary files /dev/null and b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_vl.jpg b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_vl.jpg new file mode 100644 index 0000000..2fc3c23 Binary files /dev/null and b/Apps/XinDianTu/Images/6d9b002e-bb81-4401-aa40-b477aea5dbf3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_1.jpg b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_1.jpg new file mode 100644 index 0000000..9f9d164 Binary files /dev/null and b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_2.jpg b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_2.jpg new file mode 100644 index 0000000..9151cad Binary files /dev/null and b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_3.jpg b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_3.jpg new file mode 100644 index 0000000..d440daf Binary files /dev/null and b/Apps/XinDianTu/Images/6d9e31f66e9a3c8337396d23ed493349_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_1.jpg b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_1.jpg new file mode 100644 index 0000000..ad36a94 Binary files /dev/null and b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_2.jpg b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_2.jpg new file mode 100644 index 0000000..e274de9 Binary files /dev/null and b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_3.jpg b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_3.jpg new file mode 100644 index 0000000..d2bead9 Binary files /dev/null and b/Apps/XinDianTu/Images/6dc32170fc5848bf7775937c95f3bb1b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.jpg b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.jpg new file mode 100644 index 0000000..093c37a Binary files /dev/null and b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.jpg differ diff --git a/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.json b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.json new file mode 100644 index 0000000..4dd77b2 --- /dev/null +++ b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd.json @@ -0,0 +1,59 @@ +{ + "image": "6dd29486-084f-46bf-ae37-40fc485503cd.jpg", + "width": 720, + "height": 235, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 605 + ], + "click_point": [ + 121, + 444 + ] + }, + { + "id": 2, + "rect": [ + 19, + 619, + 700, + 868 + ], + "click_point": [ + 121, + 668 + ] + }, + { + "id": 3, + "rect": [ + 19, + 876, + 700, + 1125 + ], + "click_point": [ + 121, + 925 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1139, + 700, + 1374 + ], + "click_point": [ + 121, + 1186 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_flag.jpg b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_flag.jpg new file mode 100644 index 0000000..e509c80 Binary files /dev/null and b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_vl.jpg b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_vl.jpg new file mode 100644 index 0000000..52d4085 Binary files /dev/null and b/Apps/XinDianTu/Images/6dd29486-084f-46bf-ae37-40fc485503cd_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a.jpg b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a.jpg new file mode 100644 index 0000000..51b6fe9 Binary files /dev/null and b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a.jpg differ diff --git a/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_flag.jpg b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_flag.jpg new file mode 100644 index 0000000..f8cd819 Binary files /dev/null and b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_vl.jpg b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_vl.jpg new file mode 100644 index 0000000..4861388 Binary files /dev/null and b/Apps/XinDianTu/Images/6de89b09-56b0-4c51-b0fc-0659465a2b4a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_1.jpg b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_1.jpg new file mode 100644 index 0000000..59eeb64 Binary files /dev/null and b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_2.jpg b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_2.jpg new file mode 100644 index 0000000..dda54e7 Binary files /dev/null and b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_3.jpg b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_3.jpg new file mode 100644 index 0000000..62e1dc0 Binary files /dev/null and b/Apps/XinDianTu/Images/6e0a734a419a0513adc4d50f038fe934_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af.jpg b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af.jpg new file mode 100644 index 0000000..dc49eb2 Binary files /dev/null and b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af.jpg differ diff --git a/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_flag.jpg b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_flag.jpg new file mode 100644 index 0000000..a16c6f4 Binary files /dev/null and b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_vl.jpg b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_vl.jpg new file mode 100644 index 0000000..622a042 Binary files /dev/null and b/Apps/XinDianTu/Images/6e71d593-3725-4d9f-9027-0daca648c1af_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_1.jpg b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_1.jpg new file mode 100644 index 0000000..15e23e5 Binary files /dev/null and b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_2.jpg b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_2.jpg new file mode 100644 index 0000000..1f1ed09 Binary files /dev/null and b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_3.jpg b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_3.jpg new file mode 100644 index 0000000..23719cd Binary files /dev/null and b/Apps/XinDianTu/Images/6e9229eeae31339ac6763aee4e5c3b3e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_1.jpg b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_1.jpg new file mode 100644 index 0000000..1e8c2a0 Binary files /dev/null and b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_2.jpg b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_2.jpg new file mode 100644 index 0000000..6eec67a Binary files /dev/null and b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_3.jpg b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_3.jpg new file mode 100644 index 0000000..7b02130 Binary files /dev/null and b/Apps/XinDianTu/Images/6e98604696d223518f47f36b6207700b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_1.jpg b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_1.jpg new file mode 100644 index 0000000..6017a3f Binary files /dev/null and b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_2.jpg b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_2.jpg new file mode 100644 index 0000000..a87cfe4 Binary files /dev/null and b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_3.jpg b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_3.jpg new file mode 100644 index 0000000..7f627a6 Binary files /dev/null and b/Apps/XinDianTu/Images/6ebdd03017f8226fbfa2db8be4e3d6db_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/6f1d45b5-c53d-4c48-97cc-331ed2e7abd7.jpg b/Apps/XinDianTu/Images/6f1d45b5-c53d-4c48-97cc-331ed2e7abd7.jpg new file mode 100644 index 0000000..c503b48 Binary files /dev/null and b/Apps/XinDianTu/Images/6f1d45b5-c53d-4c48-97cc-331ed2e7abd7.jpg differ diff --git a/Apps/XinDianTu/Images/6f770615-1ae9-45f4-ac9f-c6962a9c0775.jpg b/Apps/XinDianTu/Images/6f770615-1ae9-45f4-ac9f-c6962a9c0775.jpg new file mode 100644 index 0000000..92a3337 Binary files /dev/null and b/Apps/XinDianTu/Images/6f770615-1ae9-45f4-ac9f-c6962a9c0775.jpg differ diff --git a/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.jpg b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.jpg new file mode 100644 index 0000000..1d9dada Binary files /dev/null and b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.jpg differ diff --git a/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.json b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.json new file mode 100644 index 0000000..325b893 --- /dev/null +++ b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92.json @@ -0,0 +1,59 @@ +{ + "image": "6f7ef59f-85c6-47f0-990e-17c667bc5e92.jpg", + "width": 720, + "height": 218, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 622 + ], + "click_point": [ + 121, + 447 + ] + }, + { + "id": 2, + "rect": [ + 19, + 636, + 700, + 887 + ], + "click_point": [ + 121, + 686 + ] + }, + { + "id": 3, + "rect": [ + 19, + 896, + 700, + 1142 + ], + "click_point": [ + 121, + 945 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1156, + 700, + 1374 + ], + "click_point": [ + 121, + 1199 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_flag.jpg b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_flag.jpg new file mode 100644 index 0000000..2a04a50 Binary files /dev/null and b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_vl.jpg b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_vl.jpg new file mode 100644 index 0000000..6c94af1 Binary files /dev/null and b/Apps/XinDianTu/Images/6f7ef59f-85c6-47f0-990e-17c667bc5e92_vl.jpg differ diff --git a/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec.jpg b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec.jpg new file mode 100644 index 0000000..fd58c00 Binary files /dev/null and b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec.jpg differ diff --git a/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_flag.jpg b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_flag.jpg new file mode 100644 index 0000000..bcf84d1 Binary files /dev/null and b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_flag.jpg differ diff --git a/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_vl.jpg b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_vl.jpg new file mode 100644 index 0000000..090dc4b Binary files /dev/null and b/Apps/XinDianTu/Images/6fff356e-fd20-4dd9-9a66-d0858d3dc6ec_vl.jpg differ diff --git a/Apps/XinDianTu/Images/70146400-c45f-4f05-b232-74b298750dce.jpg b/Apps/XinDianTu/Images/70146400-c45f-4f05-b232-74b298750dce.jpg new file mode 100644 index 0000000..83aac54 Binary files /dev/null and b/Apps/XinDianTu/Images/70146400-c45f-4f05-b232-74b298750dce.jpg differ diff --git a/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_1.jpg b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_1.jpg new file mode 100644 index 0000000..fe62d5e Binary files /dev/null and b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_2.jpg b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_2.jpg new file mode 100644 index 0000000..149b14c Binary files /dev/null and b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_3.jpg b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_3.jpg new file mode 100644 index 0000000..5001881 Binary files /dev/null and b/Apps/XinDianTu/Images/703cb911778dc3b075282511696612e2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b.jpg b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b.jpg new file mode 100644 index 0000000..fa20abc Binary files /dev/null and b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b.jpg differ diff --git a/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_flag.jpg b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_flag.jpg new file mode 100644 index 0000000..5253bd2 Binary files /dev/null and b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_vl.jpg b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_vl.jpg new file mode 100644 index 0000000..d3f021e Binary files /dev/null and b/Apps/XinDianTu/Images/709aed90-9959-4c8f-8116-51a97abdd13b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/711fb003-04c5-406e-a2aa-5a78973eec2e.jpg b/Apps/XinDianTu/Images/711fb003-04c5-406e-a2aa-5a78973eec2e.jpg new file mode 100644 index 0000000..fd59085 Binary files /dev/null and b/Apps/XinDianTu/Images/711fb003-04c5-406e-a2aa-5a78973eec2e.jpg differ diff --git a/Apps/XinDianTu/Images/712010d1-232e-4599-9658-8a1de65481fa.jpg b/Apps/XinDianTu/Images/712010d1-232e-4599-9658-8a1de65481fa.jpg new file mode 100644 index 0000000..a95c421 Binary files /dev/null and b/Apps/XinDianTu/Images/712010d1-232e-4599-9658-8a1de65481fa.jpg differ diff --git a/Apps/XinDianTu/Images/7144a1a5-7263-408a-8cab-1a281b1fb6e5.jpg b/Apps/XinDianTu/Images/7144a1a5-7263-408a-8cab-1a281b1fb6e5.jpg new file mode 100644 index 0000000..96ec565 Binary files /dev/null and b/Apps/XinDianTu/Images/7144a1a5-7263-408a-8cab-1a281b1fb6e5.jpg differ diff --git a/Apps/XinDianTu/Images/7149267f-105f-4f57-aa28-770cce2130f4.jpg b/Apps/XinDianTu/Images/7149267f-105f-4f57-aa28-770cce2130f4.jpg new file mode 100644 index 0000000..7999f66 Binary files /dev/null and b/Apps/XinDianTu/Images/7149267f-105f-4f57-aa28-770cce2130f4.jpg differ diff --git a/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca.jpg b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca.jpg new file mode 100644 index 0000000..bcdcd71 Binary files /dev/null and b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca.jpg differ diff --git a/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_flag.jpg b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_flag.jpg new file mode 100644 index 0000000..7161f12 Binary files /dev/null and b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_flag.jpg differ diff --git a/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_vl.jpg b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_vl.jpg new file mode 100644 index 0000000..32ebfb3 Binary files /dev/null and b/Apps/XinDianTu/Images/715f852b-05b1-4840-9690-fd1117e244ca_vl.jpg differ diff --git a/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.jpg b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.jpg new file mode 100644 index 0000000..8a1034a Binary files /dev/null and b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.jpg differ diff --git a/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.json b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.json new file mode 100644 index 0000000..9d31f20 --- /dev/null +++ b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75.json @@ -0,0 +1,46 @@ +{ + "image": "71909d83-6654-476c-9587-d8e5ff555d75.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_flag.jpg b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_flag.jpg new file mode 100644 index 0000000..d036982 Binary files /dev/null and b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_flag.jpg differ diff --git a/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_vl.jpg b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_vl.jpg new file mode 100644 index 0000000..34e1031 Binary files /dev/null and b/Apps/XinDianTu/Images/71909d83-6654-476c-9587-d8e5ff555d75_vl.jpg differ diff --git a/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_1.jpg b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_1.jpg new file mode 100644 index 0000000..79575ac Binary files /dev/null and b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_2.jpg b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_2.jpg new file mode 100644 index 0000000..653e60f Binary files /dev/null and b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_3.jpg b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_3.jpg new file mode 100644 index 0000000..89ac68b Binary files /dev/null and b/Apps/XinDianTu/Images/71dbe0b3f951cec982e860b682c7e1c7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/71e3737b-8d8c-463a-bc31-e250cdb5dbfe.jpg b/Apps/XinDianTu/Images/71e3737b-8d8c-463a-bc31-e250cdb5dbfe.jpg new file mode 100644 index 0000000..d98b061 Binary files /dev/null and b/Apps/XinDianTu/Images/71e3737b-8d8c-463a-bc31-e250cdb5dbfe.jpg differ diff --git a/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_1.jpg b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_1.jpg new file mode 100644 index 0000000..c544200 Binary files /dev/null and b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_2.jpg b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_2.jpg new file mode 100644 index 0000000..049e919 Binary files /dev/null and b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_3.jpg b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_3.jpg new file mode 100644 index 0000000..9c051ee Binary files /dev/null and b/Apps/XinDianTu/Images/72028a13165cac1763cfe9ee03e2b6f1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e.jpg b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e.jpg new file mode 100644 index 0000000..1e697c8 Binary files /dev/null and b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e.jpg differ diff --git a/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_flag.jpg b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_flag.jpg new file mode 100644 index 0000000..41de912 Binary files /dev/null and b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_vl.jpg b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_vl.jpg new file mode 100644 index 0000000..2f4259a Binary files /dev/null and b/Apps/XinDianTu/Images/721bb81a-9e24-491a-86f0-b76a55a2ea5e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_1.jpg b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_1.jpg new file mode 100644 index 0000000..5dc0b11 Binary files /dev/null and b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_2.jpg b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_2.jpg new file mode 100644 index 0000000..339e029 Binary files /dev/null and b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_3.jpg b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_3.jpg new file mode 100644 index 0000000..279de6a Binary files /dev/null and b/Apps/XinDianTu/Images/7224af9d79189abd22ce8f5b272e0fa1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7243bb45-dc6c-4489-bddd-0f09bde5b26f.jpg b/Apps/XinDianTu/Images/7243bb45-dc6c-4489-bddd-0f09bde5b26f.jpg new file mode 100644 index 0000000..89cb94d Binary files /dev/null and b/Apps/XinDianTu/Images/7243bb45-dc6c-4489-bddd-0f09bde5b26f.jpg differ diff --git a/Apps/XinDianTu/Images/7280233f-12c3-45f8-baec-39fc761c74bb.jpg b/Apps/XinDianTu/Images/7280233f-12c3-45f8-baec-39fc761c74bb.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/7280233f-12c3-45f8-baec-39fc761c74bb.jpg differ diff --git a/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.jpg b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.jpg new file mode 100644 index 0000000..c57ae06 Binary files /dev/null and b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.jpg differ diff --git a/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.json b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.json new file mode 100644 index 0000000..b95c56f --- /dev/null +++ b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2.json @@ -0,0 +1,46 @@ +{ + "image": "72bf1c88-5586-4dd5-be0c-97a95373ffe2.jpg", + "width": 720, + "height": 138, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 456, + 700, + 702 + ], + "click_point": [ + 121, + 505 + ] + }, + { + "id": 2, + "rect": [ + 19, + 716, + 700, + 967 + ], + "click_point": [ + 121, + 766 + ] + }, + { + "id": 3, + "rect": [ + 19, + 976, + 700, + 1222 + ], + "click_point": [ + 121, + 1025 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_flag.jpg b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_flag.jpg new file mode 100644 index 0000000..2478554 Binary files /dev/null and b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_flag.jpg differ diff --git a/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_vl.jpg b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_vl.jpg new file mode 100644 index 0000000..b4d6375 Binary files /dev/null and b/Apps/XinDianTu/Images/72bf1c88-5586-4dd5-be0c-97a95373ffe2_vl.jpg differ diff --git a/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4.jpg b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4.jpg new file mode 100644 index 0000000..8782ac6 Binary files /dev/null and b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4.jpg differ diff --git a/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_flag.jpg b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_flag.jpg new file mode 100644 index 0000000..0710da9 Binary files /dev/null and b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_flag.jpg differ diff --git a/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_vl.jpg b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_vl.jpg new file mode 100644 index 0000000..96c4843 Binary files /dev/null and b/Apps/XinDianTu/Images/730b1694-ce81-47a0-92dd-5bcf4d7105e4_vl.jpg differ diff --git a/Apps/XinDianTu/Images/732cd16e-05b0-41ac-9f2b-4dea50dd899d.jpg b/Apps/XinDianTu/Images/732cd16e-05b0-41ac-9f2b-4dea50dd899d.jpg new file mode 100644 index 0000000..2b0cba1 Binary files /dev/null and b/Apps/XinDianTu/Images/732cd16e-05b0-41ac-9f2b-4dea50dd899d.jpg differ diff --git a/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.jpg b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.jpg new file mode 100644 index 0000000..5d0997a Binary files /dev/null and b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.jpg differ diff --git a/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.json b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.json new file mode 100644 index 0000000..685cacf --- /dev/null +++ b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed.json @@ -0,0 +1,46 @@ +{ + "image": "737a6b3b-327c-4a15-862f-fa77a8f155ed.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 540, + 700, + 791 + ], + "click_point": [ + 121, + 590 + ] + }, + { + "id": 2, + "rect": [ + 19, + 800, + 700, + 1119 + ], + "click_point": [ + 121, + 863 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1128, + 700, + 1374 + ], + "click_point": [ + 121, + 1177 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_flag.jpg b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_flag.jpg new file mode 100644 index 0000000..9e8ae07 Binary files /dev/null and b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_flag.jpg differ diff --git a/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_vl.jpg b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_vl.jpg new file mode 100644 index 0000000..e103b1b Binary files /dev/null and b/Apps/XinDianTu/Images/737a6b3b-327c-4a15-862f-fa77a8f155ed_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7385b67c-a190-4fcf-ac07-5568017862b0.jpg b/Apps/XinDianTu/Images/7385b67c-a190-4fcf-ac07-5568017862b0.jpg new file mode 100644 index 0000000..eeeb167 Binary files /dev/null and b/Apps/XinDianTu/Images/7385b67c-a190-4fcf-ac07-5568017862b0.jpg differ diff --git a/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.jpg b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.jpg new file mode 100644 index 0000000..a944c18 Binary files /dev/null and b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.jpg differ diff --git a/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.json b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.json new file mode 100644 index 0000000..454fb3c --- /dev/null +++ b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d.json @@ -0,0 +1,46 @@ +{ + "image": "7395797a-4677-4c82-8888-0efabbd7893d.jpg", + "width": 720, + "height": 277, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 577, + 700, + 828 + ], + "click_point": [ + 121, + 627 + ] + }, + { + "id": 2, + "rect": [ + 19, + 842, + 700, + 1088 + ], + "click_point": [ + 121, + 891 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1097, + 700, + 1374 + ], + "click_point": [ + 121, + 1152 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_flag.jpg b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_flag.jpg new file mode 100644 index 0000000..02276fb Binary files /dev/null and b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_vl.jpg b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_vl.jpg new file mode 100644 index 0000000..7a5910e Binary files /dev/null and b/Apps/XinDianTu/Images/7395797a-4677-4c82-8888-0efabbd7893d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/73f6e8b7-d26a-42ea-8c66-fc5582120dd8.jpg b/Apps/XinDianTu/Images/73f6e8b7-d26a-42ea-8c66-fc5582120dd8.jpg new file mode 100644 index 0000000..32e9ac2 Binary files /dev/null and b/Apps/XinDianTu/Images/73f6e8b7-d26a-42ea-8c66-fc5582120dd8.jpg differ diff --git a/Apps/XinDianTu/Images/746390d3-834a-45e2-8af0-54e15fc4caac.jpg b/Apps/XinDianTu/Images/746390d3-834a-45e2-8af0-54e15fc4caac.jpg new file mode 100644 index 0000000..ff8cae9 Binary files /dev/null and b/Apps/XinDianTu/Images/746390d3-834a-45e2-8af0-54e15fc4caac.jpg differ diff --git a/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b.jpg b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b.jpg new file mode 100644 index 0000000..35eae63 Binary files /dev/null and b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b.jpg differ diff --git a/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_flag.jpg b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_flag.jpg new file mode 100644 index 0000000..b4c7afa Binary files /dev/null and b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_vl.jpg b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_vl.jpg new file mode 100644 index 0000000..9aa172c Binary files /dev/null and b/Apps/XinDianTu/Images/748d1472-6c7b-4811-9919-dd2fd8169d6b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/75268d6c-feb7-4d9f-98c0-72d6cbb7ad53.jpg b/Apps/XinDianTu/Images/75268d6c-feb7-4d9f-98c0-72d6cbb7ad53.jpg new file mode 100644 index 0000000..280a334 Binary files /dev/null and b/Apps/XinDianTu/Images/75268d6c-feb7-4d9f-98c0-72d6cbb7ad53.jpg differ diff --git a/Apps/XinDianTu/Images/7531034b-9835-4f1e-a8db-ae181cfde221.jpg b/Apps/XinDianTu/Images/7531034b-9835-4f1e-a8db-ae181cfde221.jpg new file mode 100644 index 0000000..560abfe Binary files /dev/null and b/Apps/XinDianTu/Images/7531034b-9835-4f1e-a8db-ae181cfde221.jpg differ diff --git a/Apps/XinDianTu/Images/753ee01f-22f4-4547-9abd-e7aae156d4ca.jpg b/Apps/XinDianTu/Images/753ee01f-22f4-4547-9abd-e7aae156d4ca.jpg new file mode 100644 index 0000000..a21d2b0 Binary files /dev/null and b/Apps/XinDianTu/Images/753ee01f-22f4-4547-9abd-e7aae156d4ca.jpg differ diff --git a/Apps/XinDianTu/Images/756aab77-1bcd-422d-b3d4-2d7eb8e9fc9b.jpg b/Apps/XinDianTu/Images/756aab77-1bcd-422d-b3d4-2d7eb8e9fc9b.jpg new file mode 100644 index 0000000..f61a1ec Binary files /dev/null and b/Apps/XinDianTu/Images/756aab77-1bcd-422d-b3d4-2d7eb8e9fc9b.jpg differ diff --git a/Apps/XinDianTu/Images/75a0ae09-0839-4af8-bfac-ec24e86a6403.jpg b/Apps/XinDianTu/Images/75a0ae09-0839-4af8-bfac-ec24e86a6403.jpg new file mode 100644 index 0000000..c74c6d6 Binary files /dev/null and b/Apps/XinDianTu/Images/75a0ae09-0839-4af8-bfac-ec24e86a6403.jpg differ diff --git a/Apps/XinDianTu/Images/75cf47ff-352d-43ae-b76f-762ca2e9acd7.jpg b/Apps/XinDianTu/Images/75cf47ff-352d-43ae-b76f-762ca2e9acd7.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/75cf47ff-352d-43ae-b76f-762ca2e9acd7.jpg differ diff --git a/Apps/XinDianTu/Images/76264fd7-7da6-4a7e-9ec1-b7174c63fe60.jpg b/Apps/XinDianTu/Images/76264fd7-7da6-4a7e-9ec1-b7174c63fe60.jpg new file mode 100644 index 0000000..77a1d7c Binary files /dev/null and b/Apps/XinDianTu/Images/76264fd7-7da6-4a7e-9ec1-b7174c63fe60.jpg differ diff --git a/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_1.jpg b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_1.jpg new file mode 100644 index 0000000..8a18ddf Binary files /dev/null and b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_2.jpg b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_2.jpg new file mode 100644 index 0000000..f0b16af Binary files /dev/null and b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_3.jpg b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_3.jpg new file mode 100644 index 0000000..3fc776b Binary files /dev/null and b/Apps/XinDianTu/Images/76311eb4bd472cd05677177182e329a7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_1.jpg b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_1.jpg new file mode 100644 index 0000000..f6dc632 Binary files /dev/null and b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_2.jpg b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_2.jpg new file mode 100644 index 0000000..21f6ff1 Binary files /dev/null and b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_3.jpg b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_3.jpg new file mode 100644 index 0000000..69b40f7 Binary files /dev/null and b/Apps/XinDianTu/Images/766b45b2697dd6e6db789468ee56918e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/76dad16c-e409-4c1d-93f8-3459ad233125.jpg b/Apps/XinDianTu/Images/76dad16c-e409-4c1d-93f8-3459ad233125.jpg new file mode 100644 index 0000000..c410f70 Binary files /dev/null and b/Apps/XinDianTu/Images/76dad16c-e409-4c1d-93f8-3459ad233125.jpg differ diff --git a/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.jpg b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.jpg new file mode 100644 index 0000000..6716d76 Binary files /dev/null and b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.jpg differ diff --git a/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.json b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.json new file mode 100644 index 0000000..3060404 --- /dev/null +++ b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a.json @@ -0,0 +1,46 @@ +{ + "image": "77cf9c4a-2392-41e5-b623-81c653279a1a.jpg", + "width": 720, + "height": 266, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 588, + 700, + 836 + ], + "click_point": [ + 121, + 637 + ] + }, + { + "id": 2, + "rect": [ + 19, + 849, + 700, + 1095 + ], + "click_point": [ + 121, + 898 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1108, + 700, + 1374 + ], + "click_point": [ + 121, + 1161 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_flag.jpg b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_flag.jpg new file mode 100644 index 0000000..368526d Binary files /dev/null and b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_vl.jpg b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_vl.jpg new file mode 100644 index 0000000..5eeb181 Binary files /dev/null and b/Apps/XinDianTu/Images/77cf9c4a-2392-41e5-b623-81c653279a1a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/784713f2-82fd-4af4-8cdd-22e4f8bf7cf1.jpg b/Apps/XinDianTu/Images/784713f2-82fd-4af4-8cdd-22e4f8bf7cf1.jpg new file mode 100644 index 0000000..a2ea5c4 Binary files /dev/null and b/Apps/XinDianTu/Images/784713f2-82fd-4af4-8cdd-22e4f8bf7cf1.jpg differ diff --git a/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.jpg b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.jpg new file mode 100644 index 0000000..a3186bb Binary files /dev/null and b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.jpg differ diff --git a/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.json b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.json new file mode 100644 index 0000000..07ab03c --- /dev/null +++ b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39.json @@ -0,0 +1,46 @@ +{ + "image": "784b3b2e-56a7-456b-97e2-22e26db82f39.jpg", + "width": 720, + "height": 166, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 428, + 700, + 679 + ], + "click_point": [ + 121, + 478 + ] + }, + { + "id": 2, + "rect": [ + 19, + 688, + 700, + 934 + ], + "click_point": [ + 121, + 737 + ] + }, + { + "id": 3, + "rect": [ + 19, + 948, + 700, + 1199 + ], + "click_point": [ + 121, + 998 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_flag.jpg b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_flag.jpg new file mode 100644 index 0000000..1cc7231 Binary files /dev/null and b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_flag.jpg differ diff --git a/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_vl.jpg b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_vl.jpg new file mode 100644 index 0000000..b9732d9 Binary files /dev/null and b/Apps/XinDianTu/Images/784b3b2e-56a7-456b-97e2-22e26db82f39_vl.jpg differ diff --git a/Apps/XinDianTu/Images/787ef273-e992-4bf7-8a60-1afd5cdd1241.jpg b/Apps/XinDianTu/Images/787ef273-e992-4bf7-8a60-1afd5cdd1241.jpg new file mode 100644 index 0000000..8a08750 Binary files /dev/null and b/Apps/XinDianTu/Images/787ef273-e992-4bf7-8a60-1afd5cdd1241.jpg differ diff --git a/Apps/XinDianTu/Images/79222f30-a896-486c-8b98-a56959d81077.jpg b/Apps/XinDianTu/Images/79222f30-a896-486c-8b98-a56959d81077.jpg new file mode 100644 index 0000000..1b5e38b Binary files /dev/null and b/Apps/XinDianTu/Images/79222f30-a896-486c-8b98-a56959d81077.jpg differ diff --git a/Apps/XinDianTu/Images/79268cbb-4520-41d4-b256-be08c72f184d.jpg b/Apps/XinDianTu/Images/79268cbb-4520-41d4-b256-be08c72f184d.jpg new file mode 100644 index 0000000..f9baa44 Binary files /dev/null and b/Apps/XinDianTu/Images/79268cbb-4520-41d4-b256-be08c72f184d.jpg differ diff --git a/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa.jpg b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa.jpg new file mode 100644 index 0000000..d8d292d Binary files /dev/null and b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa.jpg differ diff --git a/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_flag.jpg b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_flag.jpg new file mode 100644 index 0000000..d8a2d9a Binary files /dev/null and b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_flag.jpg differ diff --git a/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_vl.jpg b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_vl.jpg new file mode 100644 index 0000000..ee74a3d Binary files /dev/null and b/Apps/XinDianTu/Images/794f95ee-4e91-403d-b69a-8f8aac0ededa_vl.jpg differ diff --git a/Apps/XinDianTu/Images/79550c30-469a-43d6-930a-729d4734c743.jpg b/Apps/XinDianTu/Images/79550c30-469a-43d6-930a-729d4734c743.jpg new file mode 100644 index 0000000..a6b6e79 Binary files /dev/null and b/Apps/XinDianTu/Images/79550c30-469a-43d6-930a-729d4734c743.jpg differ diff --git a/Apps/XinDianTu/Images/79557e50-02b6-4253-b656-754b7e521e56.jpg b/Apps/XinDianTu/Images/79557e50-02b6-4253-b656-754b7e521e56.jpg new file mode 100644 index 0000000..65c873b Binary files /dev/null and b/Apps/XinDianTu/Images/79557e50-02b6-4253-b656-754b7e521e56.jpg differ diff --git a/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97.jpg b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97.jpg new file mode 100644 index 0000000..08a485d Binary files /dev/null and b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97.jpg differ diff --git a/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_flag.jpg b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_flag.jpg new file mode 100644 index 0000000..80ebbf3 Binary files /dev/null and b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_flag.jpg differ diff --git a/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_vl.jpg b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_vl.jpg new file mode 100644 index 0000000..1ca3836 Binary files /dev/null and b/Apps/XinDianTu/Images/799713b1-a3fa-46aa-a698-3aa5a048ed97_vl.jpg differ diff --git a/Apps/XinDianTu/Images/79cce94d-c710-47a0-8a25-3d6730f9fcc6.jpg b/Apps/XinDianTu/Images/79cce94d-c710-47a0-8a25-3d6730f9fcc6.jpg new file mode 100644 index 0000000..f057391 Binary files /dev/null and b/Apps/XinDianTu/Images/79cce94d-c710-47a0-8a25-3d6730f9fcc6.jpg differ diff --git a/Apps/XinDianTu/Images/7a0b6551-6be4-4966-bb24-a2ff5f1ab1f1.jpg b/Apps/XinDianTu/Images/7a0b6551-6be4-4966-bb24-a2ff5f1ab1f1.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/7a0b6551-6be4-4966-bb24-a2ff5f1ab1f1.jpg differ diff --git a/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.jpg b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.jpg new file mode 100644 index 0000000..a1edaab Binary files /dev/null and b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.jpg differ diff --git a/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.json b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.json new file mode 100644 index 0000000..6072a89 --- /dev/null +++ b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504.json @@ -0,0 +1,46 @@ +{ + "image": "7a33d10b-0df5-4b7e-91c2-0357f4b96504.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 494, + 700, + 768 + ], + "click_point": [ + 121, + 548 + ] + }, + { + "id": 2, + "rect": [ + 19, + 777, + 700, + 1028 + ], + "click_point": [ + 121, + 827 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1042, + 700, + 1288 + ], + "click_point": [ + 121, + 1091 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_flag.jpg b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_flag.jpg new file mode 100644 index 0000000..b41a7fb Binary files /dev/null and b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_vl.jpg b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_vl.jpg new file mode 100644 index 0000000..4b762f7 Binary files /dev/null and b/Apps/XinDianTu/Images/7a33d10b-0df5-4b7e-91c2-0357f4b96504_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7a5f1518-84ae-48de-96ea-42880f0e4f39.jpg b/Apps/XinDianTu/Images/7a5f1518-84ae-48de-96ea-42880f0e4f39.jpg new file mode 100644 index 0000000..c043cf1 Binary files /dev/null and b/Apps/XinDianTu/Images/7a5f1518-84ae-48de-96ea-42880f0e4f39.jpg differ diff --git a/Apps/XinDianTu/Images/7a948847-f470-4f35-9f9d-20e789ced9ce.jpg b/Apps/XinDianTu/Images/7a948847-f470-4f35-9f9d-20e789ced9ce.jpg new file mode 100644 index 0000000..2cf9ab6 Binary files /dev/null and b/Apps/XinDianTu/Images/7a948847-f470-4f35-9f9d-20e789ced9ce.jpg differ diff --git a/Apps/XinDianTu/Images/7b15026f-3c17-4a38-b6a9-0b4bc2fd339e.jpg b/Apps/XinDianTu/Images/7b15026f-3c17-4a38-b6a9-0b4bc2fd339e.jpg new file mode 100644 index 0000000..beca069 Binary files /dev/null and b/Apps/XinDianTu/Images/7b15026f-3c17-4a38-b6a9-0b4bc2fd339e.jpg differ diff --git a/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.jpg b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.jpg new file mode 100644 index 0000000..b627ec0 Binary files /dev/null and b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.jpg differ diff --git a/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.json b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.json new file mode 100644 index 0000000..7843e48 --- /dev/null +++ b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c.json @@ -0,0 +1,46 @@ +{ + "image": "7b1748c4-b443-4bf5-8f03-08a206b47d6c.jpg", + "width": 720, + "height": 170, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 644 + ], + "click_point": [ + 121, + 452 + ] + }, + { + "id": 2, + "rect": [ + 19, + 656, + 700, + 932 + ], + "click_point": [ + 121, + 711 + ] + }, + { + "id": 3, + "rect": [ + 19, + 945, + 700, + 1191 + ], + "click_point": [ + 121, + 994 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_flag.jpg b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_flag.jpg new file mode 100644 index 0000000..a0d83b5 Binary files /dev/null and b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_vl.jpg b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_vl.jpg new file mode 100644 index 0000000..77361cc Binary files /dev/null and b/Apps/XinDianTu/Images/7b1748c4-b443-4bf5-8f03-08a206b47d6c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7b430b5b-fe60-412a-a4d9-61c33cff84a7.jpg b/Apps/XinDianTu/Images/7b430b5b-fe60-412a-a4d9-61c33cff84a7.jpg new file mode 100644 index 0000000..299329e Binary files /dev/null and b/Apps/XinDianTu/Images/7b430b5b-fe60-412a-a4d9-61c33cff84a7.jpg differ diff --git a/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.jpg b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.jpg new file mode 100644 index 0000000..5d6ee83 Binary files /dev/null and b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.jpg differ diff --git a/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.json b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.json new file mode 100644 index 0000000..60ad373 --- /dev/null +++ b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc.json @@ -0,0 +1,59 @@ +{ + "image": "7b53beb5-416e-449e-b55e-efe1daf8f4dc.jpg", + "width": 720, + "height": 254, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 591 + ], + "click_point": [ + 121, + 441 + ] + }, + { + "id": 2, + "rect": [ + 19, + 600, + 700, + 846 + ], + "click_point": [ + 121, + 649 + ] + }, + { + "id": 3, + "rect": [ + 19, + 860, + 700, + 1111 + ], + "click_point": [ + 121, + 910 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1120, + 700, + 1374 + ], + "click_point": [ + 121, + 1170 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_flag.jpg b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_flag.jpg new file mode 100644 index 0000000..4d29af7 Binary files /dev/null and b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_vl.jpg b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_vl.jpg new file mode 100644 index 0000000..d37a38a Binary files /dev/null and b/Apps/XinDianTu/Images/7b53beb5-416e-449e-b55e-efe1daf8f4dc_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7baa83f2-0ddf-4698-949e-8c7963cbae63.jpg b/Apps/XinDianTu/Images/7baa83f2-0ddf-4698-949e-8c7963cbae63.jpg new file mode 100644 index 0000000..2ad26f4 Binary files /dev/null and b/Apps/XinDianTu/Images/7baa83f2-0ddf-4698-949e-8c7963cbae63.jpg differ diff --git a/Apps/XinDianTu/Images/7bcabe4b-84a2-4077-816c-a587e4b5e990.jpg b/Apps/XinDianTu/Images/7bcabe4b-84a2-4077-816c-a587e4b5e990.jpg new file mode 100644 index 0000000..dfc8b97 Binary files /dev/null and b/Apps/XinDianTu/Images/7bcabe4b-84a2-4077-816c-a587e4b5e990.jpg differ diff --git a/Apps/XinDianTu/Images/7bf8ae8b-9237-46af-8cd0-7468e678dd51.jpg b/Apps/XinDianTu/Images/7bf8ae8b-9237-46af-8cd0-7468e678dd51.jpg new file mode 100644 index 0000000..580598b Binary files /dev/null and b/Apps/XinDianTu/Images/7bf8ae8b-9237-46af-8cd0-7468e678dd51.jpg differ diff --git a/Apps/XinDianTu/Images/7c6e86f1-6bdf-4e0f-855b-5e8762c8d867.jpg b/Apps/XinDianTu/Images/7c6e86f1-6bdf-4e0f-855b-5e8762c8d867.jpg new file mode 100644 index 0000000..7805cb1 Binary files /dev/null and b/Apps/XinDianTu/Images/7c6e86f1-6bdf-4e0f-855b-5e8762c8d867.jpg differ diff --git a/Apps/XinDianTu/Images/7c803228-e72b-4cf7-958c-a9ef4f955d79.jpg b/Apps/XinDianTu/Images/7c803228-e72b-4cf7-958c-a9ef4f955d79.jpg new file mode 100644 index 0000000..77653e3 Binary files /dev/null and b/Apps/XinDianTu/Images/7c803228-e72b-4cf7-958c-a9ef4f955d79.jpg differ diff --git a/Apps/XinDianTu/Images/7c8a30dc-c7c8-4d36-a479-b38217dc7e33.jpg b/Apps/XinDianTu/Images/7c8a30dc-c7c8-4d36-a479-b38217dc7e33.jpg new file mode 100644 index 0000000..9c5858d Binary files /dev/null and b/Apps/XinDianTu/Images/7c8a30dc-c7c8-4d36-a479-b38217dc7e33.jpg differ diff --git a/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_1.jpg b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_1.jpg new file mode 100644 index 0000000..dce2f15 Binary files /dev/null and b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_2.jpg b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_2.jpg new file mode 100644 index 0000000..ee02c62 Binary files /dev/null and b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_3.jpg b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_3.jpg new file mode 100644 index 0000000..ba500ab Binary files /dev/null and b/Apps/XinDianTu/Images/7cd484f5b9aec6c2b2625a656d412ac3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.jpg b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.jpg new file mode 100644 index 0000000..d923ad1 Binary files /dev/null and b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.jpg differ diff --git a/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.json b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.json new file mode 100644 index 0000000..5330f37 --- /dev/null +++ b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.json @@ -0,0 +1,46 @@ +{ + "image": "7cf8e0e4-2201-4f5a-ada2-3af2414e06bf.jpg", + "width": 720, + "height": 269, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 585, + 700, + 831 + ], + "click_point": [ + 121, + 634 + ] + }, + { + "id": 2, + "rect": [ + 19, + 844, + 700, + 1092 + ], + "click_point": [ + 121, + 893 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1105, + 700, + 1374 + ], + "click_point": [ + 121, + 1158 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_flag.jpg b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_flag.jpg new file mode 100644 index 0000000..baf63f3 Binary files /dev/null and b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_vl.jpg b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_vl.jpg new file mode 100644 index 0000000..cc357a3 Binary files /dev/null and b/Apps/XinDianTu/Images/7cf8e0e4-2201-4f5a-ada2-3af2414e06bf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7d965628-4424-433c-a027-6e6e5dbd0bb3.jpg b/Apps/XinDianTu/Images/7d965628-4424-433c-a027-6e6e5dbd0bb3.jpg new file mode 100644 index 0000000..ff6a387 Binary files /dev/null and b/Apps/XinDianTu/Images/7d965628-4424-433c-a027-6e6e5dbd0bb3.jpg differ diff --git a/Apps/XinDianTu/Images/7dfec1fc-8fa1-4c53-8d58-d7df0b4f89f0.jpg b/Apps/XinDianTu/Images/7dfec1fc-8fa1-4c53-8d58-d7df0b4f89f0.jpg new file mode 100644 index 0000000..ca0079c Binary files /dev/null and b/Apps/XinDianTu/Images/7dfec1fc-8fa1-4c53-8d58-d7df0b4f89f0.jpg differ diff --git a/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_1.jpg b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_1.jpg new file mode 100644 index 0000000..0389dec Binary files /dev/null and b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_2.jpg b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_2.jpg new file mode 100644 index 0000000..4b77d20 Binary files /dev/null and b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_3.jpg b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_3.jpg new file mode 100644 index 0000000..cc2b2f1 Binary files /dev/null and b/Apps/XinDianTu/Images/7e15d9895fbdbc4e699005113125edc0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7e79b32c-bb50-4b3c-855f-b619fdd0bcc1.jpg b/Apps/XinDianTu/Images/7e79b32c-bb50-4b3c-855f-b619fdd0bcc1.jpg new file mode 100644 index 0000000..dbe7447 Binary files /dev/null and b/Apps/XinDianTu/Images/7e79b32c-bb50-4b3c-855f-b619fdd0bcc1.jpg differ diff --git a/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.jpg b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.jpg new file mode 100644 index 0000000..8e22ea0 Binary files /dev/null and b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.jpg differ diff --git a/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.json b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.json new file mode 100644 index 0000000..3ba2459 --- /dev/null +++ b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb.json @@ -0,0 +1,20 @@ +{ + "image": "7e9b0398-dc75-4de2-980c-7330aaaba8fb.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 226, + 720, + 428 + ], + "click_point": [ + 124, + 266 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_flag.jpg b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_flag.jpg new file mode 100644 index 0000000..9888095 Binary files /dev/null and b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_vl.jpg b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_vl.jpg new file mode 100644 index 0000000..70f82a6 Binary files /dev/null and b/Apps/XinDianTu/Images/7e9b0398-dc75-4de2-980c-7330aaaba8fb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.jpg b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.jpg new file mode 100644 index 0000000..098a3a4 Binary files /dev/null and b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.jpg differ diff --git a/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.json b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.json new file mode 100644 index 0000000..771cf08 --- /dev/null +++ b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06.json @@ -0,0 +1,46 @@ +{ + "image": "7eaf9942-380f-48fc-8ef1-05679e375f06.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 521, + 700, + 767 + ], + "click_point": [ + 121, + 570 + ] + }, + { + "id": 2, + "rect": [ + 19, + 780, + 700, + 1028 + ], + "click_point": [ + 121, + 829 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1041, + 700, + 1287 + ], + "click_point": [ + 121, + 1090 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_flag.jpg b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_flag.jpg new file mode 100644 index 0000000..f7c0d4d Binary files /dev/null and b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_vl.jpg b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_vl.jpg new file mode 100644 index 0000000..7e48af6 Binary files /dev/null and b/Apps/XinDianTu/Images/7eaf9942-380f-48fc-8ef1-05679e375f06_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_1.jpg b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_1.jpg new file mode 100644 index 0000000..e93bcae Binary files /dev/null and b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_2.jpg b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_2.jpg new file mode 100644 index 0000000..e9aa022 Binary files /dev/null and b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_3.jpg b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_3.jpg new file mode 100644 index 0000000..845b78b Binary files /dev/null and b/Apps/XinDianTu/Images/7ee235977c8911d0d3a0d104bb479dae_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.jpg b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.jpg new file mode 100644 index 0000000..aa47d84 Binary files /dev/null and b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.jpg differ diff --git a/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.json b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.json new file mode 100644 index 0000000..caee4af --- /dev/null +++ b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d.json @@ -0,0 +1,46 @@ +{ + "image": "7ef977fd-44ac-434d-93d7-85a08b8ad75d.jpg", + "width": 720, + "height": 126, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 403, + 700, + 679 + ], + "click_point": [ + 121, + 458 + ] + }, + { + "id": 2, + "rect": [ + 19, + 688, + 700, + 974 + ], + "click_point": [ + 121, + 745 + ] + }, + { + "id": 3, + "rect": [ + 19, + 988, + 700, + 1239 + ], + "click_point": [ + 121, + 1038 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_flag.jpg b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_flag.jpg new file mode 100644 index 0000000..ccdc5bc Binary files /dev/null and b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_vl.jpg b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_vl.jpg new file mode 100644 index 0000000..dfda0ab Binary files /dev/null and b/Apps/XinDianTu/Images/7ef977fd-44ac-434d-93d7-85a08b8ad75d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.jpg b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.jpg new file mode 100644 index 0000000..08b6236 Binary files /dev/null and b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.jpg differ diff --git a/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.json b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.json new file mode 100644 index 0000000..95a2254 --- /dev/null +++ b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424.json @@ -0,0 +1,46 @@ +{ + "image": "7f40fad8-9d6e-480b-bc14-93a9f7911424.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 547, + 700, + 796 + ], + "click_point": [ + 121, + 596 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1045 + ], + "click_point": [ + 121, + 852 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1059, + 700, + 1308 + ], + "click_point": [ + 121, + 1108 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_flag.jpg b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_flag.jpg new file mode 100644 index 0000000..1334b0d Binary files /dev/null and b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_flag.jpg differ diff --git a/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_vl.jpg b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_vl.jpg new file mode 100644 index 0000000..287d377 Binary files /dev/null and b/Apps/XinDianTu/Images/7f40fad8-9d6e-480b-bc14-93a9f7911424_vl.jpg differ diff --git a/Apps/XinDianTu/Images/7f8ef046-e39a-4784-b940-e48d70ba6632.jpg b/Apps/XinDianTu/Images/7f8ef046-e39a-4784-b940-e48d70ba6632.jpg new file mode 100644 index 0000000..6a2a31c Binary files /dev/null and b/Apps/XinDianTu/Images/7f8ef046-e39a-4784-b940-e48d70ba6632.jpg differ diff --git a/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_1.jpg b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_1.jpg new file mode 100644 index 0000000..d61d19f Binary files /dev/null and b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_2.jpg b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_2.jpg new file mode 100644 index 0000000..9cce495 Binary files /dev/null and b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_3.jpg b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_3.jpg new file mode 100644 index 0000000..dfd61f5 Binary files /dev/null and b/Apps/XinDianTu/Images/7fe39fca2c5d8c62c24855be5a1e6362_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_1.jpg b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_1.jpg new file mode 100644 index 0000000..3cf4703 Binary files /dev/null and b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_2.jpg b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_2.jpg new file mode 100644 index 0000000..91d8a43 Binary files /dev/null and b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_3.jpg b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_3.jpg new file mode 100644 index 0000000..2b2d4a0 Binary files /dev/null and b/Apps/XinDianTu/Images/7fe9b2c6cbbfae5f660869832d0ed0ad_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_1.jpg b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_1.jpg new file mode 100644 index 0000000..4b43149 Binary files /dev/null and b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_2.jpg b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_2.jpg new file mode 100644 index 0000000..b9ea3ba Binary files /dev/null and b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_3.jpg b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_3.jpg new file mode 100644 index 0000000..bc8aa83 Binary files /dev/null and b/Apps/XinDianTu/Images/7ff0db75917ce7f8348db483fe1d0185_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_1.jpg b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_1.jpg new file mode 100644 index 0000000..fe12430 Binary files /dev/null and b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_2.jpg b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_2.jpg new file mode 100644 index 0000000..7ae57d4 Binary files /dev/null and b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_3.jpg b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_3.jpg new file mode 100644 index 0000000..4a3a30f Binary files /dev/null and b/Apps/XinDianTu/Images/801a38062c0c37af9f7535eb8693790e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7.jpg b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7.jpg new file mode 100644 index 0000000..1c79688 Binary files /dev/null and b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7.jpg differ diff --git a/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_flag.jpg b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_flag.jpg new file mode 100644 index 0000000..40db3f6 Binary files /dev/null and b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_flag.jpg differ diff --git a/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_vl.jpg b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_vl.jpg new file mode 100644 index 0000000..d987965 Binary files /dev/null and b/Apps/XinDianTu/Images/80534097-a3e7-44c4-832f-4704fd03d9b7_vl.jpg differ diff --git a/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_1.jpg b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_1.jpg new file mode 100644 index 0000000..f70040d Binary files /dev/null and b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_2.jpg b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_2.jpg new file mode 100644 index 0000000..cd434b2 Binary files /dev/null and b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_3.jpg b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_3.jpg new file mode 100644 index 0000000..f586917 Binary files /dev/null and b/Apps/XinDianTu/Images/805464597f1969e831004f048af0baa4_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.jpg b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.jpg new file mode 100644 index 0000000..01b42cb Binary files /dev/null and b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.jpg differ diff --git a/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.json b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.json new file mode 100644 index 0000000..8369207 --- /dev/null +++ b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d.json @@ -0,0 +1,20 @@ +{ + "image": "80578a3d-a44c-4a91-b499-bb15c486363d.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 226, + 720, + 428 + ], + "click_point": [ + 124, + 266 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_flag.jpg b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_flag.jpg new file mode 100644 index 0000000..41dc80e Binary files /dev/null and b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_vl.jpg b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_vl.jpg new file mode 100644 index 0000000..a78afc2 Binary files /dev/null and b/Apps/XinDianTu/Images/80578a3d-a44c-4a91-b499-bb15c486363d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/80c4f5bb-3a25-4b04-aec8-400741d614cb.jpg b/Apps/XinDianTu/Images/80c4f5bb-3a25-4b04-aec8-400741d614cb.jpg new file mode 100644 index 0000000..14fc4ce Binary files /dev/null and b/Apps/XinDianTu/Images/80c4f5bb-3a25-4b04-aec8-400741d614cb.jpg differ diff --git a/Apps/XinDianTu/Images/80d0333e-4a22-49a1-8445-436f98895336.jpg b/Apps/XinDianTu/Images/80d0333e-4a22-49a1-8445-436f98895336.jpg new file mode 100644 index 0000000..8d4c0c7 Binary files /dev/null and b/Apps/XinDianTu/Images/80d0333e-4a22-49a1-8445-436f98895336.jpg differ diff --git a/Apps/XinDianTu/Images/80ebfc6d-3137-47ac-8b25-5ba531ad45ec.jpg b/Apps/XinDianTu/Images/80ebfc6d-3137-47ac-8b25-5ba531ad45ec.jpg new file mode 100644 index 0000000..c7aa16b Binary files /dev/null and b/Apps/XinDianTu/Images/80ebfc6d-3137-47ac-8b25-5ba531ad45ec.jpg differ diff --git a/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.jpg b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.jpg new file mode 100644 index 0000000..873115b Binary files /dev/null and b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.jpg differ diff --git a/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.json b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.json new file mode 100644 index 0000000..3afecab --- /dev/null +++ b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525.json @@ -0,0 +1,46 @@ +{ + "image": "816bb6a0-c46b-4233-bd93-e336776fe525.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 694 + ], + "click_point": [ + 121, + 462 + ] + }, + { + "id": 2, + "rect": [ + 19, + 708, + 700, + 999 + ], + "click_point": [ + 121, + 766 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_flag.jpg b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_flag.jpg new file mode 100644 index 0000000..12ec43b Binary files /dev/null and b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_flag.jpg differ diff --git a/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_vl.jpg b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_vl.jpg new file mode 100644 index 0000000..ada3c85 Binary files /dev/null and b/Apps/XinDianTu/Images/816bb6a0-c46b-4233-bd93-e336776fe525_vl.jpg differ diff --git a/Apps/XinDianTu/Images/816f7370-a8b7-43d5-8474-774c126ce4e1.jpg b/Apps/XinDianTu/Images/816f7370-a8b7-43d5-8474-774c126ce4e1.jpg new file mode 100644 index 0000000..de98391 Binary files /dev/null and b/Apps/XinDianTu/Images/816f7370-a8b7-43d5-8474-774c126ce4e1.jpg differ diff --git a/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d.jpg b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d.jpg new file mode 100644 index 0000000..50c53ef Binary files /dev/null and b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d.jpg differ diff --git a/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_flag.jpg b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_flag.jpg new file mode 100644 index 0000000..30d23f3 Binary files /dev/null and b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_vl.jpg b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_vl.jpg new file mode 100644 index 0000000..8f62fea Binary files /dev/null and b/Apps/XinDianTu/Images/819863b8-1dd9-45ca-8be9-7c236088b42d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.jpg b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.jpg new file mode 100644 index 0000000..3a01c1c Binary files /dev/null and b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.jpg differ diff --git a/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.json b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.json new file mode 100644 index 0000000..16e14b1 --- /dev/null +++ b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a.json @@ -0,0 +1,46 @@ +{ + "image": "81e777dd-c980-4cbb-825d-3bdf453b3b9a.jpg", + "width": 720, + "height": 302, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 553, + 700, + 799 + ], + "click_point": [ + 121, + 602 + ] + }, + { + "id": 2, + "rect": [ + 19, + 812, + 700, + 1060 + ], + "click_point": [ + 121, + 861 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1072, + 700, + 1374 + ], + "click_point": [ + 121, + 1132 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_flag.jpg b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_flag.jpg new file mode 100644 index 0000000..d83a08e Binary files /dev/null and b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_vl.jpg b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_vl.jpg new file mode 100644 index 0000000..88a9dce Binary files /dev/null and b/Apps/XinDianTu/Images/81e777dd-c980-4cbb-825d-3bdf453b3b9a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c.jpg b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c.jpg new file mode 100644 index 0000000..28dfc5a Binary files /dev/null and b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c.jpg differ diff --git a/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_flag.jpg b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_flag.jpg new file mode 100644 index 0000000..03fca08 Binary files /dev/null and b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_vl.jpg b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_vl.jpg new file mode 100644 index 0000000..97226ae Binary files /dev/null and b/Apps/XinDianTu/Images/81fc10a2-544d-4776-9550-877360e0ae9c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_1.jpg b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_1.jpg new file mode 100644 index 0000000..41220de Binary files /dev/null and b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_2.jpg b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_2.jpg new file mode 100644 index 0000000..8ea0486 Binary files /dev/null and b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_3.jpg b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_3.jpg new file mode 100644 index 0000000..5eb9dbe Binary files /dev/null and b/Apps/XinDianTu/Images/827c42bc8db0bd783df2d2b64fe4371b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_1.jpg b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_1.jpg new file mode 100644 index 0000000..b0a9d07 Binary files /dev/null and b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_2.jpg b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_2.jpg new file mode 100644 index 0000000..0024ef3 Binary files /dev/null and b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_3.jpg b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_3.jpg new file mode 100644 index 0000000..6cd440a Binary files /dev/null and b/Apps/XinDianTu/Images/829f8d1502626f64aed99f2151c7ea27_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/82d67faa-1611-4c51-ac56-7f457a2a6cca.jpg b/Apps/XinDianTu/Images/82d67faa-1611-4c51-ac56-7f457a2a6cca.jpg new file mode 100644 index 0000000..8c0462e Binary files /dev/null and b/Apps/XinDianTu/Images/82d67faa-1611-4c51-ac56-7f457a2a6cca.jpg differ diff --git a/Apps/XinDianTu/Images/82ddd85b-b648-455c-814c-732fdb3cf400.jpg b/Apps/XinDianTu/Images/82ddd85b-b648-455c-814c-732fdb3cf400.jpg new file mode 100644 index 0000000..9077ba7 Binary files /dev/null and b/Apps/XinDianTu/Images/82ddd85b-b648-455c-814c-732fdb3cf400.jpg differ diff --git a/Apps/XinDianTu/Images/82ef8a80-1d18-4925-b711-ce3a1032b301.jpg b/Apps/XinDianTu/Images/82ef8a80-1d18-4925-b711-ce3a1032b301.jpg new file mode 100644 index 0000000..084bd15 Binary files /dev/null and b/Apps/XinDianTu/Images/82ef8a80-1d18-4925-b711-ce3a1032b301.jpg differ diff --git a/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399.jpg b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399.jpg new file mode 100644 index 0000000..250ecc8 Binary files /dev/null and b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399.jpg differ diff --git a/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_flag.jpg b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_flag.jpg new file mode 100644 index 0000000..f6e701c Binary files /dev/null and b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_flag.jpg differ diff --git a/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_vl.jpg b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_vl.jpg new file mode 100644 index 0000000..4ecb841 Binary files /dev/null and b/Apps/XinDianTu/Images/831b5fe5-ca20-49f4-a8ab-c1f4ab010399_vl.jpg differ diff --git a/Apps/XinDianTu/Images/841f29a1-2537-413e-9c8d-68203b95c0e3.jpg b/Apps/XinDianTu/Images/841f29a1-2537-413e-9c8d-68203b95c0e3.jpg new file mode 100644 index 0000000..6e69377 Binary files /dev/null and b/Apps/XinDianTu/Images/841f29a1-2537-413e-9c8d-68203b95c0e3.jpg differ diff --git a/Apps/XinDianTu/Images/8431f691-4f79-46e5-85b8-ef21a775d213.jpg b/Apps/XinDianTu/Images/8431f691-4f79-46e5-85b8-ef21a775d213.jpg new file mode 100644 index 0000000..8de799c Binary files /dev/null and b/Apps/XinDianTu/Images/8431f691-4f79-46e5-85b8-ef21a775d213.jpg differ diff --git a/Apps/XinDianTu/Images/84583e90-34b0-4664-a9f7-84b2f8f43adf.jpg b/Apps/XinDianTu/Images/84583e90-34b0-4664-a9f7-84b2f8f43adf.jpg new file mode 100644 index 0000000..7411536 Binary files /dev/null and b/Apps/XinDianTu/Images/84583e90-34b0-4664-a9f7-84b2f8f43adf.jpg differ diff --git a/Apps/XinDianTu/Images/847d6658-e927-4283-94ad-3b26690364ca.jpg b/Apps/XinDianTu/Images/847d6658-e927-4283-94ad-3b26690364ca.jpg new file mode 100644 index 0000000..10f8498 Binary files /dev/null and b/Apps/XinDianTu/Images/847d6658-e927-4283-94ad-3b26690364ca.jpg differ diff --git a/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8.jpg b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8.jpg new file mode 100644 index 0000000..bbb250e Binary files /dev/null and b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8.jpg differ diff --git a/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_flag.jpg b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_flag.jpg new file mode 100644 index 0000000..e97b7b1 Binary files /dev/null and b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_vl.jpg b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_vl.jpg new file mode 100644 index 0000000..e831ad6 Binary files /dev/null and b/Apps/XinDianTu/Images/84b99e5c-09ad-4782-9c95-19dec0689be8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_1.jpg b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_1.jpg new file mode 100644 index 0000000..db8d939 Binary files /dev/null and b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_2.jpg b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_2.jpg new file mode 100644 index 0000000..9b0f282 Binary files /dev/null and b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_3.jpg b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_3.jpg new file mode 100644 index 0000000..0f89e13 Binary files /dev/null and b/Apps/XinDianTu/Images/85086207f8c9f32ed2c3e935e98c204a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8582c058-b47c-4817-9c1c-b909a6934750.jpg b/Apps/XinDianTu/Images/8582c058-b47c-4817-9c1c-b909a6934750.jpg new file mode 100644 index 0000000..ba07528 Binary files /dev/null and b/Apps/XinDianTu/Images/8582c058-b47c-4817-9c1c-b909a6934750.jpg differ diff --git a/Apps/XinDianTu/Images/85b76bd5-20e8-42c1-9a82-4464bfcf9781.jpg b/Apps/XinDianTu/Images/85b76bd5-20e8-42c1-9a82-4464bfcf9781.jpg new file mode 100644 index 0000000..17a5006 Binary files /dev/null and b/Apps/XinDianTu/Images/85b76bd5-20e8-42c1-9a82-4464bfcf9781.jpg differ diff --git a/Apps/XinDianTu/Images/85c1cf17-8bbc-451c-88e3-166d790441e1.jpg b/Apps/XinDianTu/Images/85c1cf17-8bbc-451c-88e3-166d790441e1.jpg new file mode 100644 index 0000000..6510951 Binary files /dev/null and b/Apps/XinDianTu/Images/85c1cf17-8bbc-451c-88e3-166d790441e1.jpg differ diff --git a/Apps/XinDianTu/Images/85f73cd3-ec40-414e-8f73-71798aff917d.jpg b/Apps/XinDianTu/Images/85f73cd3-ec40-414e-8f73-71798aff917d.jpg new file mode 100644 index 0000000..76bb3a4 Binary files /dev/null and b/Apps/XinDianTu/Images/85f73cd3-ec40-414e-8f73-71798aff917d.jpg differ diff --git a/Apps/XinDianTu/Images/861b0359-fd73-4bd1-9bf8-766dcb0e2401.jpg b/Apps/XinDianTu/Images/861b0359-fd73-4bd1-9bf8-766dcb0e2401.jpg new file mode 100644 index 0000000..d599ab8 Binary files /dev/null and b/Apps/XinDianTu/Images/861b0359-fd73-4bd1-9bf8-766dcb0e2401.jpg differ diff --git a/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.jpg b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.jpg new file mode 100644 index 0000000..39acdef Binary files /dev/null and b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.jpg differ diff --git a/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.json b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.json new file mode 100644 index 0000000..d2b3f24 --- /dev/null +++ b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778.json @@ -0,0 +1,46 @@ +{ + "image": "86231538-39be-40c6-bf13-af7e5b29b778.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_flag.jpg b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_flag.jpg new file mode 100644 index 0000000..4c70321 Binary files /dev/null and b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_flag.jpg differ diff --git a/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_vl.jpg b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_vl.jpg new file mode 100644 index 0000000..21b58da Binary files /dev/null and b/Apps/XinDianTu/Images/86231538-39be-40c6-bf13-af7e5b29b778_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8657e7ce-e4c3-4a75-b9a9-cc4c17293c18.jpg b/Apps/XinDianTu/Images/8657e7ce-e4c3-4a75-b9a9-cc4c17293c18.jpg new file mode 100644 index 0000000..53fe6a5 Binary files /dev/null and b/Apps/XinDianTu/Images/8657e7ce-e4c3-4a75-b9a9-cc4c17293c18.jpg differ diff --git a/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_1.jpg b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_1.jpg new file mode 100644 index 0000000..4294ec6 Binary files /dev/null and b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_2.jpg b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_2.jpg new file mode 100644 index 0000000..59a149e Binary files /dev/null and b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_3.jpg b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_3.jpg new file mode 100644 index 0000000..2424109 Binary files /dev/null and b/Apps/XinDianTu/Images/867d112ad11fdf816deb5cc8520d8292_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8697e993-677c-4e21-81b1-65a943312343.jpg b/Apps/XinDianTu/Images/8697e993-677c-4e21-81b1-65a943312343.jpg new file mode 100644 index 0000000..319e0e3 Binary files /dev/null and b/Apps/XinDianTu/Images/8697e993-677c-4e21-81b1-65a943312343.jpg differ diff --git a/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_1.jpg b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_1.jpg new file mode 100644 index 0000000..28d042f Binary files /dev/null and b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_2.jpg b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_2.jpg new file mode 100644 index 0000000..640aef4 Binary files /dev/null and b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_3.jpg b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_3.jpg new file mode 100644 index 0000000..a74ce1a Binary files /dev/null and b/Apps/XinDianTu/Images/86c437e5fdb1d25150a9ce9cd060356c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/86d20716-ce50-4472-8c63-5a206aa7a50f.jpg b/Apps/XinDianTu/Images/86d20716-ce50-4472-8c63-5a206aa7a50f.jpg new file mode 100644 index 0000000..b83796a Binary files /dev/null and b/Apps/XinDianTu/Images/86d20716-ce50-4472-8c63-5a206aa7a50f.jpg differ diff --git a/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696.jpg b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696.jpg new file mode 100644 index 0000000..be2c092 Binary files /dev/null and b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696.jpg differ diff --git a/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_flag.jpg b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_flag.jpg new file mode 100644 index 0000000..91ca7c5 Binary files /dev/null and b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_flag.jpg differ diff --git a/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_vl.jpg b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_vl.jpg new file mode 100644 index 0000000..5d190a1 Binary files /dev/null and b/Apps/XinDianTu/Images/87409094-1143-478c-9007-a732c3a8b696_vl.jpg differ diff --git a/Apps/XinDianTu/Images/87c93f15-56c0-4115-9df8-f5e82820a4ca.jpg b/Apps/XinDianTu/Images/87c93f15-56c0-4115-9df8-f5e82820a4ca.jpg new file mode 100644 index 0000000..76d9cf5 Binary files /dev/null and b/Apps/XinDianTu/Images/87c93f15-56c0-4115-9df8-f5e82820a4ca.jpg differ diff --git a/Apps/XinDianTu/Images/87f4b392-548a-4eb4-af3e-ad5c03dda024.jpg b/Apps/XinDianTu/Images/87f4b392-548a-4eb4-af3e-ad5c03dda024.jpg new file mode 100644 index 0000000..7e88257 Binary files /dev/null and b/Apps/XinDianTu/Images/87f4b392-548a-4eb4-af3e-ad5c03dda024.jpg differ diff --git a/Apps/XinDianTu/Images/88007cd2-982b-4fc1-81a3-9c50fd3f9e61.jpg b/Apps/XinDianTu/Images/88007cd2-982b-4fc1-81a3-9c50fd3f9e61.jpg new file mode 100644 index 0000000..e08ec2c Binary files /dev/null and b/Apps/XinDianTu/Images/88007cd2-982b-4fc1-81a3-9c50fd3f9e61.jpg differ diff --git a/Apps/XinDianTu/Images/881304e7-d8fc-4d09-b362-46a9e71be346.jpg b/Apps/XinDianTu/Images/881304e7-d8fc-4d09-b362-46a9e71be346.jpg new file mode 100644 index 0000000..3ab3991 Binary files /dev/null and b/Apps/XinDianTu/Images/881304e7-d8fc-4d09-b362-46a9e71be346.jpg differ diff --git a/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed.jpg b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed.jpg new file mode 100644 index 0000000..9490897 Binary files /dev/null and b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed.jpg differ diff --git a/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_flag.jpg b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_flag.jpg new file mode 100644 index 0000000..8d28113 Binary files /dev/null and b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_flag.jpg differ diff --git a/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_vl.jpg b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_vl.jpg new file mode 100644 index 0000000..e147849 Binary files /dev/null and b/Apps/XinDianTu/Images/881e5d8c-65e4-4232-b423-c5c1d0ad87ed_vl.jpg differ diff --git a/Apps/XinDianTu/Images/88883d8d-b9d4-4edf-91d2-98bec14945eb.jpg b/Apps/XinDianTu/Images/88883d8d-b9d4-4edf-91d2-98bec14945eb.jpg new file mode 100644 index 0000000..d130908 Binary files /dev/null and b/Apps/XinDianTu/Images/88883d8d-b9d4-4edf-91d2-98bec14945eb.jpg differ diff --git a/Apps/XinDianTu/Images/8902c986-b410-4d8b-b9c8-590d3f1fecc4.jpg b/Apps/XinDianTu/Images/8902c986-b410-4d8b-b9c8-590d3f1fecc4.jpg new file mode 100644 index 0000000..d8d0b75 Binary files /dev/null and b/Apps/XinDianTu/Images/8902c986-b410-4d8b-b9c8-590d3f1fecc4.jpg differ diff --git a/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_1.jpg b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_1.jpg new file mode 100644 index 0000000..259f1ed Binary files /dev/null and b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_2.jpg b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_2.jpg new file mode 100644 index 0000000..0de2ccc Binary files /dev/null and b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_3.jpg b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_3.jpg new file mode 100644 index 0000000..77029d9 Binary files /dev/null and b/Apps/XinDianTu/Images/890302bd4ae84ec34e62eb5ba36b68cf_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_1.jpg b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_1.jpg new file mode 100644 index 0000000..dd2485c Binary files /dev/null and b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_2.jpg b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_2.jpg new file mode 100644 index 0000000..4a76cb7 Binary files /dev/null and b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_3.jpg b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_3.jpg new file mode 100644 index 0000000..eabd150 Binary files /dev/null and b/Apps/XinDianTu/Images/895883554db4f5c306593dc63495238c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.jpg b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.jpg new file mode 100644 index 0000000..e579579 Binary files /dev/null and b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.jpg differ diff --git a/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.json b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.json new file mode 100644 index 0000000..7d9cba7 --- /dev/null +++ b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471.json @@ -0,0 +1,46 @@ +{ + "image": "89cef571-a5d2-42e4-87d9-08e8ea3a9471.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_flag.jpg b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_flag.jpg new file mode 100644 index 0000000..dfd1a87 Binary files /dev/null and b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_flag.jpg differ diff --git a/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_vl.jpg b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_vl.jpg new file mode 100644 index 0000000..fb6c186 Binary files /dev/null and b/Apps/XinDianTu/Images/89cef571-a5d2-42e4-87d9-08e8ea3a9471_vl.jpg differ diff --git a/Apps/XinDianTu/Images/89df1830-e7c2-4684-9c6b-f51bf74c5b6f.jpg b/Apps/XinDianTu/Images/89df1830-e7c2-4684-9c6b-f51bf74c5b6f.jpg new file mode 100644 index 0000000..90b1db2 Binary files /dev/null and b/Apps/XinDianTu/Images/89df1830-e7c2-4684-9c6b-f51bf74c5b6f.jpg differ diff --git a/Apps/XinDianTu/Images/89e5c779-80e3-43ae-8a7a-b3ca1de490b5.jpg b/Apps/XinDianTu/Images/89e5c779-80e3-43ae-8a7a-b3ca1de490b5.jpg new file mode 100644 index 0000000..6707a11 Binary files /dev/null and b/Apps/XinDianTu/Images/89e5c779-80e3-43ae-8a7a-b3ca1de490b5.jpg differ diff --git a/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_1.jpg b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_1.jpg new file mode 100644 index 0000000..46cf416 Binary files /dev/null and b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_2.jpg b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_2.jpg new file mode 100644 index 0000000..6e357c0 Binary files /dev/null and b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_3.jpg b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_3.jpg new file mode 100644 index 0000000..b0233c1 Binary files /dev/null and b/Apps/XinDianTu/Images/89f11dd56c508db3f8b4390fb10b7367_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.jpg b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.jpg new file mode 100644 index 0000000..16044f3 Binary files /dev/null and b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.jpg differ diff --git a/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.json b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.json new file mode 100644 index 0000000..c72168b --- /dev/null +++ b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5.json @@ -0,0 +1,59 @@ +{ + "image": "8a069c6c-7a38-490a-aac5-252927ee9fe5.jpg", + "width": 720, + "height": 194, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 419, + 700, + 620 + ], + "click_point": [ + 121, + 459 + ] + }, + { + "id": 2, + "rect": [ + 19, + 632, + 700, + 908 + ], + "click_point": [ + 121, + 687 + ] + }, + { + "id": 3, + "rect": [ + 19, + 921, + 700, + 1167 + ], + "click_point": [ + 121, + 970 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1180, + 700, + 1374 + ], + "click_point": [ + 121, + 1218 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_flag.jpg b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_flag.jpg new file mode 100644 index 0000000..e2b7a8f Binary files /dev/null and b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_vl.jpg b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_vl.jpg new file mode 100644 index 0000000..7ba86cb Binary files /dev/null and b/Apps/XinDianTu/Images/8a069c6c-7a38-490a-aac5-252927ee9fe5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8a2856c2-096b-4b75-a926-0d729bf4241c.jpg b/Apps/XinDianTu/Images/8a2856c2-096b-4b75-a926-0d729bf4241c.jpg new file mode 100644 index 0000000..1c9378a Binary files /dev/null and b/Apps/XinDianTu/Images/8a2856c2-096b-4b75-a926-0d729bf4241c.jpg differ diff --git a/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814.jpg b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814.jpg new file mode 100644 index 0000000..148fe59 Binary files /dev/null and b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814.jpg differ diff --git a/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_flag.jpg b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_flag.jpg new file mode 100644 index 0000000..fc09bcd Binary files /dev/null and b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_vl.jpg b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_vl.jpg new file mode 100644 index 0000000..c25f5ce Binary files /dev/null and b/Apps/XinDianTu/Images/8a9a38ab-8135-41d1-9966-8aefae4c8814_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.jpg b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.jpg new file mode 100644 index 0000000..39cc169 Binary files /dev/null and b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.jpg differ diff --git a/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.json b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.json new file mode 100644 index 0000000..11a1e53 --- /dev/null +++ b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9.json @@ -0,0 +1,46 @@ +{ + "image": "8b176b89-9d24-47bb-9b44-f3e94fef9ea9.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 529, + 700, + 780 + ], + "click_point": [ + 121, + 579 + ] + }, + { + "id": 2, + "rect": [ + 19, + 794, + 700, + 1040 + ], + "click_point": [ + 121, + 843 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1049, + 700, + 1300 + ], + "click_point": [ + 121, + 1099 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_flag.jpg b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_flag.jpg new file mode 100644 index 0000000..8eb62c7 Binary files /dev/null and b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_vl.jpg b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_vl.jpg new file mode 100644 index 0000000..0019a0c Binary files /dev/null and b/Apps/XinDianTu/Images/8b176b89-9d24-47bb-9b44-f3e94fef9ea9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_1.jpg b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_1.jpg new file mode 100644 index 0000000..b6b14f7 Binary files /dev/null and b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_2.jpg b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_2.jpg new file mode 100644 index 0000000..55e4475 Binary files /dev/null and b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_3.jpg b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_3.jpg new file mode 100644 index 0000000..c623eec Binary files /dev/null and b/Apps/XinDianTu/Images/8b1cc1d4ce8140cb20ad24949a219058_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_1.jpg b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_1.jpg new file mode 100644 index 0000000..01dddc7 Binary files /dev/null and b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_2.jpg b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_2.jpg new file mode 100644 index 0000000..a3f9b09 Binary files /dev/null and b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_3.jpg b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_3.jpg new file mode 100644 index 0000000..78cef5a Binary files /dev/null and b/Apps/XinDianTu/Images/8b9318b4e77f38656afb9e3237468e04_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_1.jpg b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_1.jpg new file mode 100644 index 0000000..2f38bf0 Binary files /dev/null and b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_2.jpg b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_2.jpg new file mode 100644 index 0000000..2f38bf0 Binary files /dev/null and b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_3.jpg b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_3.jpg new file mode 100644 index 0000000..2f38bf0 Binary files /dev/null and b/Apps/XinDianTu/Images/8baca337c81957566398de360f592dff_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8bea9a25-9725-47ad-96a5-db2d6ad8b06e.jpg b/Apps/XinDianTu/Images/8bea9a25-9725-47ad-96a5-db2d6ad8b06e.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/8bea9a25-9725-47ad-96a5-db2d6ad8b06e.jpg differ diff --git a/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_1.jpg b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_1.jpg new file mode 100644 index 0000000..9f28075 Binary files /dev/null and b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_2.jpg b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_2.jpg new file mode 100644 index 0000000..1c093ff Binary files /dev/null and b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_3.jpg b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_3.jpg new file mode 100644 index 0000000..c746530 Binary files /dev/null and b/Apps/XinDianTu/Images/8c1e9db7d39089074b37cabeea2990af_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8c544257-e37e-43bf-aa11-2415e4335413.jpg b/Apps/XinDianTu/Images/8c544257-e37e-43bf-aa11-2415e4335413.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/8c544257-e37e-43bf-aa11-2415e4335413.jpg differ diff --git a/Apps/XinDianTu/Images/8c7dba01-7a29-4411-b1ee-43ba79efd390.jpg b/Apps/XinDianTu/Images/8c7dba01-7a29-4411-b1ee-43ba79efd390.jpg new file mode 100644 index 0000000..df0a5c0 Binary files /dev/null and b/Apps/XinDianTu/Images/8c7dba01-7a29-4411-b1ee-43ba79efd390.jpg differ diff --git a/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3.jpg b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3.jpg new file mode 100644 index 0000000..3cafcaa Binary files /dev/null and b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3.jpg differ diff --git a/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_flag.jpg b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_flag.jpg new file mode 100644 index 0000000..93db36e Binary files /dev/null and b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_vl.jpg b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_vl.jpg new file mode 100644 index 0000000..0428e67 Binary files /dev/null and b/Apps/XinDianTu/Images/8c8fa2b3-369b-4b87-b655-e0282f0a17a3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_1.jpg b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_1.jpg new file mode 100644 index 0000000..88c235a Binary files /dev/null and b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_2.jpg b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_2.jpg new file mode 100644 index 0000000..9fbdc8f Binary files /dev/null and b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_3.jpg b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_3.jpg new file mode 100644 index 0000000..fe0fe1b Binary files /dev/null and b/Apps/XinDianTu/Images/8cc5d4b64840a58c0518e2fe325e5627_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.jpg b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.jpg new file mode 100644 index 0000000..b83ac82 Binary files /dev/null and b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.jpg differ diff --git a/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.json b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.json new file mode 100644 index 0000000..787522e --- /dev/null +++ b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f.json @@ -0,0 +1,46 @@ +{ + "image": "8cd6c644-345b-4d95-8c35-021337b5773f.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 403, + 700, + 671 + ], + "click_point": [ + 121, + 456 + ] + }, + { + "id": 2, + "rect": [ + 19, + 680, + 700, + 999 + ], + "click_point": [ + 121, + 743 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_flag.jpg b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_flag.jpg new file mode 100644 index 0000000..3d9e261 Binary files /dev/null and b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_vl.jpg b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_vl.jpg new file mode 100644 index 0000000..0c23e0a Binary files /dev/null and b/Apps/XinDianTu/Images/8cd6c644-345b-4d95-8c35-021337b5773f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_1.jpg b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_1.jpg new file mode 100644 index 0000000..f88d3a6 Binary files /dev/null and b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_2.jpg b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_2.jpg new file mode 100644 index 0000000..2b4e97d Binary files /dev/null and b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_3.jpg b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_3.jpg new file mode 100644 index 0000000..99ddb0e Binary files /dev/null and b/Apps/XinDianTu/Images/8d7a17bf6db93b856bc2c187e2ce8913_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_1.jpg b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_1.jpg new file mode 100644 index 0000000..44074de Binary files /dev/null and b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_2.jpg b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_2.jpg new file mode 100644 index 0000000..6ad5590 Binary files /dev/null and b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_3.jpg b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_3.jpg new file mode 100644 index 0000000..1881e95 Binary files /dev/null and b/Apps/XinDianTu/Images/8de33eb7c14ef4c0f604e80b882f15d7_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_1.jpg b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_1.jpg new file mode 100644 index 0000000..67471cc Binary files /dev/null and b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_2.jpg b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_2.jpg new file mode 100644 index 0000000..25a2ad1 Binary files /dev/null and b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_3.jpg b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_3.jpg new file mode 100644 index 0000000..1691ec9 Binary files /dev/null and b/Apps/XinDianTu/Images/8def77e3a2ac958d9288aefc7b7c5f67_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8dfdd958-d887-4a0b-9c41-f9e87ca0a1ec.jpg b/Apps/XinDianTu/Images/8dfdd958-d887-4a0b-9c41-f9e87ca0a1ec.jpg new file mode 100644 index 0000000..c197f4b Binary files /dev/null and b/Apps/XinDianTu/Images/8dfdd958-d887-4a0b-9c41-f9e87ca0a1ec.jpg differ diff --git a/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6.jpg b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6.jpg new file mode 100644 index 0000000..e646d3d Binary files /dev/null and b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6.jpg differ diff --git a/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_flag.jpg b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_flag.jpg new file mode 100644 index 0000000..39e6232 Binary files /dev/null and b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_vl.jpg b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_vl.jpg new file mode 100644 index 0000000..5e3a220 Binary files /dev/null and b/Apps/XinDianTu/Images/8e122232-bf18-4782-90e8-f8b927db39c6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8edc2897-8342-4537-bb2e-e1ea6204f57d.jpg b/Apps/XinDianTu/Images/8edc2897-8342-4537-bb2e-e1ea6204f57d.jpg new file mode 100644 index 0000000..aefb74b Binary files /dev/null and b/Apps/XinDianTu/Images/8edc2897-8342-4537-bb2e-e1ea6204f57d.jpg differ diff --git a/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.jpg b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.jpg new file mode 100644 index 0000000..2adf606 Binary files /dev/null and b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.jpg differ diff --git a/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.json b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.json new file mode 100644 index 0000000..efe0a6a --- /dev/null +++ b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979.json @@ -0,0 +1,46 @@ +{ + "image": "8f0e5d9f-c64f-4971-9b16-f198af242979.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 539, + 700, + 788 + ], + "click_point": [ + 121, + 588 + ] + }, + { + "id": 2, + "rect": [ + 19, + 794, + 700, + 1076 + ], + "click_point": [ + 121, + 850 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1084, + 700, + 1333 + ], + "click_point": [ + 121, + 1133 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_flag.jpg b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_flag.jpg new file mode 100644 index 0000000..4bba381 Binary files /dev/null and b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_vl.jpg b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_vl.jpg new file mode 100644 index 0000000..43954c0 Binary files /dev/null and b/Apps/XinDianTu/Images/8f0e5d9f-c64f-4971-9b16-f198af242979_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_1.jpg b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_1.jpg new file mode 100644 index 0000000..d2ab8d6 Binary files /dev/null and b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_2.jpg b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_2.jpg new file mode 100644 index 0000000..507f5fe Binary files /dev/null and b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_3.jpg b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_3.jpg new file mode 100644 index 0000000..b354468 Binary files /dev/null and b/Apps/XinDianTu/Images/8f5bc62e4dae5a4b22150aac2237dfe9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/8f64d77b-d8d1-4561-b873-3e2befd99b57.jpg b/Apps/XinDianTu/Images/8f64d77b-d8d1-4561-b873-3e2befd99b57.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/8f64d77b-d8d1-4561-b873-3e2befd99b57.jpg differ diff --git a/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990.jpg b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990.jpg new file mode 100644 index 0000000..3b5da4c Binary files /dev/null and b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990.jpg differ diff --git a/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_flag.jpg b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_flag.jpg new file mode 100644 index 0000000..247a458 Binary files /dev/null and b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_flag.jpg differ diff --git a/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_vl.jpg b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_vl.jpg new file mode 100644 index 0000000..0995ace Binary files /dev/null and b/Apps/XinDianTu/Images/8fcfd87f-6c8b-4330-8d24-08cc87303990_vl.jpg differ diff --git a/Apps/XinDianTu/Images/8fd0e4e6-a94a-40ec-a4c0-4fc8a7e8b389.jpg b/Apps/XinDianTu/Images/8fd0e4e6-a94a-40ec-a4c0-4fc8a7e8b389.jpg new file mode 100644 index 0000000..61982cf Binary files /dev/null and b/Apps/XinDianTu/Images/8fd0e4e6-a94a-40ec-a4c0-4fc8a7e8b389.jpg differ diff --git a/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_1.jpg b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_1.jpg new file mode 100644 index 0000000..81c591b Binary files /dev/null and b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_2.jpg b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_2.jpg new file mode 100644 index 0000000..79af538 Binary files /dev/null and b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_3.jpg b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_3.jpg new file mode 100644 index 0000000..37e49a0 Binary files /dev/null and b/Apps/XinDianTu/Images/8fdd6f4e4df3892287ce4f07fad1b2c4_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9050f265-95a6-4513-83b5-3501c8393d5d.jpg b/Apps/XinDianTu/Images/9050f265-95a6-4513-83b5-3501c8393d5d.jpg new file mode 100644 index 0000000..8de8a77 Binary files /dev/null and b/Apps/XinDianTu/Images/9050f265-95a6-4513-83b5-3501c8393d5d.jpg differ diff --git a/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_1.jpg b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_1.jpg new file mode 100644 index 0000000..f60b978 Binary files /dev/null and b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_2.jpg b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_2.jpg new file mode 100644 index 0000000..10d3b64 Binary files /dev/null and b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_3.jpg b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_3.jpg new file mode 100644 index 0000000..356978a Binary files /dev/null and b/Apps/XinDianTu/Images/906669611cbd026260524bf8840d6781_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/908b75e6-314a-42f1-8241-f2e0313e3d47.jpg b/Apps/XinDianTu/Images/908b75e6-314a-42f1-8241-f2e0313e3d47.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/908b75e6-314a-42f1-8241-f2e0313e3d47.jpg differ diff --git a/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_1.jpg b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_1.jpg new file mode 100644 index 0000000..4b0da7a Binary files /dev/null and b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_2.jpg b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_2.jpg new file mode 100644 index 0000000..f7f9548 Binary files /dev/null and b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_3.jpg b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_3.jpg new file mode 100644 index 0000000..e6a4c3a Binary files /dev/null and b/Apps/XinDianTu/Images/9106b0d50f9363c9923bf08afd246158_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/911ab50f-60aa-4a9a-86fd-1aa144890abb.jpg b/Apps/XinDianTu/Images/911ab50f-60aa-4a9a-86fd-1aa144890abb.jpg new file mode 100644 index 0000000..48b480b Binary files /dev/null and b/Apps/XinDianTu/Images/911ab50f-60aa-4a9a-86fd-1aa144890abb.jpg differ diff --git a/Apps/XinDianTu/Images/91825f68-0308-4b4e-86ab-a7ec687611fa.jpg b/Apps/XinDianTu/Images/91825f68-0308-4b4e-86ab-a7ec687611fa.jpg new file mode 100644 index 0000000..99f7633 Binary files /dev/null and b/Apps/XinDianTu/Images/91825f68-0308-4b4e-86ab-a7ec687611fa.jpg differ diff --git a/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_1.jpg b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_1.jpg new file mode 100644 index 0000000..8921ec4 Binary files /dev/null and b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_2.jpg b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_2.jpg new file mode 100644 index 0000000..4d01c4c Binary files /dev/null and b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_3.jpg b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_3.jpg new file mode 100644 index 0000000..8eb2be9 Binary files /dev/null and b/Apps/XinDianTu/Images/91b28a27d9629b5d27de2c8fe3ba56b9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.jpg b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.jpg new file mode 100644 index 0000000..4734fe5 Binary files /dev/null and b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.jpg differ diff --git a/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.json b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.json new file mode 100644 index 0000000..e9c4d89 --- /dev/null +++ b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e.json @@ -0,0 +1,46 @@ +{ + "image": "91cf25a2-2612-4ca6-8576-a10675f5838e.jpg", + "width": 720, + "height": 138, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 508, + 700, + 759 + ], + "click_point": [ + 121, + 558 + ] + }, + { + "id": 2, + "rect": [ + 19, + 768, + 700, + 1014 + ], + "click_point": [ + 121, + 817 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1028, + 700, + 1222 + ], + "click_point": [ + 121, + 1066 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_flag.jpg b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_flag.jpg new file mode 100644 index 0000000..ca8e1e5 Binary files /dev/null and b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_vl.jpg b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_vl.jpg new file mode 100644 index 0000000..9c1ad18 Binary files /dev/null and b/Apps/XinDianTu/Images/91cf25a2-2612-4ca6-8576-a10675f5838e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/91e3fdcc-180d-48c3-8cb2-c3295bd5e9fc.jpg b/Apps/XinDianTu/Images/91e3fdcc-180d-48c3-8cb2-c3295bd5e9fc.jpg new file mode 100644 index 0000000..25d97a9 Binary files /dev/null and b/Apps/XinDianTu/Images/91e3fdcc-180d-48c3-8cb2-c3295bd5e9fc.jpg differ diff --git a/Apps/XinDianTu/Images/928b173f-8f07-4e31-9f1d-3b35b0b94745.jpg b/Apps/XinDianTu/Images/928b173f-8f07-4e31-9f1d-3b35b0b94745.jpg new file mode 100644 index 0000000..7d21b8a Binary files /dev/null and b/Apps/XinDianTu/Images/928b173f-8f07-4e31-9f1d-3b35b0b94745.jpg differ diff --git a/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_1.jpg b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_1.jpg new file mode 100644 index 0000000..472030f Binary files /dev/null and b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_2.jpg b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_2.jpg new file mode 100644 index 0000000..e884536 Binary files /dev/null and b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_3.jpg b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_3.jpg new file mode 100644 index 0000000..5c31f68 Binary files /dev/null and b/Apps/XinDianTu/Images/928dfb8d67d945adcdc548d7220df3b6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/92e9ce2f-6422-4894-9566-93070dbeb320.jpg b/Apps/XinDianTu/Images/92e9ce2f-6422-4894-9566-93070dbeb320.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/92e9ce2f-6422-4894-9566-93070dbeb320.jpg differ diff --git a/Apps/XinDianTu/Images/92f2f226-41a0-4312-980f-1fd3124e90a6.jpg b/Apps/XinDianTu/Images/92f2f226-41a0-4312-980f-1fd3124e90a6.jpg new file mode 100644 index 0000000..66d2d32 Binary files /dev/null and b/Apps/XinDianTu/Images/92f2f226-41a0-4312-980f-1fd3124e90a6.jpg differ diff --git a/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_1.jpg b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_1.jpg new file mode 100644 index 0000000..b77bc14 Binary files /dev/null and b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_2.jpg b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_2.jpg new file mode 100644 index 0000000..740f397 Binary files /dev/null and b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_3.jpg b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_3.jpg new file mode 100644 index 0000000..a6c8351 Binary files /dev/null and b/Apps/XinDianTu/Images/92fb7aa47d3dc314ca00b6e9c8bfeac1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.jpg b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.jpg new file mode 100644 index 0000000..ea12c95 Binary files /dev/null and b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.jpg differ diff --git a/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.json b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.json new file mode 100644 index 0000000..8c8dc60 --- /dev/null +++ b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0.json @@ -0,0 +1,59 @@ +{ + "image": "931512c0-9c76-499f-a5ef-778017738fb0.jpg", + "width": 720, + "height": 166, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 606 + ], + "click_point": [ + 121, + 444 + ] + }, + { + "id": 2, + "rect": [ + 19, + 620, + 700, + 934 + ], + "click_point": [ + 121, + 682 + ] + }, + { + "id": 3, + "rect": [ + 19, + 948, + 700, + 1199 + ], + "click_point": [ + 121, + 998 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1208, + 700, + 1374 + ], + "click_point": [ + 121, + 1241 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_flag.jpg b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_flag.jpg new file mode 100644 index 0000000..02f3f13 Binary files /dev/null and b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_flag.jpg differ diff --git a/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_vl.jpg b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_vl.jpg new file mode 100644 index 0000000..ecfa990 Binary files /dev/null and b/Apps/XinDianTu/Images/931512c0-9c76-499f-a5ef-778017738fb0_vl.jpg differ diff --git a/Apps/XinDianTu/Images/93392454-8876-4ba9-bf13-70a7c3658698.jpg b/Apps/XinDianTu/Images/93392454-8876-4ba9-bf13-70a7c3658698.jpg new file mode 100644 index 0000000..cefbfb0 Binary files /dev/null and b/Apps/XinDianTu/Images/93392454-8876-4ba9-bf13-70a7c3658698.jpg differ diff --git a/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.jpg b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.jpg new file mode 100644 index 0000000..ed3c15e Binary files /dev/null and b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.jpg differ diff --git a/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.json b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.json new file mode 100644 index 0000000..2330b0d --- /dev/null +++ b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9.json @@ -0,0 +1,59 @@ +{ + "image": "9340c5d5-160d-47e2-b64c-5701158866d9.jpg", + "width": 720, + "height": 226, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 615 + ], + "click_point": [ + 121, + 446 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 876 + ], + "click_point": [ + 121, + 677 + ] + }, + { + "id": 3, + "rect": [ + 19, + 889, + 700, + 1135 + ], + "click_point": [ + 121, + 938 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1148, + 700, + 1374 + ], + "click_point": [ + 121, + 1193 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_flag.jpg b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_flag.jpg new file mode 100644 index 0000000..1dcafec Binary files /dev/null and b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_vl.jpg b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_vl.jpg new file mode 100644 index 0000000..2b7b7d3 Binary files /dev/null and b/Apps/XinDianTu/Images/9340c5d5-160d-47e2-b64c-5701158866d9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/93718680-a5d7-4bcc-a9f1-d030b1d2c5f4.jpg b/Apps/XinDianTu/Images/93718680-a5d7-4bcc-a9f1-d030b1d2c5f4.jpg new file mode 100644 index 0000000..e2b98a9 Binary files /dev/null and b/Apps/XinDianTu/Images/93718680-a5d7-4bcc-a9f1-d030b1d2c5f4.jpg differ diff --git a/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5.jpg b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5.jpg new file mode 100644 index 0000000..26c1f2e Binary files /dev/null and b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5.jpg differ diff --git a/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_flag.jpg b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_flag.jpg new file mode 100644 index 0000000..e2f1c7a Binary files /dev/null and b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_vl.jpg b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_vl.jpg new file mode 100644 index 0000000..ec82224 Binary files /dev/null and b/Apps/XinDianTu/Images/939b9502-9a13-4b66-a7a8-4f05db32c3d5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.jpg b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.jpg new file mode 100644 index 0000000..a184328 Binary files /dev/null and b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.jpg differ diff --git a/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.json b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.json new file mode 100644 index 0000000..9db3574 --- /dev/null +++ b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5.json @@ -0,0 +1,46 @@ +{ + "image": "939f25f7-95f2-4d15-9db8-050dddb445a5.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 568, + 700, + 814 + ], + "click_point": [ + 121, + 617 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1079 + ], + "click_point": [ + 121, + 878 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1088, + 700, + 1334 + ], + "click_point": [ + 121, + 1137 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_flag.jpg b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_flag.jpg new file mode 100644 index 0000000..678fd08 Binary files /dev/null and b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_vl.jpg b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_vl.jpg new file mode 100644 index 0000000..194a821 Binary files /dev/null and b/Apps/XinDianTu/Images/939f25f7-95f2-4d15-9db8-050dddb445a5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_1.jpg b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_1.jpg new file mode 100644 index 0000000..a1b1c47 Binary files /dev/null and b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_2.jpg b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_2.jpg new file mode 100644 index 0000000..3951d89 Binary files /dev/null and b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_3.jpg b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_3.jpg new file mode 100644 index 0000000..04bc608 Binary files /dev/null and b/Apps/XinDianTu/Images/93dbdfd8e2dcc380418dc917c52e06c1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9411e8f9-9276-4010-af1c-6b5a4b911168.jpg b/Apps/XinDianTu/Images/9411e8f9-9276-4010-af1c-6b5a4b911168.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/9411e8f9-9276-4010-af1c-6b5a4b911168.jpg differ diff --git a/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.jpg b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.jpg new file mode 100644 index 0000000..73c3556 Binary files /dev/null and b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.jpg differ diff --git a/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.json b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.json new file mode 100644 index 0000000..668ac5f --- /dev/null +++ b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba.json @@ -0,0 +1,46 @@ +{ + "image": "94872c1c-d9d9-4ddc-a93a-9d53284193ba.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 547, + 700, + 796 + ], + "click_point": [ + 121, + 596 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1053 + ], + "click_point": [ + 121, + 853 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1067, + 700, + 1316 + ], + "click_point": [ + 121, + 1116 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_flag.jpg b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_flag.jpg new file mode 100644 index 0000000..6225b8f Binary files /dev/null and b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_flag.jpg differ diff --git a/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_vl.jpg b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_vl.jpg new file mode 100644 index 0000000..2f8ba1c Binary files /dev/null and b/Apps/XinDianTu/Images/94872c1c-d9d9-4ddc-a93a-9d53284193ba_vl.jpg differ diff --git a/Apps/XinDianTu/Images/94c5a49b-57e8-4dcf-b256-8ab10d58a3bc.jpg b/Apps/XinDianTu/Images/94c5a49b-57e8-4dcf-b256-8ab10d58a3bc.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/94c5a49b-57e8-4dcf-b256-8ab10d58a3bc.jpg differ diff --git a/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_1.jpg b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_1.jpg new file mode 100644 index 0000000..b7ffe9c Binary files /dev/null and b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_2.jpg b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_2.jpg new file mode 100644 index 0000000..9805e73 Binary files /dev/null and b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_3.jpg b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_3.jpg new file mode 100644 index 0000000..37a6cd4 Binary files /dev/null and b/Apps/XinDianTu/Images/94c9d5a3da27789d5d2c64550c541290_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.jpg b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.jpg new file mode 100644 index 0000000..ad246e3 Binary files /dev/null and b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.jpg differ diff --git a/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.json b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.json new file mode 100644 index 0000000..549808d --- /dev/null +++ b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc.json @@ -0,0 +1,59 @@ +{ + "image": "94dd820b-d4f7-4435-a516-30cb233f98dc.jpg", + "width": 720, + "height": 194, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 646 + ], + "click_point": [ + 121, + 452 + ] + }, + { + "id": 2, + "rect": [ + 19, + 660, + 700, + 911 + ], + "click_point": [ + 121, + 710 + ] + }, + { + "id": 3, + "rect": [ + 19, + 920, + 700, + 1166 + ], + "click_point": [ + 121, + 969 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1180, + 700, + 1374 + ], + "click_point": [ + 121, + 1218 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_flag.jpg b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_flag.jpg new file mode 100644 index 0000000..64906cb Binary files /dev/null and b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_flag.jpg differ diff --git a/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_vl.jpg b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_vl.jpg new file mode 100644 index 0000000..101888f Binary files /dev/null and b/Apps/XinDianTu/Images/94dd820b-d4f7-4435-a516-30cb233f98dc_vl.jpg differ diff --git a/Apps/XinDianTu/Images/94edf965-4719-46ff-b0d6-412d6a47f22c.jpg b/Apps/XinDianTu/Images/94edf965-4719-46ff-b0d6-412d6a47f22c.jpg new file mode 100644 index 0000000..251d3d3 Binary files /dev/null and b/Apps/XinDianTu/Images/94edf965-4719-46ff-b0d6-412d6a47f22c.jpg differ diff --git a/Apps/XinDianTu/Images/94ee67f3-2752-4452-97d5-7f5126b04b29.jpg b/Apps/XinDianTu/Images/94ee67f3-2752-4452-97d5-7f5126b04b29.jpg new file mode 100644 index 0000000..3277dcf Binary files /dev/null and b/Apps/XinDianTu/Images/94ee67f3-2752-4452-97d5-7f5126b04b29.jpg differ diff --git a/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_1.jpg b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_1.jpg new file mode 100644 index 0000000..4df60b0 Binary files /dev/null and b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_2.jpg b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_2.jpg new file mode 100644 index 0000000..b1c950b Binary files /dev/null and b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_3.jpg b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_3.jpg new file mode 100644 index 0000000..3368f1c Binary files /dev/null and b/Apps/XinDianTu/Images/9565d51b3d38dba4b2afee1d4be78a6f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690.jpg b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690.jpg new file mode 100644 index 0000000..c4a8efb Binary files /dev/null and b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690.jpg differ diff --git a/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_flag.jpg b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_flag.jpg new file mode 100644 index 0000000..997fb37 Binary files /dev/null and b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_flag.jpg differ diff --git a/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_vl.jpg b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_vl.jpg new file mode 100644 index 0000000..887708a Binary files /dev/null and b/Apps/XinDianTu/Images/95d2f82f-863b-482f-a594-e79238370690_vl.jpg differ diff --git a/Apps/XinDianTu/Images/962b0c89-553a-48aa-b25d-1e58bff14070.jpg b/Apps/XinDianTu/Images/962b0c89-553a-48aa-b25d-1e58bff14070.jpg new file mode 100644 index 0000000..2d8feba Binary files /dev/null and b/Apps/XinDianTu/Images/962b0c89-553a-48aa-b25d-1e58bff14070.jpg differ diff --git a/Apps/XinDianTu/Images/96a04570-a98b-4159-88cf-599939bf55f2.jpg b/Apps/XinDianTu/Images/96a04570-a98b-4159-88cf-599939bf55f2.jpg new file mode 100644 index 0000000..09a7abb Binary files /dev/null and b/Apps/XinDianTu/Images/96a04570-a98b-4159-88cf-599939bf55f2.jpg differ diff --git a/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_1.jpg b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_1.jpg new file mode 100644 index 0000000..45363c8 Binary files /dev/null and b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_2.jpg b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_2.jpg new file mode 100644 index 0000000..d31ec34 Binary files /dev/null and b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_3.jpg b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_3.jpg new file mode 100644 index 0000000..c03fb0b Binary files /dev/null and b/Apps/XinDianTu/Images/96a9c1a9d35a550988bde12b2b4a27a9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/96dfe232-5e3c-4e1d-b02e-a309d7d2fbda.jpg b/Apps/XinDianTu/Images/96dfe232-5e3c-4e1d-b02e-a309d7d2fbda.jpg new file mode 100644 index 0000000..87c4ee5 Binary files /dev/null and b/Apps/XinDianTu/Images/96dfe232-5e3c-4e1d-b02e-a309d7d2fbda.jpg differ diff --git a/Apps/XinDianTu/Images/972fdeaf-04b8-4909-b4af-dcbd1d8d45e5.jpg b/Apps/XinDianTu/Images/972fdeaf-04b8-4909-b4af-dcbd1d8d45e5.jpg new file mode 100644 index 0000000..93478b3 Binary files /dev/null and b/Apps/XinDianTu/Images/972fdeaf-04b8-4909-b4af-dcbd1d8d45e5.jpg differ diff --git a/Apps/XinDianTu/Images/9779c4ac-2339-4b6c-ac69-299f2ebf46f7.jpg b/Apps/XinDianTu/Images/9779c4ac-2339-4b6c-ac69-299f2ebf46f7.jpg new file mode 100644 index 0000000..84ddb30 Binary files /dev/null and b/Apps/XinDianTu/Images/9779c4ac-2339-4b6c-ac69-299f2ebf46f7.jpg differ diff --git a/Apps/XinDianTu/Images/9780109b-3f2e-4b04-922e-27775c3d25a7.jpg b/Apps/XinDianTu/Images/9780109b-3f2e-4b04-922e-27775c3d25a7.jpg new file mode 100644 index 0000000..96cda42 Binary files /dev/null and b/Apps/XinDianTu/Images/9780109b-3f2e-4b04-922e-27775c3d25a7.jpg differ diff --git a/Apps/XinDianTu/Images/97b92e46-c8e7-4734-bc5e-e733c02915c4.jpg b/Apps/XinDianTu/Images/97b92e46-c8e7-4734-bc5e-e733c02915c4.jpg new file mode 100644 index 0000000..ef554ae Binary files /dev/null and b/Apps/XinDianTu/Images/97b92e46-c8e7-4734-bc5e-e733c02915c4.jpg differ diff --git a/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_1.jpg b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_1.jpg new file mode 100644 index 0000000..0d68a20 Binary files /dev/null and b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_2.jpg b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_2.jpg new file mode 100644 index 0000000..9ec2e64 Binary files /dev/null and b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_3.jpg b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_3.jpg new file mode 100644 index 0000000..32694d9 Binary files /dev/null and b/Apps/XinDianTu/Images/97e92ffceb7f410f217b7856f59955d3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/98128a83-f8f3-44f7-a618-cb068a7ad657.jpg b/Apps/XinDianTu/Images/98128a83-f8f3-44f7-a618-cb068a7ad657.jpg new file mode 100644 index 0000000..c6b501a Binary files /dev/null and b/Apps/XinDianTu/Images/98128a83-f8f3-44f7-a618-cb068a7ad657.jpg differ diff --git a/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.jpg b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.jpg new file mode 100644 index 0000000..f869a63 Binary files /dev/null and b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.jpg differ diff --git a/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.json b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.json new file mode 100644 index 0000000..616ac41 --- /dev/null +++ b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3.json @@ -0,0 +1,59 @@ +{ + "image": "988e7283-0846-45ea-9705-bd9466f631a3.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 596 + ], + "click_point": [ + 121, + 442 + ] + }, + { + "id": 2, + "rect": [ + 19, + 608, + 700, + 884 + ], + "click_point": [ + 121, + 663 + ] + }, + { + "id": 3, + "rect": [ + 19, + 896, + 700, + 1159 + ], + "click_point": [ + 121, + 948 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1172, + 700, + 1374 + ], + "click_point": [ + 121, + 1212 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_flag.jpg b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_flag.jpg new file mode 100644 index 0000000..e8d81cb Binary files /dev/null and b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_vl.jpg b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_vl.jpg new file mode 100644 index 0000000..0d0a376 Binary files /dev/null and b/Apps/XinDianTu/Images/988e7283-0846-45ea-9705-bd9466f631a3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be.jpg b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be.jpg new file mode 100644 index 0000000..6d66019 Binary files /dev/null and b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be.jpg differ diff --git a/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_flag.jpg b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_flag.jpg new file mode 100644 index 0000000..47d9bcd Binary files /dev/null and b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_flag.jpg differ diff --git a/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_vl.jpg b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_vl.jpg new file mode 100644 index 0000000..dc091ff Binary files /dev/null and b/Apps/XinDianTu/Images/98a292d4-e681-4301-9d7e-3a838fab81be_vl.jpg differ diff --git a/Apps/XinDianTu/Images/98dca635-9189-4981-b58d-324b75cb681c.jpg b/Apps/XinDianTu/Images/98dca635-9189-4981-b58d-324b75cb681c.jpg new file mode 100644 index 0000000..3e0ab25 Binary files /dev/null and b/Apps/XinDianTu/Images/98dca635-9189-4981-b58d-324b75cb681c.jpg differ diff --git a/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.jpg b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.jpg new file mode 100644 index 0000000..3af9418 Binary files /dev/null and b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.jpg differ diff --git a/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.json b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.json new file mode 100644 index 0000000..76c71b0 --- /dev/null +++ b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986.json @@ -0,0 +1,46 @@ +{ + "image": "98e42f81-42ed-4279-8b0e-768dbda89986.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_flag.jpg b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_flag.jpg new file mode 100644 index 0000000..8d73c18 Binary files /dev/null and b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_flag.jpg differ diff --git a/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_vl.jpg b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_vl.jpg new file mode 100644 index 0000000..825d840 Binary files /dev/null and b/Apps/XinDianTu/Images/98e42f81-42ed-4279-8b0e-768dbda89986_vl.jpg differ diff --git a/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_1.jpg b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_1.jpg new file mode 100644 index 0000000..29f1359 Binary files /dev/null and b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_2.jpg b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_2.jpg new file mode 100644 index 0000000..478d4df Binary files /dev/null and b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_3.jpg b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_3.jpg new file mode 100644 index 0000000..09b3ef2 Binary files /dev/null and b/Apps/XinDianTu/Images/992b908a492124447a6bff65bdd90bde_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.jpg b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.jpg new file mode 100644 index 0000000..08290b3 Binary files /dev/null and b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.jpg differ diff --git a/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.json b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.json new file mode 100644 index 0000000..2c0c1b4 --- /dev/null +++ b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc.json @@ -0,0 +1,59 @@ +{ + "image": "99c3b5fb-68e4-40a0-b239-e9aa77acfafc.jpg", + "width": 720, + "height": 258, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 588 + ], + "click_point": [ + 121, + 440 + ] + }, + { + "id": 2, + "rect": [ + 19, + 596, + 700, + 845 + ], + "click_point": [ + 121, + 645 + ] + }, + { + "id": 3, + "rect": [ + 19, + 859, + 700, + 1108 + ], + "click_point": [ + 121, + 908 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1116, + 700, + 1374 + ], + "click_point": [ + 121, + 1167 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_flag.jpg b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_flag.jpg new file mode 100644 index 0000000..67bd7bc Binary files /dev/null and b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_flag.jpg differ diff --git a/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_vl.jpg b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_vl.jpg new file mode 100644 index 0000000..89f673d Binary files /dev/null and b/Apps/XinDianTu/Images/99c3b5fb-68e4-40a0-b239-e9aa77acfafc_vl.jpg differ diff --git a/Apps/XinDianTu/Images/99e51a2e-3fb8-478b-acc8-e903346b1831.jpg b/Apps/XinDianTu/Images/99e51a2e-3fb8-478b-acc8-e903346b1831.jpg new file mode 100644 index 0000000..951e321 Binary files /dev/null and b/Apps/XinDianTu/Images/99e51a2e-3fb8-478b-acc8-e903346b1831.jpg differ diff --git a/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8.jpg b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8.jpg new file mode 100644 index 0000000..5609fb1 Binary files /dev/null and b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8.jpg differ diff --git a/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_flag.jpg b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_flag.jpg new file mode 100644 index 0000000..e813965 Binary files /dev/null and b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_vl.jpg b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_vl.jpg new file mode 100644 index 0000000..f70c200 Binary files /dev/null and b/Apps/XinDianTu/Images/99e58b78-97a6-4230-95ce-3efe3865e9d8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.jpg b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.jpg new file mode 100644 index 0000000..2762f7c Binary files /dev/null and b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.jpg differ diff --git a/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.json b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.json new file mode 100644 index 0000000..b71272c --- /dev/null +++ b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a.json @@ -0,0 +1,46 @@ +{ + "image": "99ead0f0-ee2c-49e1-87e7-e9204d57054a.jpg", + "width": 720, + "height": 277, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 577, + 700, + 828 + ], + "click_point": [ + 121, + 627 + ] + }, + { + "id": 2, + "rect": [ + 19, + 842, + 700, + 1088 + ], + "click_point": [ + 121, + 891 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1097, + 700, + 1374 + ], + "click_point": [ + 121, + 1152 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_flag.jpg b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_flag.jpg new file mode 100644 index 0000000..5f8d528 Binary files /dev/null and b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_vl.jpg b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_vl.jpg new file mode 100644 index 0000000..e353f02 Binary files /dev/null and b/Apps/XinDianTu/Images/99ead0f0-ee2c-49e1-87e7-e9204d57054a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9a07edff-a9d4-4922-b8be-46bb2fc2328f.jpg b/Apps/XinDianTu/Images/9a07edff-a9d4-4922-b8be-46bb2fc2328f.jpg new file mode 100644 index 0000000..4511f3d Binary files /dev/null and b/Apps/XinDianTu/Images/9a07edff-a9d4-4922-b8be-46bb2fc2328f.jpg differ diff --git a/Apps/XinDianTu/Images/9a191b79-8099-4b9a-a85d-67a789f01099.jpg b/Apps/XinDianTu/Images/9a191b79-8099-4b9a-a85d-67a789f01099.jpg new file mode 100644 index 0000000..0226fac Binary files /dev/null and b/Apps/XinDianTu/Images/9a191b79-8099-4b9a-a85d-67a789f01099.jpg differ diff --git a/Apps/XinDianTu/Images/9a29826a-44fa-472b-a10f-f4b99d7bc7c1.jpg b/Apps/XinDianTu/Images/9a29826a-44fa-472b-a10f-f4b99d7bc7c1.jpg new file mode 100644 index 0000000..92d00e2 Binary files /dev/null and b/Apps/XinDianTu/Images/9a29826a-44fa-472b-a10f-f4b99d7bc7c1.jpg differ diff --git a/Apps/XinDianTu/Images/9a45c2cb-448f-4c8c-bbb6-04064122971f.jpg b/Apps/XinDianTu/Images/9a45c2cb-448f-4c8c-bbb6-04064122971f.jpg new file mode 100644 index 0000000..88d4411 Binary files /dev/null and b/Apps/XinDianTu/Images/9a45c2cb-448f-4c8c-bbb6-04064122971f.jpg differ diff --git a/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_1.jpg b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_1.jpg new file mode 100644 index 0000000..08856ab Binary files /dev/null and b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_2.jpg b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_2.jpg new file mode 100644 index 0000000..04efef0 Binary files /dev/null and b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_3.jpg b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_3.jpg new file mode 100644 index 0000000..d3e6c4b Binary files /dev/null and b/Apps/XinDianTu/Images/9a7d42c501e4d3e685a4f092f0df3b36_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.jpg b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.jpg new file mode 100644 index 0000000..8803add Binary files /dev/null and b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.jpg differ diff --git a/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.json b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.json new file mode 100644 index 0000000..d50bfac --- /dev/null +++ b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac.json @@ -0,0 +1,59 @@ +{ + "image": "9ba9dc32-786a-4868-bc22-cbaeea0f4aac.jpg", + "width": 720, + "height": 228, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 584 + ], + "click_point": [ + 121, + 440 + ] + }, + { + "id": 2, + "rect": [ + 19, + 593, + 700, + 844 + ], + "click_point": [ + 121, + 643 + ] + }, + { + "id": 3, + "rect": [ + 19, + 858, + 700, + 1132 + ], + "click_point": [ + 121, + 912 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1146, + 700, + 1374 + ], + "click_point": [ + 121, + 1191 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_flag.jpg b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_flag.jpg new file mode 100644 index 0000000..2169cc2 Binary files /dev/null and b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_vl.jpg b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_vl.jpg new file mode 100644 index 0000000..c01b757 Binary files /dev/null and b/Apps/XinDianTu/Images/9ba9dc32-786a-4868-bc22-cbaeea0f4aac_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9bdab192-470a-40f8-b901-74a39e30dae5.jpg b/Apps/XinDianTu/Images/9bdab192-470a-40f8-b901-74a39e30dae5.jpg new file mode 100644 index 0000000..e58ccfe Binary files /dev/null and b/Apps/XinDianTu/Images/9bdab192-470a-40f8-b901-74a39e30dae5.jpg differ diff --git a/Apps/XinDianTu/Images/9c182cb6-a0ab-4d07-aee7-95e4675ca339.jpg b/Apps/XinDianTu/Images/9c182cb6-a0ab-4d07-aee7-95e4675ca339.jpg new file mode 100644 index 0000000..9430f55 Binary files /dev/null and b/Apps/XinDianTu/Images/9c182cb6-a0ab-4d07-aee7-95e4675ca339.jpg differ diff --git a/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d.jpg b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d.jpg new file mode 100644 index 0000000..3e52d00 Binary files /dev/null and b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d.jpg differ diff --git a/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_flag.jpg b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_flag.jpg new file mode 100644 index 0000000..a78932c Binary files /dev/null and b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_vl.jpg b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_vl.jpg new file mode 100644 index 0000000..039aac2 Binary files /dev/null and b/Apps/XinDianTu/Images/9d5a9229-25e6-4e94-998e-dabe2968854d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.jpg b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.jpg new file mode 100644 index 0000000..cfc5be6 Binary files /dev/null and b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.jpg differ diff --git a/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.json b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.json new file mode 100644 index 0000000..529e893 --- /dev/null +++ b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434.json @@ -0,0 +1,59 @@ +{ + "image": "9dbe75e9-1f30-4dde-943b-e57a29013434.jpg", + "width": 720, + "height": 268, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 580 + ], + "click_point": [ + 121, + 439 + ] + }, + { + "id": 2, + "rect": [ + 19, + 588, + 700, + 837 + ], + "click_point": [ + 121, + 637 + ] + }, + { + "id": 3, + "rect": [ + 19, + 851, + 700, + 1100 + ], + "click_point": [ + 121, + 900 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1106, + 700, + 1374 + ], + "click_point": [ + 121, + 1159 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_flag.jpg b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_flag.jpg new file mode 100644 index 0000000..f2fdd14 Binary files /dev/null and b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_vl.jpg b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_vl.jpg new file mode 100644 index 0000000..1067499 Binary files /dev/null and b/Apps/XinDianTu/Images/9dbe75e9-1f30-4dde-943b-e57a29013434_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b.jpg b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b.jpg new file mode 100644 index 0000000..df47476 Binary files /dev/null and b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b.jpg differ diff --git a/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_flag.jpg b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_flag.jpg new file mode 100644 index 0000000..2f7326c Binary files /dev/null and b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_vl.jpg b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_vl.jpg new file mode 100644 index 0000000..bd855c0 Binary files /dev/null and b/Apps/XinDianTu/Images/9dc1696d-7eea-46b4-abf8-2a116218634b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9ddeac6e-270b-4c45-853d-f0b2c6ba3deb.jpg b/Apps/XinDianTu/Images/9ddeac6e-270b-4c45-853d-f0b2c6ba3deb.jpg new file mode 100644 index 0000000..4b090c7 Binary files /dev/null and b/Apps/XinDianTu/Images/9ddeac6e-270b-4c45-853d-f0b2c6ba3deb.jpg differ diff --git a/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f.jpg b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f.jpg new file mode 100644 index 0000000..07ae90a Binary files /dev/null and b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f.jpg differ diff --git a/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_flag.jpg b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_flag.jpg new file mode 100644 index 0000000..b0d9235 Binary files /dev/null and b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_vl.jpg b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_vl.jpg new file mode 100644 index 0000000..955d2c9 Binary files /dev/null and b/Apps/XinDianTu/Images/9e6fbed5-cbb5-4655-9938-a85d55c4fb3f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.jpg b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.jpg new file mode 100644 index 0000000..7fdbcaa Binary files /dev/null and b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.jpg differ diff --git a/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.json b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.json new file mode 100644 index 0000000..5e9e26b --- /dev/null +++ b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.json @@ -0,0 +1,33 @@ +{ + "image": "9e70cc0a-2ae1-47bd-b04b-d2b844e7d331.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_flag.jpg b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_flag.jpg new file mode 100644 index 0000000..42a1ab0 Binary files /dev/null and b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_vl.jpg b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_vl.jpg new file mode 100644 index 0000000..578d4d1 Binary files /dev/null and b/Apps/XinDianTu/Images/9e70cc0a-2ae1-47bd-b04b-d2b844e7d331_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_1.jpg b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_1.jpg new file mode 100644 index 0000000..91f94ab Binary files /dev/null and b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_2.jpg b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_2.jpg new file mode 100644 index 0000000..c1b13a3 Binary files /dev/null and b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_3.jpg b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_3.jpg new file mode 100644 index 0000000..498efcb Binary files /dev/null and b/Apps/XinDianTu/Images/9f520b066149b641e55890059e9b057d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.jpg b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.jpg new file mode 100644 index 0000000..f9a376d Binary files /dev/null and b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.jpg differ diff --git a/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.json b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.json new file mode 100644 index 0000000..0a09db0 --- /dev/null +++ b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.json @@ -0,0 +1,46 @@ +{ + "image": "9f6f4d2c-cd57-4280-a354-e858cfa3e3b6.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 568, + 700, + 814 + ], + "click_point": [ + 121, + 617 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1079 + ], + "click_point": [ + 121, + 878 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1088, + 700, + 1334 + ], + "click_point": [ + 121, + 1137 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_flag.jpg b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_flag.jpg new file mode 100644 index 0000000..0945c96 Binary files /dev/null and b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_vl.jpg b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_vl.jpg new file mode 100644 index 0000000..bf93b32 Binary files /dev/null and b/Apps/XinDianTu/Images/9f6f4d2c-cd57-4280-a354-e858cfa3e3b6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_1.jpg b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_1.jpg new file mode 100644 index 0000000..80b8e5e Binary files /dev/null and b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_2.jpg b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_2.jpg new file mode 100644 index 0000000..e811a2a Binary files /dev/null and b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_3.jpg b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_3.jpg new file mode 100644 index 0000000..9288ea3 Binary files /dev/null and b/Apps/XinDianTu/Images/9f7029d2860c3d24b67a66875b1be9a6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9f9cddcf-5e40-4459-8a8e-c9f1fc3d665e.jpg b/Apps/XinDianTu/Images/9f9cddcf-5e40-4459-8a8e-c9f1fc3d665e.jpg new file mode 100644 index 0000000..7321329 Binary files /dev/null and b/Apps/XinDianTu/Images/9f9cddcf-5e40-4459-8a8e-c9f1fc3d665e.jpg differ diff --git a/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_1.jpg b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_1.jpg new file mode 100644 index 0000000..db9b7d1 Binary files /dev/null and b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_2.jpg b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_2.jpg new file mode 100644 index 0000000..e769f46 Binary files /dev/null and b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_3.jpg b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_3.jpg new file mode 100644 index 0000000..e769f46 Binary files /dev/null and b/Apps/XinDianTu/Images/9fd85591618843f13b72561f17b6930f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/9ff45161-5b66-451d-9acb-f813771cc176.jpg b/Apps/XinDianTu/Images/9ff45161-5b66-451d-9acb-f813771cc176.jpg new file mode 100644 index 0000000..f07851a Binary files /dev/null and b/Apps/XinDianTu/Images/9ff45161-5b66-451d-9acb-f813771cc176.jpg differ diff --git a/Apps/XinDianTu/Images/H7_flag_expand.jpg b/Apps/XinDianTu/Images/H7_flag_expand.jpg new file mode 100644 index 0000000..6871208 Binary files /dev/null and b/Apps/XinDianTu/Images/H7_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/J02H_flag_expand.jpg b/Apps/XinDianTu/Images/J02H_flag_expand.jpg new file mode 100644 index 0000000..f598a9f Binary files /dev/null and b/Apps/XinDianTu/Images/J02H_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/Pro会员专享_flag_expand.jpg b/Apps/XinDianTu/Images/Pro会员专享_flag_expand.jpg new file mode 100644 index 0000000..cd428bc Binary files /dev/null and b/Apps/XinDianTu/Images/Pro会员专享_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/T+_flag_expand.jpg b/Apps/XinDianTu/Images/T+_flag_expand.jpg new file mode 100644 index 0000000..614685c Binary files /dev/null and b/Apps/XinDianTu/Images/T+_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/_1_flag_expand.jpg b/Apps/XinDianTu/Images/_1_flag_expand.jpg new file mode 100644 index 0000000..0623621 Binary files /dev/null and b/Apps/XinDianTu/Images/_1_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/a043bca3-97e8-4144-8d27-c355ad594c95.jpg b/Apps/XinDianTu/Images/a043bca3-97e8-4144-8d27-c355ad594c95.jpg new file mode 100644 index 0000000..09f841f Binary files /dev/null and b/Apps/XinDianTu/Images/a043bca3-97e8-4144-8d27-c355ad594c95.jpg differ diff --git a/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_1.jpg b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_1.jpg new file mode 100644 index 0000000..240a7f3 Binary files /dev/null and b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_2.jpg b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_2.jpg new file mode 100644 index 0000000..ae56dd3 Binary files /dev/null and b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_3.jpg b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_3.jpg new file mode 100644 index 0000000..a9f891e Binary files /dev/null and b/Apps/XinDianTu/Images/a093c5bce01850d34342bec86c00441e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a0f47f18-1f42-4a33-99c4-6783f3c84d49.jpg b/Apps/XinDianTu/Images/a0f47f18-1f42-4a33-99c4-6783f3c84d49.jpg new file mode 100644 index 0000000..02ee705 Binary files /dev/null and b/Apps/XinDianTu/Images/a0f47f18-1f42-4a33-99c4-6783f3c84d49.jpg differ diff --git a/Apps/XinDianTu/Images/a114825a-5165-4039-9ebf-2b585ecb7110.jpg b/Apps/XinDianTu/Images/a114825a-5165-4039-9ebf-2b585ecb7110.jpg new file mode 100644 index 0000000..42603f9 Binary files /dev/null and b/Apps/XinDianTu/Images/a114825a-5165-4039-9ebf-2b585ecb7110.jpg differ diff --git a/Apps/XinDianTu/Images/a11a62bb-2da8-45ec-a2f2-dfdc3c36b570.jpg b/Apps/XinDianTu/Images/a11a62bb-2da8-45ec-a2f2-dfdc3c36b570.jpg new file mode 100644 index 0000000..25d8736 Binary files /dev/null and b/Apps/XinDianTu/Images/a11a62bb-2da8-45ec-a2f2-dfdc3c36b570.jpg differ diff --git a/Apps/XinDianTu/Images/a131b686-e0e1-4f60-8baf-71cf8339fbe4.jpg b/Apps/XinDianTu/Images/a131b686-e0e1-4f60-8baf-71cf8339fbe4.jpg new file mode 100644 index 0000000..df02ced Binary files /dev/null and b/Apps/XinDianTu/Images/a131b686-e0e1-4f60-8baf-71cf8339fbe4.jpg differ diff --git a/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a.jpg b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a.jpg new file mode 100644 index 0000000..7826b89 Binary files /dev/null and b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a.jpg differ diff --git a/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_flag.jpg b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_flag.jpg new file mode 100644 index 0000000..9f79920 Binary files /dev/null and b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_vl.jpg b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_vl.jpg new file mode 100644 index 0000000..97a22d0 Binary files /dev/null and b/Apps/XinDianTu/Images/a1595b6f-84d8-46fc-a4ca-2fcebcfbd28a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_1.jpg b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_1.jpg new file mode 100644 index 0000000..f774b82 Binary files /dev/null and b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_2.jpg b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_2.jpg new file mode 100644 index 0000000..e30c8ad Binary files /dev/null and b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_3.jpg b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_3.jpg new file mode 100644 index 0000000..c6f21ed Binary files /dev/null and b/Apps/XinDianTu/Images/a16001e0773698cda13468c98f0cbbf5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a188cc84-6cb8-4a7a-8f9d-75acf53679fb.jpg b/Apps/XinDianTu/Images/a188cc84-6cb8-4a7a-8f9d-75acf53679fb.jpg new file mode 100644 index 0000000..8487377 Binary files /dev/null and b/Apps/XinDianTu/Images/a188cc84-6cb8-4a7a-8f9d-75acf53679fb.jpg differ diff --git a/Apps/XinDianTu/Images/a1c9b249-f53a-4159-a0fd-14e70916a5c5.jpg b/Apps/XinDianTu/Images/a1c9b249-f53a-4159-a0fd-14e70916a5c5.jpg new file mode 100644 index 0000000..71aeb43 Binary files /dev/null and b/Apps/XinDianTu/Images/a1c9b249-f53a-4159-a0fd-14e70916a5c5.jpg differ diff --git a/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2.jpg b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2.jpg new file mode 100644 index 0000000..f30ca3a Binary files /dev/null and b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2.jpg differ diff --git a/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_flag.jpg b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_flag.jpg new file mode 100644 index 0000000..5c699d0 Binary files /dev/null and b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_vl.jpg b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_vl.jpg new file mode 100644 index 0000000..197b7b0 Binary files /dev/null and b/Apps/XinDianTu/Images/a1f4e1b6-b600-4bc5-b4d3-7cd5d984aac2_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_1.jpg b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_1.jpg new file mode 100644 index 0000000..3db9054 Binary files /dev/null and b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_2.jpg b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_2.jpg new file mode 100644 index 0000000..fba5d09 Binary files /dev/null and b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_3.jpg b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_3.jpg new file mode 100644 index 0000000..3581333 Binary files /dev/null and b/Apps/XinDianTu/Images/a2135722600d434f4e0c5e14c9f42e28_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_1.jpg b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_1.jpg new file mode 100644 index 0000000..4375629 Binary files /dev/null and b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_2.jpg b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_2.jpg new file mode 100644 index 0000000..9051bb9 Binary files /dev/null and b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_3.jpg b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_3.jpg new file mode 100644 index 0000000..51b3b16 Binary files /dev/null and b/Apps/XinDianTu/Images/a253bca2e021e7281a45d519cde858bd_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a28d2c07-60af-4ff8-baf5-046e987ed0f0.jpg b/Apps/XinDianTu/Images/a28d2c07-60af-4ff8-baf5-046e987ed0f0.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/a28d2c07-60af-4ff8-baf5-046e987ed0f0.jpg differ diff --git a/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_1.jpg b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_1.jpg new file mode 100644 index 0000000..fd25974 Binary files /dev/null and b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_2.jpg b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_2.jpg new file mode 100644 index 0000000..0a8f158 Binary files /dev/null and b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_3.jpg b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_3.jpg new file mode 100644 index 0000000..4269baa Binary files /dev/null and b/Apps/XinDianTu/Images/a2a133f00f3ac98da5e60bfb1ffc20d3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a2a44e1c-6079-408e-9b5e-8c3103875347.jpg b/Apps/XinDianTu/Images/a2a44e1c-6079-408e-9b5e-8c3103875347.jpg new file mode 100644 index 0000000..e562523 Binary files /dev/null and b/Apps/XinDianTu/Images/a2a44e1c-6079-408e-9b5e-8c3103875347.jpg differ diff --git a/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_1.jpg b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_1.jpg new file mode 100644 index 0000000..11019cb Binary files /dev/null and b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_2.jpg b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_2.jpg new file mode 100644 index 0000000..5ced786 Binary files /dev/null and b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_3.jpg b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_3.jpg new file mode 100644 index 0000000..053a009 Binary files /dev/null and b/Apps/XinDianTu/Images/a3af9423aa2db9c1beeff31367cef05b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a3ba57ef-462d-4acd-80df-f2e8949793e2.jpg b/Apps/XinDianTu/Images/a3ba57ef-462d-4acd-80df-f2e8949793e2.jpg new file mode 100644 index 0000000..cf88647 Binary files /dev/null and b/Apps/XinDianTu/Images/a3ba57ef-462d-4acd-80df-f2e8949793e2.jpg differ diff --git a/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.jpg b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.jpg new file mode 100644 index 0000000..58f85de Binary files /dev/null and b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.jpg differ diff --git a/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.json b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.json new file mode 100644 index 0000000..173b03d --- /dev/null +++ b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.json @@ -0,0 +1,46 @@ +{ + "image": "a3cc277e-d9fc-4888-80ec-254ef0fdfb2c.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 516, + 700, + 765 + ], + "click_point": [ + 121, + 565 + ] + }, + { + "id": 2, + "rect": [ + 19, + 779, + 700, + 1028 + ], + "click_point": [ + 121, + 828 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1036, + 700, + 1285 + ], + "click_point": [ + 121, + 1085 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_flag.jpg b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_flag.jpg new file mode 100644 index 0000000..212db68 Binary files /dev/null and b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_vl.jpg b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_vl.jpg new file mode 100644 index 0000000..46ed21f Binary files /dev/null and b/Apps/XinDianTu/Images/a3cc277e-d9fc-4888-80ec-254ef0fdfb2c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_1.jpg b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_1.jpg new file mode 100644 index 0000000..919ca67 Binary files /dev/null and b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_2.jpg b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_2.jpg new file mode 100644 index 0000000..80ccc32 Binary files /dev/null and b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_3.jpg b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_3.jpg new file mode 100644 index 0000000..f6e408f Binary files /dev/null and b/Apps/XinDianTu/Images/a443c504f6a759af1e04b55f0649968f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68.jpg b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68.jpg new file mode 100644 index 0000000..edc5f52 Binary files /dev/null and b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68.jpg differ diff --git a/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_flag.jpg b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_flag.jpg new file mode 100644 index 0000000..8b23aa3 Binary files /dev/null and b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_vl.jpg b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_vl.jpg new file mode 100644 index 0000000..12e4eb0 Binary files /dev/null and b/Apps/XinDianTu/Images/a45e0987-7548-4bcc-9997-633996dbfa68_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_1.jpg b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_1.jpg new file mode 100644 index 0000000..eafdcc3 Binary files /dev/null and b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_2.jpg b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_2.jpg new file mode 100644 index 0000000..c7f0ee4 Binary files /dev/null and b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_3.jpg b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_3.jpg new file mode 100644 index 0000000..bbd0402 Binary files /dev/null and b/Apps/XinDianTu/Images/a479e4fb658f8c6a10f5022d5ef29da2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a5a06a57-d00d-4e50-956a-0a8ec892bcd5.jpg b/Apps/XinDianTu/Images/a5a06a57-d00d-4e50-956a-0a8ec892bcd5.jpg new file mode 100644 index 0000000..3277dcf Binary files /dev/null and b/Apps/XinDianTu/Images/a5a06a57-d00d-4e50-956a-0a8ec892bcd5.jpg differ diff --git a/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.jpg b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.jpg new file mode 100644 index 0000000..43cc659 Binary files /dev/null and b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.jpg differ diff --git a/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.json b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.json new file mode 100644 index 0000000..ca63400 --- /dev/null +++ b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72.json @@ -0,0 +1,46 @@ +{ + "image": "a5e55508-7115-493b-b90a-2f07e96adb72.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 460, + 700, + 734 + ], + "click_point": [ + 121, + 514 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_flag.jpg b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_flag.jpg new file mode 100644 index 0000000..7ec9d9b Binary files /dev/null and b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_vl.jpg b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_vl.jpg new file mode 100644 index 0000000..0f1e9fd Binary files /dev/null and b/Apps/XinDianTu/Images/a5e55508-7115-493b-b90a-2f07e96adb72_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a65418f8-77de-4a91-b743-f5a3015b59f0.jpg b/Apps/XinDianTu/Images/a65418f8-77de-4a91-b743-f5a3015b59f0.jpg new file mode 100644 index 0000000..17c6901 Binary files /dev/null and b/Apps/XinDianTu/Images/a65418f8-77de-4a91-b743-f5a3015b59f0.jpg differ diff --git a/Apps/XinDianTu/Images/a66ead16-6174-460a-aaf2-78e818545427.jpg b/Apps/XinDianTu/Images/a66ead16-6174-460a-aaf2-78e818545427.jpg new file mode 100644 index 0000000..cc4e959 Binary files /dev/null and b/Apps/XinDianTu/Images/a66ead16-6174-460a-aaf2-78e818545427.jpg differ diff --git a/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_1.jpg b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_1.jpg new file mode 100644 index 0000000..d51f160 Binary files /dev/null and b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_2.jpg b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_2.jpg new file mode 100644 index 0000000..90d858e Binary files /dev/null and b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_3.jpg b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_3.jpg new file mode 100644 index 0000000..ec5d08b Binary files /dev/null and b/Apps/XinDianTu/Images/a6c2c6e3a498d747581ddc124d49e1aa_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/a707191b-13e3-4424-93d3-eadb4255a1fc.jpg b/Apps/XinDianTu/Images/a707191b-13e3-4424-93d3-eadb4255a1fc.jpg new file mode 100644 index 0000000..a93a82a Binary files /dev/null and b/Apps/XinDianTu/Images/a707191b-13e3-4424-93d3-eadb4255a1fc.jpg differ diff --git a/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.jpg b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.jpg new file mode 100644 index 0000000..d596766 Binary files /dev/null and b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.jpg differ diff --git a/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.json b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.json new file mode 100644 index 0000000..6ecec66 --- /dev/null +++ b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.json @@ -0,0 +1,59 @@ +{ + "image": "a73ba6c9-f45f-4e49-8f07-ece126c0dd9a.jpg", + "width": 720, + "height": 205, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 588 + ], + "click_point": [ + 121, + 440 + ] + }, + { + "id": 2, + "rect": [ + 19, + 602, + 700, + 848 + ], + "click_point": [ + 121, + 651 + ] + }, + { + "id": 3, + "rect": [ + 19, + 857, + 700, + 1056 + ], + "click_point": [ + 121, + 896 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1065, + 700, + 1270 + ], + "click_point": [ + 121, + 1106 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_flag.jpg b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_flag.jpg new file mode 100644 index 0000000..8d9036f Binary files /dev/null and b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_vl.jpg b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_vl.jpg new file mode 100644 index 0000000..65de61a Binary files /dev/null and b/Apps/XinDianTu/Images/a73ba6c9-f45f-4e49-8f07-ece126c0dd9a_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e.jpg b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e.jpg new file mode 100644 index 0000000..8fd6c54 Binary files /dev/null and b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e.jpg differ diff --git a/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_flag.jpg b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_flag.jpg new file mode 100644 index 0000000..5117f5f Binary files /dev/null and b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_vl.jpg b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_vl.jpg new file mode 100644 index 0000000..9ee7fd4 Binary files /dev/null and b/Apps/XinDianTu/Images/a7f8cf3f-f3a6-497d-b436-3830ac98d40e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5.jpg b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5.jpg new file mode 100644 index 0000000..264a79a Binary files /dev/null and b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5.jpg differ diff --git a/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_flag.jpg b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_flag.jpg new file mode 100644 index 0000000..9f983d9 Binary files /dev/null and b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_vl.jpg b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_vl.jpg new file mode 100644 index 0000000..1d9c21b Binary files /dev/null and b/Apps/XinDianTu/Images/a855a0d3-6ebc-4f72-af55-eff957431aa5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a8b38308-812f-4b2c-8691-37d2a5b126ac.jpg b/Apps/XinDianTu/Images/a8b38308-812f-4b2c-8691-37d2a5b126ac.jpg new file mode 100644 index 0000000..a0e15b8 Binary files /dev/null and b/Apps/XinDianTu/Images/a8b38308-812f-4b2c-8691-37d2a5b126ac.jpg differ diff --git a/Apps/XinDianTu/Images/a8dc9d29-722c-46cd-9c52-40621a4adcbc.jpg b/Apps/XinDianTu/Images/a8dc9d29-722c-46cd-9c52-40621a4adcbc.jpg new file mode 100644 index 0000000..fd5db6e Binary files /dev/null and b/Apps/XinDianTu/Images/a8dc9d29-722c-46cd-9c52-40621a4adcbc.jpg differ diff --git a/Apps/XinDianTu/Images/a8fbf49d-ec26-402b-9a49-b038ef57d2ad.jpg b/Apps/XinDianTu/Images/a8fbf49d-ec26-402b-9a49-b038ef57d2ad.jpg new file mode 100644 index 0000000..a2d5c6d Binary files /dev/null and b/Apps/XinDianTu/Images/a8fbf49d-ec26-402b-9a49-b038ef57d2ad.jpg differ diff --git a/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.jpg b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.jpg new file mode 100644 index 0000000..4a6d67a Binary files /dev/null and b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.jpg differ diff --git a/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.json b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.json new file mode 100644 index 0000000..2649336 --- /dev/null +++ b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839.json @@ -0,0 +1,59 @@ +{ + "image": "a9983081-9a5c-4b5a-83b2-deb16a344839.jpg", + "width": 720, + "height": 220, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 620 + ], + "click_point": [ + 121, + 447 + ] + }, + { + "id": 2, + "rect": [ + 19, + 634, + 700, + 880 + ], + "click_point": [ + 121, + 683 + ] + }, + { + "id": 3, + "rect": [ + 19, + 889, + 700, + 1140 + ], + "click_point": [ + 121, + 939 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1154, + 700, + 1374 + ], + "click_point": [ + 121, + 1198 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_flag.jpg b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_flag.jpg new file mode 100644 index 0000000..c362e56 Binary files /dev/null and b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_vl.jpg b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_vl.jpg new file mode 100644 index 0000000..128dd17 Binary files /dev/null and b/Apps/XinDianTu/Images/a9983081-9a5c-4b5a-83b2-deb16a344839_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8.jpg b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8.jpg new file mode 100644 index 0000000..b63328e Binary files /dev/null and b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8.jpg differ diff --git a/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_flag.jpg b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_flag.jpg new file mode 100644 index 0000000..1a7042e Binary files /dev/null and b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_vl.jpg b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_vl.jpg new file mode 100644 index 0000000..15ca8ab Binary files /dev/null and b/Apps/XinDianTu/Images/a9b7debc-8b49-4983-bf4f-a0ebd2f1e7d8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/a9e03343-c12a-4876-90d0-d11b7dcf6ea5.jpg b/Apps/XinDianTu/Images/a9e03343-c12a-4876-90d0-d11b7dcf6ea5.jpg new file mode 100644 index 0000000..65284ad Binary files /dev/null and b/Apps/XinDianTu/Images/a9e03343-c12a-4876-90d0-d11b7dcf6ea5.jpg differ diff --git a/Apps/XinDianTu/Images/aa215968-07ad-487c-93b8-28f170f80528.jpg b/Apps/XinDianTu/Images/aa215968-07ad-487c-93b8-28f170f80528.jpg new file mode 100644 index 0000000..99f8616 Binary files /dev/null and b/Apps/XinDianTu/Images/aa215968-07ad-487c-93b8-28f170f80528.jpg differ diff --git a/Apps/XinDianTu/Images/aa2234e3-dc56-4147-bf50-48def919b042.jpg b/Apps/XinDianTu/Images/aa2234e3-dc56-4147-bf50-48def919b042.jpg new file mode 100644 index 0000000..8b16f9b Binary files /dev/null and b/Apps/XinDianTu/Images/aa2234e3-dc56-4147-bf50-48def919b042.jpg differ diff --git a/Apps/XinDianTu/Images/aa620f04-3de0-43cd-a6ba-7764dcce3e3a.jpg b/Apps/XinDianTu/Images/aa620f04-3de0-43cd-a6ba-7764dcce3e3a.jpg new file mode 100644 index 0000000..b66ec10 Binary files /dev/null and b/Apps/XinDianTu/Images/aa620f04-3de0-43cd-a6ba-7764dcce3e3a.jpg differ diff --git a/Apps/XinDianTu/Images/aa64edcc-2aae-4c6f-b475-9a6e4d89f0ce.jpg b/Apps/XinDianTu/Images/aa64edcc-2aae-4c6f-b475-9a6e4d89f0ce.jpg new file mode 100644 index 0000000..72913b2 Binary files /dev/null and b/Apps/XinDianTu/Images/aa64edcc-2aae-4c6f-b475-9a6e4d89f0ce.jpg differ diff --git a/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.jpg b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.jpg new file mode 100644 index 0000000..3c1dd30 Binary files /dev/null and b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.jpg differ diff --git a/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.json b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.json new file mode 100644 index 0000000..f652d41 --- /dev/null +++ b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b.json @@ -0,0 +1,46 @@ +{ + "image": "aad52585-b98a-4d7f-bbd6-a1eec6bed14b.jpg", + "width": 720, + "height": 248, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 452, + 700, + 727 + ], + "click_point": [ + 121, + 507 + ] + }, + { + "id": 2, + "rect": [ + 19, + 740, + 700, + 1015 + ], + "click_point": [ + 121, + 795 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1028, + 700, + 1276 + ], + "click_point": [ + 121, + 1077 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_flag.jpg b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_flag.jpg new file mode 100644 index 0000000..593ef0a Binary files /dev/null and b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_vl.jpg b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_vl.jpg new file mode 100644 index 0000000..105b408 Binary files /dev/null and b/Apps/XinDianTu/Images/aad52585-b98a-4d7f-bbd6-a1eec6bed14b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_1.jpg b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_1.jpg new file mode 100644 index 0000000..ae9dd29 Binary files /dev/null and b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_2.jpg b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_2.jpg new file mode 100644 index 0000000..6b00d37 Binary files /dev/null and b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_3.jpg b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_3.jpg new file mode 100644 index 0000000..c69c44b Binary files /dev/null and b/Apps/XinDianTu/Images/ab216bc51149e58080c592193cf52820_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ab23f7ce-9715-4e45-a294-17bd12a2efc7.jpg b/Apps/XinDianTu/Images/ab23f7ce-9715-4e45-a294-17bd12a2efc7.jpg new file mode 100644 index 0000000..2a5cc9c Binary files /dev/null and b/Apps/XinDianTu/Images/ab23f7ce-9715-4e45-a294-17bd12a2efc7.jpg differ diff --git a/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.jpg b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.jpg new file mode 100644 index 0000000..2655892 Binary files /dev/null and b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.jpg differ diff --git a/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.json b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.json new file mode 100644 index 0000000..d53539c --- /dev/null +++ b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554.json @@ -0,0 +1,46 @@ +{ + "image": "ab38f2a1-53a8-451d-bdec-a922d4238554.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 568, + 700, + 814 + ], + "click_point": [ + 121, + 617 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1079 + ], + "click_point": [ + 121, + 878 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1088, + 700, + 1334 + ], + "click_point": [ + 121, + 1137 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_flag.jpg b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_flag.jpg new file mode 100644 index 0000000..7e1e9b7 Binary files /dev/null and b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_vl.jpg b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_vl.jpg new file mode 100644 index 0000000..b145471 Binary files /dev/null and b/Apps/XinDianTu/Images/ab38f2a1-53a8-451d-bdec-a922d4238554_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.jpg b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.jpg new file mode 100644 index 0000000..4511efd Binary files /dev/null and b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.jpg differ diff --git a/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.json b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.json new file mode 100644 index 0000000..21e0248 --- /dev/null +++ b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3.json @@ -0,0 +1,46 @@ +{ + "image": "ab5f592f-82d0-4716-8494-2f91b74b91d3.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 539, + 700, + 788 + ], + "click_point": [ + 121, + 588 + ] + }, + { + "id": 2, + "rect": [ + 19, + 796, + 700, + 1045 + ], + "click_point": [ + 121, + 845 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1059, + 700, + 1308 + ], + "click_point": [ + 121, + 1108 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_flag.jpg b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_flag.jpg new file mode 100644 index 0000000..478a31e Binary files /dev/null and b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_vl.jpg b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_vl.jpg new file mode 100644 index 0000000..7da1cf5 Binary files /dev/null and b/Apps/XinDianTu/Images/ab5f592f-82d0-4716-8494-2f91b74b91d3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_1.jpg b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_1.jpg new file mode 100644 index 0000000..1b7fce7 Binary files /dev/null and b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_2.jpg b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_2.jpg new file mode 100644 index 0000000..4645ebd Binary files /dev/null and b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_3.jpg b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_3.jpg new file mode 100644 index 0000000..b43a524 Binary files /dev/null and b/Apps/XinDianTu/Images/ab87f667c4276b0868d74aafc1eadbfa_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_1.jpg b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_1.jpg new file mode 100644 index 0000000..b220568 Binary files /dev/null and b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_2.jpg b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_2.jpg new file mode 100644 index 0000000..49319a5 Binary files /dev/null and b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_3.jpg b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_3.jpg new file mode 100644 index 0000000..b59aaa3 Binary files /dev/null and b/Apps/XinDianTu/Images/ac1a9c249da269c6875214bb4a6cc80e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ac48e62b-5c6d-48e0-9467-88ff80b76766.jpg b/Apps/XinDianTu/Images/ac48e62b-5c6d-48e0-9467-88ff80b76766.jpg new file mode 100644 index 0000000..62686c9 Binary files /dev/null and b/Apps/XinDianTu/Images/ac48e62b-5c6d-48e0-9467-88ff80b76766.jpg differ diff --git a/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.jpg b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.jpg new file mode 100644 index 0000000..492f004 Binary files /dev/null and b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.jpg differ diff --git a/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.json b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.json new file mode 100644 index 0000000..d41df4a --- /dev/null +++ b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326.json @@ -0,0 +1,46 @@ +{ + "image": "ac4c6dae-d912-4b57-8fd5-687ee6359326.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_flag.jpg b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_flag.jpg new file mode 100644 index 0000000..fcf5c68 Binary files /dev/null and b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_vl.jpg b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_vl.jpg new file mode 100644 index 0000000..f7a373f Binary files /dev/null and b/Apps/XinDianTu/Images/ac4c6dae-d912-4b57-8fd5-687ee6359326_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_1.jpg b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_1.jpg new file mode 100644 index 0000000..3c0eb8d Binary files /dev/null and b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_2.jpg b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_2.jpg new file mode 100644 index 0000000..d98ee18 Binary files /dev/null and b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_3.jpg b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_3.jpg new file mode 100644 index 0000000..72b6a4d Binary files /dev/null and b/Apps/XinDianTu/Images/ac5df1cf5addfee423aecc4f9acf8456_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ac857cca-73c1-45c5-894c-73786773dc96.jpg b/Apps/XinDianTu/Images/ac857cca-73c1-45c5-894c-73786773dc96.jpg new file mode 100644 index 0000000..447dab3 Binary files /dev/null and b/Apps/XinDianTu/Images/ac857cca-73c1-45c5-894c-73786773dc96.jpg differ diff --git a/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457.jpg b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457.jpg new file mode 100644 index 0000000..c61ef3d Binary files /dev/null and b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457.jpg differ diff --git a/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_flag.jpg b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_flag.jpg new file mode 100644 index 0000000..c3fd457 Binary files /dev/null and b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_vl.jpg b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_vl.jpg new file mode 100644 index 0000000..ef6fd88 Binary files /dev/null and b/Apps/XinDianTu/Images/ad2a62b7-2cd0-4d85-8090-d5513cc6a457_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_1.jpg b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_1.jpg new file mode 100644 index 0000000..18a0ba7 Binary files /dev/null and b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_2.jpg b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_2.jpg new file mode 100644 index 0000000..6e5b533 Binary files /dev/null and b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_3.jpg b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_3.jpg new file mode 100644 index 0000000..35c2e7e Binary files /dev/null and b/Apps/XinDianTu/Images/ad3d62cd58d24ab9a993e7ca74cb9ee8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ad61fdad-fcd2-4e3f-882c-549b1c99ff11.jpg b/Apps/XinDianTu/Images/ad61fdad-fcd2-4e3f-882c-549b1c99ff11.jpg new file mode 100644 index 0000000..19f7a91 Binary files /dev/null and b/Apps/XinDianTu/Images/ad61fdad-fcd2-4e3f-882c-549b1c99ff11.jpg differ diff --git a/Apps/XinDianTu/Images/ad7ebfdb-057f-4e13-a005-1b44d62e5cc5.jpg b/Apps/XinDianTu/Images/ad7ebfdb-057f-4e13-a005-1b44d62e5cc5.jpg new file mode 100644 index 0000000..0a3635a Binary files /dev/null and b/Apps/XinDianTu/Images/ad7ebfdb-057f-4e13-a005-1b44d62e5cc5.jpg differ diff --git a/Apps/XinDianTu/Images/adc47c16-b2f9-4859-921e-a66004254747.jpg b/Apps/XinDianTu/Images/adc47c16-b2f9-4859-921e-a66004254747.jpg new file mode 100644 index 0000000..2875324 Binary files /dev/null and b/Apps/XinDianTu/Images/adc47c16-b2f9-4859-921e-a66004254747.jpg differ diff --git a/Apps/XinDianTu/Images/adffe512-328e-474b-91cc-7dd8f9c8b1de.jpg b/Apps/XinDianTu/Images/adffe512-328e-474b-91cc-7dd8f9c8b1de.jpg new file mode 100644 index 0000000..1d74d9f Binary files /dev/null and b/Apps/XinDianTu/Images/adffe512-328e-474b-91cc-7dd8f9c8b1de.jpg differ diff --git a/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b.jpg b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b.jpg new file mode 100644 index 0000000..6f75b4a Binary files /dev/null and b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b.jpg differ diff --git a/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_flag.jpg b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_flag.jpg new file mode 100644 index 0000000..b6bf819 Binary files /dev/null and b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_vl.jpg b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_vl.jpg new file mode 100644 index 0000000..1ca6b93 Binary files /dev/null and b/Apps/XinDianTu/Images/ae179fbd-32e0-4c94-b710-c8c7abe3346b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ae35570e-773d-461e-9f1b-f5c1f3726bb8.jpg b/Apps/XinDianTu/Images/ae35570e-773d-461e-9f1b-f5c1f3726bb8.jpg new file mode 100644 index 0000000..681110f Binary files /dev/null and b/Apps/XinDianTu/Images/ae35570e-773d-461e-9f1b-f5c1f3726bb8.jpg differ diff --git a/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_1.jpg b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_1.jpg new file mode 100644 index 0000000..b3a296e Binary files /dev/null and b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_2.jpg b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_2.jpg new file mode 100644 index 0000000..c7266ea Binary files /dev/null and b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_3.jpg b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_3.jpg new file mode 100644 index 0000000..9bc7e4f Binary files /dev/null and b/Apps/XinDianTu/Images/ae7e56ff20885bd9ea16c13580749915_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ae897482-edd2-448c-b8bb-f81323b8028b.jpg b/Apps/XinDianTu/Images/ae897482-edd2-448c-b8bb-f81323b8028b.jpg new file mode 100644 index 0000000..c4c872e Binary files /dev/null and b/Apps/XinDianTu/Images/ae897482-edd2-448c-b8bb-f81323b8028b.jpg differ diff --git a/Apps/XinDianTu/Images/ae8a2f8b-a6ba-4f76-89c1-59ca99e9d4a7.jpg b/Apps/XinDianTu/Images/ae8a2f8b-a6ba-4f76-89c1-59ca99e9d4a7.jpg new file mode 100644 index 0000000..485905f Binary files /dev/null and b/Apps/XinDianTu/Images/ae8a2f8b-a6ba-4f76-89c1-59ca99e9d4a7.jpg differ diff --git a/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e.jpg b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e.jpg new file mode 100644 index 0000000..1fbbb49 Binary files /dev/null and b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e.jpg differ diff --git a/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_flag.jpg b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_flag.jpg new file mode 100644 index 0000000..c896d57 Binary files /dev/null and b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_vl.jpg b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_vl.jpg new file mode 100644 index 0000000..0caf840 Binary files /dev/null and b/Apps/XinDianTu/Images/aee993dc-02e4-4362-bcb5-c5885e0ccc0e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627.jpg b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627.jpg new file mode 100644 index 0000000..f976446 Binary files /dev/null and b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627.jpg differ diff --git a/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_flag.jpg b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_flag.jpg new file mode 100644 index 0000000..c59ed27 Binary files /dev/null and b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_flag.jpg differ diff --git a/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_vl.jpg b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_vl.jpg new file mode 100644 index 0000000..3c06019 Binary files /dev/null and b/Apps/XinDianTu/Images/af61e69a-6ae1-4343-b59f-9b1485503627_vl.jpg differ diff --git a/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_1.jpg b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_1.jpg new file mode 100644 index 0000000..d117014 Binary files /dev/null and b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_2.jpg b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_2.jpg new file mode 100644 index 0000000..ef85193 Binary files /dev/null and b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_3.jpg b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_3.jpg new file mode 100644 index 0000000..17900c3 Binary files /dev/null and b/Apps/XinDianTu/Images/af98b2183d7013831a2bf7c43a58f81c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/aff4ec41-8c1a-4f09-8441-e8ebc9db0538.jpg b/Apps/XinDianTu/Images/aff4ec41-8c1a-4f09-8441-e8ebc9db0538.jpg new file mode 100644 index 0000000..49543c6 Binary files /dev/null and b/Apps/XinDianTu/Images/aff4ec41-8c1a-4f09-8441-e8ebc9db0538.jpg differ diff --git a/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_1.jpg b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_1.jpg new file mode 100644 index 0000000..fa20280 Binary files /dev/null and b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_2.jpg b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_2.jpg new file mode 100644 index 0000000..97f0011 Binary files /dev/null and b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_3.jpg b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_3.jpg new file mode 100644 index 0000000..b3fd9bd Binary files /dev/null and b/Apps/XinDianTu/Images/affcbde056dc088427de753217a4b939_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_1.jpg b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_1.jpg new file mode 100644 index 0000000..1c966ae Binary files /dev/null and b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_2.jpg b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_2.jpg new file mode 100644 index 0000000..19f7f54 Binary files /dev/null and b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_3.jpg b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_3.jpg new file mode 100644 index 0000000..29bfe40 Binary files /dev/null and b/Apps/XinDianTu/Images/b02ee2c9a92e610ab274907c53ba45a3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b039d3d1-59fe-4c2f-8e8c-302f373395b8.jpg b/Apps/XinDianTu/Images/b039d3d1-59fe-4c2f-8e8c-302f373395b8.jpg new file mode 100644 index 0000000..c8e92e8 Binary files /dev/null and b/Apps/XinDianTu/Images/b039d3d1-59fe-4c2f-8e8c-302f373395b8.jpg differ diff --git a/Apps/XinDianTu/Images/b04ebbb5-d2f8-4354-aa3d-ca461ffd4151.jpg b/Apps/XinDianTu/Images/b04ebbb5-d2f8-4354-aa3d-ca461ffd4151.jpg new file mode 100644 index 0000000..06bf6cb Binary files /dev/null and b/Apps/XinDianTu/Images/b04ebbb5-d2f8-4354-aa3d-ca461ffd4151.jpg differ diff --git a/Apps/XinDianTu/Images/b064db0e-47f0-438c-b232-30a805e3ed42.jpg b/Apps/XinDianTu/Images/b064db0e-47f0-438c-b232-30a805e3ed42.jpg new file mode 100644 index 0000000..a3e0029 Binary files /dev/null and b/Apps/XinDianTu/Images/b064db0e-47f0-438c-b232-30a805e3ed42.jpg differ diff --git a/Apps/XinDianTu/Images/b0d6aa86-88f6-4643-a2b7-ab0aaf9e11fb.jpg b/Apps/XinDianTu/Images/b0d6aa86-88f6-4643-a2b7-ab0aaf9e11fb.jpg new file mode 100644 index 0000000..7dcbac7 Binary files /dev/null and b/Apps/XinDianTu/Images/b0d6aa86-88f6-4643-a2b7-ab0aaf9e11fb.jpg differ diff --git a/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.jpg b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.jpg new file mode 100644 index 0000000..59704fe Binary files /dev/null and b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.jpg differ diff --git a/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.json b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.json new file mode 100644 index 0000000..2d389e8 --- /dev/null +++ b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.json @@ -0,0 +1,46 @@ +{ + "image": "b0e1bbf5-341b-4cd6-916e-e8bb70cba90f.jpg", + "width": 720, + "height": 248, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 532, + 700, + 780 + ], + "click_point": [ + 121, + 581 + ] + }, + { + "id": 2, + "rect": [ + 19, + 793, + 700, + 1039 + ], + "click_point": [ + 121, + 842 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1052, + 700, + 1300 + ], + "click_point": [ + 121, + 1101 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_flag.jpg b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_flag.jpg new file mode 100644 index 0000000..2dbc3d8 Binary files /dev/null and b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_vl.jpg b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_vl.jpg new file mode 100644 index 0000000..89fc9e2 Binary files /dev/null and b/Apps/XinDianTu/Images/b0e1bbf5-341b-4cd6-916e-e8bb70cba90f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b13e8bdb-ea36-479d-b2dc-8ab29d547ceb.jpg b/Apps/XinDianTu/Images/b13e8bdb-ea36-479d-b2dc-8ab29d547ceb.jpg new file mode 100644 index 0000000..f15ea16 Binary files /dev/null and b/Apps/XinDianTu/Images/b13e8bdb-ea36-479d-b2dc-8ab29d547ceb.jpg differ diff --git a/Apps/XinDianTu/Images/b1521de3-617b-4329-ba69-8b1e5fe8fc2b.jpg b/Apps/XinDianTu/Images/b1521de3-617b-4329-ba69-8b1e5fe8fc2b.jpg new file mode 100644 index 0000000..11d0abd Binary files /dev/null and b/Apps/XinDianTu/Images/b1521de3-617b-4329-ba69-8b1e5fe8fc2b.jpg differ diff --git a/Apps/XinDianTu/Images/b1526ba7-6b22-4fcc-8265-3c2d04bed972.jpg b/Apps/XinDianTu/Images/b1526ba7-6b22-4fcc-8265-3c2d04bed972.jpg new file mode 100644 index 0000000..66f6f18 Binary files /dev/null and b/Apps/XinDianTu/Images/b1526ba7-6b22-4fcc-8265-3c2d04bed972.jpg differ diff --git a/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_1.jpg b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_1.jpg new file mode 100644 index 0000000..7b144ab Binary files /dev/null and b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_2.jpg b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_2.jpg new file mode 100644 index 0000000..8211664 Binary files /dev/null and b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_3.jpg b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_3.jpg new file mode 100644 index 0000000..468e092 Binary files /dev/null and b/Apps/XinDianTu/Images/b1d4e8f0f24f01621510fad09598291a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b265d2a0-1e59-4fde-a984-5fc1b2a990cc.jpg b/Apps/XinDianTu/Images/b265d2a0-1e59-4fde-a984-5fc1b2a990cc.jpg new file mode 100644 index 0000000..61e0314 Binary files /dev/null and b/Apps/XinDianTu/Images/b265d2a0-1e59-4fde-a984-5fc1b2a990cc.jpg differ diff --git a/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_1.jpg b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_1.jpg new file mode 100644 index 0000000..e598d1b Binary files /dev/null and b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_2.jpg b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_2.jpg new file mode 100644 index 0000000..e8495d1 Binary files /dev/null and b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_3.jpg b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_3.jpg new file mode 100644 index 0000000..df62f81 Binary files /dev/null and b/Apps/XinDianTu/Images/b273f3debb477b721e4b545ff6353948_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b2b03a7b-6440-4906-b1d8-1737fc3aea68.jpg b/Apps/XinDianTu/Images/b2b03a7b-6440-4906-b1d8-1737fc3aea68.jpg new file mode 100644 index 0000000..45f56bb Binary files /dev/null and b/Apps/XinDianTu/Images/b2b03a7b-6440-4906-b1d8-1737fc3aea68.jpg differ diff --git a/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.jpg b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.jpg new file mode 100644 index 0000000..251de8f Binary files /dev/null and b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.jpg differ diff --git a/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.json b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.json new file mode 100644 index 0000000..f295380 --- /dev/null +++ b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d.json @@ -0,0 +1,46 @@ +{ + "image": "b2c3b785-3fc5-40bd-8713-18041f61777d.jpg", + "width": 720, + "height": 248, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 564, + 700, + 812 + ], + "click_point": [ + 121, + 613 + ] + }, + { + "id": 2, + "rect": [ + 19, + 825, + 700, + 1071 + ], + "click_point": [ + 121, + 874 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1084, + 700, + 1332 + ], + "click_point": [ + 121, + 1133 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_flag.jpg b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_flag.jpg new file mode 100644 index 0000000..8bf945d Binary files /dev/null and b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_vl.jpg b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_vl.jpg new file mode 100644 index 0000000..7bab22c Binary files /dev/null and b/Apps/XinDianTu/Images/b2c3b785-3fc5-40bd-8713-18041f61777d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b2dc3cf9-0dc6-4ffc-aab9-993f006a8fca.jpg b/Apps/XinDianTu/Images/b2dc3cf9-0dc6-4ffc-aab9-993f006a8fca.jpg new file mode 100644 index 0000000..c1726e4 Binary files /dev/null and b/Apps/XinDianTu/Images/b2dc3cf9-0dc6-4ffc-aab9-993f006a8fca.jpg differ diff --git a/Apps/XinDianTu/Images/b3b2dcb9-25a0-4d59-846b-e24817c48f02.jpg b/Apps/XinDianTu/Images/b3b2dcb9-25a0-4d59-846b-e24817c48f02.jpg new file mode 100644 index 0000000..79e716d Binary files /dev/null and b/Apps/XinDianTu/Images/b3b2dcb9-25a0-4d59-846b-e24817c48f02.jpg differ diff --git a/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_1.jpg b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_1.jpg new file mode 100644 index 0000000..2d7be89 Binary files /dev/null and b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_2.jpg b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_2.jpg new file mode 100644 index 0000000..95da31c Binary files /dev/null and b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_3.jpg b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_3.jpg new file mode 100644 index 0000000..d505b6f Binary files /dev/null and b/Apps/XinDianTu/Images/b4570eed39e3fdad5cbc19a10c94781d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_1.jpg b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_1.jpg new file mode 100644 index 0000000..2886e5e Binary files /dev/null and b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_2.jpg b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_2.jpg new file mode 100644 index 0000000..5748980 Binary files /dev/null and b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_3.jpg b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_3.jpg new file mode 100644 index 0000000..d0b91c4 Binary files /dev/null and b/Apps/XinDianTu/Images/b4985bbe2e2ea49640fa870f8ea0eaf0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_1.jpg b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_1.jpg new file mode 100644 index 0000000..a4988ca Binary files /dev/null and b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_2.jpg b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_2.jpg new file mode 100644 index 0000000..5227dda Binary files /dev/null and b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_3.jpg b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_3.jpg new file mode 100644 index 0000000..df478e1 Binary files /dev/null and b/Apps/XinDianTu/Images/b4b1cf02ff61155dea815b66628225f9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_1.jpg b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_1.jpg new file mode 100644 index 0000000..e005cfe Binary files /dev/null and b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_2.jpg b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_2.jpg new file mode 100644 index 0000000..feafde4 Binary files /dev/null and b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_3.jpg b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_3.jpg new file mode 100644 index 0000000..c2b0789 Binary files /dev/null and b/Apps/XinDianTu/Images/b4de78b2efb76c65b28c0af1e2b3efad_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b547486a-6387-4687-aa81-16bbeb9981bb.jpg b/Apps/XinDianTu/Images/b547486a-6387-4687-aa81-16bbeb9981bb.jpg new file mode 100644 index 0000000..f3dd455 Binary files /dev/null and b/Apps/XinDianTu/Images/b547486a-6387-4687-aa81-16bbeb9981bb.jpg differ diff --git a/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.jpg b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.jpg new file mode 100644 index 0000000..a90f1b6 Binary files /dev/null and b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.jpg differ diff --git a/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.json b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.json new file mode 100644 index 0000000..9f13f87 --- /dev/null +++ b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf.json @@ -0,0 +1,46 @@ +{ + "image": "b5845c38-c29d-4b53-b47c-394b39d82fdf.jpg", + "width": 720, + "height": 243, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 580, + 700, + 829 + ], + "click_point": [ + 121, + 629 + ] + }, + { + "id": 2, + "rect": [ + 19, + 842, + 700, + 1117 + ], + "click_point": [ + 121, + 897 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1131, + 700, + 1374 + ], + "click_point": [ + 121, + 1179 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_flag.jpg b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_flag.jpg new file mode 100644 index 0000000..ec9aaa6 Binary files /dev/null and b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_vl.jpg b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_vl.jpg new file mode 100644 index 0000000..53f77a8 Binary files /dev/null and b/Apps/XinDianTu/Images/b5845c38-c29d-4b53-b47c-394b39d82fdf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b5ae95c5-5f7c-4dd3-8ea4-20fb6633703c.jpg b/Apps/XinDianTu/Images/b5ae95c5-5f7c-4dd3-8ea4-20fb6633703c.jpg new file mode 100644 index 0000000..251d3d3 Binary files /dev/null and b/Apps/XinDianTu/Images/b5ae95c5-5f7c-4dd3-8ea4-20fb6633703c.jpg differ diff --git a/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.jpg b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.jpg new file mode 100644 index 0000000..d277ee7 Binary files /dev/null and b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.jpg differ diff --git a/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.json b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.json new file mode 100644 index 0000000..7e3d600 --- /dev/null +++ b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf.json @@ -0,0 +1,46 @@ +{ + "image": "b5df7b1d-a1c0-49df-ad6c-39af03e150cf.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_flag.jpg b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_flag.jpg new file mode 100644 index 0000000..516f7b3 Binary files /dev/null and b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_vl.jpg b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_vl.jpg new file mode 100644 index 0000000..d16d06c Binary files /dev/null and b/Apps/XinDianTu/Images/b5df7b1d-a1c0-49df-ad6c-39af03e150cf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_1.jpg b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_1.jpg new file mode 100644 index 0000000..424c0b2 Binary files /dev/null and b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_2.jpg b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_2.jpg new file mode 100644 index 0000000..695580d Binary files /dev/null and b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_3.jpg b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_3.jpg new file mode 100644 index 0000000..08a9a7e Binary files /dev/null and b/Apps/XinDianTu/Images/b6423ee046fa1aa1b6c186972d08d126_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b6982f98-1a20-4b98-a322-f5be8f737145.jpg b/Apps/XinDianTu/Images/b6982f98-1a20-4b98-a322-f5be8f737145.jpg new file mode 100644 index 0000000..a4fd87c Binary files /dev/null and b/Apps/XinDianTu/Images/b6982f98-1a20-4b98-a322-f5be8f737145.jpg differ diff --git a/Apps/XinDianTu/Images/b6bd34ce-183a-46c7-81c4-10e0857cea88.jpg b/Apps/XinDianTu/Images/b6bd34ce-183a-46c7-81c4-10e0857cea88.jpg new file mode 100644 index 0000000..f9e1797 Binary files /dev/null and b/Apps/XinDianTu/Images/b6bd34ce-183a-46c7-81c4-10e0857cea88.jpg differ diff --git a/Apps/XinDianTu/Images/b6e5eb97-4cd1-4c29-8e06-95b6bf982582.jpg b/Apps/XinDianTu/Images/b6e5eb97-4cd1-4c29-8e06-95b6bf982582.jpg new file mode 100644 index 0000000..2b129f4 Binary files /dev/null and b/Apps/XinDianTu/Images/b6e5eb97-4cd1-4c29-8e06-95b6bf982582.jpg differ diff --git a/Apps/XinDianTu/Images/b6ea7259-143c-40c2-8329-77872eb20e11.jpg b/Apps/XinDianTu/Images/b6ea7259-143c-40c2-8329-77872eb20e11.jpg new file mode 100644 index 0000000..9e16d29 Binary files /dev/null and b/Apps/XinDianTu/Images/b6ea7259-143c-40c2-8329-77872eb20e11.jpg differ diff --git a/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.jpg b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.jpg new file mode 100644 index 0000000..f44dca8 Binary files /dev/null and b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.jpg differ diff --git a/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.json b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.json new file mode 100644 index 0000000..ce50d84 --- /dev/null +++ b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb.json @@ -0,0 +1,59 @@ +{ + "image": "b6ef8444-28bb-4499-9d1a-2f51d81a71cb.jpg", + "width": 720, + "height": 162, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 484, + 700, + 735 + ], + "click_point": [ + 121, + 534 + ] + }, + { + "id": 2, + "rect": [ + 19, + 744, + 700, + 990 + ], + "click_point": [ + 121, + 793 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1004, + 700, + 1198 + ], + "click_point": [ + 121, + 1042 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1212, + 700, + 1374 + ], + "click_point": [ + 121, + 1244 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_flag.jpg b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_flag.jpg new file mode 100644 index 0000000..c4d9196 Binary files /dev/null and b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_vl.jpg b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_vl.jpg new file mode 100644 index 0000000..30e8d2b Binary files /dev/null and b/Apps/XinDianTu/Images/b6ef8444-28bb-4499-9d1a-2f51d81a71cb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b71a50fa-7223-4fa9-86b2-b5268a7d07fb.jpg b/Apps/XinDianTu/Images/b71a50fa-7223-4fa9-86b2-b5268a7d07fb.jpg new file mode 100644 index 0000000..b73c309 Binary files /dev/null and b/Apps/XinDianTu/Images/b71a50fa-7223-4fa9-86b2-b5268a7d07fb.jpg differ diff --git a/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_1.jpg b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_1.jpg new file mode 100644 index 0000000..9c7007e Binary files /dev/null and b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_2.jpg b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_2.jpg new file mode 100644 index 0000000..ace758b Binary files /dev/null and b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_3.jpg b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_3.jpg new file mode 100644 index 0000000..856353a Binary files /dev/null and b/Apps/XinDianTu/Images/b7460e0009578fe82a26e65568bcd356_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b7789616-d38d-4584-a1ad-0b7983b6708c.jpg b/Apps/XinDianTu/Images/b7789616-d38d-4584-a1ad-0b7983b6708c.jpg new file mode 100644 index 0000000..cb04324 Binary files /dev/null and b/Apps/XinDianTu/Images/b7789616-d38d-4584-a1ad-0b7983b6708c.jpg differ diff --git a/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_1.jpg b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_1.jpg new file mode 100644 index 0000000..bcd63cb Binary files /dev/null and b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_2.jpg b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_2.jpg new file mode 100644 index 0000000..73c3b50 Binary files /dev/null and b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_3.jpg b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_3.jpg new file mode 100644 index 0000000..2e73f82 Binary files /dev/null and b/Apps/XinDianTu/Images/b77ad30e37c7a7dcf0511f8dbc6fc3ab_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_1.jpg b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_1.jpg new file mode 100644 index 0000000..453467b Binary files /dev/null and b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_2.jpg b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_2.jpg new file mode 100644 index 0000000..6288cf1 Binary files /dev/null and b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_3.jpg b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_3.jpg new file mode 100644 index 0000000..4a9ba2a Binary files /dev/null and b/Apps/XinDianTu/Images/b7895c189658aebc6f65e02f8ff8491e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/b7d1aaa6-9681-4f9e-95ff-2ab67a46de1b.jpg b/Apps/XinDianTu/Images/b7d1aaa6-9681-4f9e-95ff-2ab67a46de1b.jpg new file mode 100644 index 0000000..4411bfa Binary files /dev/null and b/Apps/XinDianTu/Images/b7d1aaa6-9681-4f9e-95ff-2ab67a46de1b.jpg differ diff --git a/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.jpg b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.jpg new file mode 100644 index 0000000..ffaf5c6 Binary files /dev/null and b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.jpg differ diff --git a/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.json b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.json new file mode 100644 index 0000000..41f72d8 --- /dev/null +++ b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd.json @@ -0,0 +1,46 @@ +{ + "image": "b7de3301-6c6a-4e84-8f2c-6ed782838ebd.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 499, + 700, + 748 + ], + "click_point": [ + 121, + 548 + ] + }, + { + "id": 2, + "rect": [ + 19, + 756, + 700, + 1005 + ], + "click_point": [ + 121, + 805 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1019, + 700, + 1268 + ], + "click_point": [ + 121, + 1068 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_flag.jpg b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_flag.jpg new file mode 100644 index 0000000..b8a78c6 Binary files /dev/null and b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_vl.jpg b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_vl.jpg new file mode 100644 index 0000000..0b5032a Binary files /dev/null and b/Apps/XinDianTu/Images/b7de3301-6c6a-4e84-8f2c-6ed782838ebd_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.jpg b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.jpg new file mode 100644 index 0000000..3e09943 Binary files /dev/null and b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.jpg differ diff --git a/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.json b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.json new file mode 100644 index 0000000..00cbafb --- /dev/null +++ b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715.json @@ -0,0 +1,46 @@ +{ + "image": "b850b328-8c7b-45ab-bf88-7246a7a55715.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_flag.jpg b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_flag.jpg new file mode 100644 index 0000000..2539c90 Binary files /dev/null and b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_vl.jpg b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_vl.jpg new file mode 100644 index 0000000..02c2906 Binary files /dev/null and b/Apps/XinDianTu/Images/b850b328-8c7b-45ab-bf88-7246a7a55715_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.jpg b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.jpg new file mode 100644 index 0000000..46b83d1 Binary files /dev/null and b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.jpg differ diff --git a/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.json b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.json new file mode 100644 index 0000000..0100662 --- /dev/null +++ b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36.json @@ -0,0 +1,46 @@ +{ + "image": "b8d6821a-8850-4c29-8a07-6c2d13dcec36.jpg", + "width": 720, + "height": 306, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 548, + 700, + 796 + ], + "click_point": [ + 121, + 597 + ] + }, + { + "id": 2, + "rect": [ + 19, + 809, + 700, + 1055 + ], + "click_point": [ + 121, + 858 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1068, + 700, + 1374 + ], + "click_point": [ + 121, + 1129 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_flag.jpg b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_flag.jpg new file mode 100644 index 0000000..eeaa729 Binary files /dev/null and b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_vl.jpg b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_vl.jpg new file mode 100644 index 0000000..4ce614d Binary files /dev/null and b/Apps/XinDianTu/Images/b8d6821a-8850-4c29-8a07-6c2d13dcec36_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.jpg b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.jpg new file mode 100644 index 0000000..18efd07 Binary files /dev/null and b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.jpg differ diff --git a/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.json b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.json new file mode 100644 index 0000000..9ff02e7 --- /dev/null +++ b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae.json @@ -0,0 +1,59 @@ +{ + "image": "b98656a5-6084-49b0-b06a-e71bfb9793ae.jpg", + "width": 720, + "height": 186, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 655 + ], + "click_point": [ + 121, + 454 + ] + }, + { + "id": 2, + "rect": [ + 19, + 668, + 700, + 916 + ], + "click_point": [ + 121, + 717 + ] + }, + { + "id": 3, + "rect": [ + 19, + 929, + 700, + 1175 + ], + "click_point": [ + 121, + 978 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1188, + 700, + 1374 + ], + "click_point": [ + 121, + 1225 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_flag.jpg b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_flag.jpg new file mode 100644 index 0000000..1a16e35 Binary files /dev/null and b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_flag.jpg differ diff --git a/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_vl.jpg b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_vl.jpg new file mode 100644 index 0000000..d845830 Binary files /dev/null and b/Apps/XinDianTu/Images/b98656a5-6084-49b0-b06a-e71bfb9793ae_vl.jpg differ diff --git a/Apps/XinDianTu/Images/b99ccaad-5f1e-4c1d-8011-2e67b958132b.jpg b/Apps/XinDianTu/Images/b99ccaad-5f1e-4c1d-8011-2e67b958132b.jpg new file mode 100644 index 0000000..d54b584 Binary files /dev/null and b/Apps/XinDianTu/Images/b99ccaad-5f1e-4c1d-8011-2e67b958132b.jpg differ diff --git a/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924.jpg b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924.jpg new file mode 100644 index 0000000..19391c5 Binary files /dev/null and b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924.jpg differ diff --git a/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_flag.jpg b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_flag.jpg new file mode 100644 index 0000000..eca39c3 Binary files /dev/null and b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_vl.jpg b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_vl.jpg new file mode 100644 index 0000000..8c4df91 Binary files /dev/null and b/Apps/XinDianTu/Images/ba0f671c-cca7-4161-a644-2c7b3b5dd924_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ba0fcd42-bc00-40b8-a0b3-3c01ca4d3f00.jpg b/Apps/XinDianTu/Images/ba0fcd42-bc00-40b8-a0b3-3c01ca4d3f00.jpg new file mode 100644 index 0000000..7fcd31c Binary files /dev/null and b/Apps/XinDianTu/Images/ba0fcd42-bc00-40b8-a0b3-3c01ca4d3f00.jpg differ diff --git a/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d.jpg b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d.jpg new file mode 100644 index 0000000..5de9894 Binary files /dev/null and b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d.jpg differ diff --git a/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_flag.jpg b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_flag.jpg new file mode 100644 index 0000000..5b3a0fe Binary files /dev/null and b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_vl.jpg b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_vl.jpg new file mode 100644 index 0000000..c99b3ba Binary files /dev/null and b/Apps/XinDianTu/Images/ba28e656-9b5f-47e3-aa74-bc45edd8cb9d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_1.jpg b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_1.jpg new file mode 100644 index 0000000..757d89a Binary files /dev/null and b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_2.jpg b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_2.jpg new file mode 100644 index 0000000..757d89a Binary files /dev/null and b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_3.jpg b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_3.jpg new file mode 100644 index 0000000..757d89a Binary files /dev/null and b/Apps/XinDianTu/Images/ba37005bda2d903eef7779b1a05acb8a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.jpg b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.jpg new file mode 100644 index 0000000..0a64cfe Binary files /dev/null and b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.jpg differ diff --git a/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.json b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.json new file mode 100644 index 0000000..33ba7b0 --- /dev/null +++ b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.json @@ -0,0 +1,46 @@ +{ + "image": "ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2.jpg", + "width": 720, + "height": 173, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 403, + 700, + 672 + ], + "click_point": [ + 121, + 456 + ] + }, + { + "id": 2, + "rect": [ + 19, + 681, + 700, + 932 + ], + "click_point": [ + 121, + 731 + ] + }, + { + "id": 3, + "rect": [ + 19, + 946, + 700, + 1192 + ], + "click_point": [ + 121, + 995 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_flag.jpg b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_flag.jpg new file mode 100644 index 0000000..04a5633 Binary files /dev/null and b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_vl.jpg b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_vl.jpg new file mode 100644 index 0000000..cf90a31 Binary files /dev/null and b/Apps/XinDianTu/Images/ba3d8677-ba05-4cf6-b1c0-f7d92b7d10a2_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1.jpg b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1.jpg new file mode 100644 index 0000000..2a4b029 Binary files /dev/null and b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1.jpg differ diff --git a/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_flag.jpg b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_flag.jpg new file mode 100644 index 0000000..0efaac0 Binary files /dev/null and b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_vl.jpg b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_vl.jpg new file mode 100644 index 0000000..fcce2e5 Binary files /dev/null and b/Apps/XinDianTu/Images/ba9fe233-8db8-4a1a-9c73-ba5cdb417ca1_vl.jpg differ diff --git a/Apps/XinDianTu/Images/baaad533-d5c0-4477-a38f-402048044ff9.jpg b/Apps/XinDianTu/Images/baaad533-d5c0-4477-a38f-402048044ff9.jpg new file mode 100644 index 0000000..9323b50 Binary files /dev/null and b/Apps/XinDianTu/Images/baaad533-d5c0-4477-a38f-402048044ff9.jpg differ diff --git a/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_1.jpg b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_1.jpg new file mode 100644 index 0000000..fd0d577 Binary files /dev/null and b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_2.jpg b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_2.jpg new file mode 100644 index 0000000..4217b5a Binary files /dev/null and b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_3.jpg b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_3.jpg new file mode 100644 index 0000000..04103e1 Binary files /dev/null and b/Apps/XinDianTu/Images/bac4312e4e5fa3427d0c743e28c1c7a5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.jpg b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.jpg new file mode 100644 index 0000000..4f216d3 Binary files /dev/null and b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.jpg differ diff --git a/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.json b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.json new file mode 100644 index 0000000..555b2dd --- /dev/null +++ b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3.json @@ -0,0 +1,59 @@ +{ + "image": "bb125533-fb52-4405-be53-5495d84623d3.jpg", + "width": 720, + "height": 228, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 612 + ], + "click_point": [ + 121, + 445 + ] + }, + { + "id": 2, + "rect": [ + 19, + 626, + 700, + 872 + ], + "click_point": [ + 121, + 675 + ] + }, + { + "id": 3, + "rect": [ + 19, + 881, + 700, + 1132 + ], + "click_point": [ + 121, + 931 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1146, + 700, + 1374 + ], + "click_point": [ + 121, + 1191 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_flag.jpg b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_flag.jpg new file mode 100644 index 0000000..5548c0a Binary files /dev/null and b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_vl.jpg b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_vl.jpg new file mode 100644 index 0000000..7d84e4c Binary files /dev/null and b/Apps/XinDianTu/Images/bb125533-fb52-4405-be53-5495d84623d3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5.jpg b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5.jpg new file mode 100644 index 0000000..8df2783 Binary files /dev/null and b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5.jpg differ diff --git a/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_flag.jpg b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_flag.jpg new file mode 100644 index 0000000..3037fa3 Binary files /dev/null and b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_vl.jpg b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_vl.jpg new file mode 100644 index 0000000..6e58bae Binary files /dev/null and b/Apps/XinDianTu/Images/bb16db3d-5bfe-4dc4-9f6c-a607be3d85d5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bb3be482-659c-4bff-8161-34097fee8482.jpg b/Apps/XinDianTu/Images/bb3be482-659c-4bff-8161-34097fee8482.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/bb3be482-659c-4bff-8161-34097fee8482.jpg differ diff --git a/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.jpg b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.jpg new file mode 100644 index 0000000..dc95745 Binary files /dev/null and b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.jpg differ diff --git a/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.json b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.json new file mode 100644 index 0000000..43985d5 --- /dev/null +++ b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b.json @@ -0,0 +1,59 @@ +{ + "image": "bb477ecb-12c2-4662-9349-f9e2b7db797b.jpg", + "width": 720, + "height": 238, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 607 + ], + "click_point": [ + 121, + 444 + ] + }, + { + "id": 2, + "rect": [ + 19, + 616, + 700, + 862 + ], + "click_point": [ + 121, + 665 + ] + }, + { + "id": 3, + "rect": [ + 19, + 876, + 700, + 1127 + ], + "click_point": [ + 121, + 926 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1136, + 700, + 1374 + ], + "click_point": [ + 121, + 1183 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_flag.jpg b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_flag.jpg new file mode 100644 index 0000000..393e41a Binary files /dev/null and b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_vl.jpg b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_vl.jpg new file mode 100644 index 0000000..1937585 Binary files /dev/null and b/Apps/XinDianTu/Images/bb477ecb-12c2-4662-9349-f9e2b7db797b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_1.jpg b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_1.jpg new file mode 100644 index 0000000..c7651ae Binary files /dev/null and b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_2.jpg b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_2.jpg new file mode 100644 index 0000000..2211bc4 Binary files /dev/null and b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_3.jpg b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_3.jpg new file mode 100644 index 0000000..6db733e Binary files /dev/null and b/Apps/XinDianTu/Images/bb722e2160d92bb57caba466b4318aa5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.jpg b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.jpg new file mode 100644 index 0000000..7b7511e Binary files /dev/null and b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.jpg differ diff --git a/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.json b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.json new file mode 100644 index 0000000..9ae9abf --- /dev/null +++ b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143.json @@ -0,0 +1,46 @@ +{ + "image": "bbb98230-c2df-4af1-bb8b-c1c020840143.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 531, + 700, + 780 + ], + "click_point": [ + 121, + 580 + ] + }, + { + "id": 2, + "rect": [ + 19, + 788, + 700, + 1037 + ], + "click_point": [ + 121, + 837 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1051, + 700, + 1300 + ], + "click_point": [ + 121, + 1100 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_flag.jpg b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_flag.jpg new file mode 100644 index 0000000..a5fe9c1 Binary files /dev/null and b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_vl.jpg b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_vl.jpg new file mode 100644 index 0000000..73893a7 Binary files /dev/null and b/Apps/XinDianTu/Images/bbb98230-c2df-4af1-bb8b-c1c020840143_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bbf92dda-f3f8-4301-bc8d-07528d9f96dc.jpg b/Apps/XinDianTu/Images/bbf92dda-f3f8-4301-bc8d-07528d9f96dc.jpg new file mode 100644 index 0000000..d74f4a4 Binary files /dev/null and b/Apps/XinDianTu/Images/bbf92dda-f3f8-4301-bc8d-07528d9f96dc.jpg differ diff --git a/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.jpg b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.jpg new file mode 100644 index 0000000..14cc90f Binary files /dev/null and b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.jpg differ diff --git a/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.json b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.json new file mode 100644 index 0000000..04ce80a --- /dev/null +++ b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d.json @@ -0,0 +1,46 @@ +{ + "image": "bc667ea1-2e42-400e-b00d-fb38f993e74d.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 484, + 700, + 732 + ], + "click_point": [ + 121, + 533 + ] + }, + { + "id": 2, + "rect": [ + 19, + 744, + 700, + 1020 + ], + "click_point": [ + 121, + 799 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1033, + 700, + 1279 + ], + "click_point": [ + 121, + 1082 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_flag.jpg b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_flag.jpg new file mode 100644 index 0000000..93d9fa9 Binary files /dev/null and b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_vl.jpg b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_vl.jpg new file mode 100644 index 0000000..c49de88 Binary files /dev/null and b/Apps/XinDianTu/Images/bc667ea1-2e42-400e-b00d-fb38f993e74d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bc8d384c-2415-4bbd-aa42-e28ecd60e8f5.jpg b/Apps/XinDianTu/Images/bc8d384c-2415-4bbd-aa42-e28ecd60e8f5.jpg new file mode 100644 index 0000000..9f9f3ca Binary files /dev/null and b/Apps/XinDianTu/Images/bc8d384c-2415-4bbd-aa42-e28ecd60e8f5.jpg differ diff --git a/Apps/XinDianTu/Images/bd63b559-29d6-4853-b267-a3bfc39c384c.jpg b/Apps/XinDianTu/Images/bd63b559-29d6-4853-b267-a3bfc39c384c.jpg new file mode 100644 index 0000000..3de2338 Binary files /dev/null and b/Apps/XinDianTu/Images/bd63b559-29d6-4853-b267-a3bfc39c384c.jpg differ diff --git a/Apps/XinDianTu/Images/bd8360de-380d-4e8b-a603-07cde8a07394.jpg b/Apps/XinDianTu/Images/bd8360de-380d-4e8b-a603-07cde8a07394.jpg new file mode 100644 index 0000000..13096fa Binary files /dev/null and b/Apps/XinDianTu/Images/bd8360de-380d-4e8b-a603-07cde8a07394.jpg differ diff --git a/Apps/XinDianTu/Images/bddfc871-5b6b-4c8d-a436-37d80add743d.jpg b/Apps/XinDianTu/Images/bddfc871-5b6b-4c8d-a436-37d80add743d.jpg new file mode 100644 index 0000000..22643e0 Binary files /dev/null and b/Apps/XinDianTu/Images/bddfc871-5b6b-4c8d-a436-37d80add743d.jpg differ diff --git a/Apps/XinDianTu/Images/bdeac9b4-47a8-4a4f-b5d1-9a0d217910ca.jpg b/Apps/XinDianTu/Images/bdeac9b4-47a8-4a4f-b5d1-9a0d217910ca.jpg new file mode 100644 index 0000000..8564cd3 Binary files /dev/null and b/Apps/XinDianTu/Images/bdeac9b4-47a8-4a4f-b5d1-9a0d217910ca.jpg differ diff --git a/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.jpg b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.jpg new file mode 100644 index 0000000..06e55ce Binary files /dev/null and b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.jpg differ diff --git a/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.json b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.json new file mode 100644 index 0000000..6e2d617 --- /dev/null +++ b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789.json @@ -0,0 +1,46 @@ +{ + "image": "bdfb88e1-1c80-477e-8c15-70e87a1d0789.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 539, + 700, + 788 + ], + "click_point": [ + 121, + 588 + ] + }, + { + "id": 2, + "rect": [ + 19, + 796, + 700, + 1045 + ], + "click_point": [ + 121, + 845 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1059, + 700, + 1308 + ], + "click_point": [ + 121, + 1108 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_flag.jpg b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_flag.jpg new file mode 100644 index 0000000..22904a3 Binary files /dev/null and b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_vl.jpg b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_vl.jpg new file mode 100644 index 0000000..0b707bd Binary files /dev/null and b/Apps/XinDianTu/Images/bdfb88e1-1c80-477e-8c15-70e87a1d0789_vl.jpg differ diff --git a/Apps/XinDianTu/Images/be3483d9-913d-455c-b2d0-743942a80773.jpg b/Apps/XinDianTu/Images/be3483d9-913d-455c-b2d0-743942a80773.jpg new file mode 100644 index 0000000..9bc438c Binary files /dev/null and b/Apps/XinDianTu/Images/be3483d9-913d-455c-b2d0-743942a80773.jpg differ diff --git a/Apps/XinDianTu/Images/be67d604-6e82-4441-9ca7-e50d88f9cb2c.jpg b/Apps/XinDianTu/Images/be67d604-6e82-4441-9ca7-e50d88f9cb2c.jpg new file mode 100644 index 0000000..320114c Binary files /dev/null and b/Apps/XinDianTu/Images/be67d604-6e82-4441-9ca7-e50d88f9cb2c.jpg differ diff --git a/Apps/XinDianTu/Images/be6c1440-17d8-491d-9760-19138b10b4ec.jpg b/Apps/XinDianTu/Images/be6c1440-17d8-491d-9760-19138b10b4ec.jpg new file mode 100644 index 0000000..bc359c2 Binary files /dev/null and b/Apps/XinDianTu/Images/be6c1440-17d8-491d-9760-19138b10b4ec.jpg differ diff --git a/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4.jpg b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4.jpg new file mode 100644 index 0000000..3f071db Binary files /dev/null and b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4.jpg differ diff --git a/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_flag.jpg b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_flag.jpg new file mode 100644 index 0000000..38ae2a5 Binary files /dev/null and b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_flag.jpg differ diff --git a/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_vl.jpg b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_vl.jpg new file mode 100644 index 0000000..7f0d937 Binary files /dev/null and b/Apps/XinDianTu/Images/bf366a26-e199-470f-8bd8-f5d1e80468a4_vl.jpg differ diff --git a/Apps/XinDianTu/Images/bf7b3a22-b2db-488f-b905-cf423265a334.jpg b/Apps/XinDianTu/Images/bf7b3a22-b2db-488f-b905-cf423265a334.jpg new file mode 100644 index 0000000..dcba0f2 Binary files /dev/null and b/Apps/XinDianTu/Images/bf7b3a22-b2db-488f-b905-cf423265a334.jpg differ diff --git a/Apps/XinDianTu/Images/c025ada9-4688-4839-a75d-be753d099f1a.jpg b/Apps/XinDianTu/Images/c025ada9-4688-4839-a75d-be753d099f1a.jpg new file mode 100644 index 0000000..3277dcf Binary files /dev/null and b/Apps/XinDianTu/Images/c025ada9-4688-4839-a75d-be753d099f1a.jpg differ diff --git a/Apps/XinDianTu/Images/c0c7cdac-1f30-42aa-a5e8-231f3d7c301a.jpg b/Apps/XinDianTu/Images/c0c7cdac-1f30-42aa-a5e8-231f3d7c301a.jpg new file mode 100644 index 0000000..5dca63d Binary files /dev/null and b/Apps/XinDianTu/Images/c0c7cdac-1f30-42aa-a5e8-231f3d7c301a.jpg differ diff --git a/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.jpg b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.jpg new file mode 100644 index 0000000..7ff6771 Binary files /dev/null and b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.jpg differ diff --git a/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.json b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.json new file mode 100644 index 0000000..4997613 --- /dev/null +++ b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967.json @@ -0,0 +1,20 @@ +{ + "image": "c119d3cd-876d-42af-a16b-eb8f4752c967.jpg", + "width": 720, + "height": 202, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 226, + 720, + 428 + ], + "click_point": [ + 124, + 266 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_flag.jpg b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_flag.jpg new file mode 100644 index 0000000..c06bdfc Binary files /dev/null and b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_vl.jpg b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_vl.jpg new file mode 100644 index 0000000..87b794a Binary files /dev/null and b/Apps/XinDianTu/Images/c119d3cd-876d-42af-a16b-eb8f4752c967_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_1.jpg b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_1.jpg new file mode 100644 index 0000000..fe98b29 Binary files /dev/null and b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_2.jpg b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_2.jpg new file mode 100644 index 0000000..27b7879 Binary files /dev/null and b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_3.jpg b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_3.jpg new file mode 100644 index 0000000..5cab847 Binary files /dev/null and b/Apps/XinDianTu/Images/c13238e9b9a646d6dcb6cd285a156ade_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_1.jpg b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_1.jpg new file mode 100644 index 0000000..cf008e9 Binary files /dev/null and b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_2.jpg b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_2.jpg new file mode 100644 index 0000000..9dddbd1 Binary files /dev/null and b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_3.jpg b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_3.jpg new file mode 100644 index 0000000..f3a623e Binary files /dev/null and b/Apps/XinDianTu/Images/c19f79d7671dbce5032e435e87d9b806_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_1.jpg b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_1.jpg new file mode 100644 index 0000000..c1dd84a Binary files /dev/null and b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_2.jpg b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_2.jpg new file mode 100644 index 0000000..b626e04 Binary files /dev/null and b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_3.jpg b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_3.jpg new file mode 100644 index 0000000..d1c88ad Binary files /dev/null and b/Apps/XinDianTu/Images/c1d4a9a0c06b2b2ec49e8ad198dda698_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c1d7a94a-367d-4185-a904-0b462e69fc65.jpg b/Apps/XinDianTu/Images/c1d7a94a-367d-4185-a904-0b462e69fc65.jpg new file mode 100644 index 0000000..fa9c314 Binary files /dev/null and b/Apps/XinDianTu/Images/c1d7a94a-367d-4185-a904-0b462e69fc65.jpg differ diff --git a/Apps/XinDianTu/Images/c232e0c4-2cf0-430b-8c15-048950912cf6.jpg b/Apps/XinDianTu/Images/c232e0c4-2cf0-430b-8c15-048950912cf6.jpg new file mode 100644 index 0000000..03ac593 Binary files /dev/null and b/Apps/XinDianTu/Images/c232e0c4-2cf0-430b-8c15-048950912cf6.jpg differ diff --git a/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_1.jpg b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_1.jpg new file mode 100644 index 0000000..75eed2f Binary files /dev/null and b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_2.jpg b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_2.jpg new file mode 100644 index 0000000..e8613ec Binary files /dev/null and b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_3.jpg b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_3.jpg new file mode 100644 index 0000000..119701a Binary files /dev/null and b/Apps/XinDianTu/Images/c24faf175f4a58a63a7abf4785839e4b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.jpg b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.jpg new file mode 100644 index 0000000..aa742f4 Binary files /dev/null and b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.jpg differ diff --git a/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.json b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.json new file mode 100644 index 0000000..dc8760c --- /dev/null +++ b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1.json @@ -0,0 +1,46 @@ +{ + "image": "c29b444e-2260-4567-8bea-db4fc823b8c1.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 569, + 700, + 815 + ], + "click_point": [ + 121, + 618 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1076 + ], + "click_point": [ + 121, + 877 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1089, + 700, + 1335 + ], + "click_point": [ + 121, + 1138 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_flag.jpg b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_flag.jpg new file mode 100644 index 0000000..4b145be Binary files /dev/null and b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_vl.jpg b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_vl.jpg new file mode 100644 index 0000000..9eec362 Binary files /dev/null and b/Apps/XinDianTu/Images/c29b444e-2260-4567-8bea-db4fc823b8c1_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c2a7ea2a-6cf0-4ed6-ae96-226558ec2af2.jpg b/Apps/XinDianTu/Images/c2a7ea2a-6cf0-4ed6-ae96-226558ec2af2.jpg new file mode 100644 index 0000000..ee12f32 Binary files /dev/null and b/Apps/XinDianTu/Images/c2a7ea2a-6cf0-4ed6-ae96-226558ec2af2.jpg differ diff --git a/Apps/XinDianTu/Images/c38ba5d3-1173-4c53-9a59-52461bef2def.jpg b/Apps/XinDianTu/Images/c38ba5d3-1173-4c53-9a59-52461bef2def.jpg new file mode 100644 index 0000000..104153d Binary files /dev/null and b/Apps/XinDianTu/Images/c38ba5d3-1173-4c53-9a59-52461bef2def.jpg differ diff --git a/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.jpg b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.jpg new file mode 100644 index 0000000..bef9609 Binary files /dev/null and b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.jpg differ diff --git a/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.json b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.json new file mode 100644 index 0000000..3abb3eb --- /dev/null +++ b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87.json @@ -0,0 +1,59 @@ +{ + "image": "c3f424a6-1a52-4a2f-8626-ace09fbacd87.jpg", + "width": 720, + "height": 260, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 580 + ], + "click_point": [ + 121, + 439 + ] + }, + { + "id": 2, + "rect": [ + 19, + 594, + 700, + 840 + ], + "click_point": [ + 121, + 643 + ] + }, + { + "id": 3, + "rect": [ + 19, + 849, + 700, + 1100 + ], + "click_point": [ + 121, + 899 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1114, + 700, + 1374 + ], + "click_point": [ + 121, + 1166 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_flag.jpg b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_flag.jpg new file mode 100644 index 0000000..9e8bb02 Binary files /dev/null and b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_vl.jpg b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_vl.jpg new file mode 100644 index 0000000..2b026b0 Binary files /dev/null and b/Apps/XinDianTu/Images/c3f424a6-1a52-4a2f-8626-ace09fbacd87_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c3f73c8e-d5d2-425a-9329-99d768d7c227.jpg b/Apps/XinDianTu/Images/c3f73c8e-d5d2-425a-9329-99d768d7c227.jpg new file mode 100644 index 0000000..9ef961a Binary files /dev/null and b/Apps/XinDianTu/Images/c3f73c8e-d5d2-425a-9329-99d768d7c227.jpg differ diff --git a/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_1.jpg b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_1.jpg new file mode 100644 index 0000000..e651f34 Binary files /dev/null and b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_2.jpg b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_2.jpg new file mode 100644 index 0000000..cbf25c3 Binary files /dev/null and b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_3.jpg b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_3.jpg new file mode 100644 index 0000000..3e67f58 Binary files /dev/null and b/Apps/XinDianTu/Images/c44c27f4570b7cdab48b304b5223d54e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c45df9fd-5fc9-447a-a8e8-8cd8f8135da0.jpg b/Apps/XinDianTu/Images/c45df9fd-5fc9-447a-a8e8-8cd8f8135da0.jpg new file mode 100644 index 0000000..6a398e7 Binary files /dev/null and b/Apps/XinDianTu/Images/c45df9fd-5fc9-447a-a8e8-8cd8f8135da0.jpg differ diff --git a/Apps/XinDianTu/Images/c50c37ee-71f7-443a-8447-bfcd8035d18b.jpg b/Apps/XinDianTu/Images/c50c37ee-71f7-443a-8447-bfcd8035d18b.jpg new file mode 100644 index 0000000..400c901 Binary files /dev/null and b/Apps/XinDianTu/Images/c50c37ee-71f7-443a-8447-bfcd8035d18b.jpg differ diff --git a/Apps/XinDianTu/Images/c51e7db5-6af6-476c-a027-a76360abde46.jpg b/Apps/XinDianTu/Images/c51e7db5-6af6-476c-a027-a76360abde46.jpg new file mode 100644 index 0000000..274e86f Binary files /dev/null and b/Apps/XinDianTu/Images/c51e7db5-6af6-476c-a027-a76360abde46.jpg differ diff --git a/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18.jpg b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18.jpg new file mode 100644 index 0000000..d4c8576 Binary files /dev/null and b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18.jpg differ diff --git a/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_flag.jpg b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_flag.jpg new file mode 100644 index 0000000..ec2c7d2 Binary files /dev/null and b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_vl.jpg b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_vl.jpg new file mode 100644 index 0000000..b554ce9 Binary files /dev/null and b/Apps/XinDianTu/Images/c5313e9d-dd87-4990-8120-b79c4d685b18_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c56c4758-7f36-4f51-b85f-cd6c41bdb75b.jpg b/Apps/XinDianTu/Images/c56c4758-7f36-4f51-b85f-cd6c41bdb75b.jpg new file mode 100644 index 0000000..12a850a Binary files /dev/null and b/Apps/XinDianTu/Images/c56c4758-7f36-4f51-b85f-cd6c41bdb75b.jpg differ diff --git a/Apps/XinDianTu/Images/c56f4fd7-5572-49fe-81c4-d41d5d1277ac.jpg b/Apps/XinDianTu/Images/c56f4fd7-5572-49fe-81c4-d41d5d1277ac.jpg new file mode 100644 index 0000000..d6182f1 Binary files /dev/null and b/Apps/XinDianTu/Images/c56f4fd7-5572-49fe-81c4-d41d5d1277ac.jpg differ diff --git a/Apps/XinDianTu/Images/c58e7f0b-68cc-4ad3-950a-42caff6bbe12.jpg b/Apps/XinDianTu/Images/c58e7f0b-68cc-4ad3-950a-42caff6bbe12.jpg new file mode 100644 index 0000000..b0e41ea Binary files /dev/null and b/Apps/XinDianTu/Images/c58e7f0b-68cc-4ad3-950a-42caff6bbe12.jpg differ diff --git a/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398.jpg b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398.jpg new file mode 100644 index 0000000..4b77743 Binary files /dev/null and b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398.jpg differ diff --git a/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_flag.jpg b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_flag.jpg new file mode 100644 index 0000000..22648a8 Binary files /dev/null and b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_vl.jpg b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_vl.jpg new file mode 100644 index 0000000..6ee94fb Binary files /dev/null and b/Apps/XinDianTu/Images/c5b332c9-0430-4810-b52e-8c9e79367398_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c5e0716c-4920-40f6-af9f-ccb260f6ffeb.jpg b/Apps/XinDianTu/Images/c5e0716c-4920-40f6-af9f-ccb260f6ffeb.jpg new file mode 100644 index 0000000..197c0a1 Binary files /dev/null and b/Apps/XinDianTu/Images/c5e0716c-4920-40f6-af9f-ccb260f6ffeb.jpg differ diff --git a/Apps/XinDianTu/Images/c6899887-e61e-4e8d-8714-cdd7a8b4bb75.jpg b/Apps/XinDianTu/Images/c6899887-e61e-4e8d-8714-cdd7a8b4bb75.jpg new file mode 100644 index 0000000..7276ce9 Binary files /dev/null and b/Apps/XinDianTu/Images/c6899887-e61e-4e8d-8714-cdd7a8b4bb75.jpg differ diff --git a/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_1.jpg b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_1.jpg new file mode 100644 index 0000000..9a0c747 Binary files /dev/null and b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_2.jpg b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_2.jpg new file mode 100644 index 0000000..5bd4dd9 Binary files /dev/null and b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_3.jpg b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_3.jpg new file mode 100644 index 0000000..087f470 Binary files /dev/null and b/Apps/XinDianTu/Images/c6ad433d3b9489ba2d10b133e98986dc_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c6b5bf25-6072-406d-acd9-73b87aa06897.jpg b/Apps/XinDianTu/Images/c6b5bf25-6072-406d-acd9-73b87aa06897.jpg new file mode 100644 index 0000000..553fa22 Binary files /dev/null and b/Apps/XinDianTu/Images/c6b5bf25-6072-406d-acd9-73b87aa06897.jpg differ diff --git a/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.jpg b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.jpg new file mode 100644 index 0000000..7ba05d6 Binary files /dev/null and b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.jpg differ diff --git a/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.json b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.json new file mode 100644 index 0000000..c34a5d5 --- /dev/null +++ b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.json @@ -0,0 +1,59 @@ +{ + "image": "c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1.jpg", + "width": 720, + "height": 204, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 644 + ], + "click_point": [ + 121, + 452 + ] + }, + { + "id": 2, + "rect": [ + 19, + 652, + 700, + 901 + ], + "click_point": [ + 121, + 701 + ] + }, + { + "id": 3, + "rect": [ + 19, + 915, + 700, + 1164 + ], + "click_point": [ + 121, + 964 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1170, + 700, + 1374 + ], + "click_point": [ + 121, + 1210 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_flag.jpg b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_flag.jpg new file mode 100644 index 0000000..c03a517 Binary files /dev/null and b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_vl.jpg b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_vl.jpg new file mode 100644 index 0000000..84befd5 Binary files /dev/null and b/Apps/XinDianTu/Images/c6bc7f65-ad9a-4f52-bab9-04e53cdd11c1_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c6d64c99-e0ef-4d65-b72d-12626ebab31a.jpg b/Apps/XinDianTu/Images/c6d64c99-e0ef-4d65-b72d-12626ebab31a.jpg new file mode 100644 index 0000000..6abc003 Binary files /dev/null and b/Apps/XinDianTu/Images/c6d64c99-e0ef-4d65-b72d-12626ebab31a.jpg differ diff --git a/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_1.jpg b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_1.jpg new file mode 100644 index 0000000..b4df081 Binary files /dev/null and b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_2.jpg b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_2.jpg new file mode 100644 index 0000000..456fd66 Binary files /dev/null and b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_3.jpg b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_3.jpg new file mode 100644 index 0000000..ce3ad0d Binary files /dev/null and b/Apps/XinDianTu/Images/c6dbd0395e39f6eb931fea6bd4f08a1d_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.jpg b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.jpg new file mode 100644 index 0000000..2d5dc3e Binary files /dev/null and b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.jpg differ diff --git a/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.json b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.json new file mode 100644 index 0000000..82fe1d7 --- /dev/null +++ b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846.json @@ -0,0 +1,46 @@ +{ + "image": "c6e03c96-1809-475e-8f42-17678ed45846.jpg", + "width": 720, + "height": 278, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 536, + 700, + 782 + ], + "click_point": [ + 121, + 585 + ] + }, + { + "id": 2, + "rect": [ + 19, + 796, + 700, + 1087 + ], + "click_point": [ + 121, + 854 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1096, + 700, + 1374 + ], + "click_point": [ + 121, + 1151 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_flag.jpg b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_flag.jpg new file mode 100644 index 0000000..424b1ca Binary files /dev/null and b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_vl.jpg b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_vl.jpg new file mode 100644 index 0000000..4bd22b2 Binary files /dev/null and b/Apps/XinDianTu/Images/c6e03c96-1809-475e-8f42-17678ed45846_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_1.jpg b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_1.jpg new file mode 100644 index 0000000..46f73de Binary files /dev/null and b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_2.jpg b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_2.jpg new file mode 100644 index 0000000..8a368d6 Binary files /dev/null and b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_3.jpg b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_3.jpg new file mode 100644 index 0000000..601ec2d Binary files /dev/null and b/Apps/XinDianTu/Images/c70d32f42563cccb4b98e3a2f5b3acdd_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c72f58ef-f84a-49c7-8e07-ec451dcdc004.jpg b/Apps/XinDianTu/Images/c72f58ef-f84a-49c7-8e07-ec451dcdc004.jpg new file mode 100644 index 0000000..743be8f Binary files /dev/null and b/Apps/XinDianTu/Images/c72f58ef-f84a-49c7-8e07-ec451dcdc004.jpg differ diff --git a/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_1.jpg b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_1.jpg new file mode 100644 index 0000000..4b1475f Binary files /dev/null and b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_2.jpg b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_2.jpg new file mode 100644 index 0000000..20d61d7 Binary files /dev/null and b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_3.jpg b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_3.jpg new file mode 100644 index 0000000..d5b612f Binary files /dev/null and b/Apps/XinDianTu/Images/c75aa3c48a559d6ab09e74a96c15b29f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_1.jpg b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_1.jpg new file mode 100644 index 0000000..650e155 Binary files /dev/null and b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_2.jpg b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_2.jpg new file mode 100644 index 0000000..21ee26a Binary files /dev/null and b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_3.jpg b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_3.jpg new file mode 100644 index 0000000..aab840b Binary files /dev/null and b/Apps/XinDianTu/Images/c78bea866b7152b78d4ecec5323af6f2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c798a2f7-e0cb-44a3-bf9d-f7e9cf9b99cc.jpg b/Apps/XinDianTu/Images/c798a2f7-e0cb-44a3-bf9d-f7e9cf9b99cc.jpg new file mode 100644 index 0000000..c431074 Binary files /dev/null and b/Apps/XinDianTu/Images/c798a2f7-e0cb-44a3-bf9d-f7e9cf9b99cc.jpg differ diff --git a/Apps/XinDianTu/Images/c7bb32df-f888-481c-a944-c03d0bf937b7.jpg b/Apps/XinDianTu/Images/c7bb32df-f888-481c-a944-c03d0bf937b7.jpg new file mode 100644 index 0000000..cb4e257 Binary files /dev/null and b/Apps/XinDianTu/Images/c7bb32df-f888-481c-a944-c03d0bf937b7.jpg differ diff --git a/Apps/XinDianTu/Images/c7d1c073-4142-4eb1-92b2-1197a9fb7c9b.jpg b/Apps/XinDianTu/Images/c7d1c073-4142-4eb1-92b2-1197a9fb7c9b.jpg new file mode 100644 index 0000000..8456823 Binary files /dev/null and b/Apps/XinDianTu/Images/c7d1c073-4142-4eb1-92b2-1197a9fb7c9b.jpg differ diff --git a/Apps/XinDianTu/Images/c7ff5e6a-8725-4b92-882b-10d9ab0bbf2d.jpg b/Apps/XinDianTu/Images/c7ff5e6a-8725-4b92-882b-10d9ab0bbf2d.jpg new file mode 100644 index 0000000..b83f49d Binary files /dev/null and b/Apps/XinDianTu/Images/c7ff5e6a-8725-4b92-882b-10d9ab0bbf2d.jpg differ diff --git a/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.jpg b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.jpg new file mode 100644 index 0000000..1280f34 Binary files /dev/null and b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.jpg differ diff --git a/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.json b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.json new file mode 100644 index 0000000..a374c71 --- /dev/null +++ b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9.json @@ -0,0 +1,46 @@ +{ + "image": "c82bb548-fb32-4c83-986a-4b6886441ca9.jpg", + "width": 720, + "height": 247, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 572, + 700, + 820 + ], + "click_point": [ + 121, + 621 + ] + }, + { + "id": 2, + "rect": [ + 19, + 833, + 700, + 1079 + ], + "click_point": [ + 121, + 882 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1092, + 700, + 1339 + ], + "click_point": [ + 121, + 1141 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_flag.jpg b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_flag.jpg new file mode 100644 index 0000000..3e5e5f2 Binary files /dev/null and b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_vl.jpg b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_vl.jpg new file mode 100644 index 0000000..be6f1c5 Binary files /dev/null and b/Apps/XinDianTu/Images/c82bb548-fb32-4c83-986a-4b6886441ca9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_1.jpg b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_1.jpg new file mode 100644 index 0000000..5222f71 Binary files /dev/null and b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_2.jpg b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_2.jpg new file mode 100644 index 0000000..583b3a6 Binary files /dev/null and b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_3.jpg b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_3.jpg new file mode 100644 index 0000000..94bd13f Binary files /dev/null and b/Apps/XinDianTu/Images/c8319427ebf6fadac08f14d536a2e438_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_1.jpg b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_1.jpg new file mode 100644 index 0000000..abc17f8 Binary files /dev/null and b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_2.jpg b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_2.jpg new file mode 100644 index 0000000..7e3d99a Binary files /dev/null and b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_3.jpg b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_3.jpg new file mode 100644 index 0000000..86e9812 Binary files /dev/null and b/Apps/XinDianTu/Images/c867aec7e218e60a8150b4aa7b40c144_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/c8d99038-aa13-4452-81c6-627c665e442c.jpg b/Apps/XinDianTu/Images/c8d99038-aa13-4452-81c6-627c665e442c.jpg new file mode 100644 index 0000000..51a4411 Binary files /dev/null and b/Apps/XinDianTu/Images/c8d99038-aa13-4452-81c6-627c665e442c.jpg differ diff --git a/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6.jpg b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6.jpg new file mode 100644 index 0000000..d20ff91 Binary files /dev/null and b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6.jpg differ diff --git a/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_flag.jpg b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_flag.jpg new file mode 100644 index 0000000..544261b Binary files /dev/null and b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_vl.jpg b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_vl.jpg new file mode 100644 index 0000000..40e1ab7 Binary files /dev/null and b/Apps/XinDianTu/Images/c8eac1a7-3624-48f5-a101-4ccb16a7f2a6_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433.jpg b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433.jpg new file mode 100644 index 0000000..54c8555 Binary files /dev/null and b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433.jpg differ diff --git a/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_flag.jpg b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_flag.jpg new file mode 100644 index 0000000..2b3687d Binary files /dev/null and b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_flag.jpg differ diff --git a/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_vl.jpg b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_vl.jpg new file mode 100644 index 0000000..2cb2c6d Binary files /dev/null and b/Apps/XinDianTu/Images/c8ee9595-5ff0-40bb-9fdf-e4558cbd8433_vl.jpg differ diff --git a/Apps/XinDianTu/Images/c8fa5555-ea36-4aa5-aece-ab3ab9cab252.jpg b/Apps/XinDianTu/Images/c8fa5555-ea36-4aa5-aece-ab3ab9cab252.jpg new file mode 100644 index 0000000..02363b6 Binary files /dev/null and b/Apps/XinDianTu/Images/c8fa5555-ea36-4aa5-aece-ab3ab9cab252.jpg differ diff --git a/Apps/XinDianTu/Images/ca1805d9-0182-4bda-a7aa-713e5b5aaafd.jpg b/Apps/XinDianTu/Images/ca1805d9-0182-4bda-a7aa-713e5b5aaafd.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/ca1805d9-0182-4bda-a7aa-713e5b5aaafd.jpg differ diff --git a/Apps/XinDianTu/Images/ca939a7b-1f9f-48ec-9a09-ba25f3998a81.jpg b/Apps/XinDianTu/Images/ca939a7b-1f9f-48ec-9a09-ba25f3998a81.jpg new file mode 100644 index 0000000..1302785 Binary files /dev/null and b/Apps/XinDianTu/Images/ca939a7b-1f9f-48ec-9a09-ba25f3998a81.jpg differ diff --git a/Apps/XinDianTu/Images/caad9514-f8b3-4a8f-bbc9-73e19667141b.jpg b/Apps/XinDianTu/Images/caad9514-f8b3-4a8f-bbc9-73e19667141b.jpg new file mode 100644 index 0000000..80ed5ff Binary files /dev/null and b/Apps/XinDianTu/Images/caad9514-f8b3-4a8f-bbc9-73e19667141b.jpg differ diff --git a/Apps/XinDianTu/Images/cab8ca5f-4520-47a2-a8c3-a83c2a550b62.jpg b/Apps/XinDianTu/Images/cab8ca5f-4520-47a2-a8c3-a83c2a550b62.jpg new file mode 100644 index 0000000..f20fa5d Binary files /dev/null and b/Apps/XinDianTu/Images/cab8ca5f-4520-47a2-a8c3-a83c2a550b62.jpg differ diff --git a/Apps/XinDianTu/Images/cb22edb0-fe92-48fc-aaf6-c1a07d9ed88f.jpg b/Apps/XinDianTu/Images/cb22edb0-fe92-48fc-aaf6-c1a07d9ed88f.jpg new file mode 100644 index 0000000..4c83710 Binary files /dev/null and b/Apps/XinDianTu/Images/cb22edb0-fe92-48fc-aaf6-c1a07d9ed88f.jpg differ diff --git a/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_1.jpg b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_1.jpg new file mode 100644 index 0000000..d4b5e4c Binary files /dev/null and b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_2.jpg b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_2.jpg new file mode 100644 index 0000000..eec10c7 Binary files /dev/null and b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_3.jpg b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_3.jpg new file mode 100644 index 0000000..7df5dc9 Binary files /dev/null and b/Apps/XinDianTu/Images/cb9de77cd7942e04b6ed779ae2a3bee3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cc2fab3e-9fcf-46d9-90cd-47bed88d093c.jpg b/Apps/XinDianTu/Images/cc2fab3e-9fcf-46d9-90cd-47bed88d093c.jpg new file mode 100644 index 0000000..fdfc544 Binary files /dev/null and b/Apps/XinDianTu/Images/cc2fab3e-9fcf-46d9-90cd-47bed88d093c.jpg differ diff --git a/Apps/XinDianTu/Images/cc6ebcdc-6690-4ab1-bb9c-5221be0567ae.jpg b/Apps/XinDianTu/Images/cc6ebcdc-6690-4ab1-bb9c-5221be0567ae.jpg new file mode 100644 index 0000000..b865bff Binary files /dev/null and b/Apps/XinDianTu/Images/cc6ebcdc-6690-4ab1-bb9c-5221be0567ae.jpg differ diff --git a/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_1.jpg b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_1.jpg new file mode 100644 index 0000000..4fd43d2 Binary files /dev/null and b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_2.jpg b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_2.jpg new file mode 100644 index 0000000..ac8c1e8 Binary files /dev/null and b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_3.jpg b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_3.jpg new file mode 100644 index 0000000..00727b1 Binary files /dev/null and b/Apps/XinDianTu/Images/cca333cc671ffabad4900a3ed6753905_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_1.jpg b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_1.jpg new file mode 100644 index 0000000..f5d8c86 Binary files /dev/null and b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_2.jpg b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_2.jpg new file mode 100644 index 0000000..5c77be4 Binary files /dev/null and b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_3.jpg b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_3.jpg new file mode 100644 index 0000000..4a37f23 Binary files /dev/null and b/Apps/XinDianTu/Images/ccae25eec2da7c5576c6abac2b1d7880_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cce0bb2f-d32b-424e-8ce6-6786be359b29.jpg b/Apps/XinDianTu/Images/cce0bb2f-d32b-424e-8ce6-6786be359b29.jpg new file mode 100644 index 0000000..2a5cc9c Binary files /dev/null and b/Apps/XinDianTu/Images/cce0bb2f-d32b-424e-8ce6-6786be359b29.jpg differ diff --git a/Apps/XinDianTu/Images/ccfc8ad3-9484-4bdb-8d82-c88a7327eac0.jpg b/Apps/XinDianTu/Images/ccfc8ad3-9484-4bdb-8d82-c88a7327eac0.jpg new file mode 100644 index 0000000..60bfdf4 Binary files /dev/null and b/Apps/XinDianTu/Images/ccfc8ad3-9484-4bdb-8d82-c88a7327eac0.jpg differ diff --git a/Apps/XinDianTu/Images/ccfe74a9-b296-454f-8016-2efc2d4a0bc8.jpg b/Apps/XinDianTu/Images/ccfe74a9-b296-454f-8016-2efc2d4a0bc8.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/ccfe74a9-b296-454f-8016-2efc2d4a0bc8.jpg differ diff --git a/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673.jpg b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673.jpg new file mode 100644 index 0000000..2e5fb62 Binary files /dev/null and b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673.jpg differ diff --git a/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_flag.jpg b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_flag.jpg new file mode 100644 index 0000000..d549fea Binary files /dev/null and b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_flag.jpg differ diff --git a/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_vl.jpg b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_vl.jpg new file mode 100644 index 0000000..798d6dc Binary files /dev/null and b/Apps/XinDianTu/Images/cd28d45e-e036-43a4-be6b-8f2ce1c00673_vl.jpg differ diff --git a/Apps/XinDianTu/Images/cd4ff7f9-78e8-4ee4-b911-a27876b70ae3.jpg b/Apps/XinDianTu/Images/cd4ff7f9-78e8-4ee4-b911-a27876b70ae3.jpg new file mode 100644 index 0000000..8b492c6 Binary files /dev/null and b/Apps/XinDianTu/Images/cd4ff7f9-78e8-4ee4-b911-a27876b70ae3.jpg differ diff --git a/Apps/XinDianTu/Images/cd79e69a-1752-40d1-b5a1-ee89ea4d65b8.jpg b/Apps/XinDianTu/Images/cd79e69a-1752-40d1-b5a1-ee89ea4d65b8.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/cd79e69a-1752-40d1-b5a1-ee89ea4d65b8.jpg differ diff --git a/Apps/XinDianTu/Images/cd7e9c78-e341-47a9-93c0-0daf8171ede7.jpg b/Apps/XinDianTu/Images/cd7e9c78-e341-47a9-93c0-0daf8171ede7.jpg new file mode 100644 index 0000000..c59d6fc Binary files /dev/null and b/Apps/XinDianTu/Images/cd7e9c78-e341-47a9-93c0-0daf8171ede7.jpg differ diff --git a/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_1.jpg b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_1.jpg new file mode 100644 index 0000000..6c2b7c9 Binary files /dev/null and b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_2.jpg b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_2.jpg new file mode 100644 index 0000000..4952d6d Binary files /dev/null and b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_3.jpg b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_3.jpg new file mode 100644 index 0000000..4f54268 Binary files /dev/null and b/Apps/XinDianTu/Images/cdf4b50c337239661f0a1390ae9a9ac1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_1.jpg b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_1.jpg new file mode 100644 index 0000000..503df6d Binary files /dev/null and b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_2.jpg b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_2.jpg new file mode 100644 index 0000000..dc41446 Binary files /dev/null and b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_3.jpg b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_3.jpg new file mode 100644 index 0000000..de6cbc3 Binary files /dev/null and b/Apps/XinDianTu/Images/ce0dd557feeff9bab4ecdf78e2226036_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ce320da3-6187-46bf-966d-35fd23de882c.jpg b/Apps/XinDianTu/Images/ce320da3-6187-46bf-966d-35fd23de882c.jpg new file mode 100644 index 0000000..2bd5796 Binary files /dev/null and b/Apps/XinDianTu/Images/ce320da3-6187-46bf-966d-35fd23de882c.jpg differ diff --git a/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_1.jpg b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_1.jpg new file mode 100644 index 0000000..a42a642 Binary files /dev/null and b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_2.jpg b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_2.jpg new file mode 100644 index 0000000..8cbb40e Binary files /dev/null and b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_3.jpg b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_3.jpg new file mode 100644 index 0000000..c9a949f Binary files /dev/null and b/Apps/XinDianTu/Images/cea1ea0d8a4667c5473711e73d6295f5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ceae3286-da5e-493b-bc23-7aae6e4c06b0.jpg b/Apps/XinDianTu/Images/ceae3286-da5e-493b-bc23-7aae6e4c06b0.jpg new file mode 100644 index 0000000..59bb762 Binary files /dev/null and b/Apps/XinDianTu/Images/ceae3286-da5e-493b-bc23-7aae6e4c06b0.jpg differ diff --git a/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_1.jpg b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_1.jpg new file mode 100644 index 0000000..1bce3d5 Binary files /dev/null and b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_2.jpg b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_2.jpg new file mode 100644 index 0000000..2cdddcc Binary files /dev/null and b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_3.jpg b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_3.jpg new file mode 100644 index 0000000..a71a313 Binary files /dev/null and b/Apps/XinDianTu/Images/cedb14796351685af2a813d03b1a1e78_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_1.jpg b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_1.jpg new file mode 100644 index 0000000..0580c9d Binary files /dev/null and b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_2.jpg b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_2.jpg new file mode 100644 index 0000000..3ec1534 Binary files /dev/null and b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_3.jpg b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_3.jpg new file mode 100644 index 0000000..e45a766 Binary files /dev/null and b/Apps/XinDianTu/Images/cf0a47a9cd8076ca226d3f851c74d930_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_1.jpg b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_1.jpg new file mode 100644 index 0000000..5ed37c7 Binary files /dev/null and b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_2.jpg b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_2.jpg new file mode 100644 index 0000000..23fc261 Binary files /dev/null and b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_3.jpg b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_3.jpg new file mode 100644 index 0000000..6bee86e Binary files /dev/null and b/Apps/XinDianTu/Images/cf6c438f0db2b7b36cf51234ecd604e6_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_1.jpg b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_1.jpg new file mode 100644 index 0000000..4d58c50 Binary files /dev/null and b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_2.jpg b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_2.jpg new file mode 100644 index 0000000..ee26a3a Binary files /dev/null and b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_3.jpg b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_3.jpg new file mode 100644 index 0000000..8931dc1 Binary files /dev/null and b/Apps/XinDianTu/Images/cf7ab4a4de321637d2c98fcd166198d3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.jpg b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.jpg new file mode 100644 index 0000000..a207e54 Binary files /dev/null and b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.jpg differ diff --git a/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.json b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.json new file mode 100644 index 0000000..f24af8d --- /dev/null +++ b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.json @@ -0,0 +1,59 @@ +{ + "image": "cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 596 + ], + "click_point": [ + 121, + 442 + ] + }, + { + "id": 2, + "rect": [ + 19, + 610, + 700, + 804 + ], + "click_point": [ + 121, + 648 + ] + }, + { + "id": 3, + "rect": [ + 19, + 818, + 700, + 1064 + ], + "click_point": [ + 121, + 867 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1073, + 700, + 1324 + ], + "click_point": [ + 121, + 1123 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_flag.jpg b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_flag.jpg new file mode 100644 index 0000000..dd2a7a1 Binary files /dev/null and b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_vl.jpg b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_vl.jpg new file mode 100644 index 0000000..0f858f4 Binary files /dev/null and b/Apps/XinDianTu/Images/cf8a1e1e-d85d-40e3-b1b3-4b1c91482f1e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/cf9e46c8-021a-457c-9819-02be5eb40002.jpg b/Apps/XinDianTu/Images/cf9e46c8-021a-457c-9819-02be5eb40002.jpg new file mode 100644 index 0000000..1f479b6 Binary files /dev/null and b/Apps/XinDianTu/Images/cf9e46c8-021a-457c-9819-02be5eb40002.jpg differ diff --git a/Apps/XinDianTu/Images/cfd4cf6a-fe59-4dde-b7c6-f1ddcac3e3de.jpg b/Apps/XinDianTu/Images/cfd4cf6a-fe59-4dde-b7c6-f1ddcac3e3de.jpg new file mode 100644 index 0000000..91422f7 Binary files /dev/null and b/Apps/XinDianTu/Images/cfd4cf6a-fe59-4dde-b7c6-f1ddcac3e3de.jpg differ diff --git a/Apps/XinDianTu/Images/cfd750c0-90b6-41ec-8cae-88a6df5ea011.jpg b/Apps/XinDianTu/Images/cfd750c0-90b6-41ec-8cae-88a6df5ea011.jpg new file mode 100644 index 0000000..2a03983 Binary files /dev/null and b/Apps/XinDianTu/Images/cfd750c0-90b6-41ec-8cae-88a6df5ea011.jpg differ diff --git a/Apps/XinDianTu/Images/current_20260111_122219.jpg b/Apps/XinDianTu/Images/current_20260111_122219.jpg new file mode 100644 index 0000000..1bb9a87 Binary files /dev/null and b/Apps/XinDianTu/Images/current_20260111_122219.jpg differ diff --git a/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_1.jpg b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_1.jpg new file mode 100644 index 0000000..46cf416 Binary files /dev/null and b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_2.jpg b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_2.jpg new file mode 100644 index 0000000..fba01fa Binary files /dev/null and b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_3.jpg b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_3.jpg new file mode 100644 index 0000000..d9f5fa1 Binary files /dev/null and b/Apps/XinDianTu/Images/d00f81e3b7a7dbabb27946a889ee9a3a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d04ec4d4-39bb-4777-bc69-8a55ccac2a47.jpg b/Apps/XinDianTu/Images/d04ec4d4-39bb-4777-bc69-8a55ccac2a47.jpg new file mode 100644 index 0000000..af40254 Binary files /dev/null and b/Apps/XinDianTu/Images/d04ec4d4-39bb-4777-bc69-8a55ccac2a47.jpg differ diff --git a/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_1.jpg b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_1.jpg new file mode 100644 index 0000000..0eeb475 Binary files /dev/null and b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_2.jpg b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_2.jpg new file mode 100644 index 0000000..d613b79 Binary files /dev/null and b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_3.jpg b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_3.jpg new file mode 100644 index 0000000..afd287b Binary files /dev/null and b/Apps/XinDianTu/Images/d074a4d8b03ab5f61464ddd52fd61d44_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d09c53e0-42bf-40b5-a8a2-2a7f37e74554.jpg b/Apps/XinDianTu/Images/d09c53e0-42bf-40b5-a8a2-2a7f37e74554.jpg new file mode 100644 index 0000000..0574acd Binary files /dev/null and b/Apps/XinDianTu/Images/d09c53e0-42bf-40b5-a8a2-2a7f37e74554.jpg differ diff --git a/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_1.jpg b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_1.jpg new file mode 100644 index 0000000..115344f Binary files /dev/null and b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_2.jpg b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_2.jpg new file mode 100644 index 0000000..9ebde72 Binary files /dev/null and b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_3.jpg b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_3.jpg new file mode 100644 index 0000000..140d587 Binary files /dev/null and b/Apps/XinDianTu/Images/d0dc158bf9c878a973ce9d82acf953c9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d1342d92-2838-491e-a089-1d325328d840.jpg b/Apps/XinDianTu/Images/d1342d92-2838-491e-a089-1d325328d840.jpg new file mode 100644 index 0000000..3329524 Binary files /dev/null and b/Apps/XinDianTu/Images/d1342d92-2838-491e-a089-1d325328d840.jpg differ diff --git a/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.jpg b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.jpg new file mode 100644 index 0000000..ee66caa Binary files /dev/null and b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.jpg differ diff --git a/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.json b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.json new file mode 100644 index 0000000..e39f93d --- /dev/null +++ b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee.json @@ -0,0 +1,46 @@ +{ + "image": "d14afead-ed4a-44bd-9bce-43e4eb53b6ee.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 489, + 700, + 740 + ], + "click_point": [ + 121, + 539 + ] + }, + { + "id": 2, + "rect": [ + 19, + 754, + 700, + 1000 + ], + "click_point": [ + 121, + 803 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1009, + 700, + 1260 + ], + "click_point": [ + 121, + 1059 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_flag.jpg b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_flag.jpg new file mode 100644 index 0000000..9472299 Binary files /dev/null and b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_vl.jpg b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_vl.jpg new file mode 100644 index 0000000..b1a2dda Binary files /dev/null and b/Apps/XinDianTu/Images/d14afead-ed4a-44bd-9bce-43e4eb53b6ee_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d17df208-e646-407b-bb83-541bd52395a8.jpg b/Apps/XinDianTu/Images/d17df208-e646-407b-bb83-541bd52395a8.jpg new file mode 100644 index 0000000..b038890 Binary files /dev/null and b/Apps/XinDianTu/Images/d17df208-e646-407b-bb83-541bd52395a8.jpg differ diff --git a/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_1.jpg b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_1.jpg new file mode 100644 index 0000000..5f4a254 Binary files /dev/null and b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_2.jpg b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_2.jpg new file mode 100644 index 0000000..690b831 Binary files /dev/null and b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_3.jpg b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_3.jpg new file mode 100644 index 0000000..1fc2c1d Binary files /dev/null and b/Apps/XinDianTu/Images/d1af907dc8072b3a5ce22671a0bb30d2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_1.jpg b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_1.jpg new file mode 100644 index 0000000..0eba99a Binary files /dev/null and b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_2.jpg b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_2.jpg new file mode 100644 index 0000000..cdc1495 Binary files /dev/null and b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_3.jpg b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_3.jpg new file mode 100644 index 0000000..48449ca Binary files /dev/null and b/Apps/XinDianTu/Images/d1c0b4ac554687f65b66755b63755dce_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.jpg b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.jpg new file mode 100644 index 0000000..f277268 Binary files /dev/null and b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.jpg differ diff --git a/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.json b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.json new file mode 100644 index 0000000..ee23e96 --- /dev/null +++ b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014.json @@ -0,0 +1,46 @@ +{ + "image": "d20dd016-df5d-48fa-86bd-0d3e1ad77014.jpg", + "width": 720, + "height": 146, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 631 + ], + "click_point": [ + 121, + 449 + ] + }, + { + "id": 2, + "rect": [ + 19, + 640, + 700, + 919 + ], + "click_point": [ + 121, + 695 + ] + }, + { + "id": 3, + "rect": [ + 19, + 928, + 700, + 1214 + ], + "click_point": [ + 121, + 985 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_flag.jpg b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_flag.jpg new file mode 100644 index 0000000..0f27039 Binary files /dev/null and b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_vl.jpg b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_vl.jpg new file mode 100644 index 0000000..9389f39 Binary files /dev/null and b/Apps/XinDianTu/Images/d20dd016-df5d-48fa-86bd-0d3e1ad77014_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_1.jpg b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_1.jpg new file mode 100644 index 0000000..18c4fd7 Binary files /dev/null and b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_2.jpg b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_2.jpg new file mode 100644 index 0000000..3940c1c Binary files /dev/null and b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_3.jpg b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_3.jpg new file mode 100644 index 0000000..a13ebfa Binary files /dev/null and b/Apps/XinDianTu/Images/d26d72d7f03f961e845bc7c1b6d2cfd2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d2d25d7b-b48b-410c-8390-00297b011dcc.jpg b/Apps/XinDianTu/Images/d2d25d7b-b48b-410c-8390-00297b011dcc.jpg new file mode 100644 index 0000000..1a16090 Binary files /dev/null and b/Apps/XinDianTu/Images/d2d25d7b-b48b-410c-8390-00297b011dcc.jpg differ diff --git a/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_1.jpg b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_1.jpg new file mode 100644 index 0000000..8ec869e Binary files /dev/null and b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_2.jpg b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_2.jpg new file mode 100644 index 0000000..5515f40 Binary files /dev/null and b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_3.jpg b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_3.jpg new file mode 100644 index 0000000..eb567fa Binary files /dev/null and b/Apps/XinDianTu/Images/d2f62ad48ef0fabd6357f2932b7f6e11_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.jpg b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.jpg new file mode 100644 index 0000000..6a81252 Binary files /dev/null and b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.jpg differ diff --git a/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.json b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.json new file mode 100644 index 0000000..c91156d --- /dev/null +++ b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96.json @@ -0,0 +1,59 @@ +{ + "image": "d37fa962-3f29-4654-8304-dd83f59bdd96.jpg", + "width": 720, + "height": 210, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 631 + ], + "click_point": [ + 121, + 449 + ] + }, + { + "id": 2, + "rect": [ + 19, + 644, + 700, + 892 + ], + "click_point": [ + 121, + 693 + ] + }, + { + "id": 3, + "rect": [ + 19, + 905, + 700, + 1151 + ], + "click_point": [ + 121, + 954 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1164, + 700, + 1374 + ], + "click_point": [ + 121, + 1206 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_flag.jpg b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_flag.jpg new file mode 100644 index 0000000..8d2e31a Binary files /dev/null and b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_vl.jpg b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_vl.jpg new file mode 100644 index 0000000..ff2f480 Binary files /dev/null and b/Apps/XinDianTu/Images/d37fa962-3f29-4654-8304-dd83f59bdd96_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d460c673-dfa7-473f-89c6-4c73a23bed41.jpg b/Apps/XinDianTu/Images/d460c673-dfa7-473f-89c6-4c73a23bed41.jpg new file mode 100644 index 0000000..fcf887a Binary files /dev/null and b/Apps/XinDianTu/Images/d460c673-dfa7-473f-89c6-4c73a23bed41.jpg differ diff --git a/Apps/XinDianTu/Images/d4a3ba45-ba8d-4f3b-b7bb-d8b020b38e3c.jpg b/Apps/XinDianTu/Images/d4a3ba45-ba8d-4f3b-b7bb-d8b020b38e3c.jpg new file mode 100644 index 0000000..c7403bf Binary files /dev/null and b/Apps/XinDianTu/Images/d4a3ba45-ba8d-4f3b-b7bb-d8b020b38e3c.jpg differ diff --git a/Apps/XinDianTu/Images/d52f68a3-8953-4b35-873b-c673803c5e16.jpg b/Apps/XinDianTu/Images/d52f68a3-8953-4b35-873b-c673803c5e16.jpg new file mode 100644 index 0000000..6a1d18c Binary files /dev/null and b/Apps/XinDianTu/Images/d52f68a3-8953-4b35-873b-c673803c5e16.jpg differ diff --git a/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.jpg b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.jpg new file mode 100644 index 0000000..e917862 Binary files /dev/null and b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.jpg differ diff --git a/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.json b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.json new file mode 100644 index 0000000..a13215c --- /dev/null +++ b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041.json @@ -0,0 +1,46 @@ +{ + "image": "d540d1de-2c33-4e31-bf38-a300ef486041.jpg", + "width": 720, + "height": 162, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 433, + 700, + 679 + ], + "click_point": [ + 121, + 482 + ] + }, + { + "id": 2, + "rect": [ + 19, + 692, + 700, + 940 + ], + "click_point": [ + 121, + 741 + ] + }, + { + "id": 3, + "rect": [ + 19, + 953, + 700, + 1199 + ], + "click_point": [ + 121, + 1002 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_flag.jpg b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_flag.jpg new file mode 100644 index 0000000..cf64fc6 Binary files /dev/null and b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_vl.jpg b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_vl.jpg new file mode 100644 index 0000000..ce039d9 Binary files /dev/null and b/Apps/XinDianTu/Images/d540d1de-2c33-4e31-bf38-a300ef486041_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d55e26c9-7223-4fd3-9170-72fab1b4571b.jpg b/Apps/XinDianTu/Images/d55e26c9-7223-4fd3-9170-72fab1b4571b.jpg new file mode 100644 index 0000000..f9cb820 Binary files /dev/null and b/Apps/XinDianTu/Images/d55e26c9-7223-4fd3-9170-72fab1b4571b.jpg differ diff --git a/Apps/XinDianTu/Images/d59f1cc8-4e57-4051-825a-a78b633ff403.jpg b/Apps/XinDianTu/Images/d59f1cc8-4e57-4051-825a-a78b633ff403.jpg new file mode 100644 index 0000000..2f2321b Binary files /dev/null and b/Apps/XinDianTu/Images/d59f1cc8-4e57-4051-825a-a78b633ff403.jpg differ diff --git a/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_1.jpg b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_1.jpg new file mode 100644 index 0000000..6cae280 Binary files /dev/null and b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_2.jpg b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_2.jpg new file mode 100644 index 0000000..5e6b535 Binary files /dev/null and b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_3.jpg b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_3.jpg new file mode 100644 index 0000000..e79cc6d Binary files /dev/null and b/Apps/XinDianTu/Images/d5fc6e3573d71189602fa537a98e6f0e_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d6072b60-b2d5-45f2-b52c-eb58c00c07fb.jpg b/Apps/XinDianTu/Images/d6072b60-b2d5-45f2-b52c-eb58c00c07fb.jpg new file mode 100644 index 0000000..e851225 Binary files /dev/null and b/Apps/XinDianTu/Images/d6072b60-b2d5-45f2-b52c-eb58c00c07fb.jpg differ diff --git a/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_1.jpg b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_1.jpg new file mode 100644 index 0000000..b515674 Binary files /dev/null and b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_2.jpg b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_2.jpg new file mode 100644 index 0000000..489c28f Binary files /dev/null and b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_3.jpg b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_3.jpg new file mode 100644 index 0000000..dd745ce Binary files /dev/null and b/Apps/XinDianTu/Images/d64d47e289b855d0f4b2f1c5b996228a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164.jpg b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164.jpg new file mode 100644 index 0000000..2835c81 Binary files /dev/null and b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164.jpg differ diff --git a/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_flag.jpg b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_flag.jpg new file mode 100644 index 0000000..86e3a39 Binary files /dev/null and b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_vl.jpg b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_vl.jpg new file mode 100644 index 0000000..b25420c Binary files /dev/null and b/Apps/XinDianTu/Images/d6586ef3-853e-491f-9af3-42e6021de164_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.jpg b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.jpg new file mode 100644 index 0000000..c9747d5 Binary files /dev/null and b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.jpg differ diff --git a/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.json b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.json new file mode 100644 index 0000000..8f9677f --- /dev/null +++ b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c.json @@ -0,0 +1,46 @@ +{ + "image": "d693f09e-750e-404a-a37e-925c2d42f91c.jpg", + "width": 720, + "height": 258, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 568, + 700, + 814 + ], + "click_point": [ + 121, + 617 + ] + }, + { + "id": 2, + "rect": [ + 19, + 828, + 700, + 1102 + ], + "click_point": [ + 121, + 882 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1116, + 700, + 1374 + ], + "click_point": [ + 121, + 1167 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_flag.jpg b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_flag.jpg new file mode 100644 index 0000000..67849ac Binary files /dev/null and b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_vl.jpg b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_vl.jpg new file mode 100644 index 0000000..334c3f4 Binary files /dev/null and b/Apps/XinDianTu/Images/d693f09e-750e-404a-a37e-925c2d42f91c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d706aa78-89a7-4f95-b996-30a06db8e7c7.jpg b/Apps/XinDianTu/Images/d706aa78-89a7-4f95-b996-30a06db8e7c7.jpg new file mode 100644 index 0000000..07c7611 Binary files /dev/null and b/Apps/XinDianTu/Images/d706aa78-89a7-4f95-b996-30a06db8e7c7.jpg differ diff --git a/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203.jpg b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203.jpg new file mode 100644 index 0000000..e35cc06 Binary files /dev/null and b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203.jpg differ diff --git a/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_flag.jpg b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_flag.jpg new file mode 100644 index 0000000..456991c Binary files /dev/null and b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_flag.jpg differ diff --git a/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_vl.jpg b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_vl.jpg new file mode 100644 index 0000000..5fd796d Binary files /dev/null and b/Apps/XinDianTu/Images/d72cc30c-4d7a-459e-8743-7fc264cc1203_vl.jpg differ diff --git a/Apps/XinDianTu/Images/d79784fa-81f9-4f0c-8070-a949035dbb23.jpg b/Apps/XinDianTu/Images/d79784fa-81f9-4f0c-8070-a949035dbb23.jpg new file mode 100644 index 0000000..e4b58d4 Binary files /dev/null and b/Apps/XinDianTu/Images/d79784fa-81f9-4f0c-8070-a949035dbb23.jpg differ diff --git a/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_1.jpg b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_1.jpg new file mode 100644 index 0000000..48f9a4a Binary files /dev/null and b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_2.jpg b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_2.jpg new file mode 100644 index 0000000..98b940d Binary files /dev/null and b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_3.jpg b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_3.jpg new file mode 100644 index 0000000..89ac68b Binary files /dev/null and b/Apps/XinDianTu/Images/d83e12d7c96bb27394a71ba4293c1a48_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_1.jpg b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_1.jpg new file mode 100644 index 0000000..41926bd Binary files /dev/null and b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_2.jpg b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_2.jpg new file mode 100644 index 0000000..9a64f98 Binary files /dev/null and b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_3.jpg b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_3.jpg new file mode 100644 index 0000000..d004295 Binary files /dev/null and b/Apps/XinDianTu/Images/d86901f0e7af4673b08b47182549c032_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/d872102c-38cd-43da-8c1d-a4bfbf9d1d85.jpg b/Apps/XinDianTu/Images/d872102c-38cd-43da-8c1d-a4bfbf9d1d85.jpg new file mode 100644 index 0000000..412d877 Binary files /dev/null and b/Apps/XinDianTu/Images/d872102c-38cd-43da-8c1d-a4bfbf9d1d85.jpg differ diff --git a/Apps/XinDianTu/Images/d88e3c6f-3b0b-4a9a-bc17-35b6360f184e.jpg b/Apps/XinDianTu/Images/d88e3c6f-3b0b-4a9a-bc17-35b6360f184e.jpg new file mode 100644 index 0000000..2784a3b Binary files /dev/null and b/Apps/XinDianTu/Images/d88e3c6f-3b0b-4a9a-bc17-35b6360f184e.jpg differ diff --git a/Apps/XinDianTu/Images/d91aa524-0e30-4c88-a527-34524433e5f3.jpg b/Apps/XinDianTu/Images/d91aa524-0e30-4c88-a527-34524433e5f3.jpg new file mode 100644 index 0000000..c7b0451 Binary files /dev/null and b/Apps/XinDianTu/Images/d91aa524-0e30-4c88-a527-34524433e5f3.jpg differ diff --git a/Apps/XinDianTu/Images/d9923de2-2f7a-4fc0-89bc-e023b3a3b986.jpg b/Apps/XinDianTu/Images/d9923de2-2f7a-4fc0-89bc-e023b3a3b986.jpg new file mode 100644 index 0000000..324f16c Binary files /dev/null and b/Apps/XinDianTu/Images/d9923de2-2f7a-4fc0-89bc-e023b3a3b986.jpg differ diff --git a/Apps/XinDianTu/Images/d9964fec-115e-48cb-b670-a369ef7f8b6f.jpg b/Apps/XinDianTu/Images/d9964fec-115e-48cb-b670-a369ef7f8b6f.jpg new file mode 100644 index 0000000..607b6c7 Binary files /dev/null and b/Apps/XinDianTu/Images/d9964fec-115e-48cb-b670-a369ef7f8b6f.jpg differ diff --git a/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_1.jpg b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_1.jpg new file mode 100644 index 0000000..61a9f8e Binary files /dev/null and b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_2.jpg b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_2.jpg new file mode 100644 index 0000000..d04c6ce Binary files /dev/null and b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_3.jpg b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_3.jpg new file mode 100644 index 0000000..397c86d Binary files /dev/null and b/Apps/XinDianTu/Images/db9fdde596d304303cd0005682cbcc2a_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_1.jpg b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_1.jpg new file mode 100644 index 0000000..5819ee7 Binary files /dev/null and b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_2.jpg b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_2.jpg new file mode 100644 index 0000000..d072d11 Binary files /dev/null and b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_3.jpg b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_3.jpg new file mode 100644 index 0000000..e001b0f Binary files /dev/null and b/Apps/XinDianTu/Images/dbbe84ad0c56b7fbeae03ab2c303c8c9_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/dbbf1d17-926f-4715-8750-c2d8dc415c4f.jpg b/Apps/XinDianTu/Images/dbbf1d17-926f-4715-8750-c2d8dc415c4f.jpg new file mode 100644 index 0000000..948d068 Binary files /dev/null and b/Apps/XinDianTu/Images/dbbf1d17-926f-4715-8750-c2d8dc415c4f.jpg differ diff --git a/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_1.jpg b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_1.jpg new file mode 100644 index 0000000..79224af Binary files /dev/null and b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_2.jpg b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_2.jpg new file mode 100644 index 0000000..6b0ca2e Binary files /dev/null and b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_3.jpg b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_3.jpg new file mode 100644 index 0000000..acec321 Binary files /dev/null and b/Apps/XinDianTu/Images/dbd0535973a6742c0c21a511a923b933_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_1.jpg b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_1.jpg new file mode 100644 index 0000000..d0df64f Binary files /dev/null and b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_2.jpg b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_2.jpg new file mode 100644 index 0000000..3c91c0d Binary files /dev/null and b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_3.jpg b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_3.jpg new file mode 100644 index 0000000..d4e7523 Binary files /dev/null and b/Apps/XinDianTu/Images/dbda0bb04fb6bd9c9bbaca3fefcbc63c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/dc6ae7f3-2813-4823-94ee-7157021a1bb2.jpg b/Apps/XinDianTu/Images/dc6ae7f3-2813-4823-94ee-7157021a1bb2.jpg new file mode 100644 index 0000000..9f58fe8 Binary files /dev/null and b/Apps/XinDianTu/Images/dc6ae7f3-2813-4823-94ee-7157021a1bb2.jpg differ diff --git a/Apps/XinDianTu/Images/dc987ff4-7d72-4673-94de-9fa5db4e4819.jpg b/Apps/XinDianTu/Images/dc987ff4-7d72-4673-94de-9fa5db4e4819.jpg new file mode 100644 index 0000000..f04e3a6 Binary files /dev/null and b/Apps/XinDianTu/Images/dc987ff4-7d72-4673-94de-9fa5db4e4819.jpg differ diff --git a/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_1.jpg b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_1.jpg new file mode 100644 index 0000000..7aaac20 Binary files /dev/null and b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_2.jpg b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_2.jpg new file mode 100644 index 0000000..5c1b7d6 Binary files /dev/null and b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_3.jpg b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_3.jpg new file mode 100644 index 0000000..17cee82 Binary files /dev/null and b/Apps/XinDianTu/Images/dc9e0da2b16e9651b289e0c4ef64da67_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/dca4c477-4c4b-4940-ab9d-4d8054cdae89.jpg b/Apps/XinDianTu/Images/dca4c477-4c4b-4940-ab9d-4d8054cdae89.jpg new file mode 100644 index 0000000..7cddbc8 Binary files /dev/null and b/Apps/XinDianTu/Images/dca4c477-4c4b-4940-ab9d-4d8054cdae89.jpg differ diff --git a/Apps/XinDianTu/Images/dcce6608-4928-4cdc-819a-50551da06d17.jpg b/Apps/XinDianTu/Images/dcce6608-4928-4cdc-819a-50551da06d17.jpg new file mode 100644 index 0000000..81f8cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/dcce6608-4928-4cdc-819a-50551da06d17.jpg differ diff --git a/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.jpg b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.jpg new file mode 100644 index 0000000..ac1509e Binary files /dev/null and b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.jpg differ diff --git a/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.json b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.json new file mode 100644 index 0000000..afbbebe --- /dev/null +++ b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5.json @@ -0,0 +1,46 @@ +{ + "image": "dcf04202-9c02-4a76-95ce-8aa3af1d78d5.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 545, + 700, + 791 + ], + "click_point": [ + 121, + 594 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1052 + ], + "click_point": [ + 121, + 853 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1065, + 700, + 1311 + ], + "click_point": [ + 121, + 1114 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_flag.jpg b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_flag.jpg new file mode 100644 index 0000000..2171c05 Binary files /dev/null and b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_vl.jpg b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_vl.jpg new file mode 100644 index 0000000..fb7103c Binary files /dev/null and b/Apps/XinDianTu/Images/dcf04202-9c02-4a76-95ce-8aa3af1d78d5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/dd10f8c9-61e2-4ee6-ab1b-19507b08bbb0.jpg b/Apps/XinDianTu/Images/dd10f8c9-61e2-4ee6-ab1b-19507b08bbb0.jpg new file mode 100644 index 0000000..7d08472 Binary files /dev/null and b/Apps/XinDianTu/Images/dd10f8c9-61e2-4ee6-ab1b-19507b08bbb0.jpg differ diff --git a/Apps/XinDianTu/Images/dd68ee19-fdd7-457b-8e92-b08b7e66a6dd.jpg b/Apps/XinDianTu/Images/dd68ee19-fdd7-457b-8e92-b08b7e66a6dd.jpg new file mode 100644 index 0000000..d451155 Binary files /dev/null and b/Apps/XinDianTu/Images/dd68ee19-fdd7-457b-8e92-b08b7e66a6dd.jpg differ diff --git a/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.jpg b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.jpg new file mode 100644 index 0000000..a7a9b46 Binary files /dev/null and b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.jpg differ diff --git a/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.json b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.json new file mode 100644 index 0000000..3419059 --- /dev/null +++ b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23.json @@ -0,0 +1,33 @@ +{ + "image": "dde5a58e-fe9b-4e70-979b-f9abd455be23.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_flag.jpg b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_flag.jpg new file mode 100644 index 0000000..7d31ee1 Binary files /dev/null and b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_flag.jpg differ diff --git a/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_vl.jpg b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_vl.jpg new file mode 100644 index 0000000..6ce1cec Binary files /dev/null and b/Apps/XinDianTu/Images/dde5a58e-fe9b-4e70-979b-f9abd455be23_vl.jpg differ diff --git a/Apps/XinDianTu/Images/de011599-eb5f-4a87-b2d8-75843c4730e6.jpg b/Apps/XinDianTu/Images/de011599-eb5f-4a87-b2d8-75843c4730e6.jpg new file mode 100644 index 0000000..c8e32fc Binary files /dev/null and b/Apps/XinDianTu/Images/de011599-eb5f-4a87-b2d8-75843c4730e6.jpg differ diff --git a/Apps/XinDianTu/Images/de36782f-f305-47b0-9167-aeff92914aab.jpg b/Apps/XinDianTu/Images/de36782f-f305-47b0-9167-aeff92914aab.jpg new file mode 100644 index 0000000..35a57e2 Binary files /dev/null and b/Apps/XinDianTu/Images/de36782f-f305-47b0-9167-aeff92914aab.jpg differ diff --git a/Apps/XinDianTu/Images/de5593ea-5a0b-45f0-b17e-e35de4f1d7bb.jpg b/Apps/XinDianTu/Images/de5593ea-5a0b-45f0-b17e-e35de4f1d7bb.jpg new file mode 100644 index 0000000..d59ef39 Binary files /dev/null and b/Apps/XinDianTu/Images/de5593ea-5a0b-45f0-b17e-e35de4f1d7bb.jpg differ diff --git a/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.jpg b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.jpg new file mode 100644 index 0000000..2c9bbbe Binary files /dev/null and b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.jpg differ diff --git a/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.json b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.json new file mode 100644 index 0000000..eea12e3 --- /dev/null +++ b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.json @@ -0,0 +1,46 @@ +{ + "image": "de7dadd5-95ba-4fb5-a5c5-7f2b6add334c.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 536, + 700, + 782 + ], + "click_point": [ + 121, + 585 + ] + }, + { + "id": 2, + "rect": [ + 19, + 796, + 700, + 1047 + ], + "click_point": [ + 121, + 846 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1056, + 700, + 1302 + ], + "click_point": [ + 121, + 1105 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_flag.jpg b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_flag.jpg new file mode 100644 index 0000000..40b45cb Binary files /dev/null and b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_vl.jpg b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_vl.jpg new file mode 100644 index 0000000..a854249 Binary files /dev/null and b/Apps/XinDianTu/Images/de7dadd5-95ba-4fb5-a5c5-7f2b6add334c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/debug_ad_close_fail.jpg b/Apps/XinDianTu/Images/debug_ad_close_fail.jpg new file mode 100644 index 0000000..310cad1 Binary files /dev/null and b/Apps/XinDianTu/Images/debug_ad_close_fail.jpg differ diff --git a/Apps/XinDianTu/Images/debug_bottom_circle.jpg b/Apps/XinDianTu/Images/debug_bottom_circle.jpg new file mode 100644 index 0000000..febc363 Binary files /dev/null and b/Apps/XinDianTu/Images/debug_bottom_circle.jpg differ diff --git a/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.jpg b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.jpg new file mode 100644 index 0000000..7da0f25 Binary files /dev/null and b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.jpg differ diff --git a/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.json b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.json new file mode 100644 index 0000000..1c13728 --- /dev/null +++ b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286.json @@ -0,0 +1,46 @@ +{ + "image": "dedce7bd-1537-4e9a-bab0-8febd6002286.jpg", + "width": 720, + "height": 310, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 544, + 700, + 790 + ], + "click_point": [ + 121, + 593 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1055 + ], + "click_point": [ + 121, + 854 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1064, + 700, + 1374 + ], + "click_point": [ + 121, + 1126 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_flag.jpg b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_flag.jpg new file mode 100644 index 0000000..3fb5c8a Binary files /dev/null and b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_flag.jpg differ diff --git a/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_vl.jpg b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_vl.jpg new file mode 100644 index 0000000..221160c Binary files /dev/null and b/Apps/XinDianTu/Images/dedce7bd-1537-4e9a-bab0-8febd6002286_vl.jpg differ diff --git a/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.jpg b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.jpg new file mode 100644 index 0000000..729f373 Binary files /dev/null and b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.jpg differ diff --git a/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.json b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.json new file mode 100644 index 0000000..5951fb2 --- /dev/null +++ b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.json @@ -0,0 +1,46 @@ +{ + "image": "dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 466, + 700, + 740 + ], + "click_point": [ + 121, + 520 + ] + }, + { + "id": 2, + "rect": [ + 19, + 754, + 700, + 999 + ], + "click_point": [ + 121, + 803 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_flag.jpg b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_flag.jpg new file mode 100644 index 0000000..92ebf1a Binary files /dev/null and b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_vl.jpg b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_vl.jpg new file mode 100644 index 0000000..aa963f7 Binary files /dev/null and b/Apps/XinDianTu/Images/dfc0a9c9-00a3-40a4-a43c-7bfc33d81ce3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e021cb95-385d-47d5-b92b-40c4f3c86d46.jpg b/Apps/XinDianTu/Images/e021cb95-385d-47d5-b92b-40c4f3c86d46.jpg new file mode 100644 index 0000000..b9ebcdf Binary files /dev/null and b/Apps/XinDianTu/Images/e021cb95-385d-47d5-b92b-40c4f3c86d46.jpg differ diff --git a/Apps/XinDianTu/Images/e02a2330-be2a-4be7-9fd7-0dfaaa2edeb5.jpg b/Apps/XinDianTu/Images/e02a2330-be2a-4be7-9fd7-0dfaaa2edeb5.jpg new file mode 100644 index 0000000..9cd4b22 Binary files /dev/null and b/Apps/XinDianTu/Images/e02a2330-be2a-4be7-9fd7-0dfaaa2edeb5.jpg differ diff --git a/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.jpg b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.jpg new file mode 100644 index 0000000..5b271fc Binary files /dev/null and b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.jpg differ diff --git a/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.json b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.json new file mode 100644 index 0000000..037a2ca --- /dev/null +++ b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb.json @@ -0,0 +1,59 @@ +{ + "image": "e08a2f88-b311-4afb-a939-8ba72d6bf9bb.jpg", + "width": 720, + "height": 197, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 620 + ], + "click_point": [ + 121, + 447 + ] + }, + { + "id": 2, + "rect": [ + 19, + 634, + 700, + 880 + ], + "click_point": [ + 121, + 683 + ] + }, + { + "id": 3, + "rect": [ + 19, + 894, + 700, + 1168 + ], + "click_point": [ + 121, + 948 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1177, + 700, + 1374 + ], + "click_point": [ + 121, + 1216 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_flag.jpg b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_flag.jpg new file mode 100644 index 0000000..1bf1b7a Binary files /dev/null and b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_vl.jpg b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_vl.jpg new file mode 100644 index 0000000..fb6b98c Binary files /dev/null and b/Apps/XinDianTu/Images/e08a2f88-b311-4afb-a939-8ba72d6bf9bb_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e15523cd-51c7-44b5-bb28-60f63238e477.jpg b/Apps/XinDianTu/Images/e15523cd-51c7-44b5-bb28-60f63238e477.jpg new file mode 100644 index 0000000..f8cb7ea Binary files /dev/null and b/Apps/XinDianTu/Images/e15523cd-51c7-44b5-bb28-60f63238e477.jpg differ diff --git a/Apps/XinDianTu/Images/e1a6af19-177a-48b1-b6dd-662d264a55ab.jpg b/Apps/XinDianTu/Images/e1a6af19-177a-48b1-b6dd-662d264a55ab.jpg new file mode 100644 index 0000000..6a2ae1d Binary files /dev/null and b/Apps/XinDianTu/Images/e1a6af19-177a-48b1-b6dd-662d264a55ab.jpg differ diff --git a/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.jpg b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.jpg new file mode 100644 index 0000000..2f135b5 Binary files /dev/null and b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.jpg differ diff --git a/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.json b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.json new file mode 100644 index 0000000..35927fa --- /dev/null +++ b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2.json @@ -0,0 +1,46 @@ +{ + "image": "e1dddd3a-ff48-4663-b67b-a964244e07c2.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_flag.jpg b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_flag.jpg new file mode 100644 index 0000000..ee0a26e Binary files /dev/null and b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_vl.jpg b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_vl.jpg new file mode 100644 index 0000000..899047b Binary files /dev/null and b/Apps/XinDianTu/Images/e1dddd3a-ff48-4663-b67b-a964244e07c2_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e1e9e6ea-280c-4376-bd8a-5591f551381a.jpg b/Apps/XinDianTu/Images/e1e9e6ea-280c-4376-bd8a-5591f551381a.jpg new file mode 100644 index 0000000..be83722 Binary files /dev/null and b/Apps/XinDianTu/Images/e1e9e6ea-280c-4376-bd8a-5591f551381a.jpg differ diff --git a/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_1.jpg b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_1.jpg new file mode 100644 index 0000000..4581d47 Binary files /dev/null and b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_2.jpg b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_2.jpg new file mode 100644 index 0000000..a682481 Binary files /dev/null and b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_3.jpg b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_3.jpg new file mode 100644 index 0000000..f38d6ce Binary files /dev/null and b/Apps/XinDianTu/Images/e1f42d63c334e3911ab50a2aff73be09_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e2a22243-df70-4a1d-aff9-abe64deff355.jpg b/Apps/XinDianTu/Images/e2a22243-df70-4a1d-aff9-abe64deff355.jpg new file mode 100644 index 0000000..552ff36 Binary files /dev/null and b/Apps/XinDianTu/Images/e2a22243-df70-4a1d-aff9-abe64deff355.jpg differ diff --git a/Apps/XinDianTu/Images/e2cd0210-ce28-458e-a774-efb24314fef7.jpg b/Apps/XinDianTu/Images/e2cd0210-ce28-458e-a774-efb24314fef7.jpg new file mode 100644 index 0000000..3305939 Binary files /dev/null and b/Apps/XinDianTu/Images/e2cd0210-ce28-458e-a774-efb24314fef7.jpg differ diff --git a/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_1.jpg b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_1.jpg new file mode 100644 index 0000000..adaa3e4 Binary files /dev/null and b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_2.jpg b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_2.jpg new file mode 100644 index 0000000..9ac3438 Binary files /dev/null and b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_3.jpg b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_3.jpg new file mode 100644 index 0000000..a91ac18 Binary files /dev/null and b/Apps/XinDianTu/Images/e2cf8fce89982d2ef6ead8977495a4fc_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.jpg b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.jpg new file mode 100644 index 0000000..eb6ca9a Binary files /dev/null and b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.jpg differ diff --git a/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.json b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.json new file mode 100644 index 0000000..bd726c7 --- /dev/null +++ b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b.json @@ -0,0 +1,46 @@ +{ + "image": "e2dab8e3-10eb-4687-9f16-740efaf2ab3b.jpg", + "width": 720, + "height": 241, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 484, + 700, + 733 + ], + "click_point": [ + 121, + 533 + ] + }, + { + "id": 2, + "rect": [ + 19, + 746, + 700, + 1021 + ], + "click_point": [ + 121, + 801 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1035, + 700, + 1276 + ], + "click_point": [ + 121, + 1083 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_flag.jpg b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_flag.jpg new file mode 100644 index 0000000..1944cb7 Binary files /dev/null and b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_vl.jpg b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_vl.jpg new file mode 100644 index 0000000..1b0fe54 Binary files /dev/null and b/Apps/XinDianTu/Images/e2dab8e3-10eb-4687-9f16-740efaf2ab3b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_1.jpg b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_1.jpg new file mode 100644 index 0000000..b56831e Binary files /dev/null and b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_2.jpg b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_2.jpg new file mode 100644 index 0000000..c15b125 Binary files /dev/null and b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_3.jpg b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_3.jpg new file mode 100644 index 0000000..a7c77f9 Binary files /dev/null and b/Apps/XinDianTu/Images/e3014eb52c386854a589c29c0efa27fd_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7.jpg b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7.jpg new file mode 100644 index 0000000..cf80b5b Binary files /dev/null and b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7.jpg differ diff --git a/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_flag.jpg b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_flag.jpg new file mode 100644 index 0000000..9167497 Binary files /dev/null and b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_vl.jpg b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_vl.jpg new file mode 100644 index 0000000..559f5c3 Binary files /dev/null and b/Apps/XinDianTu/Images/e329d4b5-4e49-4a45-ab69-5a94668760b7_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_1.jpg b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_1.jpg new file mode 100644 index 0000000..ad3440e Binary files /dev/null and b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_2.jpg b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_2.jpg new file mode 100644 index 0000000..2c83f86 Binary files /dev/null and b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_3.jpg b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_3.jpg new file mode 100644 index 0000000..ba9e84d Binary files /dev/null and b/Apps/XinDianTu/Images/e32a91c39ad77177ff933c2a27369dfb_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_1.jpg b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_1.jpg new file mode 100644 index 0000000..16a52c3 Binary files /dev/null and b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_2.jpg b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_2.jpg new file mode 100644 index 0000000..4bd4295 Binary files /dev/null and b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_3.jpg b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_3.jpg new file mode 100644 index 0000000..9e025a5 Binary files /dev/null and b/Apps/XinDianTu/Images/e36173530fd3ae0e84fedde3ad8a3d0b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.jpg b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.jpg new file mode 100644 index 0000000..ced2ba7 Binary files /dev/null and b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.jpg differ diff --git a/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.json b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.json new file mode 100644 index 0000000..91a23cf --- /dev/null +++ b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.json @@ -0,0 +1,46 @@ +{ + "image": "e390bc0d-f734-4cf3-9135-3f86ad8fdb7e.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 561, + 700, + 812 + ], + "click_point": [ + 121, + 611 + ] + }, + { + "id": 2, + "rect": [ + 19, + 826, + 700, + 1072 + ], + "click_point": [ + 121, + 875 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1081, + 700, + 1332 + ], + "click_point": [ + 121, + 1131 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_flag.jpg b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_flag.jpg new file mode 100644 index 0000000..83705f9 Binary files /dev/null and b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_vl.jpg b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_vl.jpg new file mode 100644 index 0000000..5920e85 Binary files /dev/null and b/Apps/XinDianTu/Images/e390bc0d-f734-4cf3-9135-3f86ad8fdb7e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.jpg b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.jpg new file mode 100644 index 0000000..8957121 Binary files /dev/null and b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.jpg differ diff --git a/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.json b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.json new file mode 100644 index 0000000..b363f46 --- /dev/null +++ b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b.json @@ -0,0 +1,59 @@ +{ + "image": "e39e55f9-c5e8-4107-b6cd-3670d96f930b.jpg", + "width": 720, + "height": 173, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 639 + ], + "click_point": [ + 121, + 451 + ] + }, + { + "id": 2, + "rect": [ + 19, + 652, + 700, + 900 + ], + "click_point": [ + 121, + 701 + ] + }, + { + "id": 3, + "rect": [ + 19, + 912, + 700, + 1188 + ], + "click_point": [ + 121, + 967 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1201, + 700, + 1374 + ], + "click_point": [ + 121, + 1235 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_flag.jpg b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_flag.jpg new file mode 100644 index 0000000..c8f5a1a Binary files /dev/null and b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_vl.jpg b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_vl.jpg new file mode 100644 index 0000000..790725a Binary files /dev/null and b/Apps/XinDianTu/Images/e39e55f9-c5e8-4107-b6cd-3670d96f930b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e3a5bbe7-6464-49d4-939e-d12e06cc10a8.jpg b/Apps/XinDianTu/Images/e3a5bbe7-6464-49d4-939e-d12e06cc10a8.jpg new file mode 100644 index 0000000..b5bfd2e Binary files /dev/null and b/Apps/XinDianTu/Images/e3a5bbe7-6464-49d4-939e-d12e06cc10a8.jpg differ diff --git a/Apps/XinDianTu/Images/e3a72f79-3153-40f8-8ea0-1078a0d1f80f.jpg b/Apps/XinDianTu/Images/e3a72f79-3153-40f8-8ea0-1078a0d1f80f.jpg new file mode 100644 index 0000000..0f9b1c1 Binary files /dev/null and b/Apps/XinDianTu/Images/e3a72f79-3153-40f8-8ea0-1078a0d1f80f.jpg differ diff --git a/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_1.jpg b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_1.jpg new file mode 100644 index 0000000..3479e37 Binary files /dev/null and b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_2.jpg b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_2.jpg new file mode 100644 index 0000000..5a0b67b Binary files /dev/null and b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_3.jpg b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_3.jpg new file mode 100644 index 0000000..f40ec9c Binary files /dev/null and b/Apps/XinDianTu/Images/e3aaeff5e3ac71e02d2f1a7db8627be4_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e3df530d-d808-4e72-906f-40520a6565af.jpg b/Apps/XinDianTu/Images/e3df530d-d808-4e72-906f-40520a6565af.jpg new file mode 100644 index 0000000..36656ba Binary files /dev/null and b/Apps/XinDianTu/Images/e3df530d-d808-4e72-906f-40520a6565af.jpg differ diff --git a/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_1.jpg b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_1.jpg new file mode 100644 index 0000000..a49153c Binary files /dev/null and b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_2.jpg b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_2.jpg new file mode 100644 index 0000000..3ea54df Binary files /dev/null and b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_3.jpg b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_3.jpg new file mode 100644 index 0000000..8a72f3a Binary files /dev/null and b/Apps/XinDianTu/Images/e3e7d7f15682b2987b9f680fd9446e5c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_1.jpg b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_1.jpg new file mode 100644 index 0000000..4cb21a2 Binary files /dev/null and b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_2.jpg b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_2.jpg new file mode 100644 index 0000000..a076266 Binary files /dev/null and b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_3.jpg b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_3.jpg new file mode 100644 index 0000000..5a221ad Binary files /dev/null and b/Apps/XinDianTu/Images/e3fae49281fd326f1fc94efd28778fb0_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.jpg b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.jpg new file mode 100644 index 0000000..577b19b Binary files /dev/null and b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.jpg differ diff --git a/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.json b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.json new file mode 100644 index 0000000..7693a76 --- /dev/null +++ b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894.json @@ -0,0 +1,46 @@ +{ + "image": "e4149114-b10a-4e68-966b-a75e207d2894.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 544, + 700, + 790 + ], + "click_point": [ + 121, + 593 + ] + }, + { + "id": 2, + "rect": [ + 19, + 804, + 700, + 1055 + ], + "click_point": [ + 121, + 854 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1064, + 700, + 1310 + ], + "click_point": [ + 121, + 1113 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_flag.jpg b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_flag.jpg new file mode 100644 index 0000000..efba671 Binary files /dev/null and b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_vl.jpg b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_vl.jpg new file mode 100644 index 0000000..0912c6c Binary files /dev/null and b/Apps/XinDianTu/Images/e4149114-b10a-4e68-966b-a75e207d2894_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e44bcc93-8a32-4578-b048-938267854a20.jpg b/Apps/XinDianTu/Images/e44bcc93-8a32-4578-b048-938267854a20.jpg new file mode 100644 index 0000000..5d95a1f Binary files /dev/null and b/Apps/XinDianTu/Images/e44bcc93-8a32-4578-b048-938267854a20.jpg differ diff --git a/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3.jpg b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3.jpg new file mode 100644 index 0000000..f5df0a6 Binary files /dev/null and b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3.jpg differ diff --git a/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_flag.jpg b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_flag.jpg new file mode 100644 index 0000000..9766f97 Binary files /dev/null and b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_vl.jpg b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_vl.jpg new file mode 100644 index 0000000..63e2524 Binary files /dev/null and b/Apps/XinDianTu/Images/e44be2b2-a27f-4720-9370-52633c9658d3_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad.jpg b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad.jpg new file mode 100644 index 0000000..106b531 Binary files /dev/null and b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad.jpg differ diff --git a/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_flag.jpg b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_flag.jpg new file mode 100644 index 0000000..502a08d Binary files /dev/null and b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_vl.jpg b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_vl.jpg new file mode 100644 index 0000000..42c573c Binary files /dev/null and b/Apps/XinDianTu/Images/e4882578-6b24-42fa-aa55-7a9954ad91ad_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e4f614aa-91d6-4c34-9825-5c8f2ce742b4.jpg b/Apps/XinDianTu/Images/e4f614aa-91d6-4c34-9825-5c8f2ce742b4.jpg new file mode 100644 index 0000000..d53eef9 Binary files /dev/null and b/Apps/XinDianTu/Images/e4f614aa-91d6-4c34-9825-5c8f2ce742b4.jpg differ diff --git a/Apps/XinDianTu/Images/e5144bba-1a55-4088-a19f-0b3e09d40b12.jpg b/Apps/XinDianTu/Images/e5144bba-1a55-4088-a19f-0b3e09d40b12.jpg new file mode 100644 index 0000000..ff79500 Binary files /dev/null and b/Apps/XinDianTu/Images/e5144bba-1a55-4088-a19f-0b3e09d40b12.jpg differ diff --git a/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.jpg b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.jpg new file mode 100644 index 0000000..6b2f3a9 Binary files /dev/null and b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.jpg differ diff --git a/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.json b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.json new file mode 100644 index 0000000..1492220 --- /dev/null +++ b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf.json @@ -0,0 +1,59 @@ +{ + "image": "e55d4dba-2546-49fa-9ab9-e1595beb97cf.jpg", + "width": 720, + "height": 226, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 615 + ], + "click_point": [ + 121, + 446 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 876 + ], + "click_point": [ + 121, + 677 + ] + }, + { + "id": 3, + "rect": [ + 19, + 889, + 700, + 1135 + ], + "click_point": [ + 121, + 938 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1148, + 700, + 1374 + ], + "click_point": [ + 121, + 1193 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_flag.jpg b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_flag.jpg new file mode 100644 index 0000000..2684006 Binary files /dev/null and b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_vl.jpg b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_vl.jpg new file mode 100644 index 0000000..0f4c448 Binary files /dev/null and b/Apps/XinDianTu/Images/e55d4dba-2546-49fa-9ab9-e1595beb97cf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e574489e-449b-4776-8ec0-ff332b3c30f4.jpg b/Apps/XinDianTu/Images/e574489e-449b-4776-8ec0-ff332b3c30f4.jpg new file mode 100644 index 0000000..d63039c Binary files /dev/null and b/Apps/XinDianTu/Images/e574489e-449b-4776-8ec0-ff332b3c30f4.jpg differ diff --git a/Apps/XinDianTu/Images/e5e2c965-8522-4487-8a04-929b024ea0fb.jpg b/Apps/XinDianTu/Images/e5e2c965-8522-4487-8a04-929b024ea0fb.jpg new file mode 100644 index 0000000..da02b49 Binary files /dev/null and b/Apps/XinDianTu/Images/e5e2c965-8522-4487-8a04-929b024ea0fb.jpg differ diff --git a/Apps/XinDianTu/Images/e644db93-40cb-4ede-a3da-33b917c78bd9.jpg b/Apps/XinDianTu/Images/e644db93-40cb-4ede-a3da-33b917c78bd9.jpg new file mode 100644 index 0000000..52ce207 Binary files /dev/null and b/Apps/XinDianTu/Images/e644db93-40cb-4ede-a3da-33b917c78bd9.jpg differ diff --git a/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_1.jpg b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_1.jpg new file mode 100644 index 0000000..a96ac36 Binary files /dev/null and b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_2.jpg b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_2.jpg new file mode 100644 index 0000000..fa2e035 Binary files /dev/null and b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_3.jpg b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_3.jpg new file mode 100644 index 0000000..23f76e7 Binary files /dev/null and b/Apps/XinDianTu/Images/e65cbad15906eb9255aca0c7dbebb3e1_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c.jpg b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c.jpg new file mode 100644 index 0000000..6529775 Binary files /dev/null and b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c.jpg differ diff --git a/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_flag.jpg b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_flag.jpg new file mode 100644 index 0000000..9c45768 Binary files /dev/null and b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_vl.jpg b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_vl.jpg new file mode 100644 index 0000000..b7d2ab0 Binary files /dev/null and b/Apps/XinDianTu/Images/e66959b1-5545-419a-a802-23c9fd107a7c_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_1.jpg b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_1.jpg new file mode 100644 index 0000000..0327b67 Binary files /dev/null and b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_2.jpg b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_2.jpg new file mode 100644 index 0000000..e1920a6 Binary files /dev/null and b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_3.jpg b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_3.jpg new file mode 100644 index 0000000..3006f91 Binary files /dev/null and b/Apps/XinDianTu/Images/e6eda919f32bc01fec752303bbcfba6b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.jpg b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.jpg new file mode 100644 index 0000000..d5acea7 Binary files /dev/null and b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.jpg differ diff --git a/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.json b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.json new file mode 100644 index 0000000..2896aa0 --- /dev/null +++ b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8.json @@ -0,0 +1,59 @@ +{ + "image": "e74f2d7d-84d0-42ef-8799-e8476a979cb8.jpg", + "width": 720, + "height": 212, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 600 + ], + "click_point": [ + 121, + 443 + ] + }, + { + "id": 2, + "rect": [ + 19, + 609, + 700, + 860 + ], + "click_point": [ + 121, + 659 + ] + }, + { + "id": 3, + "rect": [ + 19, + 874, + 700, + 1148 + ], + "click_point": [ + 121, + 928 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1162, + 700, + 1374 + ], + "click_point": [ + 121, + 1204 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_flag.jpg b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_flag.jpg new file mode 100644 index 0000000..8cc0674 Binary files /dev/null and b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_vl.jpg b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_vl.jpg new file mode 100644 index 0000000..7c001fb Binary files /dev/null and b/Apps/XinDianTu/Images/e74f2d7d-84d0-42ef-8799-e8476a979cb8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e7b16ac5-3a1c-4999-bf96-5dc9a1b4d06a.jpg b/Apps/XinDianTu/Images/e7b16ac5-3a1c-4999-bf96-5dc9a1b4d06a.jpg new file mode 100644 index 0000000..9b499d6 Binary files /dev/null and b/Apps/XinDianTu/Images/e7b16ac5-3a1c-4999-bf96-5dc9a1b4d06a.jpg differ diff --git a/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_1.jpg b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_1.jpg new file mode 100644 index 0000000..41ad517 Binary files /dev/null and b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_2.jpg b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_2.jpg new file mode 100644 index 0000000..fdc3f10 Binary files /dev/null and b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_3.jpg b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_3.jpg new file mode 100644 index 0000000..53e757c Binary files /dev/null and b/Apps/XinDianTu/Images/e7e8c47c85fb70c67c4092db55701144_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.jpg b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.jpg new file mode 100644 index 0000000..25ddecc Binary files /dev/null and b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.jpg differ diff --git a/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.json b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.json new file mode 100644 index 0000000..7a96bed --- /dev/null +++ b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf.json @@ -0,0 +1,46 @@ +{ + "image": "e7f96a35-98e2-4e98-8854-50a11f3d7daf.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 450, + 700, + 732 + ], + "click_point": [ + 121, + 506 + ] + }, + { + "id": 2, + "rect": [ + 19, + 738, + 700, + 1020 + ], + "click_point": [ + 121, + 794 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1028, + 700, + 1277 + ], + "click_point": [ + 121, + 1077 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_flag.jpg b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_flag.jpg new file mode 100644 index 0000000..03e3992 Binary files /dev/null and b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_vl.jpg b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_vl.jpg new file mode 100644 index 0000000..ce13827 Binary files /dev/null and b/Apps/XinDianTu/Images/e7f96a35-98e2-4e98-8854-50a11f3d7daf_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.jpg b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.jpg new file mode 100644 index 0000000..7f14986 Binary files /dev/null and b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.jpg differ diff --git a/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.json b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.json new file mode 100644 index 0000000..ca902c4 --- /dev/null +++ b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8.json @@ -0,0 +1,46 @@ +{ + "image": "e81a3242-24ff-46af-bf05-2a7e227847a8.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 420, + 700, + 734 + ], + "click_point": [ + 121, + 482 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_flag.jpg b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_flag.jpg new file mode 100644 index 0000000..38102b1 Binary files /dev/null and b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_vl.jpg b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_vl.jpg new file mode 100644 index 0000000..0583450 Binary files /dev/null and b/Apps/XinDianTu/Images/e81a3242-24ff-46af-bf05-2a7e227847a8_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e837384f-2d88-40da-938c-2cde478153b5.jpg b/Apps/XinDianTu/Images/e837384f-2d88-40da-938c-2cde478153b5.jpg new file mode 100644 index 0000000..3de2338 Binary files /dev/null and b/Apps/XinDianTu/Images/e837384f-2d88-40da-938c-2cde478153b5.jpg differ diff --git a/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.jpg b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.jpg new file mode 100644 index 0000000..a2fe9dc Binary files /dev/null and b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.jpg differ diff --git a/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.json b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.json new file mode 100644 index 0000000..e9f71ea --- /dev/null +++ b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1.json @@ -0,0 +1,46 @@ +{ + "image": "e84ed53f-c471-48e7-8ce1-bd2d53683ab1.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 488, + 700, + 734 + ], + "click_point": [ + 121, + 537 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_flag.jpg b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_flag.jpg new file mode 100644 index 0000000..ef00d1e Binary files /dev/null and b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_vl.jpg b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_vl.jpg new file mode 100644 index 0000000..aa2b24e Binary files /dev/null and b/Apps/XinDianTu/Images/e84ed53f-c471-48e7-8ce1-bd2d53683ab1_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_1.jpg b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_1.jpg new file mode 100644 index 0000000..d2e7f06 Binary files /dev/null and b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_2.jpg b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_2.jpg new file mode 100644 index 0000000..ef58bf6 Binary files /dev/null and b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_3.jpg b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_3.jpg new file mode 100644 index 0000000..01a5916 Binary files /dev/null and b/Apps/XinDianTu/Images/e86b4041d68970c1145f7257868f027f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e8ca8971-fb02-41e7-b539-06ee15ce8b6a.jpg b/Apps/XinDianTu/Images/e8ca8971-fb02-41e7-b539-06ee15ce8b6a.jpg new file mode 100644 index 0000000..e9b83bd Binary files /dev/null and b/Apps/XinDianTu/Images/e8ca8971-fb02-41e7-b539-06ee15ce8b6a.jpg differ diff --git a/Apps/XinDianTu/Images/e8eb0587-0f7f-47c4-9d27-dd448a773504.jpg b/Apps/XinDianTu/Images/e8eb0587-0f7f-47c4-9d27-dd448a773504.jpg new file mode 100644 index 0000000..bb470e8 Binary files /dev/null and b/Apps/XinDianTu/Images/e8eb0587-0f7f-47c4-9d27-dd448a773504.jpg differ diff --git a/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_1.jpg b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_1.jpg new file mode 100644 index 0000000..74480ba Binary files /dev/null and b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_2.jpg b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_2.jpg new file mode 100644 index 0000000..9ca025f Binary files /dev/null and b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_3.jpg b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_3.jpg new file mode 100644 index 0000000..de6e100 Binary files /dev/null and b/Apps/XinDianTu/Images/e8f22f3915e230b3366b362dc3c7477f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696.jpg b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696.jpg new file mode 100644 index 0000000..aa21743 Binary files /dev/null and b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696.jpg differ diff --git a/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_flag.jpg b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_flag.jpg new file mode 100644 index 0000000..0e786b4 Binary files /dev/null and b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_flag.jpg differ diff --git a/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_vl.jpg b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_vl.jpg new file mode 100644 index 0000000..025d661 Binary files /dev/null and b/Apps/XinDianTu/Images/e92b22a7-36d9-45a6-93fa-3ed2bae39696_vl.jpg differ diff --git a/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_1.jpg b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_1.jpg new file mode 100644 index 0000000..0387183 Binary files /dev/null and b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_2.jpg b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_2.jpg new file mode 100644 index 0000000..bf8c0f8 Binary files /dev/null and b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_3.jpg b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_3.jpg new file mode 100644 index 0000000..871e1c8 Binary files /dev/null and b/Apps/XinDianTu/Images/e956d339ff245f6a5a9277e666510cf3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/e9939577-0312-4854-80b6-427029d50552.jpg b/Apps/XinDianTu/Images/e9939577-0312-4854-80b6-427029d50552.jpg new file mode 100644 index 0000000..be4fe13 Binary files /dev/null and b/Apps/XinDianTu/Images/e9939577-0312-4854-80b6-427029d50552.jpg differ diff --git a/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.jpg b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.jpg new file mode 100644 index 0000000..ece8b4f Binary files /dev/null and b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.jpg differ diff --git a/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.json b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.json new file mode 100644 index 0000000..3b80208 --- /dev/null +++ b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e.json @@ -0,0 +1,46 @@ +{ + "image": "ea0be5ef-27e8-41ff-a011-be66796a2c6e.jpg", + "width": 720, + "height": 277, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 577, + 700, + 823 + ], + "click_point": [ + 121, + 626 + ] + }, + { + "id": 2, + "rect": [ + 19, + 836, + 700, + 1084 + ], + "click_point": [ + 121, + 885 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1097, + 700, + 1374 + ], + "click_point": [ + 121, + 1152 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_flag.jpg b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_flag.jpg new file mode 100644 index 0000000..9f341b7 Binary files /dev/null and b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_vl.jpg b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_vl.jpg new file mode 100644 index 0000000..b1bf10c Binary files /dev/null and b/Apps/XinDianTu/Images/ea0be5ef-27e8-41ff-a011-be66796a2c6e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.jpg b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.jpg new file mode 100644 index 0000000..64c9b8b Binary files /dev/null and b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.jpg differ diff --git a/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.json b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.json new file mode 100644 index 0000000..b1d0f02 --- /dev/null +++ b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad.json @@ -0,0 +1,46 @@ +{ + "image": "ea3792ec-963c-4959-837e-7abe0e0c96ad.jpg", + "width": 720, + "height": 125, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 468, + 700, + 716 + ], + "click_point": [ + 121, + 517 + ] + }, + { + "id": 2, + "rect": [ + 19, + 729, + 700, + 975 + ], + "click_point": [ + 121, + 778 + ] + }, + { + "id": 3, + "rect": [ + 19, + 988, + 700, + 1236 + ], + "click_point": [ + 121, + 1037 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_flag.jpg b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_flag.jpg new file mode 100644 index 0000000..74be10e Binary files /dev/null and b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_vl.jpg b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_vl.jpg new file mode 100644 index 0000000..989238f Binary files /dev/null and b/Apps/XinDianTu/Images/ea3792ec-963c-4959-837e-7abe0e0c96ad_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_1.jpg b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_1.jpg new file mode 100644 index 0000000..3c0eb8d Binary files /dev/null and b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_2.jpg b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_2.jpg new file mode 100644 index 0000000..ce1de1f Binary files /dev/null and b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_3.jpg b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_3.jpg new file mode 100644 index 0000000..72b6a4d Binary files /dev/null and b/Apps/XinDianTu/Images/ea5c62d114104de397759261e2909b97_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34.jpg b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34.jpg new file mode 100644 index 0000000..c69ca95 Binary files /dev/null and b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34.jpg differ diff --git a/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_flag.jpg b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_flag.jpg new file mode 100644 index 0000000..e0e1d7a Binary files /dev/null and b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_flag.jpg differ diff --git a/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_vl.jpg b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_vl.jpg new file mode 100644 index 0000000..f259a46 Binary files /dev/null and b/Apps/XinDianTu/Images/eac68fff-c1c2-44cf-91f1-3a6898445d34_vl.jpg differ diff --git a/Apps/XinDianTu/Images/eaf77cff-e88a-4d83-91d0-07ae20432daa.jpg b/Apps/XinDianTu/Images/eaf77cff-e88a-4d83-91d0-07ae20432daa.jpg new file mode 100644 index 0000000..a911940 Binary files /dev/null and b/Apps/XinDianTu/Images/eaf77cff-e88a-4d83-91d0-07ae20432daa.jpg differ diff --git a/Apps/XinDianTu/Images/eb4ab9cf-f810-44be-b63f-896127d90aeb.jpg b/Apps/XinDianTu/Images/eb4ab9cf-f810-44be-b63f-896127d90aeb.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/eb4ab9cf-f810-44be-b63f-896127d90aeb.jpg differ diff --git a/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20.jpg b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20.jpg new file mode 100644 index 0000000..f58c72d Binary files /dev/null and b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20.jpg differ diff --git a/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_flag.jpg b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_flag.jpg new file mode 100644 index 0000000..bfbdd9f Binary files /dev/null and b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_flag.jpg differ diff --git a/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_vl.jpg b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_vl.jpg new file mode 100644 index 0000000..cbc0d00 Binary files /dev/null and b/Apps/XinDianTu/Images/eb527c57-0678-4b38-8971-abc56346bf20_vl.jpg differ diff --git a/Apps/XinDianTu/Images/eb9fa0aa-7834-4e17-bbf0-b15b108b6a42.jpg b/Apps/XinDianTu/Images/eb9fa0aa-7834-4e17-bbf0-b15b108b6a42.jpg new file mode 100644 index 0000000..1d18739 Binary files /dev/null and b/Apps/XinDianTu/Images/eb9fa0aa-7834-4e17-bbf0-b15b108b6a42.jpg differ diff --git a/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755.jpg b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755.jpg new file mode 100644 index 0000000..03cf996 Binary files /dev/null and b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755.jpg differ diff --git a/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_flag.jpg b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_flag.jpg new file mode 100644 index 0000000..28b5f17 Binary files /dev/null and b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_vl.jpg b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_vl.jpg new file mode 100644 index 0000000..73bb2f6 Binary files /dev/null and b/Apps/XinDianTu/Images/ec2ec565-ddf7-478f-956f-bced7769c755_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ec2ef908-4a19-4670-844f-5dfa8697ff90.jpg b/Apps/XinDianTu/Images/ec2ef908-4a19-4670-844f-5dfa8697ff90.jpg new file mode 100644 index 0000000..067353d Binary files /dev/null and b/Apps/XinDianTu/Images/ec2ef908-4a19-4670-844f-5dfa8697ff90.jpg differ diff --git a/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.jpg b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.jpg new file mode 100644 index 0000000..16e01b0 Binary files /dev/null and b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.jpg differ diff --git a/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.json b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.json new file mode 100644 index 0000000..4f56da5 --- /dev/null +++ b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae.json @@ -0,0 +1,59 @@ +{ + "image": "ec43cedd-19bf-4ff0-b364-fbc9d68652ae.jpg", + "width": 720, + "height": 234, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 606 + ], + "click_point": [ + 121, + 444 + ] + }, + { + "id": 2, + "rect": [ + 19, + 620, + 700, + 871 + ], + "click_point": [ + 121, + 670 + ] + }, + { + "id": 3, + "rect": [ + 19, + 880, + 700, + 1126 + ], + "click_point": [ + 121, + 929 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1140, + 700, + 1374 + ], + "click_point": [ + 121, + 1186 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_flag.jpg b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_flag.jpg new file mode 100644 index 0000000..77875ac Binary files /dev/null and b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_vl.jpg b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_vl.jpg new file mode 100644 index 0000000..97e4d19 Binary files /dev/null and b/Apps/XinDianTu/Images/ec43cedd-19bf-4ff0-b364-fbc9d68652ae_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_1.jpg b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_1.jpg new file mode 100644 index 0000000..33ab618 Binary files /dev/null and b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_2.jpg b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_2.jpg new file mode 100644 index 0000000..c8b69d9 Binary files /dev/null and b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_3.jpg b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_3.jpg new file mode 100644 index 0000000..ad164ad Binary files /dev/null and b/Apps/XinDianTu/Images/ec49ca6bf638b8bfb64232175e5681a8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ec53a59f-5817-44d5-9705-9bc8cf0fd161.jpg b/Apps/XinDianTu/Images/ec53a59f-5817-44d5-9705-9bc8cf0fd161.jpg new file mode 100644 index 0000000..e2ba2e9 Binary files /dev/null and b/Apps/XinDianTu/Images/ec53a59f-5817-44d5-9705-9bc8cf0fd161.jpg differ diff --git a/Apps/XinDianTu/Images/ecc4a4d3-2bf6-4184-b980-050bb61df27c.jpg b/Apps/XinDianTu/Images/ecc4a4d3-2bf6-4184-b980-050bb61df27c.jpg new file mode 100644 index 0000000..ec73204 Binary files /dev/null and b/Apps/XinDianTu/Images/ecc4a4d3-2bf6-4184-b980-050bb61df27c.jpg differ diff --git a/Apps/XinDianTu/Images/ed012394-715f-463e-841c-813cf439c42b.jpg b/Apps/XinDianTu/Images/ed012394-715f-463e-841c-813cf439c42b.jpg new file mode 100644 index 0000000..74e4902 Binary files /dev/null and b/Apps/XinDianTu/Images/ed012394-715f-463e-841c-813cf439c42b.jpg differ diff --git a/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.jpg b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.jpg new file mode 100644 index 0000000..25eb312 Binary files /dev/null and b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.jpg differ diff --git a/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.json b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.json new file mode 100644 index 0000000..3f44c81 --- /dev/null +++ b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.json @@ -0,0 +1,59 @@ +{ + "image": "ed0175ac-7bd1-43ea-acaf-3ccef9579c2f.jpg", + "width": 720, + "height": 210, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 636 + ], + "click_point": [ + 121, + 450 + ] + }, + { + "id": 2, + "rect": [ + 19, + 644, + 700, + 893 + ], + "click_point": [ + 121, + 693 + ] + }, + { + "id": 3, + "rect": [ + 19, + 907, + 700, + 1156 + ], + "click_point": [ + 121, + 956 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1164, + 700, + 1374 + ], + "click_point": [ + 121, + 1206 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_flag.jpg b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_flag.jpg new file mode 100644 index 0000000..33dfd35 Binary files /dev/null and b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_vl.jpg b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_vl.jpg new file mode 100644 index 0000000..38a2206 Binary files /dev/null and b/Apps/XinDianTu/Images/ed0175ac-7bd1-43ea-acaf-3ccef9579c2f_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ed194aa9-f0a8-453e-bdf7-d5400b6800c9.jpg b/Apps/XinDianTu/Images/ed194aa9-f0a8-453e-bdf7-d5400b6800c9.jpg new file mode 100644 index 0000000..af3771e Binary files /dev/null and b/Apps/XinDianTu/Images/ed194aa9-f0a8-453e-bdf7-d5400b6800c9.jpg differ diff --git a/Apps/XinDianTu/Images/ed37927f-726d-484e-8bc3-a105702aca1b.jpg b/Apps/XinDianTu/Images/ed37927f-726d-484e-8bc3-a105702aca1b.jpg new file mode 100644 index 0000000..2b3994f Binary files /dev/null and b/Apps/XinDianTu/Images/ed37927f-726d-484e-8bc3-a105702aca1b.jpg differ diff --git a/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.jpg b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.jpg new file mode 100644 index 0000000..2d9238b Binary files /dev/null and b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.jpg differ diff --git a/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.json b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.json new file mode 100644 index 0000000..c886dab --- /dev/null +++ b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507.json @@ -0,0 +1,46 @@ +{ + "image": "ed414807-de0a-49b6-8126-de6afe923507.jpg", + "width": 720, + "height": 107, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 418, + 700, + 733 + ], + "click_point": [ + 121, + 481 + ] + }, + { + "id": 2, + "rect": [ + 19, + 747, + 700, + 996 + ], + "click_point": [ + 121, + 796 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1004, + 700, + 1253 + ], + "click_point": [ + 121, + 1053 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_flag.jpg b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_flag.jpg new file mode 100644 index 0000000..d011755 Binary files /dev/null and b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_vl.jpg b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_vl.jpg new file mode 100644 index 0000000..00e3f83 Binary files /dev/null and b/Apps/XinDianTu/Images/ed414807-de0a-49b6-8126-de6afe923507_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ed416060-2fd5-4430-bccf-7839f54b8ae8.jpg b/Apps/XinDianTu/Images/ed416060-2fd5-4430-bccf-7839f54b8ae8.jpg new file mode 100644 index 0000000..3f632a4 Binary files /dev/null and b/Apps/XinDianTu/Images/ed416060-2fd5-4430-bccf-7839f54b8ae8.jpg differ diff --git a/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_1.jpg b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_1.jpg new file mode 100644 index 0000000..6d28958 Binary files /dev/null and b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_2.jpg b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_2.jpg new file mode 100644 index 0000000..1761e68 Binary files /dev/null and b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_3.jpg b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_3.jpg new file mode 100644 index 0000000..a2db7a4 Binary files /dev/null and b/Apps/XinDianTu/Images/ee6d4c3c17ec6d667a68058c02a4cc90_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_1.jpg b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_1.jpg new file mode 100644 index 0000000..b32b9dd Binary files /dev/null and b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_2.jpg b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_2.jpg new file mode 100644 index 0000000..e2fcd14 Binary files /dev/null and b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_3.jpg b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_3.jpg new file mode 100644 index 0000000..68d5332 Binary files /dev/null and b/Apps/XinDianTu/Images/eecdbe36b630faa39fc2b96eed7312fb_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/ef088097-19da-4bd3-982e-81beb89b7d61.jpg b/Apps/XinDianTu/Images/ef088097-19da-4bd3-982e-81beb89b7d61.jpg new file mode 100644 index 0000000..c6abbb0 Binary files /dev/null and b/Apps/XinDianTu/Images/ef088097-19da-4bd3-982e-81beb89b7d61.jpg differ diff --git a/Apps/XinDianTu/Images/efcbc4c4-5a2d-4861-9ef7-39562cbfbb98.jpg b/Apps/XinDianTu/Images/efcbc4c4-5a2d-4861-9ef7-39562cbfbb98.jpg new file mode 100644 index 0000000..2c0477f Binary files /dev/null and b/Apps/XinDianTu/Images/efcbc4c4-5a2d-4861-9ef7-39562cbfbb98.jpg differ diff --git a/Apps/XinDianTu/Images/efe67b36-214d-4b89-992b-d17045c4e655.jpg b/Apps/XinDianTu/Images/efe67b36-214d-4b89-992b-d17045c4e655.jpg new file mode 100644 index 0000000..7cf9962 Binary files /dev/null and b/Apps/XinDianTu/Images/efe67b36-214d-4b89-992b-d17045c4e655.jpg differ diff --git a/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.jpg b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.jpg new file mode 100644 index 0000000..527dce8 Binary files /dev/null and b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.jpg differ diff --git a/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.json b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.json new file mode 100644 index 0000000..d197a71 --- /dev/null +++ b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece.json @@ -0,0 +1,46 @@ +{ + "image": "f019de1b-682f-436c-9f83-881a8218aece.jpg", + "width": 720, + "height": 170, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 425, + 700, + 671 + ], + "click_point": [ + 121, + 474 + ] + }, + { + "id": 2, + "rect": [ + 19, + 684, + 700, + 932 + ], + "click_point": [ + 121, + 733 + ] + }, + { + "id": 3, + "rect": [ + 19, + 945, + 700, + 1191 + ], + "click_point": [ + 121, + 994 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_flag.jpg b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_flag.jpg new file mode 100644 index 0000000..ca11758 Binary files /dev/null and b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_vl.jpg b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_vl.jpg new file mode 100644 index 0000000..77a9944 Binary files /dev/null and b/Apps/XinDianTu/Images/f019de1b-682f-436c-9f83-881a8218aece_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_1.jpg b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_1.jpg new file mode 100644 index 0000000..97229e5 Binary files /dev/null and b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_2.jpg b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_2.jpg new file mode 100644 index 0000000..478bb82 Binary files /dev/null and b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_3.jpg b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_3.jpg new file mode 100644 index 0000000..c91b15e Binary files /dev/null and b/Apps/XinDianTu/Images/f0d7abce940ff1be278c9236acab19c3_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f0fc5c50-6f7b-4d11-a5d0-6c85bb8e7f1c.jpg b/Apps/XinDianTu/Images/f0fc5c50-6f7b-4d11-a5d0-6c85bb8e7f1c.jpg new file mode 100644 index 0000000..1e20774 Binary files /dev/null and b/Apps/XinDianTu/Images/f0fc5c50-6f7b-4d11-a5d0-6c85bb8e7f1c.jpg differ diff --git a/Apps/XinDianTu/Images/f12a6756-6ad1-47bf-bf59-39183f8dac60.jpg b/Apps/XinDianTu/Images/f12a6756-6ad1-47bf-bf59-39183f8dac60.jpg new file mode 100644 index 0000000..832041e Binary files /dev/null and b/Apps/XinDianTu/Images/f12a6756-6ad1-47bf-bf59-39183f8dac60.jpg differ diff --git a/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_1.jpg b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_1.jpg new file mode 100644 index 0000000..aafecf4 Binary files /dev/null and b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_2.jpg b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_2.jpg new file mode 100644 index 0000000..0906371 Binary files /dev/null and b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_3.jpg b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_3.jpg new file mode 100644 index 0000000..9657ea0 Binary files /dev/null and b/Apps/XinDianTu/Images/f144ea59c42513e9d0bd958333e83f93_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_1.jpg b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_1.jpg new file mode 100644 index 0000000..92055eb Binary files /dev/null and b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_2.jpg b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_2.jpg new file mode 100644 index 0000000..51c14ab Binary files /dev/null and b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_3.jpg b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_3.jpg new file mode 100644 index 0000000..65bca81 Binary files /dev/null and b/Apps/XinDianTu/Images/f15bcd6716048e4a3f54fcf81928d2ef_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e.jpg b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e.jpg new file mode 100644 index 0000000..b957832 Binary files /dev/null and b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e.jpg differ diff --git a/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_flag.jpg b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_flag.jpg new file mode 100644 index 0000000..35b76dc Binary files /dev/null and b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_vl.jpg b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_vl.jpg new file mode 100644 index 0000000..ad9506b Binary files /dev/null and b/Apps/XinDianTu/Images/f1a19a85-430d-4580-ad7d-93acbafcd82e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f1c48a2c-c94f-49f4-b4bd-a3e3f5ef4e92.jpg b/Apps/XinDianTu/Images/f1c48a2c-c94f-49f4-b4bd-a3e3f5ef4e92.jpg new file mode 100644 index 0000000..f1d80c3 Binary files /dev/null and b/Apps/XinDianTu/Images/f1c48a2c-c94f-49f4-b4bd-a3e3f5ef4e92.jpg differ diff --git a/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0.jpg b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0.jpg new file mode 100644 index 0000000..2859063 Binary files /dev/null and b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0.jpg differ diff --git a/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_flag.jpg b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_flag.jpg new file mode 100644 index 0000000..5ea51ce Binary files /dev/null and b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_vl.jpg b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_vl.jpg new file mode 100644 index 0000000..340994e Binary files /dev/null and b/Apps/XinDianTu/Images/f239160b-8b04-4d3f-a798-db09a5bb62b0_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_1.jpg b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_1.jpg new file mode 100644 index 0000000..6c50261 Binary files /dev/null and b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_2.jpg b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_2.jpg new file mode 100644 index 0000000..70ef028 Binary files /dev/null and b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_3.jpg b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_3.jpg new file mode 100644 index 0000000..29b0873 Binary files /dev/null and b/Apps/XinDianTu/Images/f29489105879b81273d8b63f726cb968_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f294effa-7011-49c8-ad5d-8d38a401005a.jpg b/Apps/XinDianTu/Images/f294effa-7011-49c8-ad5d-8d38a401005a.jpg new file mode 100644 index 0000000..3d4ed06 Binary files /dev/null and b/Apps/XinDianTu/Images/f294effa-7011-49c8-ad5d-8d38a401005a.jpg differ diff --git a/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.jpg b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.jpg new file mode 100644 index 0000000..f5a8fb5 Binary files /dev/null and b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.jpg differ diff --git a/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.json b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.json new file mode 100644 index 0000000..cfec46a --- /dev/null +++ b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e.json @@ -0,0 +1,46 @@ +{ + "image": "f29afa9a-bc48-400a-86fc-6975a9384b2e.jpg", + "width": 720, + "height": 246, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 514, + 700, + 760 + ], + "click_point": [ + 121, + 563 + ] + }, + { + "id": 2, + "rect": [ + 19, + 769, + 700, + 1020 + ], + "click_point": [ + 121, + 819 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1034, + 700, + 1280 + ], + "click_point": [ + 121, + 1083 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_flag.jpg b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_flag.jpg new file mode 100644 index 0000000..b631839 Binary files /dev/null and b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_vl.jpg b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_vl.jpg new file mode 100644 index 0000000..a1ec600 Binary files /dev/null and b/Apps/XinDianTu/Images/f29afa9a-bc48-400a-86fc-6975a9384b2e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_1.jpg b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_1.jpg new file mode 100644 index 0000000..119399b Binary files /dev/null and b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_2.jpg b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_2.jpg new file mode 100644 index 0000000..de4aa0c Binary files /dev/null and b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_3.jpg b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_3.jpg new file mode 100644 index 0000000..be0541e Binary files /dev/null and b/Apps/XinDianTu/Images/f29ce8f15c2602373402b5c86f5f38d2_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_1.jpg b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_1.jpg new file mode 100644 index 0000000..7c170ec Binary files /dev/null and b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_2.jpg b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_2.jpg new file mode 100644 index 0000000..c9553a4 Binary files /dev/null and b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_3.jpg b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_3.jpg new file mode 100644 index 0000000..fdfd02b Binary files /dev/null and b/Apps/XinDianTu/Images/f2a2a2c5115e54a4999f688a484d8df5_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.jpg b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.jpg new file mode 100644 index 0000000..ac67502 Binary files /dev/null and b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.jpg differ diff --git a/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.json b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.json new file mode 100644 index 0000000..2ccf470 --- /dev/null +++ b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860.json @@ -0,0 +1,46 @@ +{ + "image": "f2d38b10-bec8-40fb-9cdc-f161dff05860.jpg", + "width": 720, + "height": 106, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 420, + 700, + 734 + ], + "click_point": [ + 121, + 482 + ] + }, + { + "id": 2, + "rect": [ + 19, + 748, + 700, + 999 + ], + "click_point": [ + 121, + 798 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1008, + 700, + 1254 + ], + "click_point": [ + 121, + 1057 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_flag.jpg b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_flag.jpg new file mode 100644 index 0000000..436897f Binary files /dev/null and b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_vl.jpg b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_vl.jpg new file mode 100644 index 0000000..50babea Binary files /dev/null and b/Apps/XinDianTu/Images/f2d38b10-bec8-40fb-9cdc-f161dff05860_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f2e60b4b-eb10-41b3-b777-ff2e46d69ae9.jpg b/Apps/XinDianTu/Images/f2e60b4b-eb10-41b3-b777-ff2e46d69ae9.jpg new file mode 100644 index 0000000..fe098a0 Binary files /dev/null and b/Apps/XinDianTu/Images/f2e60b4b-eb10-41b3-b777-ff2e46d69ae9.jpg differ diff --git a/Apps/XinDianTu/Images/f2f288fa-fd67-45d3-9a31-f3a8cd07b06c.jpg b/Apps/XinDianTu/Images/f2f288fa-fd67-45d3-9a31-f3a8cd07b06c.jpg new file mode 100644 index 0000000..e9b28a8 Binary files /dev/null and b/Apps/XinDianTu/Images/f2f288fa-fd67-45d3-9a31-f3a8cd07b06c.jpg differ diff --git a/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_1.jpg b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_1.jpg new file mode 100644 index 0000000..6818c7b Binary files /dev/null and b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_2.jpg b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_2.jpg new file mode 100644 index 0000000..4d5959a Binary files /dev/null and b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_3.jpg b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_3.jpg new file mode 100644 index 0000000..e86f98a Binary files /dev/null and b/Apps/XinDianTu/Images/f32f08de3f891f29242a30a73b29857f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f35a2898-081a-48ce-b6b2-a3eabff71540.jpg b/Apps/XinDianTu/Images/f35a2898-081a-48ce-b6b2-a3eabff71540.jpg new file mode 100644 index 0000000..c9fb58a Binary files /dev/null and b/Apps/XinDianTu/Images/f35a2898-081a-48ce-b6b2-a3eabff71540.jpg differ diff --git a/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5.jpg b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5.jpg new file mode 100644 index 0000000..dea2e75 Binary files /dev/null and b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5.jpg differ diff --git a/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_flag.jpg b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_flag.jpg new file mode 100644 index 0000000..e620dcb Binary files /dev/null and b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_vl.jpg b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_vl.jpg new file mode 100644 index 0000000..322a091 Binary files /dev/null and b/Apps/XinDianTu/Images/f37bba88-ea60-4997-9042-ce37291a93d5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_1.jpg b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_1.jpg new file mode 100644 index 0000000..f7abb8d Binary files /dev/null and b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_2.jpg b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_2.jpg new file mode 100644 index 0000000..d353d06 Binary files /dev/null and b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_3.jpg b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_3.jpg new file mode 100644 index 0000000..af076c5 Binary files /dev/null and b/Apps/XinDianTu/Images/f3c2647ac7cf615f92c8b4172f29818f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_1.jpg b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_1.jpg new file mode 100644 index 0000000..0760055 Binary files /dev/null and b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_2.jpg b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_2.jpg new file mode 100644 index 0000000..ea79ce3 Binary files /dev/null and b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_3.jpg b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_3.jpg new file mode 100644 index 0000000..488252a Binary files /dev/null and b/Apps/XinDianTu/Images/f430fb330c7a6bb92855b26a0485d9d8_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f4816884-6719-4e10-8938-d436e4d5b14f.jpg b/Apps/XinDianTu/Images/f4816884-6719-4e10-8938-d436e4d5b14f.jpg new file mode 100644 index 0000000..3cb0246 Binary files /dev/null and b/Apps/XinDianTu/Images/f4816884-6719-4e10-8938-d436e4d5b14f.jpg differ diff --git a/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.jpg b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.jpg new file mode 100644 index 0000000..a18faa8 Binary files /dev/null and b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.jpg differ diff --git a/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.json b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.json new file mode 100644 index 0000000..0449de1 --- /dev/null +++ b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440.json @@ -0,0 +1,46 @@ +{ + "image": "f4937ae5-2d37-4aa8-a864-62a85c427440.jpg", + "width": 720, + "height": 162, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 435, + 700, + 684 + ], + "click_point": [ + 121, + 484 + ] + }, + { + "id": 2, + "rect": [ + 19, + 692, + 700, + 941 + ], + "click_point": [ + 121, + 741 + ] + }, + { + "id": 3, + "rect": [ + 19, + 955, + 700, + 1204 + ], + "click_point": [ + 121, + 1004 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_flag.jpg b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_flag.jpg new file mode 100644 index 0000000..b7155a3 Binary files /dev/null and b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_vl.jpg b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_vl.jpg new file mode 100644 index 0000000..44f3925 Binary files /dev/null and b/Apps/XinDianTu/Images/f4937ae5-2d37-4aa8-a864-62a85c427440_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f567453e-839d-4077-988b-d305621383d8.jpg b/Apps/XinDianTu/Images/f567453e-839d-4077-988b-d305621383d8.jpg new file mode 100644 index 0000000..aec5300 Binary files /dev/null and b/Apps/XinDianTu/Images/f567453e-839d-4077-988b-d305621383d8.jpg differ diff --git a/Apps/XinDianTu/Images/f5afd757-e5c1-4d60-8fdc-22630afcce03.jpg b/Apps/XinDianTu/Images/f5afd757-e5c1-4d60-8fdc-22630afcce03.jpg new file mode 100644 index 0000000..e897cb2 Binary files /dev/null and b/Apps/XinDianTu/Images/f5afd757-e5c1-4d60-8fdc-22630afcce03.jpg differ diff --git a/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_1.jpg b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_1.jpg new file mode 100644 index 0000000..1b1eeda Binary files /dev/null and b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_2.jpg b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_2.jpg new file mode 100644 index 0000000..5dba9dc Binary files /dev/null and b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_3.jpg b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_3.jpg new file mode 100644 index 0000000..ad633fa Binary files /dev/null and b/Apps/XinDianTu/Images/f5ebd49025b35e20299bb8c23a36696f_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_1.jpg b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_1.jpg new file mode 100644 index 0000000..4e64045 Binary files /dev/null and b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_2.jpg b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_2.jpg new file mode 100644 index 0000000..4e64045 Binary files /dev/null and b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_3.jpg b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_3.jpg new file mode 100644 index 0000000..4e64045 Binary files /dev/null and b/Apps/XinDianTu/Images/f5fb9ec52a911ad70dec129a2a49ec4b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f617a895-fdfc-440b-a6f1-3e1d241e359e.jpg b/Apps/XinDianTu/Images/f617a895-fdfc-440b-a6f1-3e1d241e359e.jpg new file mode 100644 index 0000000..2feb0bb Binary files /dev/null and b/Apps/XinDianTu/Images/f617a895-fdfc-440b-a6f1-3e1d241e359e.jpg differ diff --git a/Apps/XinDianTu/Images/f63243fc-030a-4865-bf54-bfdbbc922bda.jpg b/Apps/XinDianTu/Images/f63243fc-030a-4865-bf54-bfdbbc922bda.jpg new file mode 100644 index 0000000..ef554ae Binary files /dev/null and b/Apps/XinDianTu/Images/f63243fc-030a-4865-bf54-bfdbbc922bda.jpg differ diff --git a/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.jpg b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.jpg new file mode 100644 index 0000000..e216ba6 Binary files /dev/null and b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.jpg differ diff --git a/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.json b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.json new file mode 100644 index 0000000..c59164b --- /dev/null +++ b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d.json @@ -0,0 +1,46 @@ +{ + "image": "f6335685-286b-4d35-af45-f1821747698d.jpg", + "width": 720, + "height": 251, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 448, + 700, + 694 + ], + "click_point": [ + 121, + 497 + ] + }, + { + "id": 2, + "rect": [ + 19, + 708, + 700, + 1022 + ], + "click_point": [ + 121, + 770 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1036, + 700, + 1287 + ], + "click_point": [ + 121, + 1086 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_flag.jpg b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_flag.jpg new file mode 100644 index 0000000..bef4e39 Binary files /dev/null and b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_vl.jpg b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_vl.jpg new file mode 100644 index 0000000..db21238 Binary files /dev/null and b/Apps/XinDianTu/Images/f6335685-286b-4d35-af45-f1821747698d_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_1.jpg b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_1.jpg new file mode 100644 index 0000000..c8b31ff Binary files /dev/null and b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_2.jpg b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_2.jpg new file mode 100644 index 0000000..c8b31ff Binary files /dev/null and b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_3.jpg b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_3.jpg new file mode 100644 index 0000000..c8b31ff Binary files /dev/null and b/Apps/XinDianTu/Images/f635b936d51a14de71f832b57a1e4631_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.jpg b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.jpg new file mode 100644 index 0000000..ad763f5 Binary files /dev/null and b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.jpg differ diff --git a/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.json b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.json new file mode 100644 index 0000000..55c160d --- /dev/null +++ b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b.json @@ -0,0 +1,46 @@ +{ + "image": "f6491ab8-4457-409e-a552-d8bb4f33895b.jpg", + "width": 720, + "height": 213, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 584, + 700, + 860 + ], + "click_point": [ + 121, + 639 + ] + }, + { + "id": 2, + "rect": [ + 19, + 872, + 700, + 1148 + ], + "click_point": [ + 121, + 927 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1161, + 700, + 1374 + ], + "click_point": [ + 121, + 1203 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_flag.jpg b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_flag.jpg new file mode 100644 index 0000000..87147a5 Binary files /dev/null and b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_vl.jpg b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_vl.jpg new file mode 100644 index 0000000..cf3fec9 Binary files /dev/null and b/Apps/XinDianTu/Images/f6491ab8-4457-409e-a552-d8bb4f33895b_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.jpg b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.jpg new file mode 100644 index 0000000..09a09a0 Binary files /dev/null and b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.jpg differ diff --git a/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.json b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.json new file mode 100644 index 0000000..b8ab94c --- /dev/null +++ b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef.json @@ -0,0 +1,46 @@ +{ + "image": "f6529016-ccf1-4a71-8a61-cb45ebfb8cef.jpg", + "width": 720, + "height": 248, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 529, + 700, + 775 + ], + "click_point": [ + 121, + 578 + ] + }, + { + "id": 2, + "rect": [ + 19, + 788, + 700, + 1063 + ], + "click_point": [ + 121, + 843 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1076, + 700, + 1324 + ], + "click_point": [ + 121, + 1125 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_flag.jpg b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_flag.jpg new file mode 100644 index 0000000..488a216 Binary files /dev/null and b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_vl.jpg b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_vl.jpg new file mode 100644 index 0000000..f616e02 Binary files /dev/null and b/Apps/XinDianTu/Images/f6529016-ccf1-4a71-8a61-cb45ebfb8cef_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.jpg b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.jpg new file mode 100644 index 0000000..16a0e6d Binary files /dev/null and b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.jpg differ diff --git a/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.json b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.json new file mode 100644 index 0000000..7dcba2c --- /dev/null +++ b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846.json @@ -0,0 +1,46 @@ +{ + "image": "f666c44d-5f4e-46f7-9350-498901d8b846.jpg", + "width": 720, + "height": 114, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 452, + 700, + 703 + ], + "click_point": [ + 121, + 502 + ] + }, + { + "id": 2, + "rect": [ + 19, + 712, + 700, + 991 + ], + "click_point": [ + 121, + 767 + ] + }, + { + "id": 3, + "rect": [ + 19, + 1000, + 700, + 1246 + ], + "click_point": [ + 121, + 1049 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_flag.jpg b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_flag.jpg new file mode 100644 index 0000000..a8e4110 Binary files /dev/null and b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_vl.jpg b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_vl.jpg new file mode 100644 index 0000000..10a98b8 Binary files /dev/null and b/Apps/XinDianTu/Images/f666c44d-5f4e-46f7-9350-498901d8b846_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f69f73fa-6c88-4a70-9b81-068d1fa8ac74.jpg b/Apps/XinDianTu/Images/f69f73fa-6c88-4a70-9b81-068d1fa8ac74.jpg new file mode 100644 index 0000000..e7b671e Binary files /dev/null and b/Apps/XinDianTu/Images/f69f73fa-6c88-4a70-9b81-068d1fa8ac74.jpg differ diff --git a/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.jpg b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.jpg new file mode 100644 index 0000000..f9c9677 Binary files /dev/null and b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.jpg differ diff --git a/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.json b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.json new file mode 100644 index 0000000..458f9b7 --- /dev/null +++ b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e.json @@ -0,0 +1,33 @@ +{ + "image": "f6a8607a-8182-4832-952c-4faa1ce3bc0e.jpg", + "width": 720, + "height": 249, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 772, + 712, + 1021 + ], + "click_point": [ + 122, + 821 + ] + }, + { + "id": 2, + "rect": [ + 19, + 1035, + 712, + 1284 + ], + "click_point": [ + 122, + 1084 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_flag.jpg b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_flag.jpg new file mode 100644 index 0000000..a5ca51a Binary files /dev/null and b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_vl.jpg b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_vl.jpg new file mode 100644 index 0000000..62a8151 Binary files /dev/null and b/Apps/XinDianTu/Images/f6a8607a-8182-4832-952c-4faa1ce3bc0e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f6cb0718-2c19-42e1-8ce2-f941e767b748.jpg b/Apps/XinDianTu/Images/f6cb0718-2c19-42e1-8ce2-f941e767b748.jpg new file mode 100644 index 0000000..873ee5a Binary files /dev/null and b/Apps/XinDianTu/Images/f6cb0718-2c19-42e1-8ce2-f941e767b748.jpg differ diff --git a/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.jpg b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.jpg new file mode 100644 index 0000000..0a72ebd Binary files /dev/null and b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.jpg differ diff --git a/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.json b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.json new file mode 100644 index 0000000..f7abf6e --- /dev/null +++ b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.json @@ -0,0 +1,59 @@ +{ + "image": "f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5.jpg", + "width": 720, + "height": 214, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 598 + ], + "click_point": [ + 121, + 442 + ] + }, + { + "id": 2, + "rect": [ + 19, + 612, + 700, + 863 + ], + "click_point": [ + 121, + 662 + ] + }, + { + "id": 3, + "rect": [ + 19, + 872, + 700, + 1151 + ], + "click_point": [ + 121, + 927 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1160, + 700, + 1374 + ], + "click_point": [ + 121, + 1202 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_flag.jpg b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_flag.jpg new file mode 100644 index 0000000..c8b07e1 Binary files /dev/null and b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_vl.jpg b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_vl.jpg new file mode 100644 index 0000000..5d72921 Binary files /dev/null and b/Apps/XinDianTu/Images/f6de15f4-749b-43d3-9b3d-2ae2fbe3a9a5_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f6ece151-331e-4846-931e-614893087d5c.jpg b/Apps/XinDianTu/Images/f6ece151-331e-4846-931e-614893087d5c.jpg new file mode 100644 index 0000000..b09c613 Binary files /dev/null and b/Apps/XinDianTu/Images/f6ece151-331e-4846-931e-614893087d5c.jpg differ diff --git a/Apps/XinDianTu/Images/f79617fb-4c08-409a-a286-4fcb91150cc9.jpg b/Apps/XinDianTu/Images/f79617fb-4c08-409a-a286-4fcb91150cc9.jpg new file mode 100644 index 0000000..b3a922f Binary files /dev/null and b/Apps/XinDianTu/Images/f79617fb-4c08-409a-a286-4fcb91150cc9.jpg differ diff --git a/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969.jpg b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969.jpg new file mode 100644 index 0000000..2953a95 Binary files /dev/null and b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969.jpg differ diff --git a/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_flag.jpg b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_flag.jpg new file mode 100644 index 0000000..8ada3ec Binary files /dev/null and b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_vl.jpg b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_vl.jpg new file mode 100644 index 0000000..270d03b Binary files /dev/null and b/Apps/XinDianTu/Images/f835b82f-80ae-426b-9d13-bca58300e969_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f9840545-58ee-47c9-adca-d94c27d6fdec.jpg b/Apps/XinDianTu/Images/f9840545-58ee-47c9-adca-d94c27d6fdec.jpg new file mode 100644 index 0000000..4ae43c4 Binary files /dev/null and b/Apps/XinDianTu/Images/f9840545-58ee-47c9-adca-d94c27d6fdec.jpg differ diff --git a/Apps/XinDianTu/Images/f987e183-1c00-4566-9a93-7fa1819791f0.jpg b/Apps/XinDianTu/Images/f987e183-1c00-4566-9a93-7fa1819791f0.jpg new file mode 100644 index 0000000..2ad26f4 Binary files /dev/null and b/Apps/XinDianTu/Images/f987e183-1c00-4566-9a93-7fa1819791f0.jpg differ diff --git a/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.jpg b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.jpg new file mode 100644 index 0000000..82a16c7 Binary files /dev/null and b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.jpg differ diff --git a/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.json b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.json new file mode 100644 index 0000000..71275e7 --- /dev/null +++ b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e.json @@ -0,0 +1,59 @@ +{ + "image": "f9aff2b7-013b-4282-a584-61726750509e.jpg", + "width": 720, + "height": 170, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 574 + ], + "click_point": [ + 121, + 438 + ] + }, + { + "id": 2, + "rect": [ + 19, + 588, + 700, + 902 + ], + "click_point": [ + 121, + 650 + ] + }, + { + "id": 3, + "rect": [ + 19, + 916, + 700, + 1190 + ], + "click_point": [ + 121, + 970 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1204, + 700, + 1374 + ], + "click_point": [ + 121, + 1238 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_flag.jpg b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_flag.jpg new file mode 100644 index 0000000..452ed6a Binary files /dev/null and b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_flag.jpg differ diff --git a/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_vl.jpg b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_vl.jpg new file mode 100644 index 0000000..e026c68 Binary files /dev/null and b/Apps/XinDianTu/Images/f9aff2b7-013b-4282-a584-61726750509e_vl.jpg differ diff --git a/Apps/XinDianTu/Images/f9d6a09c-4d21-425b-b21d-417104a4d29a.jpg b/Apps/XinDianTu/Images/f9d6a09c-4d21-425b-b21d-417104a4d29a.jpg new file mode 100644 index 0000000..fc89083 Binary files /dev/null and b/Apps/XinDianTu/Images/f9d6a09c-4d21-425b-b21d-417104a4d29a.jpg differ diff --git a/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_1.jpg b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_1.jpg new file mode 100644 index 0000000..bfed928 Binary files /dev/null and b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_2.jpg b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_2.jpg new file mode 100644 index 0000000..6b0c1b0 Binary files /dev/null and b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_3.jpg b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_3.jpg new file mode 100644 index 0000000..1119b49 Binary files /dev/null and b/Apps/XinDianTu/Images/fa68982416daf9add49d0a8e7025a536_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fae6eab2-e36d-4061-a4a7-19fae682d06e.jpg b/Apps/XinDianTu/Images/fae6eab2-e36d-4061-a4a7-19fae682d06e.jpg new file mode 100644 index 0000000..9e8e56c Binary files /dev/null and b/Apps/XinDianTu/Images/fae6eab2-e36d-4061-a4a7-19fae682d06e.jpg differ diff --git a/Apps/XinDianTu/Images/faea88f1-1b32-4948-a5ca-52a386818763.jpg b/Apps/XinDianTu/Images/faea88f1-1b32-4948-a5ca-52a386818763.jpg new file mode 100644 index 0000000..aac98b9 Binary files /dev/null and b/Apps/XinDianTu/Images/faea88f1-1b32-4948-a5ca-52a386818763.jpg differ diff --git a/Apps/XinDianTu/Images/fb1f39bc-b5ce-4c5e-beb1-98a594fa6e91.jpg b/Apps/XinDianTu/Images/fb1f39bc-b5ce-4c5e-beb1-98a594fa6e91.jpg new file mode 100644 index 0000000..6cdb88e Binary files /dev/null and b/Apps/XinDianTu/Images/fb1f39bc-b5ce-4c5e-beb1-98a594fa6e91.jpg differ diff --git a/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.jpg b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.jpg new file mode 100644 index 0000000..7e998a8 Binary files /dev/null and b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.jpg differ diff --git a/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.json b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.json new file mode 100644 index 0000000..52ce312 --- /dev/null +++ b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd.json @@ -0,0 +1,59 @@ +{ + "image": "fb8665d1-5c1d-4918-9630-426e36acadcd.jpg", + "width": 720, + "height": 272, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 614 + ], + "click_point": [ + 121, + 446 + ] + }, + { + "id": 2, + "rect": [ + 19, + 628, + 700, + 879 + ], + "click_point": [ + 121, + 678 + ] + }, + { + "id": 3, + "rect": [ + 19, + 888, + 700, + 1088 + ], + "click_point": [ + 121, + 928 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1102, + 700, + 1374 + ], + "click_point": [ + 121, + 1156 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_flag.jpg b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_flag.jpg new file mode 100644 index 0000000..fcb0451 Binary files /dev/null and b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_flag.jpg differ diff --git a/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_vl.jpg b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_vl.jpg new file mode 100644 index 0000000..9684bc6 Binary files /dev/null and b/Apps/XinDianTu/Images/fb8665d1-5c1d-4918-9630-426e36acadcd_vl.jpg differ diff --git a/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2.jpg b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2.jpg new file mode 100644 index 0000000..fe485b6 Binary files /dev/null and b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2.jpg differ diff --git a/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_flag.jpg b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_flag.jpg new file mode 100644 index 0000000..e6ffba8 Binary files /dev/null and b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_flag.jpg differ diff --git a/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_vl.jpg b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_vl.jpg new file mode 100644 index 0000000..d7a62d3 Binary files /dev/null and b/Apps/XinDianTu/Images/fb9cf8d5-c47a-4db4-8157-dca9c37bccf2_vl.jpg differ diff --git a/Apps/XinDianTu/Images/fc0b1697-111f-43e8-b600-c55b49baff04.jpg b/Apps/XinDianTu/Images/fc0b1697-111f-43e8-b600-c55b49baff04.jpg new file mode 100644 index 0000000..3344490 Binary files /dev/null and b/Apps/XinDianTu/Images/fc0b1697-111f-43e8-b600-c55b49baff04.jpg differ diff --git a/Apps/XinDianTu/Images/fc23c33b-bb03-4f5b-abd7-86b1b649fc84.jpg b/Apps/XinDianTu/Images/fc23c33b-bb03-4f5b-abd7-86b1b649fc84.jpg new file mode 100644 index 0000000..46a5b56 Binary files /dev/null and b/Apps/XinDianTu/Images/fc23c33b-bb03-4f5b-abd7-86b1b649fc84.jpg differ diff --git a/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_1.jpg b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_1.jpg new file mode 100644 index 0000000..c262bf0 Binary files /dev/null and b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_2.jpg b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_2.jpg new file mode 100644 index 0000000..f5b28a5 Binary files /dev/null and b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_3.jpg b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_3.jpg new file mode 100644 index 0000000..ce1fe37 Binary files /dev/null and b/Apps/XinDianTu/Images/fc3763fa8686046b557c5b2af03e6d0b_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_1.jpg b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_1.jpg new file mode 100644 index 0000000..cab74f7 Binary files /dev/null and b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_2.jpg b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_2.jpg new file mode 100644 index 0000000..6820015 Binary files /dev/null and b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_3.jpg b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_3.jpg new file mode 100644 index 0000000..8939437 Binary files /dev/null and b/Apps/XinDianTu/Images/fc9839f2be583a32277f3f0429ece384_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_1.jpg b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_1.jpg new file mode 100644 index 0000000..50195c3 Binary files /dev/null and b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_2.jpg b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_2.jpg new file mode 100644 index 0000000..0d1ec64 Binary files /dev/null and b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_3.jpg b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_3.jpg new file mode 100644 index 0000000..8715468 Binary files /dev/null and b/Apps/XinDianTu/Images/fcca48b6fdf167f3fd980f8a325a6c29_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fcf288f9-2a55-4e2b-b501-e8b4d90b7541.jpg b/Apps/XinDianTu/Images/fcf288f9-2a55-4e2b-b501-e8b4d90b7541.jpg new file mode 100644 index 0000000..1e1847d Binary files /dev/null and b/Apps/XinDianTu/Images/fcf288f9-2a55-4e2b-b501-e8b4d90b7541.jpg differ diff --git a/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_1.jpg b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_1.jpg new file mode 100644 index 0000000..17b1cd9 Binary files /dev/null and b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_2.jpg b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_2.jpg new file mode 100644 index 0000000..17b1cd9 Binary files /dev/null and b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_3.jpg b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_3.jpg new file mode 100644 index 0000000..17b1cd9 Binary files /dev/null and b/Apps/XinDianTu/Images/fd51955eb6762f3c5e94e832daf1909c_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fd811a1e-170e-4e4e-94c6-dd64d4c82236.jpg b/Apps/XinDianTu/Images/fd811a1e-170e-4e4e-94c6-dd64d4c82236.jpg new file mode 100644 index 0000000..980e6a2 Binary files /dev/null and b/Apps/XinDianTu/Images/fd811a1e-170e-4e4e-94c6-dd64d4c82236.jpg differ diff --git a/Apps/XinDianTu/Images/fd91f38c-b013-4fb3-b80c-ef7b5aad1856.jpg b/Apps/XinDianTu/Images/fd91f38c-b013-4fb3-b80c-ef7b5aad1856.jpg new file mode 100644 index 0000000..fddb1bf Binary files /dev/null and b/Apps/XinDianTu/Images/fd91f38c-b013-4fb3-b80c-ef7b5aad1856.jpg differ diff --git a/Apps/XinDianTu/Images/fd94851a-a5a4-455f-b243-614045fab92a.jpg b/Apps/XinDianTu/Images/fd94851a-a5a4-455f-b243-614045fab92a.jpg new file mode 100644 index 0000000..6bb255c Binary files /dev/null and b/Apps/XinDianTu/Images/fd94851a-a5a4-455f-b243-614045fab92a.jpg differ diff --git a/Apps/XinDianTu/Images/fe34ab6a-4551-450d-9e13-b9399ddbb750.jpg b/Apps/XinDianTu/Images/fe34ab6a-4551-450d-9e13-b9399ddbb750.jpg new file mode 100644 index 0000000..7bc54c1 Binary files /dev/null and b/Apps/XinDianTu/Images/fe34ab6a-4551-450d-9e13-b9399ddbb750.jpg differ diff --git a/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_1.jpg b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_1.jpg new file mode 100644 index 0000000..86e6b6f Binary files /dev/null and b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_1.jpg differ diff --git a/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_2.jpg b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_2.jpg new file mode 100644 index 0000000..1ad635e Binary files /dev/null and b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_2.jpg differ diff --git a/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_3.jpg b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_3.jpg new file mode 100644 index 0000000..91b84e6 Binary files /dev/null and b/Apps/XinDianTu/Images/fe3ef7db8de1a0ea1906c21a17b97007_price_3.jpg differ diff --git a/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.jpg b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.jpg new file mode 100644 index 0000000..de31833 Binary files /dev/null and b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.jpg differ diff --git a/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.json b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.json new file mode 100644 index 0000000..fd7c8f4 --- /dev/null +++ b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9.json @@ -0,0 +1,46 @@ +{ + "image": "fe6d36ac-1903-4598-8eb7-ea94185527b9.jpg", + "width": 720, + "height": 122, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 472, + 700, + 718 + ], + "click_point": [ + 121, + 521 + ] + }, + { + "id": 2, + "rect": [ + 19, + 732, + 700, + 983 + ], + "click_point": [ + 121, + 782 + ] + }, + { + "id": 3, + "rect": [ + 19, + 992, + 700, + 1238 + ], + "click_point": [ + 121, + 1041 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_flag.jpg b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_flag.jpg new file mode 100644 index 0000000..b439d3d Binary files /dev/null and b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_flag.jpg differ diff --git a/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_vl.jpg b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_vl.jpg new file mode 100644 index 0000000..1f0ec47 Binary files /dev/null and b/Apps/XinDianTu/Images/fe6d36ac-1903-4598-8eb7-ea94185527b9_vl.jpg differ diff --git a/Apps/XinDianTu/Images/fed22e5b-2782-4d1e-88a2-a8c47f83652d.jpg b/Apps/XinDianTu/Images/fed22e5b-2782-4d1e-88a2-a8c47f83652d.jpg new file mode 100644 index 0000000..43d2b0d Binary files /dev/null and b/Apps/XinDianTu/Images/fed22e5b-2782-4d1e-88a2-a8c47f83652d.jpg differ diff --git a/Apps/XinDianTu/Images/ff1ffe10-1a61-43c6-b46a-725b0ddfc144.jpg b/Apps/XinDianTu/Images/ff1ffe10-1a61-43c6-b46a-725b0ddfc144.jpg new file mode 100644 index 0000000..ceb355a Binary files /dev/null and b/Apps/XinDianTu/Images/ff1ffe10-1a61-43c6-b46a-725b0ddfc144.jpg differ diff --git a/Apps/XinDianTu/Images/ff9a619c-d449-49c4-b8a3-1b3cc6f27cec.jpg b/Apps/XinDianTu/Images/ff9a619c-d449-49c4-b8a3-1b3cc6f27cec.jpg new file mode 100644 index 0000000..e05bc7a Binary files /dev/null and b/Apps/XinDianTu/Images/ff9a619c-d449-49c4-b8a3-1b3cc6f27cec.jpg differ diff --git a/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa.jpg b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa.jpg new file mode 100644 index 0000000..6f4b19b Binary files /dev/null and b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa.jpg differ diff --git a/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_flag.jpg b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_flag.jpg new file mode 100644 index 0000000..b34f094 Binary files /dev/null and b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_vl.jpg b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_vl.jpg new file mode 100644 index 0000000..222a7f8 Binary files /dev/null and b/Apps/XinDianTu/Images/ffa52b35-93f5-42b7-96cf-0cc3f03bcbfa_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.jpg b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.jpg new file mode 100644 index 0000000..78b4c00 Binary files /dev/null and b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.jpg differ diff --git a/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.json b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.json new file mode 100644 index 0000000..28ac877 --- /dev/null +++ b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994.json @@ -0,0 +1,59 @@ +{ + "image": "ffadc14a-3f81-4ded-9d59-3bcea8398994.jpg", + "width": 720, + "height": 258, + "cards": [ + { + "id": 1, + "rect": [ + 19, + 404, + 700, + 588 + ], + "click_point": [ + 121, + 440 + ] + }, + { + "id": 2, + "rect": [ + 19, + 596, + 700, + 845 + ], + "click_point": [ + 121, + 645 + ] + }, + { + "id": 3, + "rect": [ + 19, + 859, + 700, + 1108 + ], + "click_point": [ + 121, + 908 + ] + }, + { + "id": 4, + "rect": [ + 19, + 1116, + 700, + 1374 + ], + "click_point": [ + 121, + 1167 + ] + } + ] +} \ No newline at end of file diff --git a/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_flag.jpg b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_flag.jpg new file mode 100644 index 0000000..f0e58f9 Binary files /dev/null and b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_flag.jpg differ diff --git a/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_vl.jpg b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_vl.jpg new file mode 100644 index 0000000..6110669 Binary files /dev/null and b/Apps/XinDianTu/Images/ffadc14a-3f81-4ded-9d59-3bcea8398994_vl.jpg differ diff --git a/Apps/XinDianTu/Images/ffeb98ae-0b46-4c5c-99c4-dc2332d74b56.jpg b/Apps/XinDianTu/Images/ffeb98ae-0b46-4c5c-99c4-dc2332d74b56.jpg new file mode 100644 index 0000000..58080d0 Binary files /dev/null and b/Apps/XinDianTu/Images/ffeb98ae-0b46-4c5c-99c4-dc2332d74b56.jpg differ diff --git a/Apps/XinDianTu/Images/不限车长_flag_expand.jpg b/Apps/XinDianTu/Images/不限车长_flag_expand.jpg new file mode 100644 index 0000000..91b57e5 Binary files /dev/null and b/Apps/XinDianTu/Images/不限车长_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/世盛-幸会新能源东岭南街站_flag_expand.jpg b/Apps/XinDianTu/Images/世盛-幸会新能源东岭南街站_flag_expand.jpg new file mode 100644 index 0000000..01a4b9f Binary files /dev/null and b/Apps/XinDianTu/Images/世盛-幸会新能源东岭南街站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/世纪花园小区慢充站_flag_expand.jpg b/Apps/XinDianTu/Images/世纪花园小区慢充站_flag_expand.jpg new file mode 100644 index 0000000..e998d1b Binary files /dev/null and b/Apps/XinDianTu/Images/世纪花园小区慢充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/中国石化中石化雁鸣湖充电站_flag_expand.jpg b/Apps/XinDianTu/Images/中国石化中石化雁鸣湖充电站_flag_expand.jpg new file mode 100644 index 0000000..2ffa421 Binary files /dev/null and b/Apps/XinDianTu/Images/中国石化中石化雁鸣湖充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/中润石油宏达充电站_flag_expand.jpg b/Apps/XinDianTu/Images/中润石油宏达充电站_flag_expand.jpg new file mode 100644 index 0000000..8ca7ea9 Binary files /dev/null and b/Apps/XinDianTu/Images/中润石油宏达充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/中硕能源北四环充电站_flag_expand.jpg b/Apps/XinDianTu/Images/中硕能源北四环充电站_flag_expand.jpg new file mode 100644 index 0000000..64667d5 Binary files /dev/null and b/Apps/XinDianTu/Images/中硕能源北四环充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/优益客充电服务站_flag_expand.jpg b/Apps/XinDianTu/Images/优益客充电服务站_flag_expand.jpg new file mode 100644 index 0000000..fd40950 Binary files /dev/null and b/Apps/XinDianTu/Images/优益客充电服务站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/会员价_flag_expand.jpg b/Apps/XinDianTu/Images/会员价_flag_expand.jpg new file mode 100644 index 0000000..2c2a588 Binary files /dev/null and b/Apps/XinDianTu/Images/会员价_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/便利电凯旋二期充电站_flag_expand.jpg b/Apps/XinDianTu/Images/便利电凯旋二期充电站_flag_expand.jpg new file mode 100644 index 0000000..8563673 Binary files /dev/null and b/Apps/XinDianTu/Images/便利电凯旋二期充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/凯旋物流慢充站_flag_expand.jpg b/Apps/XinDianTu/Images/凯旋物流慢充站_flag_expand.jpg new file mode 100644 index 0000000..1bd3d04 Binary files /dev/null and b/Apps/XinDianTu/Images/凯旋物流慢充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/北湖便民充电站_flag_expand.jpg b/Apps/XinDianTu/Images/北湖便民充电站_flag_expand.jpg new file mode 100644 index 0000000..647b2a2 Binary files /dev/null and b/Apps/XinDianTu/Images/北湖便民充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/华润燃气充电站_flag_expand.jpg b/Apps/XinDianTu/Images/华润燃气充电站_flag_expand.jpg new file mode 100644 index 0000000..1b1cf36 Binary files /dev/null and b/Apps/XinDianTu/Images/华润燃气充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/华润燃气充电站(和利源汽修站)_flag_expand.jpg b/Apps/XinDianTu/Images/华润燃气充电站(和利源汽修站)_flag_expand.jpg new file mode 100644 index 0000000..85eb875 Binary files /dev/null and b/Apps/XinDianTu/Images/华润燃气充电站(和利源汽修站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/华润燃气超充站_flag_expand.jpg b/Apps/XinDianTu/Images/华润燃气超充站_flag_expand.jpg new file mode 100644 index 0000000..d2320b7 Binary files /dev/null and b/Apps/XinDianTu/Images/华润燃气超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/华润燃气超充站(兴和路站)_flag_expand.jpg b/Apps/XinDianTu/Images/华润燃气超充站(兴和路站)_flag_expand.jpg new file mode 100644 index 0000000..315b958 Binary files /dev/null and b/Apps/XinDianTu/Images/华润燃气超充站(兴和路站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/变工新能源自兵馆站_flag_expand.jpg b/Apps/XinDianTu/Images/变工新能源自兵馆站_flag_expand.jpg new file mode 100644 index 0000000..f155258 Binary files /dev/null and b/Apps/XinDianTu/Images/变工新能源自兵馆站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/台北阳光一期_flag_expand.jpg b/Apps/XinDianTu/Images/台北阳光一期_flag_expand.jpg new file mode 100644 index 0000000..99d616d Binary files /dev/null and b/Apps/XinDianTu/Images/台北阳光一期_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/喜洋洋快充站_flag_expand.jpg b/Apps/XinDianTu/Images/喜洋洋快充站_flag_expand.jpg new file mode 100644 index 0000000..df24e4e Binary files /dev/null and b/Apps/XinDianTu/Images/喜洋洋快充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/嘉琪酒店电动汽车充电站_flag_expand.jpg b/Apps/XinDianTu/Images/嘉琪酒店电动汽车充电站_flag_expand.jpg new file mode 100644 index 0000000..c3ef15d Binary files /dev/null and b/Apps/XinDianTu/Images/嘉琪酒店电动汽车充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/场站名称_flag_expand.jpg b/Apps/XinDianTu/Images/场站名称_flag_expand.jpg new file mode 100644 index 0000000..f8b6eac Binary files /dev/null and b/Apps/XinDianTu/Images/场站名称_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/场站名称未明确显示_flag_expand.jpg b/Apps/XinDianTu/Images/场站名称未明确显示_flag_expand.jpg new file mode 100644 index 0000000..95265bd Binary files /dev/null and b/Apps/XinDianTu/Images/场站名称未明确显示_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/富丰柳影路充电站_flag_expand.jpg b/Apps/XinDianTu/Images/富丰柳影路充电站_flag_expand.jpg new file mode 100644 index 0000000..939ace1 Binary files /dev/null and b/Apps/XinDianTu/Images/富丰柳影路充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春东升汽车服务…_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春东升汽车服务…_flag_expand.jpg new file mode 100644 index 0000000..e81d7b7 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春东升汽车服务…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究..._flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究..._flag_expand.jpg new file mode 100644 index 0000000..4b0f831 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究…_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究…_flag_expand.jpg new file mode 100644 index 0000000..cd9ca83 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春印刷技术研究…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春新区龙翔站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春新区龙翔站_flag_expand.jpg new file mode 100644 index 0000000..0f7ee71 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春新区龙翔站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春曙光路站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春曙光路站_flag_expand.jpg new file mode 100644 index 0000000..d17db83 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春曙光路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春爱琴湾站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春爱琴湾站_flag_expand.jpg new file mode 100644 index 0000000..862e60f Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春爱琴湾站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵..._flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵..._flag_expand.jpg new file mode 100644 index 0000000..c9843b5 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵…_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵…_flag_expand.jpg new file mode 100644 index 0000000..9d05bb7 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春解放大路亚朵…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充 长春驿来特天伦中..._flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充 长春驿来特天伦中..._flag_expand.jpg new file mode 100644 index 0000000..3f0a28f Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充 长春驿来特天伦中..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究·_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究·_flag_expand.jpg new file mode 100644 index 0000000..ae17cb6 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究··_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究··_flag_expand.jpg new file mode 100644 index 0000000..3541e58 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春印刷技术研究··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春新区龙翔站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春新区龙翔站_flag_expand.jpg new file mode 100644 index 0000000..f782217 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春新区龙翔站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春曙光路站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春曙光路站_flag_expand.jpg new file mode 100644 index 0000000..7000e5b Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春曙光路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵_flag_expand.jpg new file mode 100644 index 0000000..45247e5 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵··_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵··_flag_expand.jpg new file mode 100644 index 0000000..33e998c Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春解放大路亚朵··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S4超快充长春驿来特天伦中_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S4超快充长春驿来特天伦中_flag_expand.jpg new file mode 100644 index 0000000..747e5e3 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S4超快充长春驿来特天伦中_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/小鹏S5超快充 长春湛江路站_flag_expand.jpg b/Apps/XinDianTu/Images/小鹏S5超快充 长春湛江路站_flag_expand.jpg new file mode 100644 index 0000000..891d831 Binary files /dev/null and b/Apps/XinDianTu/Images/小鹏S5超快充 长春湛江路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg new file mode 100644 index 0000000..895cb76 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg new file mode 100644 index 0000000..80861d3 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团汽车检测中...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(一汽集团长春国际招…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团长春国际招…_flag_expand.jpg new file mode 100644 index 0000000..7b45b3b Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(一汽集团长春国际招…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东..._flag_expand.jpg new file mode 100644 index 0000000..defc339 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心...)_flag_expand.jpg new file mode 100644 index 0000000..6e8aad3 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…)_flag_expand.jpg new file mode 100644 index 0000000..78d1a26 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…_flag_expand.jpg new file mode 100644 index 0000000..13c17c8 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国…_flag_expand.jpg new file mode 100644 index 0000000..bf46b7b Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场…_flag_expand.jpg new file mode 100644 index 0000000..59873f4 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港...)_flag_expand.jpg new file mode 100644 index 0000000..5b682cd Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港..._flag_expand.jpg new file mode 100644 index 0000000..d0e333e Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港…_flag_expand.jpg new file mode 100644 index 0000000..c287110 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广..._flag_expand.jpg new file mode 100644 index 0000000..a865fa0 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾..._flag_expand.jpg new file mode 100644 index 0000000..a8feffe Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾…_flag_expand.jpg new file mode 100644 index 0000000..18076bb Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区力旺广…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区力旺广…_flag_expand.jpg new file mode 100644 index 0000000..f110e1d Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区力旺广…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸..._flag_expand.jpg new file mode 100644 index 0000000..e391d2b Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸…_flag_expand.jpg new file mode 100644 index 0000000..fc30ed1 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心...)_flag_expand.jpg new file mode 100644 index 0000000..baa4011 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…)_flag_expand.jpg new file mode 100644 index 0000000..e57e4f9 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…_flag_expand.jpg new file mode 100644 index 0000000..2202129 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市环球购物中心…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国…_flag_expand.jpg new file mode 100644 index 0000000..de39aa1 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世..._flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世..._flag_expand.jpg new file mode 100644 index 0000000..b4cd45d Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世...)_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世...)_flag_expand.jpg new file mode 100644 index 0000000..2d110cb Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区欧亚世...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(仅对金安饭店开放…_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(仅对金安饭店开放…_flag_expand.jpg new file mode 100644 index 0000000..a971e92 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(仅对金安饭店开放…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东·_flag_expand.jpg new file mode 100644 index 0000000..1089f44 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市二道区力旺东·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心·_flag_expand.jpg new file mode 100644 index 0000000..1b4d82e Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市卓展购物中心·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国·_flag_expand.jpg new file mode 100644 index 0000000..888011b Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国···_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国···_flag_expand.jpg new file mode 100644 index 0000000..01e4fd8 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市南关区恒兴国···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场·_flag_expand.jpg new file mode 100644 index 0000000..db0b2fd Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宏汇国际广场·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港·_flag_expand.jpg new file mode 100644 index 0000000..8fbf599 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港··_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港··_flag_expand.jpg new file mode 100644 index 0000000..a96d8c6 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区中东港··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广··_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广··_flag_expand.jpg new file mode 100644 index 0000000..8a5bbdd Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市宽城区欧亚广··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾··_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾··_flag_expand.jpg new file mode 100644 index 0000000..d647cb0 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾···_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾···_flag_expand.jpg new file mode 100644 index 0000000..4be3d94 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市开迈斯北湖吾···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸··_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸··_flag_expand.jpg new file mode 100644 index 0000000..38f99f2 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸···_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸···_flag_expand.jpg new file mode 100644 index 0000000..a3c18c2 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市朝阳区国际贸···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国·_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国·_flag_expand.jpg new file mode 100644 index 0000000..3456e05 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国···_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国···_flag_expand.jpg new file mode 100644 index 0000000..92ca788 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站(长春市经开区中意国···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/开迈斯充电站((仅对金安饭店开放_flag_expand.jpg b/Apps/XinDianTu/Images/开迈斯充电站((仅对金安饭店开放_flag_expand.jpg new file mode 100644 index 0000000..9d19359 Binary files /dev/null and b/Apps/XinDianTu/Images/开迈斯充电站((仅对金安饭店开放_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/快来电东盛充电站_flag_expand.jpg b/Apps/XinDianTu/Images/快来电东盛充电站_flag_expand.jpg new file mode 100644 index 0000000..0a099a1 Binary files /dev/null and b/Apps/XinDianTu/Images/快来电东盛充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/新电途推荐_flag_expand.jpg b/Apps/XinDianTu/Images/新电途推荐_flag_expand.jpg new file mode 100644 index 0000000..2f8e4e2 Binary files /dev/null and b/Apps/XinDianTu/Images/新电途推荐_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/明启凯旋物流充电站_flag_expand.jpg b/Apps/XinDianTu/Images/明启凯旋物流充电站_flag_expand.jpg new file mode 100644 index 0000000..e666e12 Binary files /dev/null and b/Apps/XinDianTu/Images/明启凯旋物流充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/星星充电-长春朝至充电站有限公司_flag_expand.jpg b/Apps/XinDianTu/Images/星星充电-长春朝至充电站有限公司_flag_expand.jpg new file mode 100644 index 0000000..cb71a28 Binary files /dev/null and b/Apps/XinDianTu/Images/星星充电-长春朝至充电站有限公司_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/星星充电-长春西堡充电站有限公司_flag_expand.jpg b/Apps/XinDianTu/Images/星星充电-长春西堡充电站有限公司_flag_expand.jpg new file mode 100644 index 0000000..a0c999d Binary files /dev/null and b/Apps/XinDianTu/Images/星星充电-长春西堡充电站有限公司_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/星火路充电站_flag_expand.jpg b/Apps/XinDianTu/Images/星火路充电站_flag_expand.jpg new file mode 100644 index 0000000..306cea4 Binary files /dev/null and b/Apps/XinDianTu/Images/星火路充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/晟鑫快速充电站2_flag_expand.jpg b/Apps/XinDianTu/Images/晟鑫快速充电站2_flag_expand.jpg new file mode 100644 index 0000000..bf52f36 Binary files /dev/null and b/Apps/XinDianTu/Images/晟鑫快速充电站2_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/晟鑫快速充电站_flag_expand.jpg b/Apps/XinDianTu/Images/晟鑫快速充电站_flag_expand.jpg new file mode 100644 index 0000000..5aa791c Binary files /dev/null and b/Apps/XinDianTu/Images/晟鑫快速充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/暂停使用_flag_expand.jpg b/Apps/XinDianTu/Images/暂停使用_flag_expand.jpg new file mode 100644 index 0000000..61d24e7 Binary files /dev/null and b/Apps/XinDianTu/Images/暂停使用_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/未知场站_flag_expand.jpg b/Apps/XinDianTu/Images/未知场站_flag_expand.jpg new file mode 100644 index 0000000..92214d8 Binary files /dev/null and b/Apps/XinDianTu/Images/未知场站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/梦响家超级快充站_flag_expand.jpg b/Apps/XinDianTu/Images/梦响家超级快充站_flag_expand.jpg new file mode 100644 index 0000000..6d4f650 Binary files /dev/null and b/Apps/XinDianTu/Images/梦响家超级快充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/煦电-吉林长春市泰来街小区充电站_flag_expand.jpg b/Apps/XinDianTu/Images/煦电-吉林长春市泰来街小区充电站_flag_expand.jpg new file mode 100644 index 0000000..f88784a Binary files /dev/null and b/Apps/XinDianTu/Images/煦电-吉林长春市泰来街小区充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/爱上新能源同德路站_flag_expand.jpg b/Apps/XinDianTu/Images/爱上新能源同德路站_flag_expand.jpg new file mode 100644 index 0000000..7c9c6bd Binary files /dev/null and b/Apps/XinDianTu/Images/爱上新能源同德路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电千锤物流充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电千锤物流充电站_flag_expand.jpg new file mode 100644 index 0000000..e6c22ff Binary files /dev/null and b/Apps/XinDianTu/Images/特来电千锤物流充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电同鑫水产充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电同鑫水产充电站_flag_expand.jpg new file mode 100644 index 0000000..6c3dabf Binary files /dev/null and b/Apps/XinDianTu/Images/特来电同鑫水产充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电干锤物流充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电干锤物流充电站_flag_expand.jpg new file mode 100644 index 0000000..d6c2e54 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电干锤物流充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电特来电世纪广场充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电特来电世纪广场充电站_flag_expand.jpg new file mode 100644 index 0000000..a4e4f3a Binary files /dev/null and b/Apps/XinDianTu/Images/特来电特来电世纪广场充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电特来电东方广场充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电特来电东方广场充电站_flag_expand.jpg new file mode 100644 index 0000000..157fbe3 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电特来电东方广场充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电特来电创业大街大润发充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电特来电创业大街大润发充电站_flag_expand.jpg new file mode 100644 index 0000000..a5aaf49 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电特来电创业大街大润发充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电特来电华圣文化产业园充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电特来电华圣文化产业园充电站_flag_expand.jpg new file mode 100644 index 0000000..df811a2 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电特来电华圣文化产业园充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电荣光路室内充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电荣光路室内充电站_flag_expand.jpg new file mode 100644 index 0000000..a44d741 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电荣光路室内充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电金色佳圆充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电金色佳圆充电站_flag_expand.jpg new file mode 100644 index 0000000..f562d8d Binary files /dev/null and b/Apps/XinDianTu/Images/特来电金色佳圆充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电金色家园充电站项目二期_flag_expand.jpg b/Apps/XinDianTu/Images/特来电金色家园充电站项目二期_flag_expand.jpg new file mode 100644 index 0000000..4364962 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电金色家园充电站项目二期_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站_flag_expand.jpg b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站_flag_expand.jpg new file mode 100644 index 0000000..894d2a7 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站···_flag_expand.jpg b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站···_flag_expand.jpg new file mode 100644 index 0000000..c75ed4e Binary files /dev/null and b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站…_flag_expand.jpg b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站…_flag_expand.jpg new file mode 100644 index 0000000..fea9fc4 Binary files /dev/null and b/Apps/XinDianTu/Images/特来电长春达祥宽城新能源充电站…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春中东新天地购..._flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春中东新天地购..._flag_expand.jpg new file mode 100644 index 0000000..413ab8d Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春中东新天地购..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春南关区西点药业_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春南关区西点药业_flag_expand.jpg new file mode 100644 index 0000000..23aa23d Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春南关区西点药业_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区 (..._flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区 (..._flag_expand.jpg new file mode 100644 index 0000000..266f206 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区 (..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区(…_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区(…_flag_expand.jpg new file mode 100644 index 0000000..6d2e70d Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春大学西校区(…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛..._flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛..._flag_expand.jpg new file mode 100644 index 0000000..713c262 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛…_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛…_flag_expand.jpg new file mode 100644 index 0000000..5ad6d84 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春居然之家(赛…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街..._flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街..._flag_expand.jpg new file mode 100644 index 0000000..0a4be70 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街…_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街…_flag_expand.jpg new file mode 100644 index 0000000..1aa3451 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站 长春绿园区平安街…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购·_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购·_flag_expand.jpg new file mode 100644 index 0000000..646b1b0 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购···_flag_expand.jpg b/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购···_flag_expand.jpg new file mode 100644 index 0000000..42b8654 Binary files /dev/null and b/Apps/XinDianTu/Images/理想5C超充站长春中东新天地购···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想超充站 长春君安驾校中东分校_flag_expand.jpg b/Apps/XinDianTu/Images/理想超充站 长春君安驾校中东分校_flag_expand.jpg new file mode 100644 index 0000000..69e29db Binary files /dev/null and b/Apps/XinDianTu/Images/理想超充站 长春君安驾校中东分校_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想超充站 长春富力万达文华酒店_flag_expand.jpg b/Apps/XinDianTu/Images/理想超充站 长春富力万达文华酒店_flag_expand.jpg new file mode 100644 index 0000000..6533f17 Binary files /dev/null and b/Apps/XinDianTu/Images/理想超充站 长春富力万达文华酒店_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想超充站 长春欧亚卖场(北侧停…_flag_expand.jpg b/Apps/XinDianTu/Images/理想超充站 长春欧亚卖场(北侧停…_flag_expand.jpg new file mode 100644 index 0000000..38a5748 Binary files /dev/null and b/Apps/XinDianTu/Images/理想超充站 长春欧亚卖场(北侧停…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/理想超充站长春君安驾校中东分校_flag_expand.jpg b/Apps/XinDianTu/Images/理想超充站长春君安驾校中东分校_flag_expand.jpg new file mode 100644 index 0000000..da0a160 Binary files /dev/null and b/Apps/XinDianTu/Images/理想超充站长春君安驾校中东分校_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/瑞禧超级充电站华阳大酒店项目_flag_expand.jpg b/Apps/XinDianTu/Images/瑞禧超级充电站华阳大酒店项目_flag_expand.jpg new file mode 100644 index 0000000..0054d50 Binary files /dev/null and b/Apps/XinDianTu/Images/瑞禧超级充电站华阳大酒店项目_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/瑞禧超级充电站正阳广场项目_flag_expand.jpg b/Apps/XinDianTu/Images/瑞禧超级充电站正阳广场项目_flag_expand.jpg new file mode 100644 index 0000000..1577b2a Binary files /dev/null and b/Apps/XinDianTu/Images/瑞禧超级充电站正阳广场项目_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/瑞禧超级充电站震宇街项目_flag_expand.jpg b/Apps/XinDianTu/Images/瑞禧超级充电站震宇街项目_flag_expand.jpg new file mode 100644 index 0000000..80b3d17 Binary files /dev/null and b/Apps/XinDianTu/Images/瑞禧超级充电站震宇街项目_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/红旗街_flag_expand.jpg b/Apps/XinDianTu/Images/红旗街_flag_expand.jpg new file mode 100644 index 0000000..ba7a5a4 Binary files /dev/null and b/Apps/XinDianTu/Images/红旗街_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/综合排序_flag_expand.jpg b/Apps/XinDianTu/Images/综合排序_flag_expand.jpg new file mode 100644 index 0000000..93a63bb Binary files /dev/null and b/Apps/XinDianTu/Images/综合排序_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/绿牌家-平泉路站_flag_expand.jpg b/Apps/XinDianTu/Images/绿牌家-平泉路站_flag_expand.jpg new file mode 100644 index 0000000..480b8a5 Binary files /dev/null and b/Apps/XinDianTu/Images/绿牌家-平泉路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/绿赢充电站-吉林省肿瘤医院(湖光…_flag_expand.jpg b/Apps/XinDianTu/Images/绿赢充电站-吉林省肿瘤医院(湖光…_flag_expand.jpg new file mode 100644 index 0000000..9c56439 Binary files /dev/null and b/Apps/XinDianTu/Images/绿赢充电站-吉林省肿瘤医院(湖光…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/绿赢充电站-红旗花园(南门)_flag_expand.jpg b/Apps/XinDianTu/Images/绿赢充电站-红旗花园(南门)_flag_expand.jpg new file mode 100644 index 0000000..05eec94 Binary files /dev/null and b/Apps/XinDianTu/Images/绿赢充电站-红旗花园(南门)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/绿驰新能源充电站_flag_expand.jpg b/Apps/XinDianTu/Images/绿驰新能源充电站_flag_expand.jpg new file mode 100644 index 0000000..1f48537 Binary files /dev/null and b/Apps/XinDianTu/Images/绿驰新能源充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能南关区中医院站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能南关区中医院站_flag_expand.jpg new file mode 100644 index 0000000..1c3d405 Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能南关区中医院站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能厚德堂充电站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能厚德堂充电站_flag_expand.jpg new file mode 100644 index 0000000..375956e Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能厚德堂充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能平阳街1号楼充电站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能平阳街1号楼充电站_flag_expand.jpg new file mode 100644 index 0000000..38b38c2 Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能平阳街1号楼充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能春城大街站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能春城大街站_flag_expand.jpg new file mode 100644 index 0000000..97dfd17 Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能春城大街站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能郊区宿舍充电站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能郊区宿舍充电站_flag_expand.jpg new file mode 100644 index 0000000..c0da5d4 Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能郊区宿舍充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能银行胡同充电站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能银行胡同充电站_flag_expand.jpg new file mode 100644 index 0000000..016434b Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能银行胡同充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能长影天地步行街站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能长影天地步行街站_flag_expand.jpg new file mode 100644 index 0000000..33bf3e9 Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能长影天地步行街站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能长白公路充电站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能长白公路充电站_flag_expand.jpg new file mode 100644 index 0000000..af7649a Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能长白公路充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/脉冲绿能长石公路一号站_flag_expand.jpg b/Apps/XinDianTu/Images/脉冲绿能长石公路一号站_flag_expand.jpg new file mode 100644 index 0000000..0b2ca2d Binary files /dev/null and b/Apps/XinDianTu/Images/脉冲绿能长石公路一号站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/艾路国际酒店充电站_flag_expand.jpg b/Apps/XinDianTu/Images/艾路国际酒店充电站_flag_expand.jpg new file mode 100644 index 0000000..0b0f2e6 Binary files /dev/null and b/Apps/XinDianTu/Images/艾路国际酒店充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源五十四街区站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源五十四街区站_flag_expand.jpg new file mode 100644 index 0000000..8a66f9e Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源五十四街区站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源凯辰大厦站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源凯辰大厦站_flag_expand.jpg new file mode 100644 index 0000000..559c9a3 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源凯辰大厦站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源凯麒大厦站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源凯麒大厦站_flag_expand.jpg new file mode 100644 index 0000000..7ebd701 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源凯麒大厦站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源同德路站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源同德路站_flag_expand.jpg new file mode 100644 index 0000000..4b6d943 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源同德路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源吴中国际站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源吴中国际站_flag_expand.jpg new file mode 100644 index 0000000..7d3cab9 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源吴中国际站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源新月市场站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源新月市场站_flag_expand.jpg new file mode 100644 index 0000000..a45417d Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源新月市场站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源汇文路站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源汇文路站_flag_expand.jpg new file mode 100644 index 0000000..01b0131 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源汇文路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源汇文路站慢充_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源汇文路站慢充_flag_expand.jpg new file mode 100644 index 0000000..beb8f03 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源汇文路站慢充_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源省宾馆站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源省宾馆站_flag_expand.jpg new file mode 100644 index 0000000..85d561e Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源省宾馆站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源经纬路慢充站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源经纬路慢充站_flag_expand.jpg new file mode 100644 index 0000000..856d371 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源经纬路慢充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源经纬路站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源经纬路站_flag_expand.jpg new file mode 100644 index 0000000..74fe2fc Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源经纬路站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源西安桥慢充站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源西安桥慢充站_flag_expand.jpg new file mode 100644 index 0000000..fea6f04 Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源西安桥慢充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源西安桥站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源西安桥站_flag_expand.jpg new file mode 100644 index 0000000..6d149db Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源西安桥站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/菱工新能源这有山站_flag_expand.jpg b/Apps/XinDianTu/Images/菱工新能源这有山站_flag_expand.jpg new file mode 100644 index 0000000..91ae86d Binary files /dev/null and b/Apps/XinDianTu/Images/菱工新能源这有山站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/蜜蜜充电站_flag_expand.jpg b/Apps/XinDianTu/Images/蜜蜜充电站_flag_expand.jpg new file mode 100644 index 0000000..a55ab57 Binary files /dev/null and b/Apps/XinDianTu/Images/蜜蜜充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/超翔快充站 长春宽城区二手车市场_flag_expand.jpg b/Apps/XinDianTu/Images/超翔快充站 长春宽城区二手车市场_flag_expand.jpg new file mode 100644 index 0000000..2f05f44 Binary files /dev/null and b/Apps/XinDianTu/Images/超翔快充站 长春宽城区二手车市场_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/超翔快充站 长春香江家居_flag_expand.jpg b/Apps/XinDianTu/Images/超翔快充站 长春香江家居_flag_expand.jpg new file mode 100644 index 0000000..a947f18 Binary files /dev/null and b/Apps/XinDianTu/Images/超翔快充站 长春香江家居_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/超翔快充站长春宽城区二手车市场_flag_expand.jpg b/Apps/XinDianTu/Images/超翔快充站长春宽城区二手车市场_flag_expand.jpg new file mode 100644 index 0000000..98b5394 Binary files /dev/null and b/Apps/XinDianTu/Images/超翔快充站长春宽城区二手车市场_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/超翔快充站长春香江家居_flag_expand.jpg b/Apps/XinDianTu/Images/超翔快充站长春香江家居_flag_expand.jpg new file mode 100644 index 0000000..bdf478f Binary files /dev/null and b/Apps/XinDianTu/Images/超翔快充站长春香江家居_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/金康路充电站_flag_expand.jpg b/Apps/XinDianTu/Images/金康路充电站_flag_expand.jpg new file mode 100644 index 0000000..a92b035 Binary files /dev/null and b/Apps/XinDianTu/Images/金康路充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/金质融城慢充站_flag_expand.jpg b/Apps/XinDianTu/Images/金质融城慢充站_flag_expand.jpg new file mode 100644 index 0000000..0bbe87b Binary files /dev/null and b/Apps/XinDianTu/Images/金质融城慢充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鑫博林快充站_flag_expand.jpg b/Apps/XinDianTu/Images/鑫博林快充站_flag_expand.jpg new file mode 100644 index 0000000..4f7e37c Binary files /dev/null and b/Apps/XinDianTu/Images/鑫博林快充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路...)_flag_expand.jpg b/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路...)_flag_expand.jpg new file mode 100644 index 0000000..1179bad Binary files /dev/null and b/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路…_flag_expand.jpg b/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路…_flag_expand.jpg new file mode 100644 index 0000000..ad74ebd Binary files /dev/null and b/Apps/XinDianTu/Images/鑫博林快充站(青年路-北环城路…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鑫瑶充电(绿地站)_flag_expand.jpg b/Apps/XinDianTu/Images/鑫瑶充电(绿地站)_flag_expand.jpg new file mode 100644 index 0000000..74f09be Binary files /dev/null and b/Apps/XinDianTu/Images/鑫瑶充电(绿地站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鑫瑶充电(花园酒店站)_flag_expand.jpg b/Apps/XinDianTu/Images/鑫瑶充电(花园酒店站)_flag_expand.jpg new file mode 100644 index 0000000..4f87e12 Binary files /dev/null and b/Apps/XinDianTu/Images/鑫瑶充电(花园酒店站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/锐嘉新能源五星小区丙栋最东侧_flag_expand.jpg b/Apps/XinDianTu/Images/锐嘉新能源五星小区丙栋最东侧_flag_expand.jpg new file mode 100644 index 0000000..cf180c2 Binary files /dev/null and b/Apps/XinDianTu/Images/锐嘉新能源五星小区丙栋最东侧_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/锐嘉新能源长安世家站_flag_expand.jpg b/Apps/XinDianTu/Images/锐嘉新能源长安世家站_flag_expand.jpg new file mode 100644 index 0000000..4c42e58 Binary files /dev/null and b/Apps/XinDianTu/Images/锐嘉新能源长安世家站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长友长春大街超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长友长春大街超级充电站_flag_expand.jpg new file mode 100644 index 0000000..ccbac2b Binary files /dev/null and b/Apps/XinDianTu/Images/长友长春大街超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发安乐路液冷超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发安乐路液冷超级充电站_flag_expand.jpg new file mode 100644 index 0000000..d449bd3 Binary files /dev/null and b/Apps/XinDianTu/Images/长发安乐路液冷超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发客车厂超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发客车厂超级充电站_flag_expand.jpg new file mode 100644 index 0000000..ede99c4 Binary files /dev/null and b/Apps/XinDianTu/Images/长发客车厂超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发工农大路超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发工农大路超级充电站_flag_expand.jpg new file mode 100644 index 0000000..0a5eb7a Binary files /dev/null and b/Apps/XinDianTu/Images/长发工农大路超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发新民大街超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发新民大街超级充电站_flag_expand.jpg new file mode 100644 index 0000000..6e259e5 Binary files /dev/null and b/Apps/XinDianTu/Images/长发新民大街超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发水产市场液冷超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发水产市场液冷超级充电站_flag_expand.jpg new file mode 100644 index 0000000..d96d9d3 Binary files /dev/null and b/Apps/XinDianTu/Images/长发水产市场液冷超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发航展中心液冷超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发航展中心液冷超级充电站_flag_expand.jpg new file mode 100644 index 0000000..3322011 Binary files /dev/null and b/Apps/XinDianTu/Images/长发航展中心液冷超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发西四胡同超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发西四胡同超级充电站_flag_expand.jpg new file mode 100644 index 0000000..baf3498 Binary files /dev/null and b/Apps/XinDianTu/Images/长发西四胡同超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发长春大街超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发长春大街超级充电站_flag_expand.jpg new file mode 100644 index 0000000..bfc7a68 Binary files /dev/null and b/Apps/XinDianTu/Images/长发长春大街超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长发青冈立交桥液冷超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长发青冈立交桥液冷超级充电站_flag_expand.jpg new file mode 100644 index 0000000..c3a6807 Binary files /dev/null and b/Apps/XinDianTu/Images/长发青冈立交桥液冷超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长吉北线光磊特来电充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长吉北线光磊特来电充电站_flag_expand.jpg new file mode 100644 index 0000000..9ebdc6f Binary files /dev/null and b/Apps/XinDianTu/Images/长吉北线光磊特来电充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春万达广场(红旗街店)超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春万达广场(红旗街店)超充站_flag_expand.jpg new file mode 100644 index 0000000..4597389 Binary files /dev/null and b/Apps/XinDianTu/Images/长春万达广场(红旗街店)超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春净月假日酒店 蔚来充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春净月假日酒店 蔚来充电站_flag_expand.jpg new file mode 100644 index 0000000..73d8c7f Binary files /dev/null and b/Apps/XinDianTu/Images/长春净月假日酒店 蔚来充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春力旺广场 蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春力旺广场 蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..95aea35 Binary files /dev/null and b/Apps/XinDianTu/Images/长春力旺广场 蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春君安驾校极充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春君安驾校极充站_flag_expand.jpg new file mode 100644 index 0000000..a4646d1 Binary files /dev/null and b/Apps/XinDianTu/Images/长春君安驾校极充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春大街充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春大街充电站_flag_expand.jpg new file mode 100644 index 0000000..6e4004d Binary files /dev/null and b/Apps/XinDianTu/Images/长春大街充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站_flag_expand.jpg new file mode 100644 index 0000000..76e7841 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站·_flag_expand.jpg new file mode 100644 index 0000000..31e5dcc Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站…_flag_expand.jpg new file mode 100644 index 0000000..f047edd Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区中意之尊公共充电站…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区望龙桥公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区望龙桥公共充电站_flag_expand.jpg new file mode 100644 index 0000000..ccfe6db Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区望龙桥公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充..._flag_expand.jpg new file mode 100644 index 0000000..4c42e58 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充··_flag_expand.jpg new file mode 100644 index 0000000..2abe385 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区江山石材市场公共充··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区英俊西街公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区英俊西街公共充电站_flag_expand.jpg new file mode 100644 index 0000000..eed59e2 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区英俊西街公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电..._flag_expand.jpg new file mode 100644 index 0000000..6416ac8 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电·_flag_expand.jpg new file mode 100644 index 0000000..527c5e9 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电··_flag_expand.jpg new file mode 100644 index 0000000..527c5e9 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电…_flag_expand.jpg new file mode 100644 index 0000000..81f1976 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区金色橄榄城公共充电…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电..._flag_expand.jpg new file mode 100644 index 0000000..9383ea0 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电_flag_expand.jpg new file mode 100644 index 0000000..52995cd Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电·_flag_expand.jpg new file mode 100644 index 0000000..940595b Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电··_flag_expand.jpg new file mode 100644 index 0000000..ca23db3 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电站_flag_expand.jpg new file mode 100644 index 0000000..36c1b5c Binary files /dev/null and b/Apps/XinDianTu/Images/长春市二道区长江物流园公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市南关区北海公园公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市南关区北海公园公共充电站_flag_expand.jpg new file mode 100644 index 0000000..2e0c44c Binary files /dev/null and b/Apps/XinDianTu/Images/长春市南关区北海公园公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市天佑新能源充电站项_flag_expand.jpg b/Apps/XinDianTu/Images/长春市天佑新能源充电站项_flag_expand.jpg new file mode 100644 index 0000000..43ce043 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市天佑新能源充电站项_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电..._flag_expand.jpg new file mode 100644 index 0000000..26de872 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电_flag_expand.jpg new file mode 100644 index 0000000..c0c0d34 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电·_flag_expand.jpg new file mode 100644 index 0000000..62643ce Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电··_flag_expand.jpg new file mode 100644 index 0000000..9c80553 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电站_flag_expand.jpg new file mode 100644 index 0000000..26de872 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区万龙第十城公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区九台南路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区九台南路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..7c0d433 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区九台南路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区刀龙第干城公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区刀龙第干城公共充电站_flag_expand.jpg new file mode 100644 index 0000000..601c630 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区刀龙第干城公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电..._flag_expand.jpg new file mode 100644 index 0000000..0a52469 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电_flag_expand.jpg new file mode 100644 index 0000000..d4393cc Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电·_flag_expand.jpg new file mode 100644 index 0000000..06df7be Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电··_flag_expand.jpg new file mode 100644 index 0000000..472d03b Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电…_flag_expand.jpg new file mode 100644 index 0000000..5f3d66d Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北亚泰大街公共充电…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站..._flag_expand.jpg new file mode 100644 index 0000000..11a9107 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..b0f97c7 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站·_flag_expand.jpg new file mode 100644 index 0000000..e0d46eb Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站··_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站··_flag_expand.jpg new file mode 100644 index 0000000..9e95a3a Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站··_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站···_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站···_flag_expand.jpg new file mode 100644 index 0000000..e0d46eb Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站···_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站…_flag_expand.jpg new file mode 100644 index 0000000..f750378 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北四环路公共充电站…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区北环城路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区北环城路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..1e10be9 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区北环城路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区方龙第十城公共充电_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区方龙第十城公共充电_flag_expand.jpg new file mode 100644 index 0000000..9c80553 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区方龙第十城公共充电_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市宽城区盛德大街公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市宽城区盛德大街公共充电站_flag_expand.jpg new file mode 100644 index 0000000..f20350d Binary files /dev/null and b/Apps/XinDianTu/Images/长春市宽城区盛德大街公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站 (...)_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站 (...)_flag_expand.jpg new file mode 100644 index 0000000..6c9e87d Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站 (...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..ef1fd82 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(...)_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(...)_flag_expand.jpg new file mode 100644 index 0000000..ce1cd11 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(...)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…)_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…)_flag_expand.jpg new file mode 100644 index 0000000..5e50e88 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…_flag_expand.jpg new file mode 100644 index 0000000..e0cc197 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路公共充电站(…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市朝阳区蔚山路绿能公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市朝阳区蔚山路绿能公共充电站_flag_expand.jpg new file mode 100644 index 0000000..959d245 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市朝阳区蔚山路绿能公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司..._flag_expand.jpg new file mode 100644 index 0000000..a3a4972 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司_flag_expand.jpg b/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司_flag_expand.jpg new file mode 100644 index 0000000..dd7284a Binary files /dev/null and b/Apps/XinDianTu/Images/长春市正通新能源运营管理有限公司_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市经开区昆山路超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市经开区昆山路超级充电站_flag_expand.jpg new file mode 100644 index 0000000..b8894ab Binary files /dev/null and b/Apps/XinDianTu/Images/长春市经开区昆山路超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市经开发区昆山路超级充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市经开发区昆山路超级充电站_flag_expand.jpg new file mode 100644 index 0000000..8da8f86 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市经开发区昆山路超级充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区中机物流园公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区中机物流园公共充电站_flag_expand.jpg new file mode 100644 index 0000000..10a297b Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区中机物流园公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共_flag_expand.jpg new file mode 100644 index 0000000..27e3e34 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共·_flag_expand.jpg new file mode 100644 index 0000000..58df109 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共…_flag_expand.jpg new file mode 100644 index 0000000..7a0679e Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区中车长客园中园公共…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..2ae518d Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站(…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站(…_flag_expand.jpg new file mode 100644 index 0000000..c6c4d19 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区南阳路公共充电站(…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站..._flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站..._flag_expand.jpg new file mode 100644 index 0000000..98bf49f Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站..._flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..fe18fc5 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站·_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站·_flag_expand.jpg new file mode 100644 index 0000000..1f9f8c9 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站·_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站…_flag_expand.jpg new file mode 100644 index 0000000..873cdcb Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区西环城路公共充电站…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区锦江花园公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区锦江花园公共充电站_flag_expand.jpg new file mode 100644 index 0000000..2301e1a Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区锦江花园公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站_flag_expand.jpg new file mode 100644 index 0000000..9688602 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…)_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…)_flag_expand.jpg new file mode 100644 index 0000000..dbd750a Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…_flag_expand.jpg b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…_flag_expand.jpg new file mode 100644 index 0000000..aafc5e1 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市绿园区雁鸣湖公共充电站(…_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春市见城区北四环路公共充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春市见城区北四环路公共充电站_flag_expand.jpg new file mode 100644 index 0000000..0401585 Binary files /dev/null and b/Apps/XinDianTu/Images/长春市见城区北四环路公共充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春开元名都大酒店超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春开元名都大酒店超充站_flag_expand.jpg new file mode 100644 index 0000000..7eb5a97 Binary files /dev/null and b/Apps/XinDianTu/Images/长春开元名都大酒店超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春欧亚三环 蔚来充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长春欧亚三环 蔚来充电站_flag_expand.jpg new file mode 100644 index 0000000..56d8350 Binary files /dev/null and b/Apps/XinDianTu/Images/长春欧亚三环 蔚来充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春环球贸易中心极充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春环球贸易中心极充站_flag_expand.jpg new file mode 100644 index 0000000..bd67a5c Binary files /dev/null and b/Apps/XinDianTu/Images/长春环球贸易中心极充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春绿园名车广场 蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春绿园名车广场 蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..4bf291a Binary files /dev/null and b/Apps/XinDianTu/Images/长春绿园名车广场 蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春香格里拉大酒店 蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春香格里拉大酒店 蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..b877d9e Binary files /dev/null and b/Apps/XinDianTu/Images/长春香格里拉大酒店 蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长春香格里拉大酒店蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/长春香格里拉大酒店蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..1e90eda Binary files /dev/null and b/Apps/XinDianTu/Images/长春香格里拉大酒店蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/长谷入倒充电站_flag_expand.jpg b/Apps/XinDianTu/Images/长谷入倒充电站_flag_expand.jpg new file mode 100644 index 0000000..bbcfca2 Binary files /dev/null and b/Apps/XinDianTu/Images/长谷入倒充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/隆化南路充电站_flag_expand.jpg b/Apps/XinDianTu/Images/隆化南路充电站_flag_expand.jpg new file mode 100644 index 0000000..2e25be6 Binary files /dev/null and b/Apps/XinDianTu/Images/隆化南路充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/零度以下充电站_flag_expand.jpg b/Apps/XinDianTu/Images/零度以下充电站_flag_expand.jpg new file mode 100644 index 0000000..ea82be9 Binary files /dev/null and b/Apps/XinDianTu/Images/零度以下充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/零度以下充电站(欧亚商都站)_flag_expand.jpg b/Apps/XinDianTu/Images/零度以下充电站(欧亚商都站)_flag_expand.jpg new file mode 100644 index 0000000..285f575 Binary files /dev/null and b/Apps/XinDianTu/Images/零度以下充电站(欧亚商都站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/零度以下充电站(百脑汇站)_flag_expand.jpg b/Apps/XinDianTu/Images/零度以下充电站(百脑汇站)_flag_expand.jpg new file mode 100644 index 0000000..beba60e Binary files /dev/null and b/Apps/XinDianTu/Images/零度以下充电站(百脑汇站)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg new file mode 100644 index 0000000..48199c2 Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg new file mode 100644 index 0000000..bc57290 Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特充电站(兰家大金仓玉米收储)_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特长春北海路CBD 蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特长春北海路CBD 蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..005b05d Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特长春北海路CBD 蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特长春宽城中东港 蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特长春宽城中东港 蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..dbd9a70 Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特长春宽城中东港 蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特长春宽城中东港_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特长春宽城中东港_flag_expand.jpg new file mode 100644 index 0000000..d1e8e95 Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特长春宽城中东港_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特长春宽城中东港蔚来超充站_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特长春宽城中东港蔚来超充站_flag_expand.jpg new file mode 100644 index 0000000..881ce1d Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特长春宽城中东港蔚来超充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/驿来特长春红旗街这有山 蔚来充电站_flag_expand.jpg b/Apps/XinDianTu/Images/驿来特长春红旗街这有山 蔚来充电站_flag_expand.jpg new file mode 100644 index 0000000..f527151 Binary files /dev/null and b/Apps/XinDianTu/Images/驿来特长春红旗街这有山 蔚来充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/鹅充充充电站_flag_expand.jpg b/Apps/XinDianTu/Images/鹅充充充电站_flag_expand.jpg new file mode 100644 index 0000000..8a7a233 Binary files /dev/null and b/Apps/XinDianTu/Images/鹅充充充电站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/麦上新能源首宾馆站_flag_expand.jpg b/Apps/XinDianTu/Images/麦上新能源首宾馆站_flag_expand.jpg new file mode 100644 index 0000000..057f888 Binary files /dev/null and b/Apps/XinDianTu/Images/麦上新能源首宾馆站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/麦工新能源这有山站_flag_expand.jpg b/Apps/XinDianTu/Images/麦工新能源这有山站_flag_expand.jpg new file mode 100644 index 0000000..f4e5e6a Binary files /dev/null and b/Apps/XinDianTu/Images/麦工新能源这有山站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Images/龙雨超级快充站_flag_expand.jpg b/Apps/XinDianTu/Images/龙雨超级快充站_flag_expand.jpg new file mode 100644 index 0000000..9762dce Binary files /dev/null and b/Apps/XinDianTu/Images/龙雨超级快充站_flag_expand.jpg differ diff --git a/Apps/XinDianTu/Opener.py b/Apps/XinDianTu/Opener.py new file mode 100644 index 0000000..05ee8d7 --- /dev/null +++ b/Apps/XinDianTu/Opener.py @@ -0,0 +1,189 @@ +# coding=utf-8 +import asyncio +import logging +import time +import uuid +import os +import uiautomator2 as u2 +from Util.Kit import take_screenshot, detect_black_agree_button, click_image_template, detect_ad_close_x, detect_any_ad_close, detect_bottom_close_circle +from Util.ObsUtil import ObsUploader +from Util.XinDianTuReadImageKit import XinDianTuReadImageKit +from Config.Config import OBS_TMP_PREFIX, CDN_DOMAIN + +# pip install adbutils +# 配置日志输出,方便调试和监控 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger("OpenXinDianTu") + +async def check_and_close_ad(d): + """ + 检测并关闭广告弹窗(优先使用计算机图形学方案,节省成本和时间) + """ + logger.info("开始检测广告弹窗...") + + # 1. 拍摄截图 + t1 = time.time() + image_uuid = str(uuid.uuid4()) + # 使用相对路径: 基于当前脚本目录下的 Images 文件夹 + base_dir = os.path.dirname(os.path.abspath(__file__)) + save_dir = os.path.join(base_dir, "./Images") + screenshot_path = take_screenshot(d, image_uuid, save_dir=save_dir) + logger.info(f"Step [广告检测截图] 耗时: {time.time() - t1:.4f}s") + + # 2. 图形学检测方案 (Local CV) + t_cv = time.time() + + # 方案 A: 检测黑色的"同意"按钮 (隐私协议) + # 这一步不需要模板,直接通过颜色和形状特征检测 + agree_pos = detect_black_agree_button(screenshot_path, debug_dir=save_dir) + if agree_pos: + x, y = agree_pos + logger.info(f"通过图形学算法检测到隐私协议'同意'按钮: ({x}, {y})") + d.click(x, y) + logger.info(f"Step [图形学检测-同意按钮] 耗时: {time.time() - t_cv:.4f}s") + # 清理截图 + if os.path.exists(screenshot_path): + os.remove(screenshot_path) + return True + + # 方案 B: 多模板匹配检测 "关闭(X)" 按钮 (支持多种广告样式) + template_dir = os.path.join(base_dir, "Templates") + + if os.path.exists(template_dir): + logger.info(f"正在尝试多模板匹配关闭按钮: {template_dir}") + close_pos = detect_any_ad_close(screenshot_path, template_dir, debug_dir=save_dir) + + if close_pos: + x, y = close_pos + logger.info(f"通过多模板匹配检测到广告关闭按钮: ({x}, {y})") + d.click(x, y) + logger.info(f"Step [图形学检测-关闭按钮] 耗时: {time.time() - t_cv:.4f}s") + if os.path.exists(screenshot_path): + os.remove(screenshot_path) + return True + + # 方案 C: 底部圆形关闭按钮检测 (无模板,基于几何特征) + # 针对插屏广告底部中间的圆形关闭按钮 + circle_pos = detect_bottom_close_circle(screenshot_path, debug_dir=save_dir) + if circle_pos: + x, y = circle_pos + logger.info(f"通过几何特征检测到底部圆形关闭按钮: ({x}, {y})") + d.click(x, y) + logger.info(f"Step [图形学检测-底部圆形按钮] 耗时: {time.time() - t_cv:.4f}s") + if os.path.exists(screenshot_path): + os.remove(screenshot_path) + return True + + logger.info(f"本地图形学检测完成,未发现已知广告。耗时: {time.time() - t_cv:.4f}s") + + # [优化] 用户指示:回退到大模型检查不靠谱且浪费。 + # 如果本地图形学方案(黑按钮、X关闭)都未命中,则直接认为无广告或已进入正常页面。 + + # 清理本地截图 + if os.path.exists(screenshot_path): + os.remove(screenshot_path) + + return False + + +async def open_mini_program(): + """ + 异步形式的进入微信小程序 + """ + # 连接设备 + d = u2.connect() + + logger.info("执行进入小程序.") + + # 启动微信 (强制停止后再启动,确保回到主页) + logger.info("启动微信...") + d.app_start("com.tencent.mm", stop=True) + await asyncio.sleep(5) # 给微信充足的启动时间 + + # 0. 确保在“微信”消息列表标签页 + tab_chat = d(text="微信", resourceId="com.tencent.mm:id/f2s") # 常见底部标签 ID + if not tab_chat.exists: + tab_chat = d(text="微信") + + if tab_chat.exists: + # 如果没选中(通常选中的文本颜色不同或有其他特征,这里直接点一下确保切换) + logger.info("点击底部‘微信’标签,确保在消息列表页.") + tab_chat.click() + await asyncio.sleep(1) + + # 1. 点击搜索按钮(放大镜图标) + # 仅保留坐标点击逻辑 + window_size = d.window_size() + w, h = window_size[0], window_size[1] + + # 精确相对坐标:x=84%, y=8% (基于截图推算) + click_x = int(w * 0.84) + click_y = int(h * 0.08) + logger.info(f"使用精确坐标点击搜索按钮: ({click_x}, {click_y})") + d.click(click_x, click_y) + + # 点击后给予一定的加载时间 + await asyncio.sleep(2) + + # 2. 直接尝试输入内容 (既然已经看到了搜索界面,我们不再进行严格的特征校验) + logger.info("准备输入搜索内容: 新电途") + + # 启用 u2 快速输入法 (使用更新的方法名) + d.set_input_ime(True) + + # 尝试点击搜索框位置以确保获取焦点 (通常在顶部居中偏左) + search_bar_x, search_bar_y = int(w * 0.4), int(h * 0.08) + d.click(search_bar_x, search_bar_y) + await asyncio.sleep(1.5) # 稍微多等一会儿让输入法准备好 + + # 直接发送按键 + try: + # 尝试先不使用 clear=True,因为它在某些设备上会导致 ADB_KEYBOARD_CLEAR_TEXT 错误 + # 如果需要清除文本,可以尝试全选+删除,或者假设搜索框是空的 + logger.info("尝试输入文字: 新电途") + d.send_keys("新电途") + logger.info("文字输入指令已发送.") + except Exception as e: + logger.warning(f"直接 send_keys 失败: {e}") + + try: + # 备选方案:尝试获取焦点元素并设置文本 + logger.info("尝试使用 set_text 设置文本...") + d(focused=True).set_text("新电途") + logger.info("set_text 指令已发送.") + except Exception as e2: + logger.error(f"文字输入彻底失败: {e2}") + # 最后的尝试:切换回默认输入法(有时 FastInputIME 会卡住) + # d.set_fastinput_ime(False) + # d.send_keys("新电途") + + await asyncio.sleep(3) + + # 兜底点击:点击搜索结果的第一项位置 (x=50%, y=18%) + res_x, res_y = int(w * 0.5), int(h * 0.18) + logger.info(f"尝试坐标点击第一项: ({res_x}, {res_y})") + d.click(res_x, res_y) + await asyncio.sleep(10) + # 进入小程序后,检查并处理广告 + await check_and_close_ad(d) + return True + + +async def main(): + success = await open_mini_program() + if success: + logger.info("任务执行成功.") + else: + logger.error("任务执行失败.") + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + logger.info("程序被用户中断.") + except Exception as e: + logger.exception(f"运行过程中出现异常: {e}") diff --git a/Apps/XinDianTu/Report/Export.py b/Apps/XinDianTu/Report/Export.py new file mode 100644 index 0000000..0f69ce0 --- /dev/null +++ b/Apps/XinDianTu/Report/Export.py @@ -0,0 +1,505 @@ +import asyncio +import json +import logging +import os +import re +import sys +from datetime import datetime +from decimal import Decimal +from typing import Any, Dict, List, Optional, Set + +logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") +logger = logging.getLogger(__name__) + +project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) +if project_root not in sys.path: + sys.path.append(project_root) + +from Util import Win32Patch + +Win32Patch.patch() + +from Config.Config import DB_URL +from DbKit.Db import Db + +try: + from openpyxl import Workbook + from openpyxl.styles import Alignment, Border, Font, PatternFill, Side + from openpyxl.utils import get_column_letter +except Exception as e: + raise RuntimeError("缺少 openpyxl 依赖,请先安装:pip install openpyxl") from e + + +# --- 样式定义 --- +# 颜色 +HEADER_FILL_COLOR = "4472C4" # 专业蓝 (表头背景) +HEADER_FONT_COLOR = "FFFFFF" # 白色 (表头文字) +LABEL_FILL_COLOR = "D9E1F2" # 浅蓝 (Key标签背景,更柔和) +SECTION_FILL_COLOR = "DDEBF7" # 极浅蓝 (小节标题背景) +BORDER_COLOR = "BFBFBF" # 边框颜色 +OUTER_BORDER_COLOR = "4472C4" # 外边框颜色 + +# 字体 +FONT_NAME = "微软雅黑" +TITLE_FONT = Font(name=FONT_NAME, size=20, bold=True, color="4472C4") # 主标题加大 +SUBTITLE_FONT = Font(name=FONT_NAME, size=12, bold=True, color="203764") # 小节标题加深色 +HEADER_FONT = Font(name=FONT_NAME, size=11, bold=True, color=HEADER_FONT_COLOR) +LABEL_FONT = Font(name=FONT_NAME, size=10, bold=True, color="333333") # 标签文字深灰 +DATA_FONT = Font(name=FONT_NAME, size=10) + +# 边框 +THIN_SIDE = Side(style="thin", color=BORDER_COLOR) +MEDIUM_SIDE = Side(style="medium", color=OUTER_BORDER_COLOR) +BORDER_ALL_THIN = Border(left=THIN_SIDE, right=THIN_SIDE, top=THIN_SIDE, bottom=THIN_SIDE) + +# 填充 +HEADER_FILL = PatternFill("solid", fgColor=HEADER_FILL_COLOR) +LABEL_FILL = PatternFill("solid", fgColor=LABEL_FILL_COLOR) +SECTION_FILL = PatternFill("solid", fgColor=SECTION_FILL_COLOR) + +INVALID_SHEET_CHARS_RE = re.compile(r"[:\\/?*\[\]]") + + +def _safe_excel_sheet_title(raw_title: str, existing_titles: Set[str]) -> str: + title = (raw_title or "").strip() + if not title: + title = "未命名场站" + + title = INVALID_SHEET_CHARS_RE.sub("_", title) + title = title.replace("\n", " ").replace("\r", " ").strip() + if len(title) > 31: + title = title[:31].rstrip() + if not title: + title = "未命名场站" + + if title not in existing_titles: + existing_titles.add(title) + return title + + base = title[:28].rstrip() if len(title) > 28 else title + idx = 2 + while True: + candidate = f"{base}_{idx}" + if len(candidate) > 31: + candidate = candidate[:31] + if candidate not in existing_titles: + existing_titles.add(candidate) + return candidate + idx += 1 + + +def _to_float(value): + if value is None: + return None + if isinstance(value, Decimal): + return float(value) + return value + + +def _parse_schedule(schedule_json: Any) -> List[Dict[str, Any]]: + if not schedule_json: + return [] + if isinstance(schedule_json, (dict, list)): + return schedule_json if isinstance(schedule_json, list) else [schedule_json] + if isinstance(schedule_json, (bytes, bytearray)): + try: + schedule_json = schedule_json.decode("utf-8", errors="ignore") + except Exception: + schedule_json = str(schedule_json) + if not isinstance(schedule_json, str): + return [] + try: + data = json.loads(schedule_json) + if isinstance(data, list): + return data + if isinstance(data, dict): + return [data] + return [] + except Exception: + return [] + + +def _apply_table_header_style(ws, row_idx: int, col_start: int, col_end: int): + alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) + # Header row with top/bottom medium border + border = Border(left=THIN_SIDE, right=THIN_SIDE, top=MEDIUM_SIDE, bottom=MEDIUM_SIDE) + + for col in range(col_start, col_end + 1): + cell = ws.cell(row=row_idx, column=col) + cell.fill = HEADER_FILL + cell.font = HEADER_FONT + cell.alignment = alignment + cell.border = border + + ws.row_dimensions[row_idx].height = 28 # Increased header height + + +def _apply_table_cell_style(ws, row_idx: int, col_start: int, col_end: int, center_cols: List[int] = None): + for col in range(col_start, col_end + 1): + cell = ws.cell(row=row_idx, column=col) + cell.font = DATA_FONT + + is_center = center_cols and col in center_cols + cell.alignment = Alignment(horizontal="center" if is_center else "left", vertical="center", wrap_text=True) + cell.border = BORDER_ALL_THIN + + ws.row_dimensions[row_idx].height = 22 # Comfortable row height + + +def _style_info_key_value(ws, row, col_key, col_val, merge_val_cols=0): + # Key Style + c_key = ws.cell(row=row, column=col_key) + c_key.font = LABEL_FONT + c_key.alignment = Alignment(horizontal="right", vertical="center") + c_key.fill = LABEL_FILL + c_key.border = BORDER_ALL_THIN + + # Value Style + c_val = ws.cell(row=row, column=col_val) + c_val.font = DATA_FONT + c_val.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True) + c_val.border = BORDER_ALL_THIN + + if merge_val_cols > 0: + ws.merge_cells(start_row=row, start_column=col_val, end_row=row, end_column=col_val + merge_val_cols) + # Apply border to merged cells (required for openpyxl) + for c_offset in range(1, merge_val_cols + 1): + c_merged = ws.cell(row=row, column=col_val + c_offset) + c_merged.border = BORDER_ALL_THIN + + +def _set_column_widths(ws, widths: dict[int, float]): + for col_idx, width in widths.items(): + ws.column_dimensions[get_column_letter(col_idx)].width = width + + +class DorisExcelExporter: + def __init__(self, db_url: str): + self.db = Db(db_url=db_url) + + async def init(self): + await self.db.init_db() + + async def close(self): + try: + await self.db.close() + finally: + if getattr(self.db, "engine", None): + await self.db.engine.dispose() + + async def fetch_current_station_rows(self) -> List[Dict[str, Any]]: + sql = """ + SELECT + p.station_hash, + p.station_name, + p.address, + p.coord_x, + p.coord_y, + s.total_piles AS total_guns, + s.free_piles AS free_guns, + s.piles_detail_json, + s.current_price, + s.pro_price, + s.parking_info, + s.distance, + s.valid_start_time AS status_update_time, + pr.schedule_json, + pr.valid_start_time AS schedule_update_time + FROM t_station_profile_scd p + LEFT JOIN t_station_status_scd s + ON p.station_hash = s.station_hash AND s.is_current = 1 + LEFT JOIN t_station_price_schedule_scd pr + ON p.station_hash = pr.station_hash AND pr.is_current = 1 + WHERE p.is_current = 1 + ORDER BY p.station_name + """ + return await self.db.find(sql) + + +def _build_station_sheet(ws, row: Dict[str, Any]): + station_name = row.get("station_name") or "" + address = row.get("address") or "" + coord_x = row.get("coord_x") + coord_y = row.get("coord_y") + total_guns = row.get("total_guns") + free_guns = row.get("free_guns") + current_price = _to_float(row.get("current_price")) + pro_price = _to_float(row.get("pro_price")) + parking_info = row.get("parking_info") + distance = row.get("distance") + status_update_time = row.get("status_update_time") + schedule_update_time = row.get("schedule_update_time") + schedule_items = _parse_schedule(row.get("schedule_json")) + piles_detail = _parse_schedule(row.get("piles_detail_json")) # Reuse the same parser + + for i in range(1, len(schedule_items)): + curr = schedule_items[i] + prev = schedule_items[i - 1] + if not isinstance(curr, dict) or not isinstance(prev, dict): + continue + + for k in ("price_kwh", "electric_fee_kwh", "service_fee_kwh", "price", "electric_fee", "service_fee"): + if curr.get(k) is None and prev.get(k) is not None: + curr[k] = prev[k] + + ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=6) + ws.row_dimensions[1].height = 40 # Increased title height + + title_cell = ws.cell(row=1, column=1, value=station_name or "场站") + title_cell.font = TITLE_FONT + title_cell.alignment = Alignment(horizontal="center", vertical="center") + # Title border (Optional: bottom medium) + for c in range(1, 7): + ws.cell(row=1, column=c).border = Border(bottom=MEDIUM_SIDE) + + ws.sheet_properties.tabColor = "4472C4" # Tab color matches theme + + # Layout using _style_info_key_value + # Row 3: 位置 | Address + _style_info_key_value(ws, 3, 1, 2, merge_val_cols=4) + ws.cell(row=3, column=1, value="位置") + ws.cell(row=3, column=2, value=address) + + # Row 4: 经纬度 | Coords | 距离 | Distance + coord_text = f"{coord_x}, {coord_y}" if coord_x is not None else "" + _style_info_key_value(ws, 4, 1, 2, merge_val_cols=1) # 经纬度 occupies col 2-3 + ws.cell(row=4, column=1, value="经纬度") + ws.cell(row=4, column=2, value=coord_text) + + _style_info_key_value(ws, 4, 4, 5, merge_val_cols=1) # 距离 occupies col 5-6 + ws.cell(row=4, column=4, value="距离") + ws.cell(row=4, column=5, value=distance) + + # Row 5: 空闲 | val | 总枪 | val | 停车 | val (Parking info needs more space, let's adjust) + # Original: Free(1,2), Total(3,4), Parking(5,6) - Parking info is long usually. + # New Layout: Free(1,2), Total(3,4), Parking(5,6) is fine if col 6 is wide. + _style_info_key_value(ws, 5, 1, 2) + ws.cell(row=5, column=1, value="空闲枪数") + ws.cell(row=5, column=2, value=free_guns) + + _style_info_key_value(ws, 5, 3, 4) + ws.cell(row=5, column=3, value="总枪数") + ws.cell(row=5, column=4, value=total_guns) + + _style_info_key_value(ws, 5, 5, 6) + ws.cell(row=5, column=5, value="停车信息") + ws.cell(row=5, column=6, value=parking_info) + + # Row 6: Price | val | Pro Price | val | Update Time | val + _style_info_key_value(ws, 6, 1, 2) + ws.cell(row=6, column=1, value="当前价格") + ws.cell(row=6, column=2, value=current_price) + + _style_info_key_value(ws, 6, 3, 4) + ws.cell(row=6, column=3, value="PRO会员价") + ws.cell(row=6, column=4, value=pro_price) + + _style_info_key_value(ws, 6, 5, 6) + ws.cell(row=6, column=5, value="更新时间") + ws.cell(row=6, column=6, value=status_update_time) + + # Adjust row heights for info section + for r in range(3, 7): + ws.row_dimensions[r].height = 24 + + # 价格表部分 + schedule_start_row = 8 + + # Section Title with style + sect_cell = ws.cell(row=schedule_start_row, column=1, value="价格时段表") + sect_cell.font = SUBTITLE_FONT + sect_cell.fill = SECTION_FILL + sect_cell.border = Border(bottom=THIN_SIDE) + ws.merge_cells(start_row=schedule_start_row, start_column=1, end_row=schedule_start_row, end_column=6) + # Apply fill to merged cells + for c in range(2, 7): + ws.cell(row=schedule_start_row, column=c).fill = SECTION_FILL + ws.cell(row=schedule_start_row, column=c).border = Border(bottom=THIN_SIDE) + + header_row = schedule_start_row + 1 + headers = ["开始", "结束", "电价(元/kWh)", "电费(元/kWh)", "服务费(元/kWh)", "备注"] + for i, h in enumerate(headers, start=1): + ws.cell(row=header_row, column=i, value=h) + _apply_table_header_style(ws, header_row, 1, len(headers)) + + row_idx = header_row + 1 + + # Track last valid values for forward filling + last_valid_price = None + last_valid_electric = None + last_valid_service = None + + for item in schedule_items: + if not isinstance(item, dict): + continue + + start = item.get("start") or item.get("begin") or item.get("start_time") or "" + end = item.get("end") or item.get("finish") or item.get("end_time") or "" + + price = _to_float(item.get("price_kwh") if "price_kwh" in item else item.get("price")) + electric_fee = _to_float(item.get("electric_fee_kwh") if "electric_fee_kwh" in item else item.get("electric_fee")) + service_fee = _to_float(item.get("service_fee_kwh") if "service_fee_kwh" in item else item.get("service_fee")) + + # Forward fill if None + if price is None and last_valid_price is not None: + price = last_valid_price + if electric_fee is None and last_valid_electric is not None: + electric_fee = last_valid_electric + if service_fee is None and last_valid_service is not None: + service_fee = last_valid_service + + # Update last valid values if current is not None + if price is not None: + last_valid_price = price + if electric_fee is not None: + last_valid_electric = electric_fee + if service_fee is not None: + last_valid_service = service_fee + + remark = item.get("type") or item.get("tag") or item.get("period") or "" + + ws.cell(row=row_idx, column=1, value=start) + ws.cell(row=row_idx, column=2, value=end) + ws.cell(row=row_idx, column=3, value=price) + ws.cell(row=row_idx, column=4, value=electric_fee) + ws.cell(row=row_idx, column=5, value=service_fee) + ws.cell(row=row_idx, column=6, value=remark) + _apply_table_cell_style(ws, row_idx, 1, len(headers), center_cols=[1, 2, 3, 4, 5]) + row_idx += 1 + + # 充电桩详情部分 + piles_start_row = row_idx + 2 + + # Section Title with style + sect_cell = ws.cell(row=piles_start_row, column=1, value="充电桩详情") + sect_cell.font = SUBTITLE_FONT + sect_cell.fill = SECTION_FILL + sect_cell.border = Border(bottom=THIN_SIDE) + ws.merge_cells(start_row=piles_start_row, start_column=1, end_row=piles_start_row, end_column=6) + # Apply fill to merged cells + for c in range(2, 7): + ws.cell(row=piles_start_row, column=c).fill = SECTION_FILL + ws.cell(row=piles_start_row, column=c).border = Border(bottom=THIN_SIDE) + + pile_header_row = piles_start_row + 1 + pile_headers = ["编号", "功率", "类型", "状态", "价格(元/kWh)", "备注"] + for i, h in enumerate(pile_headers, start=1): + ws.cell(row=pile_header_row, column=i, value=h) + _apply_table_header_style(ws, pile_header_row, 1, len(pile_headers)) + + row_idx = pile_header_row + 1 + if piles_detail: + for pile in piles_detail: + if not isinstance(pile, dict): continue + ws.cell(row=row_idx, column=1, value=pile.get("pile_no") or pile.get("id") or "") + ws.cell(row=row_idx, column=2, value=pile.get("power") or "") + ws.cell(row=row_idx, column=3, value=pile.get("type") or "") + ws.cell(row=row_idx, column=4, value=pile.get("status_text") or pile.get("status") or "") + ws.cell(row=row_idx, column=5, value=_to_float(pile.get("price"))) + ws.cell(row=row_idx, column=6, value=pile.get("remark") or "") + _apply_table_cell_style(ws, row_idx, 1, len(pile_headers), center_cols=[1, 2, 3, 4, 5]) + row_idx += 1 + else: + ws.cell(row=row_idx, column=1, value="暂无详情数据") + ws.merge_cells(start_row=row_idx, start_column=1, end_row=row_idx, end_column=6) + _apply_table_cell_style(ws, row_idx, 1, len(pile_headers)) + row_idx += 1 + + ws.freeze_panes = ws["A9"] + _set_column_widths(ws, {1: 20, 2: 20, 3: 16, 4: 16, 5: 16, 6: 25}) + + +def _build_summary_sheet(ws, rows: List[Dict[str, Any]]): + ws.title = "场站总览" + ws.sheet_properties.tabColor = "4472C4" # Tab color matches theme + + # Row 1: Main Title + title_cell = ws.cell(row=1, column=1, value="新电途充电场站数据总览") + title_cell.font = TITLE_FONT + title_cell.alignment = Alignment(horizontal="center", vertical="center") + ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=10) + ws.row_dimensions[1].height = 40 + + # Row 2: Headers + headers = ["场站名称", "地址", "距离", "经度", "纬度", "总枪数", "空闲枪数", "停车信息", "当前价格(元/kWh)", "状态更新时间"] + for i, h in enumerate(headers, start=1): + ws.cell(row=2, column=i, value=h) + _apply_table_header_style(ws, 2, 1, len(headers)) + + # Enable AutoFilter + ws.auto_filter.ref = f"A2:{get_column_letter(len(headers))}{len(rows) + 2}" + + row_idx = 3 + for row in rows: + ws.cell(row=row_idx, column=1, value=row.get("station_name")) + ws.cell(row=row_idx, column=2, value=row.get("address")) + ws.cell(row=row_idx, column=3, value=row.get("distance")) + ws.cell(row=row_idx, column=4, value=row.get("coord_x")) + ws.cell(row=row_idx, column=5, value=row.get("coord_y")) + ws.cell(row=row_idx, column=6, value=row.get("total_guns")) + ws.cell(row=row_idx, column=7, value=row.get("free_guns")) + ws.cell(row=row_idx, column=8, value=row.get("parking_info")) + ws.cell(row=row_idx, column=9, value=_to_float(row.get("current_price"))) + ws.cell(row=row_idx, column=10, value=row.get("status_update_time")) + _apply_table_cell_style(ws, row_idx, 1, len(headers), center_cols=[3, 4, 5, 6, 7, 9, 10]) + row_idx += 1 + + _set_column_widths(ws, {1: 35, 2: 45, 3: 12, 4: 14, 5: 14, 6: 12, 7: 12, 8: 35, 9: 20, 10: 22}) + ws.freeze_panes = ws["A3"] + + +async def export_excel(output_path: str, *, limit: Optional[int] = None) -> str: + exporter = DorisExcelExporter(db_url=DB_URL) + await exporter.init() + try: + rows = await exporter.fetch_current_station_rows() + finally: + await exporter.close() + + if limit is not None: + rows = rows[: max(0, int(limit))] + + wb = Workbook() + + if not rows: + ws = wb.active + ws.title = "无数据" + ws.cell(row=1, column=1, value="未查询到任何场站数据") + wb.save(output_path) + return output_path + + # 1. 创建总览页 + summary_ws = wb.active + _build_summary_sheet(summary_ws, rows) + + # 2. 为每个场站创建独立页 + existing_titles: Set[str] = {"场站总览"} + for row in rows: + sheet_title = _safe_excel_sheet_title(str(row.get("station_name") or ""), existing_titles) + ws = wb.create_sheet(title=sheet_title) + _build_station_sheet(ws, row) + + wb.save(output_path) + return output_path + + +async def main(): + # 配置:默认导出所有数据,如果需要测试少量数据,可以将 None 改为数字,如 10 + limit = None + + # 构建默认输出路径 + ts = datetime.now().strftime("%Y%m%d_%H%M%S") + output_filename = f"./Excel/station_export_{ts}.xlsx" + output_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), output_filename) + + logger.info(f"开始导出 Excel...") + logger.info(f"目标文件: {output_path}") + if limit is not None: + logger.info(f"限制导出记录数: {limit}") + + final_path = await export_excel(output_path, limit=limit) + logger.info(f"Excel 导出完成: {final_path}") + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/Apps/XinDianTu/Run.py b/Apps/XinDianTu/Run.py new file mode 100644 index 0000000..ecb1e89 --- /dev/null +++ b/Apps/XinDianTu/Run.py @@ -0,0 +1,104 @@ +# coding=utf-8 +import asyncio +import logging +import os +import sys + +# 将项目根目录添加到 sys.path +project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +if project_root not in sys.path: + sys.path.append(project_root) + +from Apps.XinDianTu.Service import XinDianTuService +from Apps.XinDianTu import Opener +from Apps.XinDianTu import Crawler +from Apps.XinDianTu import Coord as Y4_Coord +from Apps.XinDianTu import GetCookie as T2_GetAmapCookie + +# 配置日志 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger("FullProcess") + +async def main(): + logger.info("=== 开始全流程任务: 打开小程序 -> 爬取数据 ===") + + # 步骤 0: 初始化基础服务 (DB等) + # 用户要求:程序启动时就完成初始化 + logger.info(">>> 步骤 0: 初始化基础服务 (数据库连接)...") + service = XinDianTuService() + await service.init_db() + + try: + # 步骤 1: 打开新电途小程序 + logger.info(">>> 步骤 1: 启动新电途小程序...") + try: + # 调用 Y2 的 open_mini_program 函数 + success = await Opener.open_mini_program() + if not success: + logger.error("❌ 无法成功打开新电途小程序,任务终止。") + return + except Exception as e: + logger.error(f"❌ 步骤 1 执行异常: {e}") + return + + logger.info("✅ 小程序启动成功,等待 5 秒确保界面稳定...") + await asyncio.sleep(5) + + # 步骤 2: 执行爬取任务 + logger.info(">>> 步骤 2: 开始执行场站爬取任务...") + try: + # 调用 Y3 的 main 函数,传入已初始化的 service + # 传入 do_cleanup=False,因为已在步骤 0 完成清理 + success = await Crawler.main(service=service, do_cleanup=False) + if not success: + logger.error("❌ 步骤 2 爬取任务失败,终止后续步骤。") + return + except Exception as e: + logger.error(f"❌ 步骤 2 执行异常: {e}") + return + + # 步骤 3: 补全坐标 (调用 Y4_Coord) + logger.info(">>> 步骤 3: 启动高德地图坐标回填任务...") + try: + # 首次尝试,开启 Cookie 检查 + await Y4_Coord.main(check_cookie_first=True) + except Y4_Coord.CookieInvalidError: + logger.warning("⚠️ 检测到高德地图 Cookie 失效或缺失。") + logger.info(">>> 正在启动 Cookie 获取工具 (T2)...") + logger.info("请在弹出的浏览器窗口中完成登录,然后在控制台按回车确认。") + + # 调用同步的 T2 工具 + # 由于 T2 包含 input() 阻塞,且这是客户端脚本,直接调用即可 + try: + # 传入 force=True 跳过“文件已存在”的询问,因为我们确定它无效 + # run_in_executor 用于避免完全阻塞事件循环(虽然在这里影响不大) + loop = asyncio.get_event_loop() + success = await loop.run_in_executor(None, T2_GetAmapCookie.run_login_tool, True) + + if success: + logger.info("✅ Cookie 更新成功,正在重新启动坐标回填任务...") + # 再次尝试执行,这次可以跳过检查(刚获取完)或者继续检查 + await Y4_Coord.main(check_cookie_first=False) + else: + logger.error("❌ Cookie 获取失败或用户取消,跳过坐标回填步骤。") + except Exception as e: + logger.error(f"❌ 调用 T2 工具失败: {e}") + except Exception as e: + logger.error(f"❌ 步骤 3 执行异常: {e}") + + finally: + # 确保数据库连接关闭 + if service: + await service.close_db() + logger.info("=== 全流程任务结束 ===") + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + logger.info("程序被用户中断.") + except Exception as e: + logger.exception(f"主程序崩溃: {e}") diff --git a/Apps/XinDianTu/Service.py b/Apps/XinDianTu/Service.py new file mode 100644 index 0000000..d5b0505 --- /dev/null +++ b/Apps/XinDianTu/Service.py @@ -0,0 +1,518 @@ +import hashlib +import os +import sys +import uuid +import logging +import json +import re +from datetime import datetime, timedelta + +# Ensure sys path includes root for imports if not already +project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +if project_root not in sys.path: + sys.path.append(project_root) + +from sqlalchemy import text +from Util.XinDianTuReadImageKit import XinDianTuReadImageKit +from DbKit.Db import Db +from Config.Config import DB_URL +from Model.StationProfile import StationProfile +from Model.StationStatus import StationStatus +from Model.StationPriceSchedule import StationPriceSchedule + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +class XinDianTuService: + def __init__(self): + self.db = Db(db_url=DB_URL) + self.station_profile_model = StationProfile() + self.station_status_model = StationStatus() + self.station_price_schedule_model = StationPriceSchedule() + self.operator = "新电途" + + def generate_id(self): + return str(uuid.uuid4()) + + def get_hash(self, s: str) -> str: + return hashlib.md5(s.encode('utf-8')).hexdigest() + + async def init_db(self): + await self.db.init_db() + + async def close_db(self): + await self.db.close() + + async def process_station_list_vl(self, vl_image_url, json_metadata, device_info=None) -> list: + """ + 基于 VL 模式处理场站列表 + """ + station_list = await XinDianTuReadImageKit.parse_vl_image(vl_image_url, json_metadata, device_info=device_info) + if not station_list: + return [] + + processed_stations = [] + async with await self.db.get_session() as session: + for station in station_list: + name = station.get("station_name") + if not name: + continue + + # 过滤逻辑 (复用) + # if any(keyword in name for keyword in STATION_NAME_IGNORE_KEYWORDS): + # continue + + station_hash = self.get_hash(name) + now = datetime.now() + station["station_hash"] = station_hash + + # 1. 保存 Profile + profile_id = self.generate_id() + await self.station_profile_model.save( + session=session, + id=profile_id, + station_hash=station_hash, + operator=self.operator, + station_name=name, + valid_start_time=now + ) + station["profile_id"] = profile_id + station["valid_start_time"] = now.isoformat() + + # 2. 保存 Status (解析价格和电桩) + status_id = self.generate_id() + + # 处理 piles 字段 + piles_data = station.get("piles") + total, free = 0, 0 + standardized_piles = [] + + if isinstance(piles_data, list): + # 如果是列表,计算总数并标准化结构 + for idx, p in enumerate(piles_data): + try: + t = int(p.get("total", 0)) + f = int(p.get("free", 0)) + total += t + free += f + + # 构造符合 ExportExcel 期望的结构 + standardized_piles.append({ + "pile_no": f"G{idx+1}", + "type": p.get("type", "未知"), + "power": "", # 暂无功率信息 + "status_text": f"空闲{f}/总{t}", + "remark": "AI聚合数据" + }) + except: + pass + else: + # Fallback: 如果不是列表(可能是字符串) + piles_str = str(piles_data) if piles_data else "0/0" + + nums = re.findall(r"\d+", piles_str) + if len(nums) >= 2: + v1 = int(nums[-2]) + v2 = int(nums[-1]) + if v2 >= v1: + free = v1 + total = v2 + else: + free = v2 + total = v1 + + # 构造一条记录用于 Excel 展示 + standardized_piles.append({ + "pile_no": "-", + "type": "未知", + "status_text": piles_str, + "remark": "原始识别文本" + }) + + price_str = station.get("price", "") + current_price = None + try: + price_match = re.search(r"\d+\.\d+", str(price_str)) + if price_match: + current_price = float(price_match.group()) + except: pass + + await self.station_status_model.save( + session=session, + id=status_id, + station_hash=station_hash, + total_piles=total, + free_piles=free, + piles_detail_json=standardized_piles, + current_price=current_price, + pro_price=station.get("pro_price"), + parking_info=station.get("parking"), + distance=station.get("distance"), + valid_start_time=now + ) + station["status_id"] = status_id + station["total_piles"] = total + station["free_piles"] = free + station["current_price"] = current_price + + processed_stations.append(station) + + await session.commit() + return processed_stations + + async def process_station_list_hybrid(self, local_image_path: str, uploader, cdn_domain) -> list: + """ + 混合模式处理场站列表 (图形学切片 + OCR) + """ + station_list = await XinDianTuReadImageKit.parse_hybrid_image(local_image_path, uploader, cdn_domain) + if not station_list: + return [] + + processed_stations = [] + async with await self.db.get_session() as session: + for station in station_list: + name = station.get("station_name") + if not name: + continue + + station_hash = self.get_hash(name) + now = datetime.now() + station["station_hash"] = station_hash + + # 1. 保存 Profile + profile_id = self.generate_id() + await self.station_profile_model.save( + session=session, + id=profile_id, + station_hash=station_hash, + operator=self.operator, + station_name=name, + valid_start_time=now + ) + station["profile_id"] = profile_id + station["valid_start_time"] = now.isoformat() + + # 2. 保存 Status (解析价格和电桩) + status_id = self.generate_id() + piles_str = station.get("piles", "0/0") + total, free = 0, 0 + standardized_piles = [] + + if "/" in piles_str: + try: + parts = piles_str.split("/") + free = int(parts[0]) + total = int(parts[1]) + standardized_piles.append({ + "pile_no": "G1", + "type": "未知", + "power": "", + "status_text": f"空闲{free}/总{total}", + "remark": "混合模式解析" + }) + except: pass + + price_str = station.get("price", "") + current_price = None + try: + price_match = re.search(r"\d+\.\d+", str(price_str)) + if price_match: + current_price = float(price_match.group()) + except: pass + + await self.station_status_model.save( + session=session, + id=status_id, + station_hash=station_hash, + total_piles=total, + free_piles=free, + piles_detail_json=standardized_piles if standardized_piles else None, + current_price=current_price, + parking_info=station.get("parking"), + valid_start_time=now + ) + station["status_id"] = status_id + station["total_piles"] = total + station["free_piles"] = free + station["current_price"] = current_price + + processed_stations.append(station) + + await session.commit() + return processed_stations + + async def process_station_list(self, list_url: str, device_info: dict = None) -> list: + station_list = await XinDianTuReadImageKit.parse_first_level_image_url(list_url, device_info=device_info) + if not station_list: + return [] + + processed_stations = [] + async with await self.db.get_session() as session: + for station in station_list: + name = station.get("station_name") + if not name: + continue + + + station_hash = self.get_hash(name) + now = datetime.now() + station["station_hash"] = station_hash + address = station.get("address") + + profile_id = self.generate_id() + await self.station_profile_model.save( + session=session, + id=profile_id, + station_hash=station_hash, + operator=self.operator, + station_name=name, + address=address, + valid_start_time=now + ) + station["profile_id"] = profile_id + station["valid_start_time"] = now.isoformat() + + status_id = self.generate_id() + piles_info = station.get("piles", []) + + total = 0 + free = 0 + if isinstance(piles_info, list): + for p in piles_info: + if isinstance(p, dict): + try: + total += int(p.get("total", 0)) + free += int(p.get("free", 0)) + except (ValueError, TypeError): + pass + elif isinstance(piles_info, dict): + try: + total = int(piles_info.get("total", 0)) + free = int(piles_info.get("free", 0)) + except (ValueError, TypeError): + total = 0 + free = 0 + + # 过滤掉总枪数为 0 的错误数据 + if total <= 0: + logger.warning(f"跳过场站 {name}: 总枪数为 0 (疑似识别错误或数据无效)") + continue + + price = station.get("price") + current_price = None + if price is not None and price != "": + try: + current_price = float(price) + except (ValueError, TypeError): + current_price = None + + pro_price_val = station.get("pro_price") + pro_price = None + if pro_price_val is not None and pro_price_val != "": + try: + pro_price = float(pro_price_val) + except (ValueError, TypeError): + pro_price = None + + await self.station_status_model.save( + session=session, + id=status_id, + station_hash=station_hash, + total_piles=total, + free_piles=free, + piles_detail_json=piles_info, + current_price=current_price, + pro_price=pro_price, + valid_start_time=now + ) + station["status_id"] = status_id + station["total_piles"] = total + station["free_piles"] = free + station["current_price"] = current_price + + processed_stations.append(station) + + await session.commit() + + return processed_stations + + async def process_station_address(self, station_name: str, detail_url: str, device_info: dict = None) -> dict: + logger.info(f"\n[Service] Processing Address for '{station_name}' from: {detail_url}") + + address_data = await XinDianTuReadImageKit.parse_address(station_name, detail_url, device_info=device_info) + address = address_data.get("address") + if address: + address = address.strip() + + # 尝试获取完整场站名称 + full_name = address_data.get("full_station_name") + final_name = station_name + if full_name: + full_name = full_name.strip() + # 只有当完整名称存在且与原名称不同时才使用 + if full_name and full_name != station_name: + logger.info(f" - Found Full Name: {full_name} (Original: {station_name})") + final_name = full_name + + if address: + logger.info(f" - Found Address: {address}") + station_hash = self.get_hash(station_name) # Hash 必须基于原名称(列表名称)保持一致,以便索引 + + async with await self.db.get_session() as session: + updated = await self.station_profile_model.backfill_address_if_missing( + session=session, + station_hash=station_hash, + station_name=final_name, # 更新为完整名称 + address=address + ) + if updated > 0: + logger.info(f" - Backfilled address and full name into {updated} profile record(s).") + else: + now = datetime.now() + profile_id = self.generate_id() + await self.station_profile_model.save( + session=session, + id=profile_id, + station_hash=station_hash, + operator=self.operator, + station_name=final_name, # 使用完整名称 + address=address, + coord_x=None, + coord_y=None, + valid_start_time=now + ) + logger.info(" - Inserted/Updated profile record with full name.") + await session.commit() + else: + logger.warning(f" - Address is empty (likely incomplete screenshot). Skipping profile update. Data: {address_data}") + + return address_data + + async def record_station_status(self, station_info: dict): + """ + 记录场站状态信息(从列表页抓取到的电桩、价格等) + """ + name = station_info.get("station_name") + if not name: + return + + station_hash = self.get_hash(name) + now = datetime.now() + + # 1. 保存/更新 Profile (基础信息) + async with await self.db.get_session() as session: + profile_id = self.generate_id() + await self.station_profile_model.save( + session=session, + id=profile_id, + station_hash=station_hash, + operator=self.operator, + station_name=name, + valid_start_time=now + ) + + # 2. 保存 Status + status_id = self.generate_id() + + # 解析电桩数量 (支持多组,如 "快:2/10 慢:1/5") + piles_str = station_info.get("piles", "") + total, free = 0, 0 + standardized_piles = [] + + # 尝试匹配 "快:2/10" 或 "2/10" 这种格式 + # 模式 1: 有类型,如 "快:2/10" + matches_with_type = re.findall(r"(\w+):(\d+)/(\d+)", piles_str) + if matches_with_type: + for idx, (p_type, f, t) in enumerate(matches_with_type): + f_int, t_int = int(f), int(t) + free += f_int + total += t_int + standardized_piles.append({ + "pile_no": f"G{idx+1}", + "type": p_type, + "power": "", + "status_text": f"空闲{f_int}/总{t_int}", + "remark": "列表页OCR" + }) + else: + # 模式 2: 无类型,仅 "2/10" + matches_simple = re.findall(r"(\d+)/(\d+)", piles_str) + for idx, (f, t) in enumerate(matches_simple): + f_int, t_int = int(f), int(t) + free += f_int + total += t_int + standardized_piles.append({ + "pile_no": f"G{idx+1}", + "type": "未知", + "power": "", + "status_text": f"空闲{f_int}/总{t_int}", + "remark": "列表页OCR" + }) + + if not standardized_piles: + # 兜底匹配所有数字 + nums = re.findall(r"(\d+)", piles_str) + if len(nums) >= 2: + free = int(nums[0]) + total = int(nums[1]) + standardized_piles.append({ + "pile_no": "G1", + "type": "未知", + "power": "", + "status_text": f"空闲{free}/总{total}", + "remark": "列表页OCR兜底" + }) + + # 解析价格 + price_val = station_info.get("price") + current_price = None + if price_val: + try: + # 提取数字部分 + price_match = re.search(r"(\d+(\.\d+)?)", str(price_val)) + if price_match: + current_price = float(price_match.group(1)) + except: + pass + + await self.station_status_model.save( + session=session, + id=status_id, + station_hash=station_hash, + total_piles=total, + free_piles=free, + piles_detail_json=standardized_piles, + current_price=current_price, + pro_price=None, # 列表页暂不解析 PRO 价 + parking_info=station_info.get("parking_info"), + distance=station_info.get("distance"), + valid_start_time=now + ) + await session.commit() + logger.info(f" - Station status recorded for: {name} (Piles: {free}/{total}, Price: {current_price})") + + async def process_price_schedule(self, station_name: str, schedule_urls: list, device_info: dict = None): + logger.info(f"\n[Service] Processing Price Schedule for '{station_name}'") + + rows = await XinDianTuReadImageKit.parse_price_schedule_multi(station_name, schedule_urls, device_info=device_info) + hourly_schedule = XinDianTuReadImageKit.hourly_full_day(rows) + + if hourly_schedule: + logger.info(f" - Got {len(hourly_schedule)} hourly records.") + station_hash = self.get_hash(station_name) + now = datetime.now() + schedule_id = self.generate_id() + + async with await self.db.get_session() as session: + await self.station_price_schedule_model.save( + session=session, + id=schedule_id, + station_hash=station_hash, + schedule_json=hourly_schedule, + valid_start_time=now + ) + await session.commit() + logger.info(" - Schedule record saved.") + else: + logger.info(" - Failed to parse schedule.") diff --git a/Apps/XinDianTu/Templates/ad_close_x.jpg b/Apps/XinDianTu/Templates/ad_close_x.jpg new file mode 100644 index 0000000..eac5b0d Binary files /dev/null and b/Apps/XinDianTu/Templates/ad_close_x.jpg differ diff --git a/Apps/XinDianTu/__pycache__/Coord.cpython-310.pyc b/Apps/XinDianTu/__pycache__/Coord.cpython-310.pyc new file mode 100644 index 0000000..f4407aa Binary files /dev/null and b/Apps/XinDianTu/__pycache__/Coord.cpython-310.pyc differ diff --git a/Apps/XinDianTu/__pycache__/Crawler.cpython-310.pyc b/Apps/XinDianTu/__pycache__/Crawler.cpython-310.pyc new file mode 100644 index 0000000..f042670 Binary files /dev/null and b/Apps/XinDianTu/__pycache__/Crawler.cpython-310.pyc differ diff --git a/Apps/XinDianTu/__pycache__/GetCookie.cpython-310.pyc b/Apps/XinDianTu/__pycache__/GetCookie.cpython-310.pyc new file mode 100644 index 0000000..777471d Binary files /dev/null and b/Apps/XinDianTu/__pycache__/GetCookie.cpython-310.pyc differ diff --git a/Apps/XinDianTu/__pycache__/Opener.cpython-310.pyc b/Apps/XinDianTu/__pycache__/Opener.cpython-310.pyc new file mode 100644 index 0000000..66a0299 Binary files /dev/null and b/Apps/XinDianTu/__pycache__/Opener.cpython-310.pyc differ diff --git a/Apps/XinDianTu/__pycache__/Run.cpython-310.pyc b/Apps/XinDianTu/__pycache__/Run.cpython-310.pyc new file mode 100644 index 0000000..c5e0116 Binary files /dev/null and b/Apps/XinDianTu/__pycache__/Run.cpython-310.pyc differ diff --git a/Apps/XinDianTu/__pycache__/Service.cpython-310.pyc b/Apps/XinDianTu/__pycache__/Service.cpython-310.pyc new file mode 100644 index 0000000..78238e7 Binary files /dev/null and b/Apps/XinDianTu/__pycache__/Service.cpython-310.pyc differ diff --git a/Config/Config.py b/Config/Config.py new file mode 100644 index 0000000..46974e0 --- /dev/null +++ b/Config/Config.py @@ -0,0 +1,84 @@ +# 开发环境不同,配置信息不同 +# Doris V4 +# DORIS_HOST = "10.10.14.204" +# DORIS_PORT = 9030 +# DORIS_FENODES = "10.10.14.204:8030" +# REDIS_HOST = '10.10.14.14' +# REDIS_PASSWORD = None # 如果没有密码则设为 None +DORIS_HOST = "www.hzkjai.com" +DORIS_PORT = 27025 +DORIS_FENODES = "www.hzkjai.com:27024" +REDIS_HOST = '127.0.0.1' +REDIS_PASSWORD = "DsideaL147258369" + +# 采集配置 +# 滑动距离比例 (0.1 ~ 0.9),数值越大滑动幅度越大,建议 0.3-0.5 以避免错过中间内容 +SCROLL_DISTANCE_RATIO = 0.3 +# 最大滑动/翻页次数,达到此次数后停止采集 +MAX_SCROLLS = 100 +# 默认抓取半径(公里),当检测到场站距离超过此值时停止采集 +MAX_CRAWL_DISTANCE = 50 +# 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页 +REDIS_STATION_EXPIRE = 120 + +# 数据库数据保留时长(天),超过此时长的历史数据(is_current=0)将被删除 +DATA_RETENTION_DAYS = 365 + +# 等待时间配置 (秒) +# 点击进入详情页后等待加载的时间 +WAIT_DETAIL_PAGE_LOAD = 2.5 +# 从详情页返回列表页后等待页面刷新的时间 +WAIT_BACK_TO_LIST = 1.5 +# 执行滑动操作后等待页面内容加载和稳定的时间 +WAIT_AFTER_SCROLL = 3.0 + +# 坐标计算与安全防护 +# 屏幕顶部安全排除比例 (0.0~1.0),此比例区域内不进行点击(避开状态栏、筛选栏等) +SAFE_EXCLUDE_RATIO = 0.20 +# 屏幕底部安全排除比例 (0.0~1.0),此比例区域内不进行点击(避开底部导航栏、功能按钮等) +BOTTOM_SAFE_EXCLUDE_RATIO = 0.1 +# 默认回退屏幕宽度,当无法自动获取设备信息时使用 +FALLBACK_WIDTH = 1080 +# 默认回退屏幕高度,当无法自动获取设备信息时使用 +FALLBACK_HEIGHT = 2400 + +# 视觉模型配置 +VL_MODEL_NAME = "qwen3-vl-flash" +VL_MODEL_NAME_AD = "qwen-vl-max" + + +# 华为云配置 +OBS_AK = "WAFBGJACKDOQZDH1MKZ1" +OBS_SK = "dlWTUbqgCICaYJG3n0Rot4jXaen2HnfFtMVxiPEo" +OBS_SERVER = "obs.cn-north-1.myhuaweicloud.com" +OBS_BUCKET = "dsideal" +OBS_CLOUD_PREFIX = "dsAi/cloudFiles" +OBS_TMP_PREFIX = "dsAi/tmpFiles" +CDN_DOMAIN = "video.edusoa.com" + +# 阿里云API信息【YLT】 +ALY_LLM_API_KEY = "sk-f6da0c787eff4b0389e4ad03a35a911f" +ALY_LLM_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" +ALY_LLM_MODEL_NAME = "deepseek-v3.2" + + +# Doris其它配置信息 +DORIS_USER = "root" +DORIS_PWD = "DsideaL147258369" +DORIS_DATABASE = "yltcharge" +DB_URL = f"mysql+aiomysql://{DORIS_USER}:{DORIS_PWD}@{DORIS_HOST}:{DORIS_PORT}/{DORIS_DATABASE}?charset=utf8mb4" +doris = { + "url": f"jdbc:mysql://{DORIS_HOST}:{DORIS_PORT}/{DORIS_DATABASE}?rewriteBatchedStatements=true&batchsize=1000&serverTimezone=Asia/Shanghai", + "user": DORIS_USER, + "pwd": DORIS_PWD, + "fenodes": DORIS_FENODES, + "database": DORIS_DATABASE +} + + +# REDIS 配置 +REDIS_DB = 2 +REDIS_DECODE_RESPONSES = True +REDIS_PORT = 18890 +REDIS_MAX_CONNECTIONS = 200 + diff --git a/Config/__pycache__/Config.cpython-310.pyc b/Config/__pycache__/Config.cpython-310.pyc new file mode 100644 index 0000000..322a907 Binary files /dev/null and b/Config/__pycache__/Config.cpython-310.pyc differ diff --git a/Config/__pycache__/Config.cpython-313.pyc b/Config/__pycache__/Config.cpython-313.pyc new file mode 100644 index 0000000..8431dab Binary files /dev/null and b/Config/__pycache__/Config.cpython-313.pyc differ diff --git a/Core/BaseCrawler.py b/Core/BaseCrawler.py new file mode 100644 index 0000000..4ba68a9 --- /dev/null +++ b/Core/BaseCrawler.py @@ -0,0 +1,41 @@ +# coding=utf-8 +import abc +import logging + +class BaseCrawler(abc.ABC): + """ + 所有小程序爬虫的基类。 + 定义了标准的生命周期方法。 + """ + + def __init__(self, service=None): + self.logger = logging.getLogger(self.__class__.__name__) + self.service = service + + @abc.abstractmethod + async def start(self): + """ + 启动爬虫的主入口。 + """ + pass + + @abc.abstractmethod + async def open_app(self): + """ + 打开目标小程序。 + """ + pass + + @abc.abstractmethod + async def crawl_list(self): + """ + 爬取列表页。 + """ + pass + + @abc.abstractmethod + async def crawl_detail(self, station_info): + """ + 爬取详情页。 + """ + pass diff --git a/Core/__pycache__/BaseCrawler.cpython-310.pyc b/Core/__pycache__/BaseCrawler.cpython-310.pyc new file mode 100644 index 0000000..53b9ad9 Binary files /dev/null and b/Core/__pycache__/BaseCrawler.cpython-310.pyc differ diff --git a/DbKit/Db.py b/DbKit/Db.py new file mode 100644 index 0000000..a4ffd37 --- /dev/null +++ b/DbKit/Db.py @@ -0,0 +1,1205 @@ +import os +import logging +import re +from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession +from sqlalchemy.orm import sessionmaker +from sqlalchemy.sql import text + +import Config +from DbKit.SqlTemplateLoader import SqlTemplateLoader +from DbKit.TransactionContext import TransactionContext + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + + +class Db: + """通用数据库操作封装类,提供数据库连接和操作功能""" + # 单例实例 + _instance = None + + def __new__(cls, db_url=None, sql_dir=None): + """确保Db类只有一个实例(异步版本)""" + if cls._instance is None: + cls._instance = super(Db, cls).__new__(cls) + # 初始化数据库连接 + cls._instance.engine = None + cls._instance.AsyncSessionLocal = None + cls._instance.db_url = db_url + cls._instance.sql_dir = sql_dir or os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Sql') + + # 初始化SQL模板加载器 + cls._instance.sql_loader = SqlTemplateLoader(cls._instance.sql_dir, auto_load=False) + # 添加标志表示SQL模板尚未加载 + cls._instance._templates_loaded = False + return cls._instance + + def __init__(self, db_url=None, sql_dir=None): + """初始化数据库操作类 + + Args: + db_url: 数据库连接URL,不提供时将使用默认配置 + sql_dir: SQL模板文件目录,不提供时将使用默认目录 + """ + # 单例模式下,初始化只会在第一次创建实例时执行 + # 这里可以为空,因为实际初始化在__new__中完成 + self.sql_dir = sql_dir + self.db_url = db_url + + async def init_db(self, db_url=None): + """ + 初始化数据库连接(异步版本) + + Args: + db_url: 数据库连接URL,优先级高于初始化时提供的URL + """ + # 确定使用的数据库连接URL + final_url = db_url or self.db_url + if not final_url: + # 如果没有提供URL,使用配置文件中的参数构建连接URL + from Config import POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DATABASE + # 转换为异步连接URL + final_url = f"postgresql+asyncpg://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" + else: + # 如果是同步URL,转换为异步URL + if final_url.startswith("postgresql://"): + final_url = final_url.replace("postgresql://", "postgresql+asyncpg://") + + # 创建异步数据库引擎 + self.engine = create_async_engine(final_url) + + # 创建异步会话工厂 + self.AsyncSessionLocal = sessionmaker( + class_=AsyncSession, + autocommit=False, + autoflush=False, + bind=self.engine + ) + + # 检查Redis中是否已经加载了SQL模板 + templates_loaded_in_redis = await self.sql_loader._check_templates_loaded_from_redis() + + # 如果Redis中有加载的模板,直接从Redis加载 + if templates_loaded_in_redis: + try: + await self.sql_loader._load_from_redis() + self._templates_loaded = True + logger.info(f"从Redis加载SQL模板完成,共{len(self.sql_loader._loaded_files)}个文件,{len(self.sql_loader._template_map)}个模板") + except Exception as e: + logger.error(f"从Redis加载SQL模板失败: {str(e)}") + # 不抛出异常,允许继续执行 + pass + # 如果Redis中没有,且内存中也没有加载过,执行正常加载流程 + elif not getattr(self, '_templates_loaded', False): + try: + await self.load_all_templates() + self._templates_loaded = True + + # 获取并记录SQL模板统计信息 + loaded_files = len(self.sql_loader._loaded_files) + template_count = 0 + for namespace, templates in self.sql_loader.templates.items(): + template_count += len(templates) + logger.info(f"SQL模板加载完成,共加载{loaded_files}个文件,{template_count}个模板") + except Exception as e: + logger.error(f"加载SQL模板失败: {str(e)}") + # 不抛出异常,允许数据库操作继续进行 + pass + + async def get_session(self): + """获取数据库会话(异步版本) + + Returns: + AsyncSession: 异步数据库会话对象 + """ + if self.AsyncSessionLocal is None: + await self.init_db() + return self.AsyncSessionLocal() + + async def close(self): + if hasattr(self, "engine") and self.engine is not None: + try: + await self.engine.dispose() + finally: + self.engine = None + self.AsyncSessionLocal = None + + async def load_all_templates(self): + """异步加载所有SQL模板 + + Returns: + self: 支持链式调用 + """ + await self.sql_loader.load_all_templates() + return self + + def _is_sql_template(self, sql_input): + """ + 判断输入的带点字符串是SQL模板还是SQL语句 + + Args: + sql_input: 输入的字符串,可能是SQL模板名称或SQL语句 + + Returns: + bool: 如果是SQL模板返回True,如果是SQL语句返回False + """ + # 如果输入不是字符串或者不包含点号,直接判定为SQL语句 + if not isinstance(sql_input, str) or '.' not in sql_input: + return False + + # 检查sql_loader是否存在且已初始化 + if not hasattr(self, 'sql_loader') or not self.sql_loader: + return False + + # 检查模板映射是否存在 + if not hasattr(self.sql_loader, '_template_map') or not self.sql_loader._template_map: + return False + + # 在模板映射中查找,如果找到就是SQL模板,否则是SQL语句 + is_template = sql_input in self.sql_loader._template_map + logger.debug(f"输入 '{sql_input}' 在模板映射中查找结果: {is_template}") + + return is_template + + async def get_sql(self, sql_identifier, params=None): + """获取指定名称的SQL模板,并处理参数替换 + + Args: + sql_identifier: 格式为'namespace.template_name'的SQL标识符 + params: 可选的参数字典,用于替换模板中的参数 + + Returns: + str: 处理后的SQL语句 + """ + # logger.info(f"尝试获取SQL模板: {sql_identifier}") + sql_template = await self.sql_loader.get_sql(sql_identifier) + + # 处理模板,即使没有提供参数也进行处理(清理条件块等) + processed_sql = self._process_sql_template(sql_template, params) + logger.debug(f"处理后的SQL语句: {processed_sql}") + return processed_sql + + def _process_sql_template(self, sql_template, params=None): + """ + 处理SQL模板中的条件判断和参数替换 + + Args: + sql_template: SQL模板字符串 + params: 参数字典 + + Returns: + str: 处理后的SQL语句 + """ + if params is None: + params = {} + + # 检查是否包含#if条件块 + if_matches = re.findall(r'#if\([^)]+\)', sql_template) + logger.debug(f"发现 {len(if_matches)} 个#if条件块") + for i, match in enumerate(if_matches, 1): + logger.debug(f" {i}. {match}") + + # 检查是否包含ORDER BY子句 + if 'ORDER BY' in sql_template: + logger.debug("SQL模板包含ORDER BY子句") + + processed_sql = sql_template + + # 处理#if条件判断 + # 修复正则表达式,确保正确匹配条件块 + if_pattern = r'#if\((\w+)\)([\s\S]*?)#end' + + # 使用finditer来获取匹配的位置信息 + matches = list(re.finditer(if_pattern, processed_sql)) + + # 从后向前替换,避免位置偏移问题 + for match in reversed(matches): + param_name = match.group(1) + sql_block = match.group(2) + + # 检查参数是否存在且不为None + if param_name in params and params[param_name] is not None: + # 如果条件为真,保留SQL块 + # 移除多余的空白行和缩进 + lines = sql_block.strip().split('\n') + cleaned_lines = [line.strip() for line in lines if line.strip()] + cleaned_block = '\n'.join(cleaned_lines) + + # 替换原始匹配的内容 + processed_sql = processed_sql[:match.start()] + cleaned_block + processed_sql[match.end():] + + logger.debug(f"保留条件块 #if({param_name}),内容: {cleaned_block}") + else: + # 如果条件为假,移除整个条件块 + processed_sql = processed_sql[:match.start()] + "" + processed_sql[match.end():] + logger.debug(f"移除条件块 #if({param_name})") + + # 创建参数字典的副本,用于存储处理后的参数 + if params is not None: + processed_params = params.copy() + else: + processed_params = {} + + # 处理参数替换 - 支持直接的变量名格式 + # 首先找出所有可能的参数占位符(#para格式和直接变量名格式) + # 处理#para格式的参数 + para_pattern = r'#para\((\w+)\)' + all_para_placeholders = re.findall(para_pattern, processed_sql) + + # 替换#para格式的参数 + for param_name in all_para_placeholders: + placeholder = f"#para({param_name})" + if placeholder in processed_sql and param_name in params and params[param_name] is not None: + # 检查参数是否为列表类型且用于IN操作 + if isinstance(params[param_name], (list, tuple)) and "in" in processed_sql.lower(): + logger.debug(f"检测到列表参数 {param_name} 用于IN操作,进行特殊处理") + # 为列表中的每个元素创建单独的参数 + list_values = params[param_name] + if list_values: # 确保列表不为空 + # 生成多个占位符,如 :idList_1, :idList_2, :idList_3 + placeholders = ', '.join([f":{param_name}_{i}" for i in range(len(list_values))]) + processed_sql = processed_sql.replace(placeholder, placeholders) + # 更新参数字典,添加每个列表元素的参数 + for i, value in enumerate(list_values): + processed_params[f"{param_name}_{i}"] = value + logger.debug(f"为列表参数 {param_name} 创建子参数 {param_name}_{i} = {value}") + else: + # 空列表情况,将整个条件移除(因为IN () 是无效的SQL) + logger.warning(f"列表参数 {param_name} 为空,将移除包含该参数的条件表达式") + # 查找包含该占位符的整个条件表达式行 + lines = processed_sql.split('\n') + new_lines = [] + for line in lines: + if placeholder in line: + line_stripped = line.strip().upper() + if line_stripped.startswith('AND ') or line_stripped.startswith('OR '): + continue + new_lines.append(line) + processed_sql = '\n'.join(new_lines) + else: + # 普通参数处理 + processed_sql = processed_sql.replace(placeholder, f":{param_name}") + logger.debug(f"已将参数 {placeholder} 转换为 :{param_name}") + elif placeholder in processed_sql: + # 参数缺失或为None,移除包含该参数的条件表达式 + logger.warning(f"参数 {param_name} 缺失或为None,将移除包含该参数的条件表达式") + lines = processed_sql.split('\n') + new_lines = [] + for line in lines: + if placeholder in line: + line_stripped = line.strip().upper() + if line_stripped.startswith('AND ') or line_stripped.startswith('OR '): + continue + new_lines.append(line) + processed_sql = '\n'.join(new_lines) + + # 处理直接的变量名格式(如 $person_id 或 #{person_id}) + # 尝试匹配各种常见的变量名格式 + variable_patterns = [ + r'\$([a-zA-Z_][a-zA-Z0-9_]*)', # $variable 格式 + r'#\{([a-zA-Z_][a-zA-Z0-9_]*)\}', # #{variable} 格式 + r'\{([a-zA-Z_][a-zA-Z0-9_]*)\}' # {variable} 格式 + ] + + for pattern in variable_patterns: + matches = re.finditer(pattern, processed_sql) + # 收集所有匹配并从后向前替换,避免位置偏移 + variable_matches = list(matches) + for match in reversed(variable_matches): + placeholder = match.group(0) + param_name = match.group(1) + + # 检查参数是否存在且不为None + if param_name in params and params[param_name] is not None: + # 替换为SQLAlchemy参数格式 + replacement = f":{param_name}" + processed_sql = processed_sql[:match.start()] + replacement + processed_sql[match.end():] + logger.debug(f"已将变量 {placeholder} 转换为 {replacement}") + else: + # 变量不存在或为None,记录警告 + logger.warning(f"变量 {param_name} 缺失或为None,保留原样") + + # 更新params,使其包含处理后的参数(包括扩展的列表参数) + if params is not None: + for key, value in processed_params.items(): + params[key] = value + + # 清理多余的空白行和空格 + lines = processed_sql.split('\n') + processed_lines = [line.strip() for line in lines if line.strip()] + processed_sql = '\n'.join(processed_lines) + + # 额外的清理:处理可能产生的孤立逻辑运算符 + # 例如,如果我们移除了一行,可能会留下单独的AND/OR + processed_sql = re.sub(r'(^|\n)\s*(AND|OR)\s*($|\n)', '\1\3', processed_sql) + + # 最终清理 + lines = processed_sql.split('\n') + processed_lines = [line.strip() for line in lines if line.strip()] + processed_sql = '\n'.join(processed_lines) + + return processed_sql + + async def find(self, sql, params=None, session=None): + """ + 执行SQL查询并返回结果(异步版本) + + Args: + sql: SQL查询语句或SQL模板名称(支持namespace.sql_name格式) + params: 查询参数,字典形式 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + list: 查询结果的字典列表 + """ + # 使用当前实例 + instance = self + + # 如果没有提供params,创建一个空字典 + if params is None: + params = {} + + # 确保数据库连接已初始化 + if instance.AsyncSessionLocal is None: + await instance.init_db() + + # 检查是否需要加载SQL模板 + # 首先检查Redis中是否有加载的模板 + if not getattr(instance, '_templates_loaded', False): + templates_loaded_in_redis = await instance.sql_loader._check_templates_loaded_from_redis() + if templates_loaded_in_redis: + try: + await instance.sql_loader._load_from_redis() + instance._templates_loaded = True + logger.info("从Redis自动加载SQL模板完成") + except Exception as e: + logger.error(f"从Redis自动加载SQL模板失败: {str(e)}") + else: + # Redis中没有,尝试正常加载 + try: + await instance.load_all_templates() + instance._templates_loaded = True + logger.info("SQL模板自动加载完成") + except Exception as e: + logger.error(f"自动加载SQL模板失败: {str(e)}") + # 不抛出异常,允许数据库操作继续进行 + pass + + # 检查是否为SQL模板名称并处理 + if self._is_sql_template(sql): + try: + logger.debug(f"确认为SQL模板: {sql}") + + # 尝试获取SQL模板 + sql_content = await instance.get_sql(sql, params) + # 如果成功获取到内容且不等于原始名称,说明是模板 + if sql_content and sql_content != sql: + sql = sql_content + logger.debug(f"成功获取SQL模板,处理后的SQL: {sql}") + # 对于模板SQL,参数已经被get_sql处理过了,不需要再处理 + # params = None + else: + logger.debug(f"获取到的内容与输入相同,可能不是模板: {sql_content}") + except Exception as e: + logger.error(f"获取SQL模板失败: {str(e)},将作为普通SQL执行") + # 继续执行,将其作为普通SQL处理 + + # 只有当SQL不是从模板获取时,才处理普通SQL中的#para()格式参数 + # 因为模板已经通过get_sql方法处理了参数替换 + if params and isinstance(params, dict) and isinstance(sql, str): + # 检查SQL是否还包含#para()格式(如果是模板,应该已经被处理过了) + if '#para(' in sql: + logger.debug("检测到SQL中仍包含#para()格式,进行参数替换") + # 替换SQL中的#para(param_name)为:param_name + for param_name, param_value in list(params.items()): # 使用list()创建副本,避免在遍历时修改 + para_pattern = f'#para\\({param_name}\\)' # 转义括号 + if re.search(para_pattern, sql): + # 检查参数是否为列表类型且用于IN操作 + if isinstance(param_value, (list, tuple)) and "in" in sql.lower(): + logger.debug(f"检测到普通SQL中的列表参数 {param_name} 用于IN操作,进行特殊处理") + # 为列表中的每个元素创建单独的参数 + list_values = param_value + if list_values: # 确保列表不为空 + # 生成多个占位符,如 :idList_1, :idList_2, :idList_3 + placeholders = ', '.join([f":{param_name}_{i}" for i in range(len(list_values))]) + sql = re.sub(para_pattern, placeholders, sql) + # 更新参数字典,添加每个列表元素的参数 + for i, value in enumerate(list_values): + params[f"{param_name}_{i}"] = value + logger.debug(f"为列表参数 {param_name} 创建子参数 {param_name}_{i} = {value}") + else: + # 空列表情况,将整个条件移除(因为IN () 是无效的SQL) + logger.warning(f"列表参数 {param_name} 为空,将移除包含该参数的条件表达式") + # 查找包含该占位符的整个条件表达式行 + lines = sql.split('\n') + new_lines = [] + for line in lines: + if f"#para({param_name})" in line: + line_stripped = line.strip().upper() + if line_stripped.startswith('AND ') or line_stripped.startswith('OR '): + continue + new_lines.append(line) + sql = '\n'.join(new_lines) + else: + # 普通参数处理 + sql = re.sub(para_pattern, f':{param_name}', sql) + logger.debug(f"已替换参数占位符: #para({param_name}) -> :{param_name}") + else: + logger.debug("SQL模板已处理过参数,跳过重复处理") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await instance.get_session() + is_own_session = True + + # 执行查询 + # logger.info(f"执行查询: {sql},参数: {params}") + result = await session.execute(text(sql), params or {}) + + # 将结果转换为字典列表 + return [dict(row._mapping) for row in result] + except Exception as e: + logger.error(f"查询执行失败: {str(e)}") + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def findFirst(self, sql, params=None, session=None): + """ + 执行查询并返回结果的第一条记录(异步版本) + + Args: + sql: SQL查询语句或SQL模板名称(支持namespace.sql_name格式) + params: 查询参数,字典形式 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + dict: 第一条记录的字典,如果没有结果则返回None + """ + # 直接调用异步的find方法,它已经使用_is_sql_template进行了模板检查 + rows = await self.find(sql, params, session) + return rows[0] if rows else None + + async def findById(self, table_name, primary_key_value, primary_key='id', session=None): + """ + 根据主键查询指定表中的记录(异步版本) + + Args: + table_name: 表名 + primary_key_value: 主键值 + primary_key: 主键字段名,默认为'id' + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + dict: 查询到的记录字典,如果没有找到则返回None + """ + if not table_name: + raise ValueError("表名不能为空") + + # 构建查询SQL + sql = f"SELECT * FROM {table_name} WHERE {primary_key} = :primary_key_value" + + # 准备参数 + params = {"primary_key_value": primary_key_value} + + logger.debug(f"生成的查询SQL: {sql}") + logger.debug(f"查询参数: {params}") + + # 异步使用findFirst方法执行查询 + return await self.findFirst(sql, params, session) + + async def paginate(self, sql, page_number=1, page_size=10, params=None, session=None): + """ + 执行SQL查询并返回分页结果(异步版本) + + Args: + sql: SQL查询语句或SQL模板名称(支持namespace.sql_name格式) + page_number: 页码,从1开始 + page_size: 每页记录数 + params: 查询参数,字典形式 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + dict: 包含分页信息的字典,格式如下: + { + 'list': 当前页的数据列表, + 'pageNumber': 当前页码, + 'pageSize': 每页记录数, + 'totalRow': 总记录数, + 'totalPage': 总页数 + } + """ + # 确保数据库已初始化 + if self.AsyncSessionLocal is None: + await self.init_db() + + # 初始化诊断日志 + logger.debug("======= 开始分页查询 =======") + + # 如果没有提供params,创建一个空字典 + if params is None: + params = {} + logger.debug(f"传入的参数: {params}") + + # 确保页码和每页大小为正整数 + try: + page_number = int(page_number) + page_size = int(page_size) + except (ValueError, TypeError): + logger.error(f"页码或每页大小类型错误,重置为默认值") + page_number = 1 + page_size = 10 + + if page_number < 1: + page_number = 1 + if page_size < 1: + page_size = 10 + + logger.debug(f"处理后的页码: {page_number}, 每页大小: {page_size}") + + # 使用_is_sql_template方法检查并获取SQL模板 + if self._is_sql_template(sql): + try: + logger.debug(f"确认为SQL模板: {sql}") + + # 尝试获取SQL模板 + sql_content = await self.get_sql(sql, params) + # 如果成功获取到内容且不等于原始名称,说明是模板 + if sql_content and sql_content != sql: + sql = sql_content + logger.debug(f"成功获取SQL模板,处理后的SQL: {sql}") + else: + logger.debug(f"获取到的内容与输入相同,可能不是模板: {sql_content}") + except Exception as e: + logger.error(f"获取SQL模板失败: {str(e)},将作为普通SQL执行") + # 继续执行,将其作为普通SQL处理 + + # 只有当SQL不是从模板获取时,才处理普通SQL中的#para()格式参数 + # 因为模板已经通过get_sql方法处理了参数替换 + if params and isinstance(params, dict) and isinstance(sql, str): + # 检查SQL是否还包含#para()格式(如果是模板,应该已经被处理过了) + if '#para(' in sql: + logger.debug("检测到SQL中仍包含#para()格式,进行参数替换") + # 替换SQL中的#para(param_name)为:param_name + for param_name, param_value in list(params.items()): # 使用list()创建副本,避免在遍历时修改 + para_pattern = f'#para\\({param_name}\\)' # 转义括号 + if re.search(para_pattern, sql): + # 检查参数是否为列表类型且用于IN操作 + if isinstance(param_value, (list, tuple)) and "in" in sql.lower(): + logger.debug(f"检测到分页查询中的列表参数 {param_name} 用于IN操作,进行特殊处理") + # 为列表中的每个元素创建单独的参数 + list_values = param_value + if list_values: # 确保列表不为空 + # 生成多个占位符,如 :idList_1, :idList_2, :idList_3 + placeholders = ', '.join([f":{param_name}_{i}" for i in range(len(list_values))]) + sql = re.sub(para_pattern, placeholders, sql) + # 更新参数字典,添加每个列表元素的参数 + for i, value in enumerate(list_values): + params[f"{param_name}_{i}"] = value + logger.debug(f"为列表参数 {param_name} 创建子参数 {param_name}_{i} = {value}") + else: + # 空列表情况,将整个条件移除(因为IN () 是无效的SQL) + logger.warning(f"列表参数 {param_name} 为空,将移除包含该参数的条件表达式") + # 查找包含该占位符的整个条件表达式行 + lines = sql.split('\n') + new_lines = [] + for line in lines: + if f"#para({param_name})" in line: + line_stripped = line.strip().upper() + if line_stripped.startswith('AND ') or line_stripped.startswith('OR '): + continue + new_lines.append(line) + sql = '\n'.join(new_lines) + else: + # 普通参数处理 + sql = re.sub(para_pattern, f':{param_name}', sql) + logger.debug(f"已替换参数占位符: #para({param_name}) -> :{param_name}") + else: + logger.debug("SQL模板已处理过参数,跳过重复处理") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 计算总记录数 + count_sql = self._build_count_sql(sql) + logger.debug(f"构建的COUNT SQL: {count_sql}") + + try: + count_result = await session.execute(text(count_sql), params or {}) + count_value = count_result.scalar() + + # 确保total_row是正确的整数值 + try: + total_row = int(count_value) if count_value is not None else 0 + except (ValueError, TypeError): + total_row = 0 + except Exception as e: + logger.error(f"COUNT查询失败: {str(e)}") + total_row = 0 + # 如果是自己创建的会话,当COUNT查询失败时,回滚事务并重新创建会话 + if is_own_session: + logger.debug("COUNT查询失败,回滚并重新创建会话") + await session.rollback() + await session.close() + session = await self.get_session() + + # 添加详细日志记录总记录数和每页大小 + logger.debug(f"总记录数: {total_row}, 每页大小: {page_size}") + + # 确保total_row是整数 + total_row = int(total_row) if total_row is not None else 0 + + # 计算总页数(使用更清晰的计算方式) + if page_size > 0: + total_page = (total_row + page_size - 1) // page_size + else: + total_page = 0 + + logger.debug(f"计算的总页数: {total_page}") + + # 计算偏移量 + offset = (page_number - 1) * page_size + + # 构建分页SQL(PostgreSQL语法) + # 首先检查SQL是否已经包含LIMIT或OFFSET子句 + has_limit = re.search(r'(?i)\bLIMIT\b', sql) + has_offset = re.search(r'(?i)\bOFFSET\b', sql) + + # 如果已经包含LIMIT或OFFSET,直接使用原始SQL + if has_limit or has_offset: + paginated_sql = sql + else: + # 否则,在SQL末尾添加LIMIT和OFFSET + # 不需要复杂的ORDER BY处理,PostgreSQL会自动处理顺序 + paginated_sql = f"{sql} LIMIT :limit OFFSET :offset" + + logger.debug(f"构建的分页SQL: {paginated_sql}") + + # 添加分页参数 + paginated_params = params.copy() if params else {} + paginated_params['limit'] = page_size + paginated_params['offset'] = offset + logger.debug(f"分页查询参数: {paginated_params}") + + # 执行分页查询 + result = await session.execute(text(paginated_sql), paginated_params) + + # 将结果转换为字典列表 + list_data = [dict(row._mapping) for row in result] + + # 确保total_row是整数 + try: + total_row_int = int(total_row) + except Exception as e: + total_row_int = 0 + + # 计算总页数 + if page_size > 0: + remainder = total_row_int % page_size + quotient = total_row_int // page_size + calculated_pages = quotient + 1 if remainder > 0 else quotient + else: + calculated_pages = 0 + + # 构建返回结果,使用正确的页数 + pagination_result = { + 'list': list_data if list_data is not None else [], + 'page': page_number, + 'page_size': page_size, + 'total': total_row, + 'total_pages': calculated_pages # 使用正确的页数 + } + + return pagination_result + except Exception as e: + logger.error(f"分页查询失败: {str(e)}") + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + def _build_count_sql(self, sql): + """ + 根据原始SQL构建用于计算总记录数的SQL + + Args: + sql: 原始SQL查询语句 + + Returns: + str: 计算总记录数的SQL + """ + import re + + # 清理SQL,移除前后空白 + sql = sql.strip() + + # 策略1: 使用正则表达式查找FROM关键字(更灵活) + match = re.search(r'(?i)\bFROM\b', sql) + if match: + from_pos = match.start() + # 提取FROM后面的内容(包括FROM关键字) + from_part = sql[from_pos:] + + # 检查是否包含ORDER BY子句,如果有,移除 + order_by_match = re.search(r'(?i)\bORDER\s+BY\b', from_part) + if order_by_match: + order_by_pos = order_by_match.start() + from_part = from_part[:order_by_pos] + + # 检查是否包含GROUP BY子句 + if re.search(r'(?i)\bGROUP\s+BY\b', from_part): + # 对于复杂查询,使用子查询来计算总数 + subquery_sql = sql[:order_by_pos] if order_by_match else sql + return f"SELECT COUNT(*) FROM ({subquery_sql}) AS subquery" + else: + # 简单查询,直接替换SELECT部分 + return f"SELECT COUNT(*) {from_part}" + + # 策略2: 使用多种空格格式查找FROM关键字 + from_variants = [' FROM ', ' FROM', 'FROM ', 'FROM'] + sql_upper = sql.upper() + for variant in from_variants: + if variant.upper() in sql_upper: + from_pos = sql_upper.find(variant.upper()) + from_part = sql[from_pos:] + + # 移除ORDER BY + if ' ORDER BY ' in from_part.upper(): + order_by_pos = from_part.upper().rfind(' ORDER BY ') + from_part = from_part[:order_by_pos] + + return f"SELECT COUNT(*) {from_part}" + + # 如果所有策略都失败,返回默认查询 + return "SELECT COUNT(*)" + + async def execute_update(self, sql, params=None, session=None): + """执行SQL更新操作(插入、更新、删除)(异步版本) + + Args: + sql: SQL更新语句或SQL模板名称(支持namespace.sql_name格式) + params: 更新参数,字典形式 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + int: 受影响的行数 + """ + # 确保数据库已初始化 + if self.AsyncSessionLocal is None: + await self.init_db() + + # 如果没有提供params,创建一个空字典 + if params is None: + params = {} + + # 检查是否为SQL模板名称并处理 + if self._is_sql_template(sql): + try: + logger.debug(f"确认为SQL模板: {sql}") + + # 尝试获取SQL模板 + sql_content = await self.get_sql(sql, params) + # 如果成功获取到内容且不等于原始名称,说明是模板 + if sql_content and sql_content != sql: + sql = sql_content + logger.debug(f"成功获取SQL模板,处理后的SQL: {sql}") + # 对于模板SQL,参数已经被get_sql处理过了,不需要再处理 + params = None + else: + logger.debug(f"获取到的内容与输入相同,可能不是模板: {sql_content}") + except Exception as e: + logger.error(f"获取SQL模板失败: {str(e)},将作为普通SQL执行") + # 继续执行,将其作为普通SQL处理 + + # 只有当SQL不是从模板获取时,才处理普通SQL中的#para()格式参数 + # 因为模板已经通过get_sql方法处理了参数替换 + if params and isinstance(params, dict): + # 检查SQL是否还包含#para()格式(如果是模板,应该已经被处理过了) + if '#para(' in sql: + logger.debug("检测到SQL中仍包含#para()格式,进行参数替换") + # 替换SQL中的#para(param_name)为:param_name + for param_name, param_value in list(params.items()): # 使用list()创建副本,避免在遍历时修改 + para_pattern = f'#para\\({param_name}\\)' # 转义括号 + if re.search(para_pattern, sql): + # 检查参数是否为列表类型且用于IN操作 + if isinstance(param_value, (list, tuple)) and "in" in sql.lower(): + logger.debug(f"检测到更新SQL中的列表参数 {param_name} 用于IN操作,进行特殊处理") + # 为列表中的每个元素创建单独的参数 + list_values = param_value + if list_values: # 确保列表不为空 + # 生成多个占位符,如 :idList_1, :idList_2, :idList_3 + placeholders = ', '.join([f":{param_name}_{i}" for i in range(len(list_values))]) + sql = re.sub(para_pattern, placeholders, sql) + # 更新参数字典,添加每个列表元素的参数 + for i, value in enumerate(list_values): + params[f"{param_name}_{i}"] = value + logger.debug(f"为列表参数 {param_name} 创建子参数 {param_name}_{i} = {value}") + else: + # 空列表情况,将整个条件移除(因为IN () 是无效的SQL) + logger.warning(f"列表参数 {param_name} 为空,将移除包含该参数的条件表达式") + # 查找包含该占位符的整个条件表达式行 + lines = sql.split('\n') + new_lines = [] + for line in lines: + if f"#para({param_name})" in line: + line_stripped = line.strip().upper() + if line_stripped.startswith('AND ') or line_stripped.startswith('OR '): + continue + new_lines.append(line) + sql = '\n'.join(new_lines) + else: + # 普通参数处理 + sql = re.sub(para_pattern, f':{param_name}', sql) + logger.debug(f"已替换参数占位符: #para({param_name}) -> :{param_name}") + else: + logger.debug("SQL模板已处理过参数,跳过重复处理") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 执行更新 + # logger.info(f"执行更新: {sql},参数: {params}") + result = await session.execute(text(sql), params or {}) + + # 提交事务 + await session.commit() + + # 返回受影响的行数(如果有) + return result.rowcount if hasattr(result, 'rowcount') else 0 + except Exception as e: + logger.error(f"更新操作失败: {str(e)}") + if session: + await session.rollback() + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def save(self, table_name, data, primary_key, session=None): + """插入数据到指定表,并返回插入后的主键值(异步版本) + + Args: + table_name: 表名 + data: 要插入的数据字典 + primary_key: 主键字段名 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + 插入后的主键值 + + Raises: + ValueError: 当参数验证失败时 + Exception: 当插入操作失败时 + """ + if not table_name or not data: + raise ValueError("表名和数据不能为空") + + # 主键可能由数据库自动生成,不传递也可以 + # 无需额外检查,直接构建SQL语句 + # 如果data中不包含primary_key,SQL会自动处理 + + # logger.info(f"准备插入数据到表 {table_name},主键字段: {primary_key}") + + # 构建插入SQL + columns = ', '.join(data.keys()) + placeholders = ', '.join([f":{key}" for key in data.keys()]) + sql = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders}) RETURNING {primary_key}" + + logger.debug(f"生成的插入SQL: {sql}") + logger.debug(f"插入参数: {data}") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 执行插入并获取主键 + result = await session.execute(text(sql), data) + await session.commit() + + # 获取插入的主键值 + primary_key_value = result.scalar() + # logger.info(f"数据插入成功,主键值: {primary_key_value}") + return primary_key_value + except Exception as e: + logger.error(f"数据插入失败: {str(e)}") + if session: + await session.rollback() + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def update(self, table_name, data, primary_key, session=None): + """根据主键更新指定表中的数据(异步版本) + + Args: + table_name: 表名 + data: 要更新的数据字典,必须包含主键字段和值 + primary_key: 主键字段名 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + int: 受影响的行数 + + Raises: + ValueError: 当参数验证失败时 + Exception: 当更新操作失败时 + """ + if not table_name or not data: + raise ValueError("表名和数据不能为空") + + if primary_key not in data: + raise ValueError(f"数据字典中必须包含主键字段 '{primary_key}'") + + # 获取主键值 + primary_key_value = data[primary_key] + + # logger.info(f"准备更新表 {table_name} 中的数据,主键: {primary_key}={primary_key_value}") + + # 构建更新字段部分,排除主键 + update_fields = [f"{key} = :{key}" for key in data.keys() if key != primary_key] + if not update_fields: + logger.warning("没有需要更新的字段") + return 0 + + update_sql_part = ', '.join(update_fields) + + # 构建完整的更新SQL + sql = f"UPDATE {table_name} SET {update_sql_part} WHERE {primary_key} = :{primary_key}" + + logger.debug(f"生成的更新SQL: {sql}") + logger.debug(f"更新参数: {data}") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 执行更新 + result = await session.execute(text(sql), data) + await session.commit() + + affected_rows = result.rowcount if hasattr(result, 'rowcount') else 0 + # logger.info(f"数据更新成功,受影响行数: {affected_rows}") + return affected_rows + except Exception as e: + logger.error(f"数据更新失败: {str(e)}") + if session: + await session.rollback() + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def batch_insert(self, table_name, data_list, primary_key=None, session=None): + """ + 批量插入数据到指定表(异步版本) + + Args: + table_name: 表名 + data_list: 要插入的数据字典列表 + primary_key: 主键字段名,如果提供,将返回插入后的主键值列表 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + list: 插入后的主键值列表,如果不提供primary_key则返回None + + Raises: + ValueError: 当参数验证失败时 + Exception: 当插入操作失败时 + """ + if not table_name or not data_list: + raise ValueError("表名和数据列表不能为空") + + if not isinstance(data_list, list) or not data_list: + raise ValueError("数据列表必须是非空的列表") + + # 获取第一个数据字典的键作为列名 + columns = data_list[0].keys() + columns_str = ', '.join(columns) + + # 构建占位符部分 + placeholders_list = [] + all_params = {} + + # 为每一行数据生成占位符和参数 + for i, data in enumerate(data_list): + # 确保每一行数据都有相同的键 + if data.keys() != columns: + raise ValueError(f"第{i+1}行数据的字段不匹配") + + # 生成该行的占位符,如 (:name_1, :age_1) + row_placeholders = [f":{key}_{i}" for key in columns] + placeholders_list.append(f"({', '.join(row_placeholders)})") + + # 更新参数 + for key, value in data.items(): + all_params[f"{key}_{i}"] = value + + # 构建完整的批量插入SQL + values_clause = ', '.join(placeholders_list) + if primary_key: + sql = f"INSERT INTO {table_name} ({columns_str}) VALUES {values_clause} RETURNING {primary_key}" + else: + sql = f"INSERT INTO {table_name} ({columns_str}) VALUES {values_clause}" + + logger.debug(f"生成的批量插入SQL: {sql}") + + is_own_session = False + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 执行批量插入 + result = await session.execute(text(sql), all_params) + await session.commit() + + # 如果指定了主键,返回插入的主键值列表 + if primary_key: + return [row[0] for row in result] + return None + except Exception as e: + logger.error(f"批量插入失败: {str(e)}") + if session: + await session.rollback() + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def batch_update(self, table_name, data_list, primary_key, session=None): + """ + 批量更新指定表中的数据(异步版本) + + Args: + table_name: 表名 + data_list: 要更新的数据字典列表,每个字典必须包含主键字段和值 + primary_key: 主键字段名 + session: 可选的数据库会话对象,不提供时将自动创建 + + Returns: + int: 受影响的总行数 + + Raises: + ValueError: 当参数验证失败时 + Exception: 当更新操作失败时 + """ + if not table_name or not data_list or not primary_key: + raise ValueError("表名、数据列表和主键不能为空") + + if not isinstance(data_list, list) or not data_list: + raise ValueError("数据列表必须是非空的列表") + + is_own_session = False + total_affected = 0 + + try: + # 如果没有提供会话,创建新会话 + if session is None: + session = await self.get_session() + is_own_session = True + + # 逐个更新数据(PostgreSQL不支持标准的批量更新语法) + for data in data_list: + if primary_key not in data: + raise ValueError(f"数据字典中必须包含主键字段 '{primary_key}'") + + # 构建更新字段部分,排除主键 + update_fields = [f"{key} = :{key}" for key in data.keys() if key != primary_key] + if not update_fields: + continue # 没有需要更新的字段 + + update_sql_part = ', '.join(update_fields) + + # 构建完整的更新SQL + sql = f"UPDATE {table_name} SET {update_sql_part} WHERE {primary_key} = :{primary_key}" + + # 执行更新 + result = await session.execute(text(sql), data) + total_affected += result.rowcount if hasattr(result, 'rowcount') else 0 + + # 提交事务 + await session.commit() + return total_affected + except Exception as e: + logger.error(f"批量更新失败: {str(e)}") + if session: + await session.rollback() + raise + finally: + # 如果是自己创建的会话,负责关闭 + if is_own_session and session: + await session.close() + + async def begin_transaction(self, session=None): + """ + 开始一个新的事务(异步版本) + + Args: + session: 可选的数据库会话对象,不提供时将创建新会话 + + Returns: + Session: 数据库会话对象 + """ + if session is None: + session = await self.get_session() + return session + + async def commit_transaction(self, session): + """ + 提交当前事务(异步版本) + + Args: + session: 数据库会话对象 + """ + if session: + await session.commit() + + async def rollback_transaction(self, session): + """ + 回滚当前事务(异步版本) + + Args: + session: 数据库会话对象 + """ + if session: + await session.rollback() + + async def transaction(self): + """ + 异步事务上下文管理器,用于简化异步事务管理 + + 使用示例: + async with await db.transaction() as session: + await db.execute_update("INSERT INTO users (name) VALUES (:name)", {"name": "张三"}, session) + await db.execute_update("UPDATE statistics SET count = count + 1", {}, session) + """ + return TransactionContext(self) + + +# Db类结束 diff --git a/DbKit/SqlTemplateLoader.py b/DbKit/SqlTemplateLoader.py new file mode 100644 index 0000000..240bba4 --- /dev/null +++ b/DbKit/SqlTemplateLoader.py @@ -0,0 +1,529 @@ + +import logging +import os +import re +import asyncio +import aiofiles +import json + +# 导入RedisKit +from Util.RedisKit import redisKit + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +# Redis键名常量 +REDIS_SQL_TEMPLATES_KEY = "sql_templates:all_templates" +REDIS_SQL_LOADED_FILES_KEY = "sql_templates:loaded_files" +REDIS_SQL_TEMPLATE_MAP_KEY = "sql_templates:template_map" +REDIS_SQL_TEMPLATES_LOADED_KEY = "sql_templates:templates_loaded" + + +class SqlTemplateLoader: + """SQL模板加载器,负责加载和解析SQL模板文件(异步版本)""" + + def __init__(self, sql_dir=None, auto_load=True): + """初始化SQL模板加载器 + + Args: + sql_dir: SQL模板文件所在目录 + auto_load: 是否自动加载目录下所有SQL模板文件 + """ + self.sql_dir = sql_dir + self.templates = {} # 使用嵌套字典存储命名空间下的SQL模板 + self._loaded_files = set() # 用于记录已加载的文件,避免重复加载 + self._template_map = {} # 使用平面字典存储完整的模板名称映射,用于快速查找 + + # 注意:异步版本不会在__init__中自动加载,需要单独调用异步方法 + + async def load_all_templates(self): + """自动加载SQL目录下所有的SQL模板文件(异步版本) + + Returns: + int: 成功加载的模板文件数量 + """ + logger.info(f"开始加载SQL模板目录: {self.sql_dir}") + + if not os.path.exists(self.sql_dir): + logger.warning(f"SQL模板目录不存在: {self.sql_dir}") + return 0 + + # 检查是否已经从Redis加载过 + templates_loaded = await self._check_templates_loaded_from_redis() + if templates_loaded: + await self._load_from_redis() + logger.info(f"从Redis加载SQL模板完成,共{len(self._loaded_files)}个文件,{len(self._template_map)}个模板") + return len(self._loaded_files) + + loaded_count = 0 + sql_files = [] + + try: + # 遍历目录下所有.sql文件 + for filename in os.listdir(self.sql_dir): + if filename.lower().endswith('.sql'): + file_path = os.path.join(self.sql_dir, filename) + file_abs_path = os.path.abspath(file_path) + sql_files.append(file_abs_path) + + # 使用异步方式加载所有模板,不立即构建映射以提高性能 + for file_abs_path in sql_files: + # 跳过已经加载过的文件 + if file_abs_path in self._loaded_files: + logger.debug(f"SQL文件已加载,跳过: {file_abs_path}") + continue + + try: + filename = os.path.basename(file_abs_path) + if await self.load_template(file_abs_path, build_map=False): + loaded_count += 1 + except Exception as e: + logger.error(f"加载SQL模板文件 {filename} 失败: {str(e)}") + + # 所有模板加载完成后,统一构建映射 + if loaded_count > 0: + self._build_template_map() + logger.info(f"成功加载 {loaded_count} 个SQL模板文件,已构建模板映射") + + # 加载完成后保存到Redis + await self._save_to_redis() + return loaded_count + except Exception as e: + logger.error(f"遍历SQL模板目录时出错: {str(e)}") + return 0 + + async def load_template(self, template_path, build_map=True): + """加载指定的SQL模板文件(异步版本) + + Args: + template_path: SQL模板文件的路径,可以是绝对路径或相对于sql_dir的相对路径 + build_map: 是否立即构建模板映射,默认为True。在批量加载时可设为False以提高性能 + + Returns: + bool: 加载是否成功 + + Raises: + FileNotFoundError: 当模板文件不存在时 + Exception: 当加载过程发生其他错误时 + """ + # 确定模板文件的完整路径 + if self.sql_dir and not os.path.isabs(template_path): + file_path = os.path.join(self.sql_dir, template_path) + else: + file_path = template_path + + # 检查文件是否已加载,避免重复加载 + file_abs_path = os.path.abspath(file_path) + if file_abs_path in self._loaded_files: + logger.debug(f"SQL模板文件已加载,跳过: {file_abs_path}") + return True + + try: + # 异步读取文件内容 + async with aiofiles.open(file_path, 'r', encoding='utf-8') as f: + content = await f.read() + + # 使用栈结构解析整个内容 + templates = self._parse_with_stack(content) + + # 处理命名空间 + if 'namespace' in templates and templates['namespace']: + namespace = templates['namespace'] + sql_templates = {k: v for k, v in templates.items() if k != 'namespace'} + else: + # 没有命名空间的情况 + namespace = 'default' + sql_templates = templates + + # 将解析出的SQL模板添加到templates字典中 + if namespace not in self.templates: + self.templates[namespace] = {} + + self.templates[namespace].update(sql_templates) + + # 重新构建模板映射,确保新加载的模板可以被快速查找 + if build_map: + self._build_template_map() + + # 记录已加载的文件 + self._loaded_files.add(file_abs_path) + + return True + except FileNotFoundError: + logger.error(f"SQL模板文件不存在: {file_path}") + raise FileNotFoundError(f"SQL模板文件不存在: {file_path}") + except Exception as e: + logger.error(f"加载SQL模板失败: {str(e)}", exc_info=True) + raise + + def _parse_with_stack(self, content): + """使用栈结构解析SQL模板,支持嵌套的标签匹配 + 支持--单行注释和/* */多行注释 + + Args: + content: 要解析的SQL模板内容 + + Returns: + 解析后的SQL模板字典,键为模板名称,值为模板内容 + """ + templates = {} + stack = [] # 用于存储标签信息的栈 + current_content = [] # 当前正在收集的内容 + in_multiline_comment = False # 多行注释标记 + + try: + # 按行处理内容 + lines = content.split('\n') + for line_num, line in enumerate(lines): + # 处理多行注释 + if in_multiline_comment: + # 检查是否是多行注释结束 + if '*/' in line: + in_multiline_comment = False + # 截取注释结束后的内容 + line = line.split('*/', 1)[1] + else: + # 完全在多行注释内,跳过此行 + continue + + # 处理单行注释和检查多行注释开始 + if not line.strip().startswith('#') and stack and stack[-1][0] == 'sql': + # 检查是否有--注释 + if '--' in line: + # 保留--前面的内容 + line = line.split('--', 1)[0] + + # 检查是否有/*多行注释开始 + if '/*' in line: + parts = line.split('/*', 1) + # 如果/*和*/在同一行 + if '*/' in parts[1]: + # 只保留/*前面和*/后面的内容 + comment_part = parts[1].split('*/', 1) + line = parts[0] + comment_part[1] + else: + # 多行注释开始,只保留/*前面的内容 + line = parts[0] + in_multiline_comment = True + + stripped_line = line.strip() + + # 检查是否是标签行 + if stripped_line.startswith('#'): + # 检查是否是命名空间标签 + if stripped_line.startswith('#namespace(') and ( + stripped_line.find('"') > 0 or stripped_line.find("'") > 0): + # 提取命名空间名称 + quote_pattern = re.search(r'#namespace\((["\'])([^"\']+)\1\)', stripped_line) + if quote_pattern: + namespace = quote_pattern.group(2) + templates['namespace'] = namespace + # 将命名空间标签入栈 + stack.append(('namespace', namespace, line_num)) + + # 检查是否是SQL模板开始标签 + elif stripped_line.startswith('#sql(') and ( + stripped_line.find('"') > 0 or stripped_line.find("'") > 0): + # 提取SQL模板名称 + quote_pattern = re.search(r'#sql\((["\'])([^"\']+)\1\)', stripped_line) + if quote_pattern: + sql_name = quote_pattern.group(2) + # 将SQL模板开始标签入栈 + stack.append(('sql', sql_name, line_num)) + current_content = [] # 重置内容收集器 + + # 检查是否是#if条件开始标签 + elif stripped_line.startswith('#if(') and ')' in stripped_line: + # 提取条件表达式 + condition_pattern = re.search(r'#if\(([^)]+)\)', stripped_line) + if condition_pattern: + condition = condition_pattern.group(1) + stack.append(('if', condition, line_num)) + # 保留#if行到内容中 - 只要有SQL标签在栈中就保留 + if any(tag[0] == 'sql' for tag in stack): + current_content.append(line.rstrip()) + + # 检查是否是结束标签 + elif stripped_line == '#end' and stack: + # 获取栈顶元素 + tag_type, tag_name, start_line = stack[-1] + + # 只有当标签不是SQL结束标签时,才保留#end行到内容中 + if any(tag[0] == 'sql' for tag in stack) and tag_type != 'sql': + current_content.append(line.rstrip()) + + # 弹出当前标签 + stack.pop() + + # 如果是SQL模板结束标签,保存内容 + if tag_type == 'sql': + sql_content = '\n'.join(current_content).strip() + if sql_content: + templates[tag_name] = sql_content + # 重置内容收集器,准备下一个模板 + current_content = [] + + # 收集内容(不是标签行且当前有活动的SQL模板) + else: + # 只要栈中有SQL标签,就收集内容(不管是在条件块内还是外) + if any(tag[0] == 'sql' for tag in stack) and line.strip(): + # 保留原始缩进 + current_content.append(line.rstrip()) + + # 检查是否所有标签都正确闭合 + if stack: + unclosed_tags = [f"{tag_type}('{tag_name}')" for tag_type, tag_name, _ in stack] + logger.warning(f"存在未闭合的标签: {', '.join(unclosed_tags)}") + else: + logger.debug("所有标签都已正确闭合") + + except Exception as e: + logger.error(f"使用栈结构解析SQL模板时出错: {str(e)}", exc_info=True) + + return templates + + async def get_all_template_names(self): + """ +获取所有已加载的SQL模板的完整名称列表(异步版本) + + Returns: + list: 包含所有模板名称的列表,格式为 "命名空间.模板名称" + """ + template_names = [] + + # 遍历所有命名空间 + for namespace, templates in self.templates.items(): + # 遍历当前命名空间下的所有模板 + for template_name in templates.keys(): + # 构建完整的模板名称(命名空间.模板名称) + full_name = f"{namespace}.{template_name}" + template_names.append(full_name) + + return template_names + + def _has_template(self, full_template_name): + """ + 内部方法:快速检查指定的完整模板名称是否存在 + 使用MAP机制实现O(1)时间复杂度的查找 + + Args: + full_template_name: 完整的模板名称,格式为 "命名空间.模板名称" + + Returns: + bool: 如果模板存在返回True,否则返回False + """ + logger.debug(f"检查模板是否存在: {full_template_name}") + + # 如果_map为空,先构建映射 + if not self._template_map and self.templates: + logger.debug("模板映射为空,正在构建映射...") + self._build_template_map() + logger.debug(f"映射构建完成,包含 {len(self._template_map)} 个模板") + + # 直接在映射中查找 + exists = full_template_name in self._template_map + logger.debug(f"模板 '{full_template_name}' 存在性检查结果: {exists}") + + if not exists and self._template_map: + logger.debug(f"当前映射中的模板: {list(self._template_map.keys())}") + + return exists + + def _build_template_map(self): + """ + 内部方法:构建完整模板名称到SQL内容的映射 + 用于支持快速查找功能 + """ + logger.debug("开始构建模板映射...") + self._template_map.clear() + + # 遍历所有命名空间和模板,构建映射 + for namespace, templates in self.templates.items(): + logger.debug(f"处理命名空间: {namespace},包含 {len(templates)} 个模板") + for template_name, sql_content in templates.items(): + full_name = f"{namespace}.{template_name}" + self._template_map[full_name] = sql_content + logger.debug(f"添加映射: {full_name} -> {len(sql_content)} 字符的SQL") + + logger.debug(f"模板映射构建完成,总共 {len(self._template_map)} 个模板") + logger.debug(f"映射中的模板列表: {list(self._template_map.keys())}") + + async def get_sql(self, sql_name): + """ +获取指定名称的SQL语句,支持命名空间格式:namespace.sql_name(异步版本) + + Args: + sql_name: SQL模板名称,可以包含命名空间前缀 + + Returns: + str: SQL语句 + + Raises: + KeyError: 当找不到指定名称的SQL模板时 + """ + try: + logger.debug(f"尝试获取SQL模板: {sql_name}") + logger.debug(f"当前模板映射状态: {len(self._template_map) if self._template_map else 0} 个模板") + + # 快速检查模板是否存在 + if self._has_template(sql_name): + logger.debug(f"在映射中找到模板: {sql_name}") + # 如果在映射中存在,直接返回 + sql_content = self._template_map[sql_name] + logger.debug(f"模板内容长度: {len(sql_content)} 字符") + return sql_content + + # 如果内存中没有,检查Redis中是否有加载的模板数据 + templates_loaded = await self._check_templates_loaded_from_redis() + if templates_loaded: + await self._load_from_redis() + # 再次尝试从内存中获取 + if self._has_template(sql_name): + sql_content = self._template_map[sql_name] + logger.debug(f"从Redis加载后找到模板: {sql_name}") + return sql_content + + logger.debug(f"映射中未找到模板: {sql_name},尝试从原始模板中查找") + + # 尝试解析命名空间和SQL名称 + if '.' in sql_name: + namespace, name = sql_name.split('.', 1) + else: + # 默认命名空间 + namespace = "default" + name = sql_name + + logger.debug(f"解析结果 - 命名空间: {namespace}, 模板名: {name}") + logger.debug(f"可用命名空间: {list(self.templates.keys())}") + + # 检查命名空间是否存在 + if namespace and namespace not in self.templates: + logger.error(f"命名空间 '{namespace}' 不存在,可用命名空间: {list(self.templates.keys())}") + raise KeyError(f"找不到命名空间: {namespace}") + + # 检查SQL名称是否存在 + available_templates = list(self.templates[namespace].keys()) + logger.debug(f"命名空间 '{namespace}' 下的可用模板: {available_templates}") + + if name and name not in self.templates[namespace]: + logger.error(f"SQL模板 '{name}' 在命名空间 '{namespace}' 下不存在,可用模板: {available_templates}") + raise KeyError(f"在命名空间 '{namespace}' 下找不到SQL模板: {name}") + + sql = self.templates[namespace][name] + logger.debug(f"成功获取SQL模板,内容长度: {len(sql)} 字符") + return sql + + except KeyError: + raise + except Exception as e: + logger.error(f"获取SQL模板时出错: {str(e)}", exc_info=True) + raise + + async def reload_template(self, template_path): + """重新加载指定的SQL模板文件(异步版本) + + Args: + template_path: SQL模板文件的路径,可以是绝对路径或相对于sql_dir的相对路径 + + Returns: + bool: 重新加载是否成功 + """ + try: + # 确定模板文件的完整路径 + if self.sql_dir and not os.path.isabs(template_path): + file_path = os.path.join(self.sql_dir, template_path) + else: + file_path = template_path + + # 获取文件的绝对路径 + file_abs_path = os.path.abspath(file_path) + + # 如果文件已加载,则从已加载列表中移除 + if file_abs_path in self._loaded_files: + self._loaded_files.remove(file_abs_path) + # 清除映射表,下次访问时会重新构建 + self._template_map.clear() + # 清除Redis中的模板数据 + await self._clear_redis_data() + + # 重新加载模板,立即构建映射 + success = await self.load_template(file_abs_path, build_map=True) + # 如果加载成功,更新Redis + if success: + await self._save_to_redis() + return success + except Exception as e: + logger.error(f"重新加载SQL模板失败: {str(e)}", exc_info=True) + return False + + async def _check_templates_loaded_from_redis(self) -> bool: + """ + 检查Redis中是否已经加载了SQL模板 + + Returns: + bool: 如果Redis中已加载返回True,否则返回False + """ + try: + return await redisKit.exists(REDIS_SQL_TEMPLATES_LOADED_KEY) + except Exception as e: + logger.error(f"检查Redis中SQL模板状态失败: {str(e)}") + return False + + async def _load_from_redis(self): + """ + 从Redis加载SQL模板数据 + """ + try: + # 加载templates + templates_str = await redisKit.get_data(REDIS_SQL_TEMPLATES_KEY) + if templates_str: + self.templates = json.loads(templates_str) + + # 加载loaded_files + loaded_files_str = await redisKit.get_data(REDIS_SQL_LOADED_FILES_KEY) + if loaded_files_str: + self._loaded_files = set(json.loads(loaded_files_str)) + + # 加载template_map + template_map_str = await redisKit.get_data(REDIS_SQL_TEMPLATE_MAP_KEY) + if template_map_str: + self._template_map = json.loads(template_map_str) + + except Exception as e: + logger.error(f"从Redis加载SQL模板数据失败: {str(e)}") + # 出错时不抛出异常,使用内存中的默认值 + + async def _save_to_redis(self): + """ + 将SQL模板数据保存到Redis + """ + try: + # 保存templates + await redisKit.set_data(REDIS_SQL_TEMPLATES_KEY, json.dumps(self.templates)) + + # 保存loaded_files + await redisKit.set_data(REDIS_SQL_LOADED_FILES_KEY, json.dumps(list(self._loaded_files))) + + # 保存template_map + await redisKit.set_data(REDIS_SQL_TEMPLATE_MAP_KEY, json.dumps(self._template_map)) + + # 设置标记表示已加载 + await redisKit.set_data(REDIS_SQL_TEMPLATES_LOADED_KEY, "1") + + except Exception as e: + logger.error(f"将SQL模板数据保存到Redis失败: {str(e)}") + # 出错时不抛出异常,继续执行 + + async def _clear_redis_data(self): + """ + 清除Redis中的模板数据 + """ + try: + await redisKit.delete(REDIS_SQL_TEMPLATES_KEY) + await redisKit.delete(REDIS_SQL_LOADED_FILES_KEY) + await redisKit.delete(REDIS_SQL_TEMPLATE_MAP_KEY) + await redisKit.delete(REDIS_SQL_TEMPLATES_LOADED_KEY) + except Exception as e: + logger.error(f"清除Redis中SQL模板数据失败: {str(e)}") + # 出错时不抛出异常,继续执行 \ No newline at end of file diff --git a/DbKit/Test/AppTest.py b/DbKit/Test/AppTest.py new file mode 100644 index 0000000..329c7f6 --- /dev/null +++ b/DbKit/Test/AppTest.py @@ -0,0 +1,22 @@ +import asyncio +import logging +from DbKit.Db import Db + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +async def test_app_template(): + """测试App.sql模板解析和加载""" + db = Db() + + # 初始化数据库连接 + await db.init_db() + + list = await db.find("AppType.getAppType") + print( list) + + + +if __name__ == '__main__': + asyncio.run(test_app_template()) \ No newline at end of file diff --git a/DbKit/Test/Test.py b/DbKit/Test/Test.py new file mode 100644 index 0000000..0c0a0b7 --- /dev/null +++ b/DbKit/Test/Test.py @@ -0,0 +1,66 @@ +import asyncio +import logging +from DbKit.Db import Db + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +"""测试查询t_teacher_app表""" +db = Db() + +async def test_find_teacher_app(): + try: + # 执行查询 + sql = "select * from t_teacher_app where app_name=:app_name" + params = {"app_name": "半角模型"} + logger.info(f"执行查询: {sql}") + result = await db.find(sql, params) + + logger.info(f"查询结果数量: {len(result)}") + # 打印部分结果(前3条) + for i, row in enumerate(result[:3]): + logger.info(f"第{i + 1}条记录: {row}") + + return result + except Exception as e: + logger.error(f"查询失败: {str(e)}", exc_info=True) + raise + + +async def test_sql_template(): + try: + # 初始化数据库连接 + await db.init_db() + + # 测试获取App.getAppList模板 + logger.info("尝试获取App.getAppList模板...") + sql_content = await db.get_sql("App.getAppList") + logger.info(f"成功获取App.getAppList模板,内容长度: {len(sql_content)} 字符") + logger.info(f"模板内容前100字符: {sql_content[:100]}") + + # 测试分页查询 + logger.info("测试分页查询...") + result = await db.paginate("App.getAppList", page_number=1, page_size=5) + logger.info(f"分页查询结果: {len(result.get('list', []))} 条记录") + + except Exception as e: + logger.error(f"SQL模板测试失败: {str(e)}", exc_info=True) + raise + +async def run_all_tests(): + """运行所有测试""" + logger.info("开始运行所有测试...") + + # 测试SQL模板自动加载 + await test_sql_template() + + # 测试查询功能 + await test_find_teacher_app() + + logger.info("所有测试完成!") + + +if __name__ == '__main__': + # 运行异步测试 + asyncio.run(run_all_tests()) diff --git a/DbKit/TransactionContext.py b/DbKit/TransactionContext.py new file mode 100644 index 0000000..3cf952e --- /dev/null +++ b/DbKit/TransactionContext.py @@ -0,0 +1,41 @@ +class TransactionContext: + """ + 事务上下文管理器类(异步版本) + 支持异步事务管理,配合异步Db类使用 + """ + + def __init__(self, db_instance): + """ + 初始化事务上下文管理器 + + Args: + db_instance: 异步Db实例 + """ + self.db = db_instance + self.session = None + + async def __aenter__(self): + """ + 进入异步上下文时创建会话 + """ + self.session = await self.db.get_session() + return self.session + + async def __aexit__(self, exc_type, exc_val, exc_tb): + """ + 退出异步上下文时提交或回滚事务 + """ + try: + if exc_type is None: + # 如果没有异常,提交事务 + await self.session.commit() + else: + # 如果有异常,回滚事务 + await self.session.rollback() + finally: + # 无论如何都关闭会话 + if self.session: + await self.session.close() + + # 返回False表示不抑制异常 + return False \ No newline at end of file diff --git a/DbKit/__init__.py b/DbKit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/DbKit/__pycache__/Db.cpython-310.pyc b/DbKit/__pycache__/Db.cpython-310.pyc new file mode 100644 index 0000000..a6822a1 Binary files /dev/null and b/DbKit/__pycache__/Db.cpython-310.pyc differ diff --git a/DbKit/__pycache__/Db.cpython-313.pyc b/DbKit/__pycache__/Db.cpython-313.pyc new file mode 100644 index 0000000..90778e6 Binary files /dev/null and b/DbKit/__pycache__/Db.cpython-313.pyc differ diff --git a/DbKit/__pycache__/SqlTemplateLoader.cpython-310.pyc b/DbKit/__pycache__/SqlTemplateLoader.cpython-310.pyc new file mode 100644 index 0000000..6dc94ef Binary files /dev/null and b/DbKit/__pycache__/SqlTemplateLoader.cpython-310.pyc differ diff --git a/DbKit/__pycache__/SqlTemplateLoader.cpython-313.pyc b/DbKit/__pycache__/SqlTemplateLoader.cpython-313.pyc new file mode 100644 index 0000000..ce53407 Binary files /dev/null and b/DbKit/__pycache__/SqlTemplateLoader.cpython-313.pyc differ diff --git a/DbKit/__pycache__/TransactionContext.cpython-310.pyc b/DbKit/__pycache__/TransactionContext.cpython-310.pyc new file mode 100644 index 0000000..c42af6a Binary files /dev/null and b/DbKit/__pycache__/TransactionContext.cpython-310.pyc differ diff --git a/DbKit/__pycache__/TransactionContext.cpython-313.pyc b/DbKit/__pycache__/TransactionContext.cpython-313.pyc new file mode 100644 index 0000000..fa684fd Binary files /dev/null and b/DbKit/__pycache__/TransactionContext.cpython-313.pyc differ diff --git a/DbKit/__pycache__/__init__.cpython-310.pyc b/DbKit/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..de2b678 Binary files /dev/null and b/DbKit/__pycache__/__init__.cpython-310.pyc differ diff --git a/DbKit/__pycache__/__init__.cpython-313.pyc b/DbKit/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..00ae541 Binary files /dev/null and b/DbKit/__pycache__/__init__.cpython-313.pyc differ diff --git a/Doc/1、ADB安装与配置.md b/Doc/1、ADB安装与配置.md new file mode 100644 index 0000000..9ba29b3 --- /dev/null +++ b/Doc/1、ADB安装与配置.md @@ -0,0 +1,207 @@ +## ADB安装及使用详解 + +### 一、文档 + +[文档 ](https://blog.csdn.net/A1_3_9_7/article/details/147744713) + +### 二、下载与配置 + +Windows版本 + +```http +https://dl.google.com/android/repository/platform-tools-latest-windows.zip +``` + +**配置环境变量** + +解压安装后,把解压路径放到系统变量里去(Path), + +环境变量如何配置,比如我的配置如下图: + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072925736.png) + +3、连接 +可以通过模拟器连接,也可以通过数据线连接。 + +通过数据线连接时,手机进入“开发者选项”,打开“usb调试”。 + +不同品牌安卓机型,首次打开“开发者选项”方式不一样,大多是双击手机版本号3~5次,会toast提醒“开发者模式已打开”,具体打开方式可根据手机品牌进行百度查询 + +4、电脑打开cmd窗口 +输入 adb version :显示 adb 版本,说明安装成功 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071609901.png) + +### 三、ADB命令详解 + +#### **1、基本命令** + +> **adb version :显示 adb 版本** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071747991.png) + +**adb help:帮助信息,查看adb所支持的所有命令** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071802326.png) + +**adb get-serialno:也可以查看设备号** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071813698.png) + +#### **权限命令** + +> **adb root:获取Android管理员(root用户)的权限。** +> +> **注意**:一般测试机可使用root权限。 +> +> Android版本9以上,不支持商用机使用root权限,但可以修改底层一些配置 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071828119.png) + +**adb shell:登录设备 shell,该命令将登录设备的shell(内核),登录shell后,可以使用 cd,ls,rm 等Linux命令** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071842102.png) + +adb remount:获取System分区可写权限,需要root后才能有这个权限 + +#### **3、建立连接** + +> **adb -d:如果同时连了usb,又开了模拟器,连接当前唯一通过usb连接的安卓设备** +> +> **adb -e shell:指定当前连接此电脑的唯一的一个模拟器** +> +> **adb -s <设备号> shell:当电脑插多台手机或模拟器时,指定一个设备号进行连接** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071900615.png) + +**exit:退出** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071910063.png) + +**adb kill-server:杀死当前adb服务,如果连不上设备时,杀掉重启。(没事不要用它)** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071921439.png) + +**adb start-server:杀掉后重启** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071931955.png) + +**5037:adb默认端口,如果该端口被占用,可以指定一个端口号,如下命令↓** + +**adb -p 6666 start-server:任意指定一个 adb shell 的端口** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071943263.png) + +#### **4、apk 操作指令** + +> **adb shell pm list packages:列出当前设备/手机,所有的包名** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108071955775.png) + +**adb shell pm list packages -f:显示包和包相关联的文件(安装路径)** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072005333.png) + +adb shell pm list packages -d:显示禁用的包名 +adb shell pm list packages -e:显示当前启用的包名 +adb shell pm list packages -s:显示系统应用包名 +adb shell pm list packages -3:显示已安装第三方的包名 +adb shell pm list packages xxxx:加需要过滤的包名,如:xxx = taobao +adb install <文件路径\apk>:将本地的apk软件安装到设备(手机)上。如手机外部安装需要密码,记得手机输入密码。 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072023565.png) + +**adb install -r <文件路径\apk>:覆盖安装** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072033333.png) + +adb install -d <文件路径\apk>:允许降级覆盖安装 +adb install -g <文件路径\apk>:授权/获取权限,安装软件时把所有权限都打开 +adb uninstall <包名>:卸载该软件/app。 +注意:安装时安装的是apk,卸载时是包名,可以通过 adb shell pm list packages 查看需要卸载的包名。 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072049334.png) + +**adb shell pm uninstall -k <包名>:虽然把此应用卸载,但仍保存此应用的数据和缓存 +adb shell am force-stop <包名>:强制退出该应用/app** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072057718.png) + +#### 、文件操作指令 + +> **adb push <本地路径\文件或文件夹> <手机端路径>:把本地(pc机)的文件或文件夹复制到设备(手机)** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072107990.png) + +注意点1:pc机路径与Android机路径,分隔符是不同的。 + +注意点2:复制失败,大概率是无权限。可先使用上面介绍过的两个命令:adb root;adb remount。在使用 adb push 命令 + +**adb pull <手机端路径/文件或文件夹> :把设备(手机)的文件或文件夹复制到本地。**注意点同上 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072122150.png) + +#### 6、日志操作指令 + +``` +adb shell logcat -c:清理现有日志 +adb shell logcat -v time :输出日志,信息输出在控制台 +adb shell logcat -v time > <存放路径\log.txt>:输出日志并保存在本地文件 +Ctrl+C:终止日志抓取 +adb shell logcat -v time *:E > <存放路径\log.txt>:打印级别为Error的信息 +日志的等级: +-v:Verbse(明细) +-d:Debug(调试) +-i:Info(信息) +-w:Warn(警告) +-e:Error(错误) +-f:Fatal(严重错误) +抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件。 +:日志是记录手机系统在运行app时有什么异常的事件 +EXCEPTION +也可以把更详细得Anr日志拉取出来:adb shell pull /data/anr/traces.txt <存放路径> + +``` + +#### 7、系统操作指令 + +``` +adb shell getprop ro.product.model:获取设备型号 +``` + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072152566.png) + +**adb shell getprop ro.build.version.release:获取Android系统版本** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072202606.png) + +**adb get-serialno:获取设备的序列号(设备号)** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072213837.png) + +**adb shell wm size:获取设备屏幕分辨率** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072224822.png) + +**adb shell screencap -p /sdcard/mms.png:屏幕截图 +adb shell screencap -p /sdcard/screenshot.png:屏幕截图** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072233773.png) + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072239720.png) + +**adb shell dumpsys activity |find “mResumedActivity”:查看前台应用包名,必须先启动app,适用于Android 8.0以上** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072254958.png) + +**adb shell cat /proc/meminfo:获取手机内存信息** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072304342.png) + +**adb shell df:获取手机存储信息** + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/%7Byear%7D/%7Bmonth%7D/%7Bmd5%7D.%7BextName%7D/20260108072312989.png) + +**adb shell screenrecord <存放路径/xxx.mp4>:录屏,命名以.mp4结尾 +adb shell screenrecord --time-limit 10 <存放路径/xxx.mp4>:录屏时间为10秒** + diff --git a/Doc/2、Python + uiautomator2.md b/Doc/2、Python + uiautomator2.md new file mode 100644 index 0000000..954c4d3 --- /dev/null +++ b/Doc/2、Python + uiautomator2.md @@ -0,0 +1,79 @@ +文档 + +https://zhuanlan.zhihu.com/p/19790598010 + + + +```cmd +pip install -U uiautomator2 +pip install uiautodev +pip install pillow +``` + + + +**启动** + +``` +uiauto.dev +``` + + + +**探秘工作原理,知其然更知其所以然** + +python - uiautomator2主要由两部分组成:Python客户端和移动设备。 + +1. **Python端**:负责运行我们编写的脚本,然后向移动设备发送HTTP请求。 +2. **移动设备**:运行着封装了uiautomator2的HTTP服务,收到请求后,解析请求内容,并把它转化成uiautomator2的代码。 + +整个工作流程如下:先在移动设备上安装atx - agent(它是个守护进程),安装好后atx - agent会启动uiautomator2服务(默认7912端口),开始监听。然后在PC上编写测试脚本并执行,这个过程就相当于向移动设备的server端发送HTTP请求。最后移动设备通过WIFI或USB接收到请求,执行相应的操作。 + + + +``` +# 通过包名启动 +d.app_start("com.tencent.mm") # 启动微信 +``` + +https://zhuanlan.zhihu.com/p/25181382631 + +``` +# 等待元素出现(最多10秒,间隔1秒) +d(text="登录").wait(timeout=10, interval=1.0) +d(text="登录").click() + +# 等待元素消失 +d(text="加载中...").wait_gone(timeout=10) +``` + + + +https://uiauto.dev/ + +``` +adb kill-server +adb start-server +``` + +https://github.com/appium/appium-uiautomator2-server/releases + + + +关闭华为手机鸿蒙3的纯净模式 + +``` +adb shell pm disable-user com.huawei.security.privacycenter +adb shell pm disable-user com.huawei.appmarket +``` + + + +``` +adb install -r appium-uiautomator2-server-v9.9.1.apk +adb shell am instrument -w -e debug false io.appium.uiautomator2.server/.ServerInstrument +adb shell am broadcast -a uiautomator.dump +adb pull /sdcard/window_dump.xml . +``` + +adb uiautomator dump /data/local/tmp/ui.xml \ No newline at end of file diff --git a/Doc/3、安装DorisV2.19+Docker版本.txt b/Doc/3、安装DorisV2.19+Docker版本.txt new file mode 100644 index 0000000..e36cc74 --- /dev/null +++ b/Doc/3、安装DorisV2.19+Docker版本.txt @@ -0,0 +1,26 @@ +# 配置Docker + +# 下载脚本 +wget https://doris.apache.org/files/start-doris.sh + +# 运行以下命令,给其赋有相应的执行权限。 +chmod 755 start-doris.sh + +# 运行脚本,启动集群,默认使用2.1.9版本 +bash start-doris.sh + +# connect a alive FE node +mysql -uroot -P9030 -h127.0.0.1 + +# register BE node +ALTER SYSTEM ADD BACKEND "10.10.14.204:9050"; + +# 查看状态 +show backends; + +-- modify the password for current user +SET PASSWORD = PASSWORD('DsideaL147258369'); + +create database yltcharge; + +https://doris.apache.org/zh-CN/docs/dev/gettingStarted/quick-start \ No newline at end of file diff --git a/Doc/4、流程说明.md b/Doc/4、流程说明.md new file mode 100644 index 0000000..b596098 --- /dev/null +++ b/Doc/4、流程说明.md @@ -0,0 +1,161 @@ +# 新电途微信小程序爬虫流程说明文档 + +本文档详细记录了“新电途”微信小程序爬虫的工作流程、技术细节、避坑指南及维护策略,旨在帮助开发人员快速理解系统架构,应对 UI 变更及设备更换等场景。 + +--- + +## 1. 项目概述 + +本项目是一个基于 **Python + uiautomator2 + 视觉大模型 (VL) + 计算机图形学 (CV)** 的自动化爬虫系统。 +其核心目标是模拟用户操作,遍历“新电途”小程序的场站列表,识别场站信息(名称、价格、空闲桩数),并进入详情页抓取地址和分时电价。 + +### 核心技术栈 +* **控制端**: `uiautomator2` (Android 自动化控制) +* **视觉识别 (VL)**: 阿里云 Qwen-VL / DeepSeek (负责复杂的文字和语义提取) +* **计算机图形学 (CV)**: OpenCV (负责快速、低成本的广告检测、按钮定位、图像切片) +* **数据存储**: Doris (MySQL 协议) + Redis (去重缓存) + Huawei OBS (图片存储) + +--- + +## 2. 核心流程图解 + +```mermaid +graph TD + A[启动程序 (Y5_Full)] --> B[Step 0: 初始化服务 & 数据库] + B --> C[Step 1: 打开小程序 (Y2)] + C --> D{检测广告 (CV)} + D -- 有广告 --> E[点击关闭 (CV模板/几何)] + D -- 无广告 --> F[Step 2: 列表页爬取 (Y3)] + E --> F + F --> G[截图 & 切片 (CV)] + G --> H[上传图片至 OBS] + H --> I[调用 VL 模型解析场站列表] + I --> J{是否存在有效场站?} + J -- 是 --> K[遍历场站] + K --> L{是否已处理? (Redis)} + L -- 否 --> M[点击进入详情页] + M --> N[截图详情页 & 解析地址] + N --> O[抓取分时电价 (可选)] + O --> P[返回列表页] + P --> K + L -- 是 --> K + J -- 否 --> Q[下拉翻页] + Q --> F + Q -- 结束 --> R[Step 3: 坐标回填 (Y4)] + R --> S{Cookie 有效?} + S -- 是 --> T[高德 API 查询 & 更新 DB] + S -- 否 --> U[弹窗手动登录 (T2)] + U --> T +``` + +--- + +## 3. 详细步骤与技术实现 + +### 步骤 0: 初始化 (`Y5_Full.py`) +* **动作**: 程序启动时,首先初始化 `XinDianTuService` 并连接数据库。 +* **目的**: 确保后续爬取过程中数据库连接立即可用,避免在写入数据时才初始化导致的延迟或错误。 +* **注意**: 数据库连接采用单例模式或长连接,程序结束时需显式关闭。 + +### 步骤 1: 启动小程序 (`Y2_OpenXinDianTu.py`) +* **动作**: + 1. 强制停止微信并重新启动,确保回到微信主页。 + 2. 点击底部“微信”标签。 + 3. 点击右上角“搜索”按钮(基于百分比坐标)。 + 4. 输入“新电途”并点击搜索结果进入小程序。 +* **坑点**: + * **搜索入口坐标**: 搜索按钮的位置在不同分辨率手机上略有差异,目前使用 `w * 0.84`, `h * 0.08`。如果更换手机,需检查此坐标。 + * **输入法干扰**: `uiautomator2` 的输入法有时会失效,代码中做了 `send_keys(clear=True)` 和直接输入的双重兜底。 + +### 步骤 2: 列表页爬取 (`Y3_StationList.py`) +这是最核心的循环步骤(如需广告检测会自动调用 CV 模块): +1. **截图**: `d.screenshot()`。 +2. **图像切片 (CV)**: 调用 `Kit.crop_cards_from_image`。 + * 利用**行扫描算法**,根据像素亮度和方差,识别出场站卡片之间的灰色分割线,将大图切割成一个个小卡片 (`_vl.jpg` 实际上是带绿框的整图,配合 JSON 元数据)。 + * **优势**: 极大降低了 VL 模型的理解难度,模型只需识别框内内容,不用自己找位置。 +3. **VL 解析**: 将图片上传 OBS,调用 VL 模型(Qwen/DeepSeek)。 + * **Prompt**: 要求模型提取“场站名称”、“价格”、“枪数”、“距离”等。 +4. **坐标映射与安全检查**: + * 模型返回的坐标会结合 `device_info` (设备真实宽高) 进行校验。 + * **Config.py**: `SAFE_EXCLUDE_RATIO=0.20` (顶部20%不点),`BOTTOM_SAFE_EXCLUDE_RATIO=0.1` (底部10%不点)。**这解决了第一屏场站无法点击的问题。** + +### 步骤 3: 坐标回填 (`Y4_Coord.py`) +* **动作**: 扫描数据库中 `address` 不为空但 `coord_x/y` 为空的记录,调用高德地图 API 补全经纬度。 +* **智能修复**: + * 任务开始前会自动探测 Cookie 有效性。 + * 如果 Cookie 失效,自动调用 `T2_GetAmapCookie` 弹出浏览器窗口让用户手动登录。 + * 登录完成后,程序自动保存新 Cookie 并继续执行回填任务,无需重启。 + + +--- + +## 4. 技术选型指南:何时用 CV?何时用 VL? + +| 场景 | 推荐技术 | 理由 | +| :--- | :--- | :--- | +| **广告关闭按钮** | **CV (OpenCV)** | 图标固定、形状简单(圆/叉)、要求毫秒级响应、零成本。 | +| **隐私协议按钮** | **CV (OpenCV)** | 颜色特征明显(黑色块)、位置固定。 | +| **场站卡片切分** | **CV (行扫描)** | 列表页结构规律,分割线特征稳定,CV 切分极其精准且快。 | +| **读取场站名称** | **VL (大模型)** | 字体多样、可能有干扰、OCR 传统方案容易错乱,VL 语义理解能力强。 | +| **读取价格/枪数** | **VL (大模型)** | 格式复杂("快 闲4/4"),VL 能直接提取结构化 JSON。 | +| **寻找"全部时段"** | **CV (几何特征)** | 按钮只有文字没有边框,但左右空白特征明显,用边缘检测更可靠。 | + +**总结**: +* **结构固定、特征简单、追求速度** -> 用 CV。 +* **语义复杂、内容多变、容错率高** -> 用 VL。 + +--- + +## 5. 关键参数配置 (`Config/Config.py`) + +| 参数名 | 当前值 | 说明 | 调整场景 | +| :--- | :--- | :--- | :--- | +| `SAFE_EXCLUDE_RATIO` | **0.20** | **顶部**安全排除比例。在此比例内的坐标不点击。 | 如果发现第一屏顶部的场站无法点击,**调小**此值。 | +| `BOTTOM_SAFE_EXCLUDE_RATIO` | **0.1** | **底部**安全排除比例。避开“扫码充电”等按钮。 | 如果频繁误触底部按钮,**调大**此值。 | +| `SCROLL_DISTANCE_RATIO` | **0.3** | 翻页滑动幅度的比例。 | 如果翻页太快漏数据,**调小**;翻页太慢,**调大**。 | +| `MAX_CRAWL_DISTANCE` | **50** | 最大爬取距离 (km)。 | 根据业务需求调整爬取范围。 | +| `VL_MODEL_NAME` | `qwen3-vl-flash` | 使用的视觉模型版本。 | 如果识别准确率下降,可尝试升级模型。 | + +--- + +## 6. 避坑指南与设备更换 + +### Q1: 更换手机需要注意什么? +1. **分辨率差异**: + * 代码大部分使用了**相对坐标 (百分比)**,理论上兼容不同分辨率。 + * **重点检查**: `Y2_OpenXinDianTu.py` 中的搜索按钮点击坐标 (`0.84, 0.08`)。新手机可能刘海屏高度不同,导致 Y 轴偏移。 +2. **截图尺寸 vs 屏幕尺寸**: + * 某些手机截图分辨率与 `d.info` 获取的屏幕分辨率不一致(如 Retina 缩放)。 + * **解决方案**: `Y3_StationList.py` 中已包含自动检测逻辑:`if img_w != w: device_info['width'] = img_w`。一般无需手动修改。 + +### Q2: 小程序 UI 大改版怎么办? +1. **列表样式变更**: + * 如果列表不再有明显的灰色分割线,`Kit.py` 的切片逻辑 (`get_card_segments`) 会失效。 + * **应对**: 修改 `Kit.py`,改用 VL 模型直接进行全图目标检测 (Object Detection),或者调整 CV 分割线的颜色阈值。 +2. **广告样式变更**: + * 如果出现新广告,截图保存到 `Tools/Templates`,命名为 `ad_close_new.jpg` 即可,代码会自动加载。 + +### Q3: 为什么有场站但没点进去? +1. **被安全区拦截**: 检查日志 `safe exclude` 关键字。如果是误拦截,调整 `SAFE_EXCLUDE_RATIO`。 +2. **VL 识别失败**: 检查 `Images/` 目录下的 `_vl.jpg`,看绿框是否框住了场站。如果没有,说明 CV 切片参数 (`Kit.py`) 需要调整(如 `row_mean` 阈值)。 + +--- + +## 7. 调试与单元测试 + +虽然本项目没有使用标准的 `unittest` 框架,但每个核心模块都设计了**独立运行入口 (`if __name__ == "__main__":`)**,方便单步调试。 + +### 单元调试清单 + +| 功能模块 | 对应文件 | 调试方法 | 作用 | +| :--- | :--- | :--- | :--- | +| **广告检测 (CV)** | `Util/Kit.py` | 无法直接运行,需编写临时脚本调用 `detect_ad_close_x`。建议在 `Tools/T3_CropCards.py` 中添加测试代码。 | 测试新广告模板是否生效。 | +| **切片逻辑 (CV)** | `Tools/T3_CropCards.py` | 运行该脚本,会自动读取 `Samples` 目录下的图片进行切片测试。 | 调试列表分割线识别参数。 | +| **进入小程序** | `Tools/Y2_OpenXinDianTu.py` | 直接运行该文件。 | 测试微信启动和搜索流程。 | +| **列表爬取主循环** | `Tools/Y3_StationList.py` | 直接运行该文件 (需连接手机)。 | 独立测试爬取流程,不依赖外部调度。 | +| **全流程** | `Tools/Y5_Full.py` | 直接运行该文件。 | 生产环境模拟(含坐标回填)。 | + +### 建议的开发习惯 +1. **遇到新 Bug**: 先看日志 (`Tools/Logs/`), 确定是哪一步卡住。 +2. **保留现场**: `KEEP_SCREENSHOTS = True` (在 `Y3_StationList.py`),开启后会保留所有截图,方便事后分析。 +3. **单步验证**: 如果是广告检测问题,把截图拿出来,写个几行的 Python 脚本单独调用 `Kit.detect_ad_close_x` 进行验证,不要每次都跑全流程。 diff --git a/Doc/5、统计表结构说明.md b/Doc/5、统计表结构说明.md new file mode 100644 index 0000000..3410417 --- /dev/null +++ b/Doc/5、统计表结构说明.md @@ -0,0 +1,171 @@ +# 充电桩数据仓库设计说明文档 + +本文档详细描述了充电桩爬虫项目的数据仓库设计思路、表结构定义、常见查询场景及应对策略。该设计基于 Doris 数据库,采用拉链表(SCD Type 2)思想,旨在完整保留历史数据变更轨迹,支持时间旅行查询(Time Travel Query)。 + +## 1. 设计思路:为何选择 SCD Type 2 拉链表? + +在充电桩业务中,数据具有不同的更新频率和业务含义: + +1. **基础信息(Profile)**:如场站名称、地址。这些信息相对稳定,偶尔变化(如更名、迁址)。 +2. **实时状态(Status)**:如空闲桩数、总桩数。这些信息变化极快(分钟级),是分析热度的关键。 +3. **价格策略(Price)**:如分时电价。通常按天或月调整,但一旦调整需要保留历史价格以核对账单或分析价格趋势。 + +如果仅保存“最新状态”,我们将丢失所有历史轨迹,无法回答“上个月该站点的平均空闲率是多少”或“价格调整前后的流量对比”等问题。 + +因此,我们采用 **SCD Type 2(Slowly Changing Dimension Type 2)** 拉链表设计: +* 每条记录都有 `valid_start_time`(生效时间)和 `valid_end_time`(失效时间)。 +* 当前有效的记录,`valid_end_time` 通常设为极大值(如 `9999-12-31`)。 +* 当数据发生变化时: + 1. 将旧记录的 `valid_end_time` 更新为当前时间(闭链)。 + 2. 插入一条新记录,`valid_start_time` 为当前时间,`valid_end_time` 为极大值(开链)。 + +## 2. 表结构定义 + +### 2.1 充电站基础信息表 (`station_profile_scd`) +* **用途**:存储场站名称、地址等相对稳定的属性。 +* **业务主键**:`station_hash` (名称的MD5,确保唯一性)。 + +| 字段名 | 类型 | 说明 | +| :--- | :--- | :--- | +| `id` | VARCHAR(50) | 物理主键 (UUID),每条历史记录唯一 | +| `station_hash` | VARCHAR(32) | **业务主键**,同一场站的所有历史记录此值相同 | +| `station_name` | VARCHAR(255) | 场站名称 | +| `address` | VARCHAR(500) | 详细地址 | +| `valid_start_time` | DATETIME | 记录生效时间 | +| `valid_end_time` | DATETIME | 记录失效时间 (默认 9999-12-31) | +| `is_current` | TINYINT | 是否为当前最新记录 (1=是, 0=否) | + +### 2.2 充电站实时状态表 (`station_status_scd`) +* **用途**:高频存储场站的桩数、空闲情况。 +* **特点**:数据量大,通过拉链表仅记录“状态发生变化”的时刻,节省空间。 + +| 字段名 | 类型 | 说明 | +| :--- | :--- | :--- | +| `id` | VARCHAR(50) | 物理主键 (UUID) | +| `station_hash` | VARCHAR(32) | 业务主键 | +| `total_piles` | INT | 总桩数 | +| `free_piles` | INT | 空闲桩数 | +| `piles_detail_json` | TEXT | 桩详情JSON (如 `{"快": {"free": 2, "total": 10}, "慢": ...}`) | +| `current_price` | DECIMAL | 抓取时的当前电价快照 | +| `valid_start_time` | DATETIME | 生效时间 | +| `valid_end_time` | DATETIME | 失效时间 | +| `is_current` | TINYINT | 是否最新 | + +### 2.3 充电站价格时段表 (`station_price_schedule_scd`) +* **用途**:存储全天的分时电价表。 + +| 字段名 | 类型 | 说明 | +| :--- | :--- | :--- | +| `id` | VARCHAR(50) | 物理主键 (UUID) | +| `station_hash` | VARCHAR(32) | 业务主键 | +| `schedule_json` | TEXT | 价格时段JSON数组 | +| `valid_start_time` | DATETIME | 生效时间 | +| `valid_end_time` | DATETIME | 失效时间 | +| `is_current` | TINYINT | 是否最新 | + +## 3. 常见查询场景及 SQL 写法 + +### 场景一:查询所有场站的“当前”最新状态 +这是最常用的查询,用于实时展示。 + +```sql +SELECT + p.station_name, + p.address, + s.total_piles, + s.free_piles, + s.current_price +FROM + station_profile_scd p +JOIN + station_status_scd s ON p.station_hash = s.station_hash +WHERE + p.is_current = 1 + AND s.is_current = 1; +``` + +### 场景二:查询“指定时间点”的历史快照 +例如:查询 **2023-10-01 14:00:00** 这一刻,所有场站的状态。 +这是拉链表的杀手锏功能。 + +```sql +SET @query_time = '2023-10-01 14:00:00'; + +SELECT + p.station_name, + s.free_piles, + s.current_price +FROM + station_profile_scd p +JOIN + station_status_scd s ON p.station_hash = s.station_hash +WHERE + -- 核心逻辑:查询时间落在生效区间内 + (@query_time >= p.valid_start_time AND @query_time < p.valid_end_time) + AND (@query_time >= s.valid_start_time AND @query_time < s.valid_end_time); +``` + +### 场景三:分析某场站过去24小时的空闲桩变化趋势 +我们需要按时间顺序拉出该场站的所有状态变更记录。 + +```sql +SELECT + valid_start_time AS change_time, + free_piles, + total_piles, + ROUND(free_piles / total_piles * 100, 2) AS free_rate_percent +FROM + station_status_scd +WHERE + station_hash = 'TARGET_STATION_MD5' + AND valid_start_time >= DATE_SUB(NOW(), INTERVAL 24 HOUR) +ORDER BY + valid_start_time ASC; +``` + +### 场景四:统计过去一个月,价格发生过变动的场站 +通过查找 `station_price_schedule_scd` 表中同一个 `station_hash` 有多条记录的情况。 + +```sql +SELECT + p.station_name, + COUNT(pr.id) AS price_change_count +FROM + station_price_schedule_scd pr +JOIN + station_profile_scd p ON pr.station_hash = p.station_hash AND p.is_current = 1 +WHERE + pr.valid_start_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH) +GROUP BY + p.station_name +HAVING + COUNT(pr.id) > 1 +ORDER BY + price_change_count DESC; +``` + +## 4. 数据写入与维护策略 + +为了维护 SCD2 结构,写入程序(Crawler/ETL)需要遵循以下逻辑: + +1. **计算 Hash**:对抓取到的场站名称计算 MD5,作为 `station_hash`。 +2. **查询最新状态**:根据 `station_hash` 查询 `is_current=1` 的记录。 +3. **比对差异**: + * **Profile**: 比对名称、地址是否变化。 + * **Status**: 比对总桩数、空闲数、价格是否变化。 + * **Price**: 比对价格时段 JSON 是否变化。 +4. **无变化**:跳过,不进行任何数据库操作。 +5. **有变化**: + * **Step 1 (Close)**: 更新旧记录:`UPDATE table SET valid_end_time = NOW(), is_current = 0 WHERE id = 'old_uuid'`。 + * **Step 2 (Insert)**: 插入新记录:`INSERT INTO table (..., valid_start_time=NOW(), is_current=1)`。 + * *注意:Step 1 和 Step 2 最好在一个事务中完成,或者保证最终一致性。* + +## 5. 性能优化建议 + +1. **分桶 (Bucketing)**:建表时使用了 `DISTRIBUTED BY HASH(station_hash) BUCKETS 10`。这保证了同一个场站的所有历史记录都落在同一个 Tablet 上,极大地优化了基于 `station_hash` 的 Join 和聚合查询性能。 +2. **分区 (Partitioning)**:当前未显式使用时间分区。如果数据量达到亿级,建议按 `valid_start_time` 进行 Range 分区(如按月),以便冷热数据分离和快速清理过期历史数据。 +3. **索引**: Doris 自动为前缀列创建索引。由于我们常按 `station_hash` 查询,它被放在表定义的列首(或紧跟 ID),查询效率很高。 + +--- +**文档维护人**: AI Assistant +**最后更新**: 2026-01-08 diff --git a/Model/StationPriceSchedule.py b/Model/StationPriceSchedule.py new file mode 100644 index 0000000..238e713 --- /dev/null +++ b/Model/StationPriceSchedule.py @@ -0,0 +1,69 @@ +from sqlalchemy import text +from datetime import datetime +import json + +class StationPriceSchedule: + def __init__(self): + pass + + async def save(self, session, id, station_hash, schedule_json, valid_start_time=None): + if valid_start_time is None: + valid_start_time = datetime.now() + + # Ensure json is string with consistent formatting + schedule_json_str = None + if schedule_json is not None: + if isinstance(schedule_json, (dict, list)): + schedule_json_str = json.dumps(schedule_json, ensure_ascii=False, sort_keys=True) + else: + schedule_json_str = schedule_json + + # 1. Check current record + select_sql = """ + SELECT schedule_json + FROM t_station_price_schedule_scd + WHERE station_hash = :station_hash AND is_current = 1 + """ + result = await session.execute(text(select_sql), {"station_hash": station_hash}) + current_row = result.fetchone() + + if current_row: + row_json = current_row.schedule_json + + # Normalize row_json for comparison + if row_json: + try: + if isinstance(row_json, str): + row_json_obj = json.loads(row_json) + row_json = json.dumps(row_json_obj, ensure_ascii=False, sort_keys=True) + except Exception: + pass + + if row_json == schedule_json_str: + # No change, skip insert + return + + # Expire old record + update_sql = """ + UPDATE t_station_price_schedule_scd + SET is_current = 0, valid_end_time = :valid_start_time + WHERE station_hash = :station_hash AND is_current = 1 + """ + await session.execute(text(update_sql), { + "valid_start_time": valid_start_time, + "station_hash": station_hash + }) + + # 2. Insert new record + sql = """ + INSERT INTO t_station_price_schedule_scd + (id, station_hash, schedule_json, valid_start_time, is_current) + VALUES + (:id, :station_hash, :schedule_json, :valid_start_time, 1) + """ + await session.execute(text(sql), { + "id": id, + "station_hash": station_hash, + "schedule_json": schedule_json_str, + "valid_start_time": valid_start_time + }) diff --git a/Model/StationProfile.py b/Model/StationProfile.py new file mode 100644 index 0000000..9f902f0 --- /dev/null +++ b/Model/StationProfile.py @@ -0,0 +1,107 @@ +from sqlalchemy import text +from datetime import datetime + +class StationProfile: + def __init__(self): + pass + + async def backfill_address_if_missing(self, session, station_hash, station_name, address): + sql = """ + UPDATE t_station_profile_scd + SET address = :address, + station_name = :station_name + WHERE station_hash = :station_hash + AND (address IS NULL OR address = '') + """ + result = await session.execute(text(sql), { + "station_hash": station_hash, + "station_name": station_name, + "address": address + }) + try: + return int(result.rowcount or 0) + except Exception: + return 0 + + async def save(self, session, id, station_hash, operator, station_name, address=None, coord_x=None, coord_y=None, valid_start_time=None): + if valid_start_time is None: + valid_start_time = datetime.now() + + # 1. Check current record + select_sql = """ + SELECT operator, station_name, address, coord_x, coord_y + FROM t_station_profile_scd + WHERE station_hash = :station_hash AND is_current = 1 + """ + result = await session.execute(text(select_sql), {"station_hash": station_hash}) + current_row = result.fetchone() + + if current_row: + if address is not None and address != "" and (current_row.address is None or current_row.address == ""): + await self.backfill_address_if_missing( + session=session, + station_hash=station_hash, + station_name=station_name, + address=address + ) + return + + # Merge logic: if new value is None, use old value + # But we must respect if new value is explicitly provided (even empty string?) + # Usually for crawler: + # - station_name: always updated + # - address: if new is None, use old. + # - coord: if new is None, use old. + + merged_address = address if address is not None else current_row.address + merged_coord_x = coord_x if coord_x is not None else current_row.coord_x + merged_coord_y = coord_y if coord_y is not None else current_row.coord_y + + # Use merged values for comparison and insertion + address = merged_address + coord_x = merged_coord_x + coord_y = merged_coord_y + + # Check if changed + # Need to handle potential float/decimal diffs for coords if needed, + # but usually they are float in DB and float in python. + + is_same = ( + current_row.operator == operator and + current_row.station_name == station_name and + current_row.address == address and + current_row.coord_x == coord_x and + current_row.coord_y == coord_y + ) + + if is_same: + return + + # Expire old record + update_sql = """ + UPDATE t_station_profile_scd + SET is_current = 0, valid_end_time = :valid_start_time + WHERE station_hash = :station_hash AND is_current = 1 + """ + await session.execute(text(update_sql), { + "valid_start_time": valid_start_time, + "station_hash": station_hash + }) + + # 2. Insert new record (with potentially merged values) + sql = """ + INSERT INTO t_station_profile_scd + (id, station_hash, operator, station_name, address, coord_x, coord_y, valid_start_time, is_current) + VALUES + (:id, :station_hash, :operator, :station_name, :address, :coord_x, :coord_y, :valid_start_time, 1) + """ + await session.execute(text(sql), { + "id": id, + "station_hash": station_hash, + "operator": operator, + "station_name": station_name, + "address": address, + "coord_x": coord_x, + "coord_y": coord_y, + "valid_start_time": valid_start_time + }) diff --git a/Model/StationStatus.py b/Model/StationStatus.py new file mode 100644 index 0000000..c6aefda --- /dev/null +++ b/Model/StationStatus.py @@ -0,0 +1,113 @@ +from sqlalchemy import text +from datetime import datetime +import json + +class StationStatus: + def __init__(self): + pass + + async def save(self, session, id, station_hash, total_piles, free_piles, piles_detail_json, current_price, pro_price=None, parking_info=None, distance=None, valid_start_time=None): + if valid_start_time is None: + valid_start_time = datetime.now() + + # Ensure json is string with consistent formatting + piles_json_str = None + if piles_detail_json is not None: + if isinstance(piles_detail_json, (dict, list)): + piles_json_str = json.dumps(piles_detail_json, ensure_ascii=False, sort_keys=True) + else: + piles_json_str = piles_detail_json + + # 1. Check current record + select_sql = """ + SELECT total_piles, free_piles, piles_detail_json, current_price, pro_price, parking_info, distance + FROM t_station_status_scd + WHERE station_hash = :station_hash AND is_current = 1 + """ + try: + result = await session.execute(text(select_sql), {"station_hash": station_hash}) + current_row = result.fetchone() + except Exception as e: + # Check if it's a "column not found" error + if "Unknown column 'parking_info'" in str(e) or "no such column: parking_info" in str(e): + # Handle schema evolution if needed, or just proceed assuming None for parking_info comparison + current_row = None + # Or re-raise if we want to fail hard, but let's try to be robust + # For now, if column missing, we might fail on INSERT later anyway. + # So re-raising or logging might be better. + # But since I cannot easily alter table here, I will proceed with code update + # and assume user/I run the ALTER script. + raise e + raise e + + if current_row: + # Check if changed + # Note: current_row values might be Decimal, need to convert for comparison + row_total = current_row.total_piles + row_free = current_row.free_piles + row_json = current_row.piles_detail_json + row_price = current_row.current_price + row_pro_price = current_row.pro_price + row_parking = getattr(current_row, 'parking_info', None) # Safely get if column exists + row_distance = getattr(current_row, 'distance', None) + + # Normalize row_json for comparison (handle key order differences) + if row_json: + try: + if isinstance(row_json, str): + row_json_obj = json.loads(row_json) + row_json = json.dumps(row_json_obj, ensure_ascii=False, sort_keys=True) + except Exception: + pass # Keep original if parse fails + + # Convert price to float if it is Decimal, for comparison + if row_price is not None: + row_price = float(row_price) + if row_pro_price is not None: + row_pro_price = float(row_pro_price) + + # Simple comparison + is_same = ( + row_total == total_piles and + row_free == free_piles and + row_price == current_price and + row_pro_price == pro_price and + row_json == piles_json_str and + row_parking == parking_info and + row_distance == distance + ) + + if is_same: + # No change, skip insert + return + + # Expire old record + update_sql = """ + UPDATE t_station_status_scd + SET is_current = 0, valid_end_time = :valid_start_time + WHERE station_hash = :station_hash AND is_current = 1 + """ + await session.execute(text(update_sql), { + "valid_start_time": valid_start_time, + "station_hash": station_hash + }) + + # 2. Insert new record + sql = """ + INSERT INTO t_station_status_scd + (id, station_hash, total_piles, free_piles, piles_detail_json, current_price, pro_price, parking_info, distance, valid_start_time, is_current) + VALUES + (:id, :station_hash, :total_piles, :free_piles, :piles_detail_json, :current_price, :pro_price, :parking_info, :distance, :valid_start_time, 1) + """ + await session.execute(text(sql), { + "id": id, + "station_hash": station_hash, + "total_piles": total_piles, + "free_piles": free_piles, + "piles_detail_json": piles_json_str, + "current_price": current_price, + "pro_price": pro_price, + "parking_info": parking_info, + "distance": distance, + "valid_start_time": valid_start_time + }) diff --git a/Model/__pycache__/StationPriceSchedule.cpython-310.pyc b/Model/__pycache__/StationPriceSchedule.cpython-310.pyc new file mode 100644 index 0000000..287106a Binary files /dev/null and b/Model/__pycache__/StationPriceSchedule.cpython-310.pyc differ diff --git a/Model/__pycache__/StationProfile.cpython-310.pyc b/Model/__pycache__/StationProfile.cpython-310.pyc new file mode 100644 index 0000000..0be6e3e Binary files /dev/null and b/Model/__pycache__/StationProfile.cpython-310.pyc differ diff --git a/Model/__pycache__/StationStatus.cpython-310.pyc b/Model/__pycache__/StationStatus.cpython-310.pyc new file mode 100644 index 0000000..b682d52 Binary files /dev/null and b/Model/__pycache__/StationStatus.cpython-310.pyc differ diff --git a/Sql/doris_ddl.py b/Sql/doris_ddl.py new file mode 100644 index 0000000..6fcf6b3 --- /dev/null +++ b/Sql/doris_ddl.py @@ -0,0 +1,69 @@ +import asyncio +import os +import sys +import logging + +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +# 将项目根目录添加到系统路径,以便能够导入 DbKit 和 Config 等模块 +# DbKit/doris_ddl.py -> DbKit -> Root (2 levels up) +project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +if project_root not in sys.path: + sys.path.append(project_root) + +from Util import Win32Patch + +# 应用 Windows 平台的异步策略补丁 +Win32Patch.patch() + +from DbKit.Db import Db +from Config.Config import DB_URL + +async def init_tables(): + """ + 初始化数据库表结构:读取 SQL 文件并逐条执行。 + """ + logger.info("正在初始化数据库连接...") + db = Db(db_url=DB_URL) + await db.init_db() + + logger.info("正在读取 SQL 文件...") + # SQL 文件路径:相对于当前脚本所在目录 (DbKit/) + sql_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '', 'doris_ddl.sql') + + logger.info(f"使用 SQL 文件: {sql_path}") + + with open(sql_path, 'r', encoding='utf-8') as f: + sql_content = f.read() + + # 使用分号分割 SQL 语句,并过滤掉空行和空白语句 + statements = [s.strip() for s in sql_content.split(';') if s.strip()] + + logger.info(f"共找到 {len(statements)} 条 SQL 语句。") + + async with await db.get_session() as session: + for i, stmt in enumerate(statements): + logger.info(f"正在执行第 {i + 1} 条语句...") + # 使用 SQLAlchemy 的 text() 函数执行原生 SQL + from sqlalchemy import text + try: + await session.execute(text(stmt)) + logger.info(f"第 {i + 1} 条语句执行成功。") + except Exception as e: + logger.error(f"执行第 {i + 1} 条语句时出错: {e}") + + # 虽然大多数数据库的 DDL 语句是自动提交的,但显式提交是一个好习惯 + await session.commit() + + logger.info("数据库表初始化完成。") + + # 优雅地关闭数据库引擎并释放连接 + await db.engine.dispose() + +if __name__ == "__main__": + # 再次确保补丁已应用 + Win32Patch.patch() + # 运行异步初始化函数 + asyncio.run(init_tables()) diff --git a/Sql/doris_ddl.sql b/Sql/doris_ddl.sql new file mode 100644 index 0000000..b870e2e --- /dev/null +++ b/Sql/doris_ddl.sql @@ -0,0 +1,61 @@ +-- 充电站基础信息表 (SCD2) +-- 保存场站的名称、地址等相对稳定的信息 +DROP TABLE IF EXISTS t_station_profile_scd; +CREATE TABLE IF NOT EXISTS t_station_profile_scd ( + `station_hash` VARCHAR(32) NOT NULL COMMENT '业务主键 (名称的MD5值)', + `valid_start_time` DATETIME NOT NULL COMMENT '记录生效开始时间', + `id` VARCHAR(50) NOT NULL COMMENT '唯一ID (UUID)', + `operator` VARCHAR(50) NOT NULL COMMENT '运营商名称', + `station_name` VARCHAR(255) NOT NULL COMMENT '场站名称', + `address` VARCHAR(500) COMMENT '详细地址', + `coord_x` DOUBLE COMMENT '经度 (高德坐标系)', + `coord_y` DOUBLE COMMENT '纬度 (高德坐标系)', + `valid_end_time` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59' COMMENT '记录生效结束时间', + `is_current` TINYINT NOT NULL DEFAULT 1 COMMENT '是否为当前最新记录 (1=是, 0=否)' +) +UNIQUE KEY(`station_hash`, `valid_start_time`, `id`) +DISTRIBUTED BY HASH(`station_hash`) BUCKETS 10 +PROPERTIES ( + "replication_num" = "1" +); + +-- 充电站实时状态表 (SCD2 / Log) +-- 保存场站的桩数、空闲数等动态信息 +-- 每次抓取如果状态变化则写入新记录 +DROP TABLE IF EXISTS t_station_status_scd; +CREATE TABLE IF NOT EXISTS t_station_status_scd ( + `station_hash` VARCHAR(32) NOT NULL COMMENT '业务主键 (名称的MD5值)', + `valid_start_time` DATETIME NOT NULL COMMENT '记录生效开始时间', + `id` VARCHAR(50) NOT NULL COMMENT '唯一ID (UUID)', + `total_piles` INT COMMENT '总桩数', + `free_piles` INT COMMENT '空闲桩数', + `piles_detail_json` TEXT COMMENT '详细桩信息 (JSON格式)', + `current_price` DECIMAL(10, 4) COMMENT '当前价格快照', + `pro_price` DECIMAL(10, 4) COMMENT 'PRO会员专享价快照', + `parking_info` VARCHAR(500) COMMENT '停车收费信息', + `distance` VARCHAR(50) COMMENT '距离信息 (例如 5.3km)', + `valid_end_time` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59' COMMENT '记录生效结束时间', + `is_current` TINYINT NOT NULL DEFAULT 1 COMMENT '是否为当前最新记录' +) +UNIQUE KEY(`station_hash`, `valid_start_time`, `id`) +DISTRIBUTED BY HASH(`station_hash`) BUCKETS 10 +PROPERTIES ( + "replication_num" = "1" +); + +-- 充电站价格时段表 (SCD2) +-- 保存场站的全天价格时段信息 +DROP TABLE IF EXISTS t_station_price_schedule_scd; +CREATE TABLE IF NOT EXISTS t_station_price_schedule_scd ( + `station_hash` VARCHAR(32) NOT NULL COMMENT '业务主键 (名称的MD5值)', + `valid_start_time` DATETIME NOT NULL COMMENT '记录生效开始时间', + `id` VARCHAR(50) NOT NULL COMMENT '唯一ID (UUID)', + `schedule_json` TEXT COMMENT '价格时段详情 (JSON格式)', + `valid_end_time` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59' COMMENT '记录生效结束时间', + `is_current` TINYINT NOT NULL DEFAULT 1 COMMENT '是否为当前最新记录' +) +UNIQUE KEY(`station_hash`, `valid_start_time`, `id`) +DISTRIBUTED BY HASH(`station_hash`) BUCKETS 10 +PROPERTIES ( + "replication_num" = "1" +); diff --git a/Temp/DevTools/current_20260111_170841.jpg b/Temp/DevTools/current_20260111_170841.jpg new file mode 100644 index 0000000..cbf7c07 Binary files /dev/null and b/Temp/DevTools/current_20260111_170841.jpg differ diff --git a/Temp/DevTools/current_20260111_171025.jpg b/Temp/DevTools/current_20260111_171025.jpg new file mode 100644 index 0000000..1b8cfba Binary files /dev/null and b/Temp/DevTools/current_20260111_171025.jpg differ diff --git a/Test/1.jpg b/Test/1.jpg new file mode 100644 index 0000000..b5b33da Binary files /dev/null and b/Test/1.jpg differ diff --git a/Test/1_bw.jpg b/Test/1_bw.jpg new file mode 100644 index 0000000..6157cf3 Binary files /dev/null and b/Test/1_bw.jpg differ diff --git a/Test/1_bw_bytes.jpg b/Test/1_bw_bytes.jpg new file mode 100644 index 0000000..6157cf3 Binary files /dev/null and b/Test/1_bw_bytes.jpg differ diff --git a/Test/2.jpg b/Test/2.jpg new file mode 100644 index 0000000..b80d77b Binary files /dev/null and b/Test/2.jpg differ diff --git a/Test/TestConflict.py b/Test/TestConflict.py new file mode 100644 index 0000000..f64cbca --- /dev/null +++ b/Test/TestConflict.py @@ -0,0 +1,29 @@ +# coding=utf-8 +import os +import sys +import time +import numpy as np + +# Add project root to sys.path +current_dir = os.path.dirname(os.path.abspath(__file__)) +# project_root = os.path.dirname(current_dir) +# if project_root not in sys.path: +# sys.path.append(project_root) + +print("Importing PaddleOCR...") +from paddleocr import PaddleOCR +print("Importing LlmUtil...") +# from Util.LlmUtil import get_llm_response +print("Imports done.") + +def main(): + image_path = os.path.join(current_dir, "2.jpg") + print(f"Initializing OCR...") + ocr = PaddleOCR(use_textline_orientation=True, lang="ch") + print("Running OCR...") + result = ocr.ocr(image_path) + print("OCR Done.") + print(result) + +if __name__ == "__main__": + main() diff --git a/Test/TestOCR.py b/Test/TestOCR.py new file mode 100644 index 0000000..2dfec1f --- /dev/null +++ b/Test/TestOCR.py @@ -0,0 +1,119 @@ +# coding=utf-8 +import os +import sys +from paddleocr import PaddleOCR +import numpy as np + +def test_ocr(): + # 1. 初始化 PaddleOCR + print("正在初始化 PaddleOCR 模型...") + try: + ocr = PaddleOCR(use_textline_orientation=True, lang="ch") + except Exception as e: + print(f"初始化失败: {e}") + return + + # 2. 准备测试图片 + current_dir = os.path.dirname(os.path.abspath(__file__)) + # 优先查找 2.jpg,如果不存在则查找 1.jpg + image_path = os.path.join(current_dir, "2.jpg") + if not os.path.exists(image_path): + image_path = os.path.join(current_dir, "1.jpg") + + if not os.path.exists(image_path): + print(f"错误: 未找到测试图片: {image_path}") + print("请将测试图片命名为 2.jpg 或 1.jpg 并放置在 Test 目录下。") + return + + print(f"正在识别图片: {image_path}") + + # 3. 执行识别 + try: + # result 是一个列表,通常包含一个 OCRResult 对象 (新版) 或列表 (旧版) + result = ocr.ocr(image_path) + + except Exception as e: + print(f"识别过程发生异常: {e}") + return + + # 4. 输出结果 + print("\n" + "="*20 + " 识别结果 " + "="*20) + sys.stdout.flush() + + # 同时输出到文件,方便查看 + output_file = os.path.join(current_dir, "ocr_output.txt") + with open(output_file, "w", encoding="utf-8") as f_out: + if not result: + msg = "未识别到任何文字 (Result is empty)。" + print(msg) + f_out.write(msg + "\n") + else: + # 取出第一个结果(通常是单张图片的结果) + res = result[0] + + # 检查是否为 None + if res is None: + msg = "未识别到任何文字 (Result[0] is None)。" + print(msg) + f_out.write(msg + "\n") + + # 情况 A: 新版 PaddleX OCRResult 对象 (表现为字典或对象) + elif hasattr(res, 'get') and 'rec_texts' in res: + texts = res.get('rec_texts', []) + scores = res.get('rec_scores', []) + + if not texts: + msg = "未识别到任何文字 (rec_texts is empty)。" + print(msg) + f_out.write(msg + "\n") + else: + for i, text in enumerate(texts): + score = scores[i] if i < len(scores) else 0.0 + msg = f"行 {i+1}: {text} (置信度: {score:.4f})" + print(msg) + f_out.write(msg + "\n") + + # 情况 B: 对象属性访问 + elif hasattr(res, 'rec_texts'): + texts = res.rec_texts + scores = res.rec_scores + + if not texts: + msg = "未识别到任何文字 (rec_texts is empty)。" + print(msg) + f_out.write(msg + "\n") + else: + for i, text in enumerate(texts): + score = scores[i] if i < len(scores) else 0.0 + msg = f"行 {i+1}: {text} (置信度: {score:.4f})" + print(msg) + f_out.write(msg + "\n") + + # 情况 C: 旧版 list of lists 结构 + elif isinstance(res, list): + for idx, line in enumerate(res): + try: + if len(line) >= 2 and isinstance(line[1], (tuple, list)): + text, score = line[1] + msg = f"行 {idx+1}: {text} (置信度: {score:.4f})" + print(msg) + f_out.write(msg + "\n") + else: + msg = f"行 {idx+1}: {line} (格式未知)" + print(msg) + f_out.write(msg + "\n") + except Exception as e: + print(f"行 {idx+1} 解析失败: {e}") + + else: + msg = f"无法解析结果结构: {type(res)}" + print(msg) + print(f"Result content: {res}") + f_out.write(msg + "\n") + f_out.write(f"Result content: {res}\n") + + print("="*50) + sys.stdout.flush() + +if __name__ == "__main__": + test_ocr() diff --git a/Test/TestOcrLlm.py b/Test/TestOcrLlm.py new file mode 100644 index 0000000..1d5d4d3 --- /dev/null +++ b/Test/TestOcrLlm.py @@ -0,0 +1,173 @@ +# coding=utf-8 +import os +import sys +import time +import asyncio +import json + +# Add project root to sys.path +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +if project_root not in sys.path: + sys.path.append(project_root) + +from paddleocr import PaddleOCR +from Util.LlmUtil import get_llm_response +from Util.OcrParser import OcrParser +import re + +LOG_FILE = os.path.join(current_dir, "ocr_llm_debug.txt") + +def log(msg): + print(msg) + sys.stdout.flush() + with open(LOG_FILE, "a", encoding="utf-8") as f: + f.write(msg + "\n") + +# ... imports ... +def run_ocr_sync(): + image_path = os.path.join(current_dir, "2.jpg") + if not os.path.exists(image_path): + image_path = os.path.join(current_dir, "1.jpg") + + log(f"Testing OCR + LLM Pipeline on: {image_path}") + log("-" * 50) + + # --- Step 1: PaddleOCR --- + t_start = time.time() + + log("Initializing PaddleOCR...") + t_init_start = time.time() + try: + # 尝试使用轻量级模型 (Mobile) 以提升速度 + # ocr_version='PP-OCRv4' 通常默认是 mobile + ocr = PaddleOCR(use_textline_orientation=True, lang="ch", ocr_version='PP-OCRv4') + except Exception as e: + log(f"PaddleOCR Init Failed: {e}") + return None, None + + t_init_end = time.time() + log(f"PaddleOCR Init Time: {t_init_end - t_init_start:.4f}s") + + log("Running OCR Inference...") + t_ocr_start = time.time() + try: + result = ocr.ocr(image_path) + except Exception as e: + log(f"OCR Inference Failed: {e}") + return None, None + t_ocr_end = time.time() + + ocr_text_lines = [] + + # Handle different result structures + if not result: + log("OCR returned empty result.") + else: + res = result[0] + if res is None: + log("OCR result[0] is None.") + elif hasattr(res, 'get') and 'rec_texts' in res: + ocr_text_lines = res.get('rec_texts', []) + elif hasattr(res, 'rec_texts'): + ocr_text_lines = res.rec_texts + elif isinstance(res, list): + for line in res: + if len(line) >= 2 and isinstance(line[1], (tuple, list)): + ocr_text_lines.append(line[1][0]) + + ocr_text_block = "\n".join(ocr_text_lines) + log(f"OCR Result ({t_ocr_end - t_ocr_start:.4f}s):") + log(ocr_text_block) + log("-" * 50) + + return ocr_text_lines, ocr_text_block, (t_ocr_start, t_ocr_end) + +async def run_parsing_comparison(ocr_text_lines, ocr_text_block, timing_ocr): + t_ocr_start, t_ocr_end = timing_ocr + ocr_duration = t_ocr_end - t_ocr_start + + # --- Mode 1: Regex Parsing --- + log("Running Regex Parsing...") + t_regex_start = time.time() + try: + regex_data = OcrParser.parse(ocr_text_lines) + log("\nParsed Data (Regex):") + log(json.dumps(regex_data, indent=2, ensure_ascii=False)) + except Exception as e: + log(f"Regex Parsing Failed: {e}") + t_regex_end = time.time() + regex_duration = t_regex_end - t_regex_start + log(f"Regex Parsing Time: {regex_duration:.4f}s") + log("-" * 50) + + # --- Mode 2: LLM Parsing --- + log("Running LLM Parsing...") + + prompt = f""" + You are a data extraction assistant. Below is the OCR text recognized from a charging station list card. + Please extract the structured data and return it ONLY as a JSON object (no markdown, no extra text). + + Fields to extract: + - station_name: (String) Name of the charging station. + - distance: (String) Distance info (e.g., "7.4km"). + - price: (String) Price info (e.g., "0.7111/度"). + - tags: (List[String]) Any tags like "快", "闲3/4", "组团", "2倍积分", "P", etc. + - parking_info: (String) Parking related info. + + OCR Text: + {ocr_text_block} + """ + + t_llm_start = time.time() + response_text = "" + try: + log("Starting LLM request...") + async for chunk in get_llm_response(prompt, stream=True): + print(chunk, end='', flush=True) + response_text += chunk + + print("\n") + log("LLM request finished.") + + t_llm_end = time.time() + + log(f"\nLLM Response ({t_llm_end - t_llm_start:.4f}s):") + log(response_text) + + try: + clean_text = response_text.replace("```json", "").replace("```", "").strip() + data = json.loads(clean_text) + log("\nParsed JSON Data:") + log(json.dumps(data, indent=2, ensure_ascii=False)) + except json.JSONDecodeError: + log("\nFailed to parse JSON directly.") + + except Exception as e: + log(f"LLM Error: {e}") + t_llm_end = time.time() + + log("-" * 50) + log(f"Summary:") + log(f"OCR Time: {ocr_duration:.4f}s") + log(f"Regex Parsing Time: {regex_duration:.4f}s") + log(f"LLM Parsing Time: {t_llm_end - t_llm_start:.4f}s") + + total_regex = ocr_duration + regex_duration + total_llm = ocr_duration + (t_llm_end - t_llm_start) + + log(f"Total Pipeline (OCR+Regex): {total_regex:.4f}s") + log(f"Total Pipeline (OCR+LLM): {total_llm:.4f}s") + +def main(): + # Clear log file + with open(LOG_FILE, "w", encoding="utf-8") as f: + f.write("Starting TestOcrLlm...\n") + + ocr_lines, ocr_text, timing = run_ocr_sync() + if ocr_lines: + asyncio.run(run_parsing_comparison(ocr_lines, ocr_text, timing)) + +if __name__ == "__main__": + main() + diff --git a/Test/TestOcrRegex.py b/Test/TestOcrRegex.py new file mode 100644 index 0000000..fc2bcca --- /dev/null +++ b/Test/TestOcrRegex.py @@ -0,0 +1,107 @@ +# coding=utf-8 +import re +import json + +def parse_ocr_lines(lines): + result = { + "station_name": "", + "distance": "", + "price": None, + "piles": [], + "parking": "", + "tags": [] + } + + # Pre-process lines: remove confidence scores for parsing + clean_lines = [] + for line in lines: + # Remove prefix "行 X: " + text = re.sub(r"^行\s*\d+:\s*", "", line) + # Remove suffix "(置信度: ...)" + text = re.sub(r"\s*\(置信度:.*?\)\s*$", "", text) + clean_lines.append(text.strip()) + + # 1. Station Name + for line in clean_lines: + # Skip empty or short noise + if len(line) < 2: continue + # Skip if starts with special chars + if line.startswith("(") or line.startswith("("): continue + # Skip if contains typical attribute keywords + if "km" in line.lower() or "/度" in line or "¥" in line: continue + # Skip if strictly numeric (unlikely for name) + if re.match(r"^\d+$", line): continue + + result["station_name"] = line + break + + # 2. Distance + for line in clean_lines: + m = re.search(r"(\d+(\.\d+)?)\s*km", line, re.IGNORECASE) + if m: + result["distance"] = m.group(0) + break + + # 3. Price (Standard) + # Look for "0.xxxx/度" + for line in clean_lines: + m = re.search(r"(\d+\.\d+)(?=/度)", line) + if m: + result["price"] = float(m.group(1)) + break + + # 4. Piles + current_type = "未知" + for line in clean_lines: + if "快" in line: current_type = "快" + elif "慢" in line: current_type = "慢" + elif "超" in line: current_type = "超" + + # Match "闲3/4" or "3/4" + # Regex: optional "闲", int, /, int + m = re.search(r"(?:闲)?(\d+)/(\d+)", line) + if m: + # Check if it looks like a price (contains dot) + if "." in line: continue + + free = int(m.group(1)) + total = int(m.group(2)) + result["piles"].append({ + "type": current_type, + "free": free, + "total": total + }) + + # 5. Parking + for line in clean_lines: + if "停车" in line: + # Clean up leading punctuation + cleaned = re.sub(r"^[·\.\sP]+", "", line) + result["parking"] = cleaned + break + + return result + +if __name__ == "__main__": + # User provided sample data + sample_input = [ + "行 1: 长春市绿园区雁鸣湖公共充电站 (置信度: 0.9963)", + "行 2: (… (置信度: 0.6244)", + "行 3: 7.4km (置信度: 0.9975)", + "行 4: 0.7111/度 (置信度: 0.9450)", + "行 5: 快 (置信度: 0.9987)", + "行 6: 闲3/4 (置信度: 0.9941)", + "行 7: ¥ (置信度: 0.8734)", + "行 8: 组团 (置信度: 0.9995)", + "行 9: 2倍积分 (置信度: 0.9997)", + "行 10: P (置信度: 0.9929)", + "行 11: ·收费停车:以场地实际收费为准 (置信度: 0.9736)" + ] + + print("--- Input Data ---") + for l in sample_input: + print(l) + + parsed = parse_ocr_lines(sample_input) + print("\n--- Parsed Result (Regex) ---") + print(json.dumps(parsed, ensure_ascii=False, indent=2)) diff --git a/Test/TestPaddleOCRKit.py b/Test/TestPaddleOCRKit.py new file mode 100644 index 0000000..a933f2b --- /dev/null +++ b/Test/TestPaddleOCRKit.py @@ -0,0 +1,118 @@ +# coding=utf-8 +import os +import sys +import cv2 +import json +import time + +# Add project root to sys.path +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +if project_root not in sys.path: + sys.path.append(project_root) + +from Util import Kit +from Util.PaddleOCRKit import get_ocr_kit + +def test_integration(): + image_path = os.path.join(current_dir, "2.jpg") + if not os.path.exists(image_path): + print(f"Image not found: {image_path}") + return + + print(f"Testing integration on: {image_path}") + + # 1. Generate Metadata using Kit + print("Running Kit.crop_cards_from_image...") + Kit.crop_cards_from_image(image_path, output_dir=current_dir) + + json_path = image_path.replace(".jpg", ".json") + json_metadata = {} + + if os.path.exists(json_path): + with open(json_path, 'r', encoding='utf-8') as f: + json_metadata = json.load(f) + + if not json_metadata.get("cards"): + print("Kit failed to find cards (expected for single card image). Mocking metadata.") + img = cv2.imread(image_path) + h, w = img.shape[:2] + json_metadata = { + "cards": [ + { + "id": 1, + "rect": [0, 0, w, h], + "click_point": [w//2, h//2] + } + ] + } + + print(f"Loaded metadata with {len(json_metadata.get('cards', []))} cards.") + + # 2. Run OCR Logic (Simulating Crawler.py) + print("Running OCR Logic...") + + ocr_kit = get_ocr_kit() + + original_img = cv2.imread(image_path) + stations = [] + + t_start = time.time() + + if "cards" in json_metadata and original_img is not None: + h_img, w_img = original_img.shape[:2] + + for card in json_metadata["cards"]: + rect = card.get("rect") + if not rect: continue + x1, y1, x2, y2 = rect + + # 边界检查 + x1 = max(0, min(x1, w_img)) + x2 = max(0, min(x2, w_img)) + y1 = max(0, min(y1, h_img)) + y2 = max(0, min(y2, h_img)) + + if x2 <= x1 or y2 <= y1: continue + + # 裁剪卡片 + cropped_card = original_img[y1:y2, x1:x2] + + # 识别 + parsed_data = ocr_kit.recognize(cropped_card) + print(f"Parsed Data: {json.dumps(parsed_data, indent=2, ensure_ascii=False)}") + + if parsed_data and parsed_data.get("station_name"): + # 格式化数据 + piles_list = parsed_data.get("piles", []) + piles_str_parts = [] + for p in piles_list: + p_type = p.get("type", "") + p_free = p.get("free", 0) + p_total = p.get("total", 0) + piles_str_parts.append(f"{p_type}:{p_free}/{p_total}") + + piles_str = " ".join(piles_str_parts) + + station_info = { + "station_name": parsed_data.get("station_name"), + "price": str(parsed_data.get("price")) if parsed_data.get("price") is not None else "", + "piles": piles_str, + "distance": parsed_data.get("distance", ""), + "uia_center_x": card["click_point"][0], + "uia_center_y": card["click_point"][1], + "tags": parsed_data.get("tags", []), + "parking_info": parsed_data.get("parking", "") + } + stations.append(station_info) + + t_end = time.time() + + print("-" * 50) + print(f"Total Processing Time: {t_end - t_start:.4f}s") + print(f"Found {len(stations)} stations:") + for s in stations: + print(json.dumps(s, indent=2, ensure_ascii=False)) + +if __name__ == "__main__": + test_integration() diff --git a/Test/__init__.py b/Test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Test/__pycache__/__init__.cpython-310.pyc b/Test/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..d573e7a Binary files /dev/null and b/Test/__pycache__/__init__.cpython-310.pyc differ diff --git a/Test/home.jpg b/Test/home.jpg new file mode 100644 index 0000000..b0ab130 Binary files /dev/null and b/Test/home.jpg differ diff --git a/Test/ocr_llm_debug.txt b/Test/ocr_llm_debug.txt new file mode 100644 index 0000000..6ffccbe --- /dev/null +++ b/Test/ocr_llm_debug.txt @@ -0,0 +1,78 @@ +Starting TestOcrLlm... +Testing OCR + LLM Pipeline on: D:\dsWork\YltProject\dsCrawler\Test\2.jpg +-------------------------------------------------- +Initializing PaddleOCR... +PaddleOCR Init Time: 1.7990s +Running OCR Inference... +OCR Result (1.7636s): +长春市绿园区雁鸣湖公共充电站 +.. +17.4km +0.7111/度 + +快 +闲3/4 +组团 +2倍积分 +P +收费停车:以场地实际收费为准 +-------------------------------------------------- +Running Regex Parsing... + +Parsed Data (Regex): +{ + "station_name": "长春市绿园区雁鸣湖公共充电站", + "distance": "17.4km", + "price": 0.7111, + "piles": [ + { + "type": "快", + "free": 3, + "total": 4 + } + ], + "parking": "收费停车:以场地实际收费为准", + "tags": [ + "组团", + "2倍积分", + "P" + ] +} +Regex Parsing Time: 0.0015s +-------------------------------------------------- +Running LLM Parsing... +Starting LLM request... +LLM request finished. + +LLM Response (3.6250s): +```json +{ + "station_name": "长春市绿园区雁鸣湖公共充电站", + "distance": "17.4km", + "price": "0.7111/度", + "tags": ["快", "闲3/4", "组团", "2倍积分", "P"], + "parking_info": "收费停车:以场地实际收费为准" +} +``` + +Parsed JSON Data: +{ + "station_name": "长春市绿园区雁鸣湖公共充电站", + "distance": "17.4km", + "price": "0.7111/度", + "tags": [ + "快", + "闲3/4", + "组团", + "2倍积分", + "P" + ], + "parking_info": "收费停车:以场地实际收费为准" +} +-------------------------------------------------- +Summary: +OCR Time: 1.7636s +Regex Parsing Time: 0.0015s +LLM Parsing Time: 3.6250s +Total Pipeline (OCR+Regex): 1.7652s +Total Pipeline (OCR+LLM): 5.3886s diff --git a/Test/ocr_llm_output.txt b/Test/ocr_llm_output.txt new file mode 100644 index 0000000..6206456 Binary files /dev/null and b/Test/ocr_llm_output.txt differ diff --git a/Test/ocr_llm_result.txt b/Test/ocr_llm_result.txt new file mode 100644 index 0000000..dad011f --- /dev/null +++ b/Test/ocr_llm_result.txt @@ -0,0 +1,27 @@ +OCR Result: +长春市绿园区雁鸣湖公共充电站 +(… +7.4km +0.7111/度 +快 +闲3/4 +¥ +组团 +2倍积分 +P +·收费停车:以场地实际收费为准 + +LLM Response: +{ + "station_name": "长春市绿园区雁鸣湖公共充电站", + "distance": "7.4km", + "price": "0.7111/度", + "tags": ["快", "闲3/4", "组团", "2倍积分", "P"], + "parking_info": "收费停车:以场地实际收费为准" +} + +-------------------------------------------------- +Summary: +OCR Time: 15.7442s +LLM Time: 3.1676s +Total Pipeline Time (excluding init): 18.9118s \ No newline at end of file diff --git a/Test/ocr_output.txt b/Test/ocr_output.txt new file mode 100644 index 0000000..b7c5740 --- /dev/null +++ b/Test/ocr_output.txt @@ -0,0 +1,11 @@ +行 1: 长春市绿园区雁鸣湖公共充电站 (置信度: 0.9963) +行 2: (… (置信度: 0.6244) +行 3: 7.4km (置信度: 0.9975) +行 4: 0.7111/度 (置信度: 0.9450) +行 5: 快 (置信度: 0.9987) +行 6: 闲3/4 (置信度: 0.9941) +行 7: ¥ (置信度: 0.8734) +行 8: 组团 (置信度: 0.9995) +行 9: 2倍积分 (置信度: 0.9997) +行 10: P (置信度: 0.9929) +行 11: ·收费停车:以场地实际收费为准 (置信度: 0.9736) diff --git a/Test/qbsd_bw.jpg b/Test/qbsd_bw.jpg new file mode 100644 index 0000000..0a0ecf7 Binary files /dev/null and b/Test/qbsd_bw.jpg differ diff --git a/Test/test02.py b/Test/test02.py new file mode 100644 index 0000000..9220fd5 --- /dev/null +++ b/Test/test02.py @@ -0,0 +1,9 @@ +import uiautomator2 as u2 + +d = u2.connect() + +d.reset_uiautomator() +d.sleep(3) +xml = d.dump_hierarchy() # 导出当前UI结构(XML) +with open("ui_hierarchy5_2.xml", "w", encoding="utf-8") as f: + f.write(xml) \ No newline at end of file diff --git a/Test/test03.py b/Test/test03.py new file mode 100644 index 0000000..56ee179 --- /dev/null +++ b/Test/test03.py @@ -0,0 +1,14 @@ +from Util.ObsUtil import ObsUploader + +from Config.Config import OBS_TMP_PREFIX + +uploader = ObsUploader() + +object_key = OBS_TMP_PREFIX + "/1d3eb56c-942e-42d3-8993-f1ea8ad7d97b.jpg" +success, result = uploader.upload_file( + object_key=object_key, + file_path="Screenshot/1d3eb56c-942e-42d3-8993-f1ea8ad7d97b.jpg" +) + +print(success) +print(result) diff --git a/Test/test04.py b/Test/test04.py new file mode 100644 index 0000000..dd4bd0d --- /dev/null +++ b/Test/test04.py @@ -0,0 +1,12 @@ +import uiautomator2 as u2 + +d = u2.connect() + +# 启动应用(以微信为例) +d.app_start("com.tencent.mm") + +# 截微信图保存 +d.screenshot("home.jpg") + +# 关闭应用 +d.app_stop("com.tencent.mm") \ No newline at end of file diff --git a/Test/ui_hierarchy5_2.xml b/Test/ui_hierarchy5_2.xml new file mode 100644 index 0000000..96a6655 --- /dev/null +++ b/Test/ui_hierarchy5_2.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Util/DevTools/crop_test.py b/Util/DevTools/crop_test.py new file mode 100644 index 0000000..7c57f6d --- /dev/null +++ b/Util/DevTools/crop_test.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +""" +基于行扫描和统计特征的卡片截取工具 +""" +import sys +import os + +# 添加项目根目录到系统路径 +project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.append(project_root) +from Util import Kit + +def clean_directory(dir_path): + """ + 清理现场:删除目录下除纯数字.jpg以外的所有文件 + """ + print(f"Cleaning directory: {dir_path}") + if not os.path.exists(dir_path): + return + + for filename in os.listdir(dir_path): + path = os.path.join(dir_path, filename) + if not os.path.isfile(path): + continue + + name, ext = os.path.splitext(filename) + # 保留条件:后缀是 .jpg 且文件名是纯数字 + # [修改] 同时保留 _flag.jpg, _vl.jpg 供查看 + # [修改] 保留 .json 文件 + if ext.lower() == ".json": + continue + + if ext.lower() == ".jpg" and (name.isdigit() or name.endswith("_flag") or name.endswith("_vl")): + continue + + # 清理旧的 _for_vl.jpg + if name.endswith("_for_vl"): + pass # Let it fall through to delete + else: + # 其他非生成的文件,可能需要保留吗? + # 这里的逻辑是清理 output 目录,假设该目录下只有生成的图片 + # 如果是原始图片(比如 1.jpg),不能删! + pass + + # 原始图片保护 (文件名比较短,通常是 1.jpg, 2.jpg 等) + if len(name) <= 2 and name.isdigit(): + continue + + try: + os.remove(path) + print(f" Deleted: {filename}") + except Exception as e: + print(f" Error deleting {filename}: {e}") + +def crop_cards(img_path): + Kit.crop_cards_from_image(img_path) + +if __name__ == "__main__": + test_files = [ + r"d:\dsWork\dsProject\dsCrawler\Tools\Images\1.jpg", + r"d:\dsWork\dsProject\dsCrawler\Tools\Images\2.jpg", + r"d:\dsWork\dsProject\dsCrawler\Tools\Images\3.jpg", + r"d:\dsWork\dsProject\dsCrawler\Tools\Images\4.jpg" + ] + + # 在测试前清理现场 + if test_files: + # 假设所有图片都在同一个文件夹 + target_dir = os.path.dirname(test_files[0]) + clean_directory(target_dir) + + for f in test_files: + crop_cards(f) diff --git a/Util/DevTools/screenshot_test.py b/Util/DevTools/screenshot_test.py new file mode 100644 index 0000000..3c26658 --- /dev/null +++ b/Util/DevTools/screenshot_test.py @@ -0,0 +1,58 @@ +# coding=utf-8 +import asyncio +import logging +import os +from datetime import datetime +import uiautomator2 as u2 + +# 配置日志输出 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger("ScreenshotTool") + + +async def take_screenshot(): + """ + 打开微信主界面并拍照(截图) + """ + # 连接设备 + d = u2.connect() + + # 执行截图 + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = f"current_{timestamp}.jpg" + + # 获取目标目录: 项目根目录下的 Temp/DevTools + project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + target_dir = os.path.join(project_root, "Temp", "DevTools") + os.makedirs(target_dir, exist_ok=True) + filepath = os.path.join(target_dir, filename) + + logger.info(f"正在拍照(截图)并保存至: {filepath}") + d.screenshot(filepath) + + if os.path.exists(filepath): + logger.info("拍照成功!") + return filepath + else: + logger.error("拍照失败,未找到生成的文件。") + return None + + +async def main(): + filepath = await take_screenshot() + if filepath: + logger.info(f"任务执行完成,截图文件: {filepath}") + else: + logger.error("任务执行失败。") + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + logger.info("程序被用户中断.") + except Exception as e: + logger.exception(f"运行过程中出现异常: {e}") diff --git a/Util/Kit.py b/Util/Kit.py new file mode 100644 index 0000000..c7017aa --- /dev/null +++ b/Util/Kit.py @@ -0,0 +1,922 @@ +import logging +import os +import cv2 +import numpy as np +import time +from Config.Config import BOTTOM_SAFE_EXCLUDE_RATIO + +logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") +logger = logging.getLogger(__name__) + +def read_image(path): + """读取图片,支持中文路径""" + try: + return cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1) + except Exception as e: + logger.info(f"Error reading image {path}: {e}") + return None + +def save_image(path, img): + """保存图片,支持中文路径""" + try: + ext = os.path.splitext(path)[1] + if not ext: + ext = ".jpg" + cv2.imencode(ext, img)[1].tofile(path) + return True + except Exception as e: + logger.error(f"Error saving image {path}: {e}") + return False + +# 截图 +def take_screenshot(d, image_uuid, save_dir="Screenshot"): + path = f"{save_dir}/{image_uuid}.jpg" + os.makedirs(save_dir, exist_ok=True) + d.screenshot(path) + return path + +def click_image_template(d, template_path, timeout=5.0, threshold=0.8): + """ + 使用 OpenCV 模板匹配查找并点击图片 + :param d: uiautomator2 设备对象 + :param template_path: 模板图片路径 + :param timeout: 超时时间(秒) + :param threshold: 匹配阈值 (0.0 - 1.0) + :return: 是否点击成功 + """ + if not os.path.exists(template_path): + logger.info(f"Template file not found: {template_path}") + return False + + template = read_image(template_path) + if template is None: + logger.info(f"Failed to load template: {template_path}") + return False + + t_h, t_w = template.shape[:2] + + start_time = time.time() + best_val_overall = 0.0 + + while time.time() - start_time < timeout: + # 临时截图 + temp_uuid = "temp_click_check" + screenshot_path = take_screenshot(d, temp_uuid, save_dir="Temp") + + target = read_image(screenshot_path) + if target is None: + time.sleep(0.5) + continue + + # 多尺度匹配 + found = None + # 缩放比例从 0.5 到 1.5,步长 0.1 + for scale in np.linspace(0.5, 1.5, 11): + # 调整模板大小 + resized_template = cv2.resize(template, (int(t_w * scale), int(t_h * scale))) + r_h, r_w = resized_template.shape[:2] + + # 如果模板比目标还大,跳过 + if r_h > target.shape[0] or r_w > target.shape[1]: + continue + + result = cv2.matchTemplate(target, resized_template, cv2.TM_CCOEFF_NORMED) + min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) + + if max_val > best_val_overall: + best_val_overall = max_val + + if max_val >= threshold: + found = (max_val, max_loc, r_w, r_h) + break # 找到满足阈值的即停止当前截图的搜索 + + # 清理临时文件 + try: + os.remove(screenshot_path) + except: + pass + + if found: + max_val, max_loc, r_w, r_h = found + # 计算中心点 + top_left = max_loc + center_x = top_left[0] + r_w // 2 + center_y = top_left[1] + r_h // 2 + + logger.info(f"Found image at ({center_x}, {center_y}) with confidence {max_val:.2f}") + d.click(center_x, center_y) + return True + + time.sleep(1.0) + + logger.info(f"Image not found after {timeout}s (Best confidence: {best_val_overall:.2f})") + return False + +def detect_black_agree_button(image_path, debug_dir=None): + """ + 通过计算机图形学检测黑色的"同意"按钮 (Image 1 场景) + 特征:黑色圆角矩形,位于屏幕中下部,面积适中 + :param image_path: 截图路径 + :return: (x, y) 坐标中心点,如果未找到返回 None + """ + if not os.path.exists(image_path): + return None + + img = read_image(image_path) + if img is None: + return None + + h, w = img.shape[:2] + + # 转换为HSV颜色空间,因为黑色更容易过滤 + hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + + # 定义黑色的范围 + # 黑色:V (Brightness) 很低 + lower_black = np.array([0, 0, 0]) + upper_black = np.array([180, 255, 40]) # V < 40 认为是黑色 + + mask = cv2.inRange(hsv, lower_black, upper_black) + + # 限制搜索区域:通常在屏幕下半部分 + roi_top = int(h * 0.4) + roi_bottom = int(h * 0.8) + roi_mask = np.zeros_like(mask) + roi_mask[roi_top:roi_bottom, :] = mask[roi_top:roi_bottom, :] + + # 形态学操作:去除噪点,连接断开的区域 + kernel = np.ones((5, 5), np.uint8) + roi_mask = cv2.morphologyEx(roi_mask, cv2.MORPH_CLOSE, kernel) + roi_mask = cv2.morphologyEx(roi_mask, cv2.MORPH_OPEN, kernel) + + # 查找轮廓 + contours, _ = cv2.findContours(roi_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + + best_cnt = None + max_area = 0 + + for cnt in contours: + area = cv2.contourArea(cnt) + x, y, cw, ch = cv2.boundingRect(cnt) + aspect_ratio = float(cw) / ch + + # 过滤条件 + # 1. 面积要够大 (例如 > 屏幕面积的 1%) + if area < (w * h * 0.01): + continue + + # 2. 宽高比:通常按钮是扁长条,例如 > 2.0 + if aspect_ratio < 2.0 or aspect_ratio > 10.0: + continue + + # 3. 宽度:通常占据屏幕宽度的 50% 以上 + if cw < (w * 0.5): + continue + + if area > max_area: + max_area = area + best_cnt = cnt + + if best_cnt is not None: + x, y, cw, ch = cv2.boundingRect(best_cnt) + center_x = x + cw // 2 + center_y = y + ch // 2 + logger.info(f"Found Black Agree Button at ({center_x}, {center_y}), Size: {cw}x{ch}") + + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = img.copy() + cv2.rectangle(debug_img, (x, y), (x+cw, y+ch), (0, 0, 255), 2) + cv2.circle(debug_img, (center_x, center_y), 5, (0, 255, 0), -1) + save_image(os.path.join(debug_dir, "debug_agree_btn.jpg"), debug_img) + + return (center_x, center_y) + + return None + +def detect_ad_close_x(image_path, template_path, debug_dir=None, threshold=0.7): + """ + 通过模板匹配检测"关闭(X)"按钮 (Image 2 场景) + 支持多尺度匹配 + :param image_path: 截图路径 + :param template_path: 模板图片路径 + :param debug_dir: 调试目录 + :param threshold: 匹配阈值 + :return: (x, y) 坐标中心点,如果未找到返回 None + """ + if not os.path.exists(image_path): + return None + + if not os.path.exists(template_path): + logger.warning(f"Template not found: {template_path}") + return None + + target = read_image(image_path) + template = read_image(template_path) + + if target is None or template is None: + return None + + # 转换为灰度图进行匹配,减少颜色干扰 + target_gray = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY) + template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) + + t_h, t_w = template_gray.shape[:2] + + best_match = None + + # 多尺度匹配: 缩放模板 + # 假设模板可能比实际大,也可能小。范围 0.5 - 1.5 + scales = np.linspace(0.5, 1.5, 20) + + for scale in scales: + # 计算缩放后的模板尺寸 + new_w = int(t_w * scale) + new_h = int(t_h * scale) + + # 确保缩放后的模板不大于目标图像 + if new_w > target_gray.shape[1] or new_h > target_gray.shape[0]: + continue + + resized_template = cv2.resize(template_gray, (new_w, new_h)) + + # 匹配 + result = cv2.matchTemplate(target_gray, resized_template, cv2.TM_CCOEFF_NORMED) + min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) + + if best_match is None or max_val > best_match[0]: + best_match = (max_val, max_loc, scale, new_w, new_h) + + if best_match is None: + return None + + max_val, max_loc, best_scale, best_w, best_h = best_match + + # 获取目标图像尺寸 + target_h, target_w = target_gray.shape[:2] + + top_left = max_loc + center_x = top_left[0] + best_w // 2 + center_y = top_left[1] + best_h // 2 + + # --- 位置启发式过滤 --- + # 计算相对位置 + rel_x = center_x / target_w + rel_y = center_y / target_h + + logger.info(f"Ad Close Button Match: Confidence={max_val:.4f}, Scale={best_scale:.2f}, Pos=({center_x}, {center_y}), Rel=({rel_x:.2f}, {rel_y:.2f})") + + is_valid_pos = True + + # 规则1: 过滤掉屏幕正中央偏上的区域 (通常是广告标题、图标或内容) + # 范围: X在 [0.3, 0.7] 且 Y在 [0.15, 0.5] + if 0.3 < rel_x < 0.7 and 0.15 < rel_y < 0.5: + logger.warning(f"Ignored match at ({center_x}, {center_y}) - likely Ad Content/Title (Center-Top area).") + is_valid_pos = False + + # 规则2: 如果置信度不是特别高 (>0.9), 强制要求在典型区域 (右上角 或 底部中间) + # 右上角: X > 0.7, Y < 0.5 + # 底部中间: Y > 0.6 + if is_valid_pos and max_val < 0.98: # 如果置信度非常高(0.98+),可能是极其标准的X,暂时放过(除非在禁区) + if not ((rel_x > 0.7 and rel_y < 0.5) or (rel_y > 0.6)): + logger.warning(f"Ignored match at ({center_x}, {center_y}) - not in typical Close Button regions (Top-Right or Bottom).") + is_valid_pos = False + + if max_val >= threshold: + if is_valid_pos: + # [Safety Check] 底部安全区排除 + # 如果检测到的关闭按钮位于屏幕底部 BOTTOM_SAFE_EXCLUDE_RATIO 区域内,认为是误判(如误触底部功能按钮) + if center_y > (target_h * (1 - BOTTOM_SAFE_EXCLUDE_RATIO)): + logger.warning(f"Ignored Ad Close Button at ({center_x}, {center_y}) - in Bottom Safety Zone ({int(BOTTOM_SAFE_EXCLUDE_RATIO*100)}%).") + # 也可以保存一下调试图 + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = target.copy() + cv2.rectangle(debug_img, top_left, (top_left[0] + best_w, top_left[1] + best_h), (0, 0, 128), 2) # Dark Red for Safety Ignored + cv2.putText(debug_img, f"SAFETY IGNORED", + (top_left[0], top_left[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 128), 1) + save_image(os.path.join(debug_dir, "debug_ad_close_safety_ignored.jpg"), debug_img) + return None + + logger.info(f"Found Ad Close Button at ({center_x}, {center_y})") + + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = target.copy() + cv2.rectangle(debug_img, top_left, (top_left[0] + best_w, top_left[1] + best_h), (0, 0, 255), 2) + cv2.circle(debug_img, (center_x, center_y), 5, (0, 255, 0), -1) + cv2.putText(debug_img, f"Conf: {max_val:.2f}, Sc: {best_scale:.2f}", + (top_left[0], top_left[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1) + save_image(os.path.join(debug_dir, "debug_ad_close_x.jpg"), debug_img) + + return (center_x, center_y) + else: + # 虽然置信度高,但是位置不对,保存为 False Positive 供调试 + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = target.copy() + cv2.rectangle(debug_img, top_left, (top_left[0] + best_w, top_left[1] + best_h), (0, 165, 255), 2) # Orange for ignored + cv2.putText(debug_img, f"IGNORED Pos", + (top_left[0], top_left[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 165, 255), 1) + save_image(os.path.join(debug_dir, "debug_ad_close_ignored.jpg"), debug_img) + + # 如果没找到,但有一定置信度,也保存一下调试图以便分析 + if max_val > 0.4 and debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = target.copy() + top_left = max_loc + cv2.rectangle(debug_img, top_left, (top_left[0] + best_w, top_left[1] + best_h), (0, 255, 255), 2) + cv2.putText(debug_img, f"Failed Conf: {max_val:.2f}", + (top_left[0], top_left[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 1) + save_image(os.path.join(debug_dir, "debug_ad_close_fail.jpg"), debug_img) + + return None + +def detect_any_ad_close(image_path, template_dir, debug_dir=None): + """ + 遍历模板目录下的所有 ad_close*.jpg 进行匹配 + """ + if not os.path.exists(template_dir): + return None + + for filename in os.listdir(template_dir): + if filename.startswith("ad_close") and filename.endswith(".jpg"): + template_path = os.path.join(template_dir, filename) + logger.info(f"Trying template: {filename}") + pos = detect_ad_close_x(image_path, template_path, debug_dir=debug_dir) + if pos: + return pos + return None + +def detect_bottom_close_circle(image_path, debug_dir=None): + """ + 通过几何特征检测底部的圆形关闭按钮 (常见于插屏广告) + 特征: + 1. 位于屏幕底部区域 (Y > 60%) + 2. 水平居中 (X 靠近 W/2) + 3. 圆形或近似圆形 + 4. 内部有高对比度边缘 (X号) + """ + if not os.path.exists(image_path): + return None + + img = read_image(image_path) + if img is None: + return None + + h, w = img.shape[:2] + + # 1. 提取感兴趣区域 (ROI): 屏幕底部 25% (缩小范围,避开列表内容区) + roi_top = int(h * 0.75) + roi_h = h - roi_top + roi = img[roi_top:h, :] + + # 转灰度 + gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) + # 高斯模糊降噪 + gray_blurred = cv2.GaussianBlur(gray, (9, 9), 2) + + # 2. 霍夫圆变换检测圆形 + # dp=1.2 (累加器分辨率), minDist=w/5 (圆心最小距离), param1=100 (Canny高阈值), param2=30 (圆心累加阈值), minR=w*0.04, maxR=w*0.1 + # 缩小最大半径范围,防止识别到过大的按钮(如扫码充电按钮) + circles = cv2.HoughCircles(gray_blurred, cv2.HOUGH_GRADIENT, dp=1.2, minDist=w/5, + param1=100, param2=30, minRadius=int(w*0.04), maxRadius=int(w*0.09)) + + if circles is not None: + circles = np.round(circles[0, :]).astype("int") + + best_circle = None + min_dist_to_center = float('inf') + + for (cx, cy, r) in circles: + # 还原到全图坐标 + global_cy = roi_top + cy + global_cx = cx + + # 过滤1: 必须在水平中心附近 (容差 15%,收紧限制) + if abs(global_cx - w//2) > (w * 0.15): + continue + + # 过滤2: 垂直方向限制 (必须在屏幕 80% - 95% 之间) + # 这样可以避开位于 60%-80% 区域的列表项卡片 + rel_y = global_cy / h + if rel_y < 0.80 or rel_y > 0.95: + continue + + dist = abs(global_cx - w//2) + if dist < min_dist_to_center: + min_dist_to_center = dist + best_circle = (global_cx, global_cy, r) + + if best_circle: + cx, cy, r = best_circle + # 确保转换为标准的 Python int,否则 uiautomator2 click 可能会报错 (JSON serializable error) + cx, cy, r = int(cx), int(cy), int(r) + + # [Safety Check] 底部安全区排除 + # 如果检测到的圆形按钮位于屏幕底部 BOTTOM_SAFE_EXCLUDE_RATIO 区域内,认为是误判(如误触底部扫码充电等) + if cy > (h * (1 - BOTTOM_SAFE_EXCLUDE_RATIO)): + logger.warning(f"Ignored Bottom Circle at ({cx}, {cy}) - in Bottom Safety Zone ({int(BOTTOM_SAFE_EXCLUDE_RATIO*100)}%).") + return None + + logger.info(f"Found Bottom Circle Button via Hough: ({cx}, {cy}), r={r}") + + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = img.copy() + cv2.circle(debug_img, (cx, cy), r, (0, 255, 0), 2) + cv2.circle(debug_img, (cx, cy), 2, (0, 0, 255), 3) + save_image(os.path.join(debug_dir, "debug_bottom_circle.jpg"), debug_img) + + return (cx, cy) + + return None + +def find_expand_button_position(image_path, debug_dir=None, debug_filename_prefix=None): + """ + 通过几何特征识别"全部时段"按钮的位置 + 特征:该行左侧(30%)和右侧(30%)基本为空白,中间有内容 + :param image_path: 截图路径 + :param debug_dir: 调试图片保存目录,如果为None则不保存 + :param debug_filename_prefix: 调试图片文件名前缀 + :return: (x, y) 坐标中心点,如果未找到返回 None + """ + if not os.path.exists(image_path): + return None + + img = read_image(image_path) + if img is None: + return None + + h, w = img.shape[:2] + + # 转灰度 + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + + # 边缘检测 + edges = cv2.Canny(gray, 50, 150) + + # 定义区域 + left_w = int(w * 0.35) + right_w = int(w * 0.65) + + # 提取各部分边缘 + left_part = edges[:, :left_w] + right_part = edges[:, right_w:] + center_part = edges[:, left_w:right_w] + + # 计算每一行的边缘点数量 + row_sum_left = np.sum(left_part, axis=1) / 255.0 + row_sum_right = np.sum(right_part, axis=1) / 255.0 + row_sum_center = np.sum(center_part, axis=1) / 255.0 + + # 筛选条件:左右边缘点很少,中间边缘点较多 + # 阈值可以根据实际情况调整 + # 允许少量噪点,所以不是严格的0,而是小于某个较小值(例如宽度的1%) + noise_threshold = 2 # 允许2个像素的噪点 + content_threshold = 5 # 中间至少有5个像素的边缘 + + candidates = (row_sum_left <= noise_threshold) & \ + (row_sum_right <= noise_threshold) & \ + (row_sum_center >= content_threshold) + + # 找到连续的候选行 + y_indices = np.where(candidates)[0] + + if len(y_indices) == 0: + return None + + # 将连续行分组 + segments = [] + if len(y_indices) > 0: + start = y_indices[0] + prev = y_indices[0] + for y in y_indices[1:]: + if y > prev + 5: # 允许5像素断裂 + segments.append((start, prev)) + start = y + prev = y + segments.append((start, prev)) + + # 筛选最合适的段 + best_segment = None + + # 我们期望按钮在屏幕中下部,且高度适中(例如 20-100px) + # 且通常是在价格表下方。假设价格表占据了屏幕上部。 + # 我们可以简单地取符合条件的段中,Y值最大的那个(最靠下的),或者最符合"中间有字"特征的。 + # 考虑到页面底部可能有其他干扰,取"中下部"的一个。 + + valid_segments = [] + for start, end in segments: + height = end - start + mid_y = (start + end) // 2 + + # 过滤掉太高或太矮的区域 + if height < 20 or height > 150: + continue + + # 过滤掉顶部的区域(可能是标题栏误判) + if mid_y < h * 0.3: + continue + + # 过滤掉底部的区域(可能是底部按钮) + if mid_y > h * 0.9: + continue + + valid_segments.append((start, end)) + + if not valid_segments: + return None + + # 如果有多个,通常"全部时段"是在价格表之后,紧接着的一个 + # 这里我们取第一个(最靠上的)符合条件的段,因为它紧跟在价格表下方 + # 或者取所有段中,中间内容最"紧凑"的? + # 让我们简单点,取第一个符合条件的段。 + best_segment = valid_segments[0] + + start, end = best_segment + center_y = (start + end) // 2 + center_x = w // 2 + + if debug_dir: + os.makedirs(debug_dir, exist_ok=True) + debug_img = img.copy() + # 画出识别区域 + cv2.rectangle(debug_img, (0, start), (w, end), (0, 255, 0), 2) + # 画出红点 + cv2.circle(debug_img, (center_x, center_y), 10, (0, 0, 255), -1) + + # 保存 flag 图片 + if debug_filename_prefix: + # Sanitize filename: remove invalid chars + import re + safe_prefix = re.sub(r'[\\/*?:"<>|]', '_', str(debug_filename_prefix)) + debug_name = f"{safe_prefix}_flag_expand.jpg" + else: + timestamp = time.strftime("%Y%m%d_%H%M%S") + debug_name = f"{timestamp}_flag_expand.jpg" + + debug_path = os.path.join(debug_dir, debug_name) + save_image(debug_path, debug_img) + logger.info(f"Saved debug image to {debug_path}") + + return (int(center_x), int(center_y)) + + +def get_row_stats(gray): + """ + 计算每一行的统计特征 + """ + h, w = gray.shape + + # 中央区域 (用于检测内容) + center_x = w // 2 + strip_w = 100 + center_strip = gray[:, center_x - 50 : center_x + 50] + + # 边缘区域 (用于检测背景/边距) + # 假设边距至少有 10px + edge_strip = gray[:, 0:20] + + row_means = np.mean(center_strip, axis=1) + row_stds = np.std(center_strip, axis=1) + edge_means = np.mean(edge_strip, axis=1) + + return row_means, row_stds, edge_means + +def crop_cards_from_image(img_path, output_dir=None, save_debug=True): + """ + 从图片中裁剪场站卡片 + :param img_path: 图片路径 + :param output_dir: 输出目录,默认与 img_path 相同 + :param save_debug: 是否保存调试图 (_flag.jpg) + :return: 裁剪出的卡片列表,每项包含 (out_path, (click_x, click_y)) + """ + logger.info(f"Processing: {img_path}") + if not os.path.exists(img_path): + logger.info(f"Error: File not found {img_path}") + return [] + + img = read_image(img_path) + if img is None: + logger.info(f"Error: Failed to load image {img_path}") + return [] + + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + h, w = gray.shape + + row_means, row_stds, edge_means = get_row_stats(gray) + + # 参数定义 + # 背景灰度值范围 (根据 Analyze2.py 的输出,背景约 242) + BG_GRAY_MIN = 230 + BG_GRAY_MAX = 250 + + # 间隙判定:中央区域也是均匀的灰度 + # 真正的背景灰度约 242。卡片内的伪背景(不够白)约 246-248。 + # 所以降低 GAP_MEAN_MAX 以区分 Gap 和 Dirty White。 + GAP_MEAN_MIN = 235 + GAP_MEAN_MAX = 244 + GAP_STD_MAX = 10.0 + + segments = [] + is_in_card = False + start_y = 0 + + # 记录原始的行状态,用于后续可能的合并优化 + row_is_card = [] + + for y in range(h): + rm = row_means[y] + rs = row_stds[y] + em = edge_means[y] + + # 1. 判定当前行是否可能是卡片的一部分 + # 条件A: 边缘是灰色的 (说明有边距,排除了全宽的Header/Footer) + has_gray_margin = (BG_GRAY_MIN <= em <= BG_GRAY_MAX) + + # 条件B: 中央不是均匀的背景灰 (说明有内容,或者是白色底) + # 如果是 Gap,则 Mean 在 Gap范围 且 Std 很小 + is_gap = (GAP_MEAN_MIN <= rm <= GAP_MEAN_MAX) and (rs < GAP_STD_MAX) + + is_card_row = has_gray_margin and not is_gap + row_is_card.append(is_card_row) + + # 简单的形态学闭运算:填补卡片内部的小裂缝 + # 如果一个 False (Gap) 的上下都是 True (Card),且 Gap 长度很短,则将其视为 Card + # 允许的裂缝最大长度 + # [优化] 减小填补阈值,避免把两个卡片中间的真 Gap 填补了导致粘连 + # 之前是 10,现在改为 3。 + MAX_GAP_FILL = 3 + + cleaned_row_is_card = row_is_card[:] + + # 查找连续的 False 区域 + i = 0 + while i < h: + if not cleaned_row_is_card[i]: + # Found a gap start + gap_start = i + while i < h and not cleaned_row_is_card[i]: + i += 1 + gap_end = i + gap_len = gap_end - gap_start + + # Check context + prev_is_card = (gap_start > 0) and cleaned_row_is_card[gap_start - 1] + next_is_card = (gap_end < h) and cleaned_row_is_card[gap_end] + + if prev_is_card and next_is_card and gap_len <= MAX_GAP_FILL: + # Fill the gap + for k in range(gap_start, gap_end): + cleaned_row_is_card[k] = True + else: + i += 1 + + # 根据 cleaned_row_is_card 生成 segments + is_in_card = False + start_y = 0 + for y in range(h): + if cleaned_row_is_card[y]: + if not is_in_card: + is_in_card = True + start_y = y + else: + if is_in_card: + is_in_card = False + end_y = y + height = end_y - start_y + + # 过滤太矮的区域 + if height > 100: # 稍微放宽一点,150 -> 100 + segments.append((start_y, end_y)) + + # 处理最后一个 segment + if is_in_card: + end_y = h + height = end_y - start_y + if height > 100: + segments.append((start_y, end_y)) + + # [新增] 触底过滤:过滤掉延伸到图片底部的 Segment + # 底部通常是导航栏或被截断的卡片 + BOTTOM_MARGIN = 50 # 距离底部多少像素内算触底 + valid_segments_scan = [] + for y1, y2 in segments: + if y2 >= h - BOTTOM_MARGIN: + logger.info(f" Dropping segment Y={y1}-{y2} because it touches the bottom (H={h}).") + continue + valid_segments_scan.append((y1, y2)) + segments = valid_segments_scan + + logger.info(f" Found {len(segments)} potential segments based on vertical scan.") + + # 1.5 Group Segments by Large Gaps (to separate Header / List / Footer) + # The filter bar usually creates a large gap (e.g. > 60px). + SECTION_GAP_MIN = 60 + groups = [] + if segments: + current_group = [segments[0]] + for i in range(1, len(segments)): + prev_end = segments[i-1][1] + curr_start = segments[i][0] + gap = curr_start - prev_end + + if gap > SECTION_GAP_MIN: + groups.append(current_group) + current_group = [] + + current_group.append(segments[i]) + groups.append(current_group) + + logger.info(f" Found {len(groups)} segment groups.") + + # Select the Target Group + # Strategy: Select the LAST group that has at least one 'substantial' segment (H > 150). + # This assumes the Station List is the main content and usually at the bottom (scrolling area). + target_group = [] + for g in reversed(groups): + # Check if group has substantial content + has_content = False + for (y1, y2) in g: + if (y2 - y1) > 150: + has_content = True + break + + if has_content: + target_group = g + break + + if not target_group and segments: + # Fallback to all segments if no substantial group found + target_group = segments + + logger.info(f" Selected group with {len(target_group)} segments.") + + # 2. 确定每个卡片的左右边界 (Width Refinement) + # 收集所有 segment 的建议边界,然后统一 + + candidate_x1 = [] + candidate_x2 = [] + + temp_valid_segments = [] + + for y1, y2 in target_group: + # 取中间一段行来分析 + mid_y = (y1 + y2) // 2 + sample_h = min(10, y2 - y1) + sample_rows = gray[mid_y - sample_h//2 : mid_y + sample_h//2, :] + col_means = np.mean(sample_rows, axis=0) + + # 从左向右找第一个非灰像素 + x1 = 0 + for x in range(w // 2): + if not (BG_GRAY_MIN <= col_means[x] <= BG_GRAY_MAX): + x1 = x + break + + # 从右向左找第一个非灰像素 + x2 = w + for x in range(w - 1, w // 2, -1): + if not (BG_GRAY_MIN <= col_means[x] <= BG_GRAY_MAX): + x2 = x + break + + if x1 >= x2 or (x2 - x1) < w * 0.5: + # 如果这个 segment 无法确定宽度,可能不是有效卡片,暂不参与宽度投票 + # 但为了不漏掉,暂时先记录,用默认值填充 + logger.warning(f" Warning: Segment {y1}-{y2} has weird width {x2-x1}.") + pass + else: + candidate_x1.append(x1) + candidate_x2.append(x2) + + temp_valid_segments.append((y1, y2)) + + # 计算统一宽度 + if not candidate_x1: + logger.info(" No valid width detected. Using default.") + final_x1 = 0 + final_x2 = w + else: + # 使用中位数或众数来消除噪声 + # 考虑到对齐,Min x1 和 Max x2 可能更合适?或者 Median。 + # 通常卡片是对齐的,所以 x1 应该几乎一样。 + final_x1 = int(np.median(candidate_x1)) + final_x2 = int(np.median(candidate_x2)) + + # 稍微加点 Padding (但不要超过图片边界) + final_x1 = max(0, final_x1 - 5) + final_x2 = min(w, final_x2 + 5) + + logger.info(f" Unified Width: X={final_x1}-{final_x2}, W={final_x2 - final_x1}") + + # 3. 过滤高度异常的卡片 (Height Filtering) + # 计算所有潜在卡片的高度 + final_cards = [] + if not temp_valid_segments: + logger.info(" No segments found.") + else: + heights = [y2 - y1 for y1, y2 in temp_valid_segments] + if not heights: + logger.info(" No heights to calculate.") + else: + max_h = max(heights) + median_h = np.median(heights) + + # 策略:如果高度差异较大,丢弃过小的卡片 + # 阈值设定为 Median 的 75% (允许一定程度的偏差,如 220 vs 258 是允许的,但 150 vs 250 应被过滤) + # 使用 Median 比 Max 更稳健,避免被单个超高卡片(如广告)带偏 + threshold_h = median_h * 0.70 + + for (y1, y2), h in zip(temp_valid_segments, heights): + if h < threshold_h: + logger.info(f" Filtering out segment Y={y1}-{y2} (H={h}) because it's too short (Threshold={threshold_h:.1f}).") + else: + final_cards.append((y1, y2, final_x1, final_x2)) + logger.info(f" Card: Y={y1}-{y2}, X={final_x1}-{final_x2}, H={h}") + + # 4. 保存结果 + if output_dir is None: + output_dir = os.path.dirname(img_path) + + base_name = os.path.basename(img_path) + stem, ext = os.path.splitext(base_name) + + # 准备可视化标记图 + debug_img = img.copy() + + results = [] + + # 准备 JSON 数据结构 + json_data = { + "image": base_name, + "width": w, + "height": h, + "cards": [] + } + + # 准备 _vl.jpg (只画框,不画红点) + vl_img = img.copy() + + logger.info(f" Step [2.1/VL] 准备在 VL 图片上绘制 {len(final_cards)} 个场站的绿色方框...") + + for idx, (y1, y2, x1, x2) in enumerate(final_cards): + # 计算点击点 (左上角,避免被底部按钮遮挡) + # 策略:X偏移 15%, Y偏移 20% + w_card = x2 - x1 + h_card = y2 - y1 + click_x = int(x1 + w_card * 0.15) + click_y = int(y1 + h_card * 0.20) + + # [修改] 不再保存单张子图,只记录元数据 + # card = img[y1:y2, x1:x2] + # 文件名添加坐标: _ClickX_ClickY + # out_name = f"{stem}_{idx + 1}_{click_x}_{click_y}{ext}" + # out_path = os.path.join(output_dir, out_name) + # cv2.imwrite(out_path, card) + # logger.info(f" Saved {out_path}") + + # results.append((out_path, (click_x, click_y))) + + # 在标记图上画红点 (实心圆, 半径10, 红色BGR) + cv2.circle(debug_img, (click_x, click_y), 10, (0, 0, 255), -1) + # [修改] 必须画绿框,因为后续视觉模型依赖这个框来识别范围 + cv2.rectangle(debug_img, (x1, y1), (x2, y2), (0, 255, 0), 2) + + # 在 _vl 图上只画绿框 + cv2.rectangle(vl_img, (x1, y1), (x2, y2), (0, 255, 0), 2) + + # 收集 JSON 数据 + card_info = { + "id": idx + 1, + "rect": [x1, y1, x2, y2], + "click_point": [click_x, click_y] + } + json_data["cards"].append(card_info) + + # 记录区域信息供调用者使用 (如果需要) + # 格式: (None, (click_x, click_y), (x1, y1, x2, y2)) + results.append((None, (click_x, click_y), (x1, y1, x2, y2))) + + # [删除] 之前生成的单张 _for_vl.jpg 逻辑已移除 + + # 保存标记图 (_flag.jpg) + if save_debug: + flag_out_path = os.path.join(output_dir, f"{stem}_flag{ext}") + save_image(flag_out_path, debug_img) + logger.info(f" Saved Debug Image: {flag_out_path}") + + # 保存 _vl.jpg + vl_out_path = os.path.join(output_dir, f"{stem}_vl{ext}") + save_image(vl_out_path, vl_img) + logger.info(f" Step [2.2/VL] 已保存带有绿色方框的图片: {vl_out_path}") + + # 保存 .json + import json + json_out_path = os.path.join(output_dir, f"{stem}.json") + with open(json_out_path, 'w', encoding='utf-8') as f: + json.dump(json_data, f, ensure_ascii=False, indent=4) + logger.info(f" Step [2.3/JSON] 已保存场站坐标元数据: {json_out_path}") + + return results diff --git a/Util/LlmUtil.py b/Util/LlmUtil.py new file mode 100644 index 0000000..2d2f6df --- /dev/null +++ b/Util/LlmUtil.py @@ -0,0 +1,77 @@ +import sys + +from openai import AsyncOpenAI + +from Config import * +from Config.Config import ALY_LLM_API_KEY, ALY_LLM_BASE_URL, ALY_LLM_MODEL_NAME + + +# 保留原同步函数,添加异步版本 +async def get_llm_response(query_text: str, stream: bool = True, system_prompt: str = 'You are a helpful assistant.', chat_history: list = None, temperature: float = None): + """ + 异步获取大模型的响应 + @param query_text: 查询文本 + @param stream: 是否使用流式输出 + @param system_prompt: 系统提示文本,默认为'You are a helpful assistant.' + @param chat_history: 聊天历史记录,格式为[{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}, ...] + @param temperature: 温度参数,控制输出的随机性,0-2之间,默认为None使用模型默认值 + @return: 流式响应生成器或完整响应文本 + """ + client = AsyncOpenAI( + api_key=ALY_LLM_API_KEY, + base_url=ALY_LLM_BASE_URL, + ) + + try: + # 构建messages列表,包含系统提示和聊天历史 + messages = [{'role': 'system', 'content': system_prompt}] + + # 如果有聊天历史,添加到messages中 + if chat_history and isinstance(chat_history, list): + messages.extend(chat_history) + + # 添加当前用户查询 + messages.append({'role': 'user', 'content': query_text}) + + # 构建请求参数 + request_params = { + 'model': ALY_LLM_MODEL_NAME, + 'messages': messages, + 'stream': stream + } + + # 如果指定了temperature参数,添加到请求中 + if temperature is not None: + request_params['temperature'] = temperature + + # 创建请求 + completion = await client.chat.completions.create(**request_params) + + if stream: + # 流式输出模式,返回生成器 + async for chunk in completion: + # 确保 chunk.choices 存在且不为空 + if chunk and chunk.choices and len(chunk.choices) > 0: + # 确保 delta 存在 + delta = chunk.choices[0].delta + if delta: + # 确保 content 存在且不为 None 或空字符串 + content = delta.content + if content is not None: + # if content is not None and content.strip(): + print(content, end='', flush=True) + yield content + else: + # 非流式处理 + if completion and completion.choices and len(completion.choices) > 0: + message = completion.choices[0].message + if message: + content = message.content + if content is not None: + # if content is not None and content.strip(): + yield content + except Exception as e: + error_msg = f"大模型请求异常: {str(e)}" + print(error_msg, file=sys.stderr) + # 抛出异常而不是返回错误信息,让调用方处理 + raise Exception(error_msg) \ No newline at end of file diff --git a/Util/ObsUtil.py b/Util/ObsUtil.py new file mode 100644 index 0000000..aa8f300 --- /dev/null +++ b/Util/ObsUtil.py @@ -0,0 +1,158 @@ +# pip install esdk-obs-python --trusted-host pypi.org +import traceback +import logging +import base64 # 添加base64模块导入 +from obs import ObsClient +from obs import PutObjectHeader + +from Config.Config import OBS_AK, OBS_SK, OBS_SERVER, OBS_BUCKET + +# 配置日志 +logger = logging.getLogger(__name__) + + +class ObsUploader: + def __init__(self, access_key_id=OBS_AK, secret_access_key=OBS_SK, server="https://" + OBS_SERVER): + """ + 初始化OBS客户端 + :param access_key_id: 访问密钥ID + :param secret_access_key: 秘密访问密钥 + :param server: OBS服务器地址 + """ + self.obs_client = ObsClient( + access_key_id=access_key_id, + secret_access_key=secret_access_key, + server=server + ) + + def upload_file(self, object_key, file_path, bucket_name=OBS_BUCKET, metadata=None, headers=None): + """ + 上传文件到OBS + :param bucket_name: 桶名称 + :param object_key: 对象键(上传后的文件名) + :param file_path: 本地文件路径 + :param metadata: 元数据 + :param headers: 请求头 + :return: 成功返回True和响应信息,失败返回False和错误信息 + """ + try: + # 初始化默认参数 + if metadata is None: + metadata = {} + if headers is None: + headers = PutObjectHeader() + # headers.ContentDisposition = 'attachment;' # filename="{}"'.format(os.path.basename(file_path)) + # headers.ContentType='application/octet-stream' + + # 执行文件上传 + resp = self.obs_client.putFile( + bucket_name, + object_key, + file_path, + metadata, + headers + ) + + # 检查响应状态 + if resp.status < 300: + logger.info(f'文件上传成功: {file_path} -> {bucket_name}/{object_key}') + logger.info(f'requestId: {resp.requestId}') + logger.info(f'etag: {resp.body.etag}') + return True, { + 'requestId': resp.requestId, + 'etag': resp.body.etag, + 'versionId': resp.body.versionId, + 'storageClass': resp.body.storageClass + } + else: + error_msg = f'文件上传失败: {resp.errorCode} - {resp.errorMessage}' + logger.error(error_msg) + logger.error(f'requestId: {resp.requestId}') + return False, { + 'requestId': resp.requestId, + 'errorCode': resp.errorCode, + 'errorMessage': resp.errorMessage + } + except Exception as e: + error_msg = f'文件上传异常: {str(e)}' + logger.error(error_msg) + logger.error(traceback.format_exc()) + return False, {'error': str(e), 'traceback': traceback.format_exc()} + + def upload_base64_image(self, object_key, base64_data, bucket_name=OBS_BUCKET, metadata=None, headers=None): + """ + 上传Base64编码的图片或原始二进制图片数据到OBS + :param bucket_name: 桶名称 + :param object_key: 对象键(上传后的文件名) + :param base64_data: Base64编码的图片字符串、字节形式或原始二进制图片数据 + :param metadata: 元数据 + :param headers: 请求头 + :return: 成功返回True和响应信息,失败返回False和错误信息 + """ + try: + # 初始化默认参数 + if metadata is None: + metadata = {} + if headers is None: + headers = PutObjectHeader() + # headers.ContentDisposition = 'attachment;' # filename="{}"'.format(os.path.basename(file_path)) + # headers.ContentType = 'application/octet-stream' + + # 处理数据 + if isinstance(base64_data, bytes): + try: + # 尝试解码为UTF-8字符串(假设是Base64编码的字符串的字节形式) + base64_string = base64_data.decode('utf-8') + # 移除Base64前缀(如果有) + if 'base64,' in base64_string: + base64_string = base64_string.split('base64,')[1] + # 解码Base64数据 + image_data = base64.b64decode(base64_string) + except UnicodeDecodeError: + # 解码失败,假设是原始二进制图片数据 + image_data = base64_data + else: + # 假设是字符串 + base64_string = str(base64_data) + # 移除Base64前缀(如果有) + if 'base64,' in base64_string: + base64_string = base64_string.split('base64,')[1] + # 解码Base64数据 + image_data = base64.b64decode(base64_string) + + # 执行对象上传 + resp = self.obs_client.putObject( + bucket_name, + object_key, + content=image_data, + metadata=metadata, + headers=headers + ) + + # 检查响应状态 + if resp.status < 300: + logger.info(f'图片上传成功: -> {bucket_name}/{object_key}') + logger.info(f'requestId: {resp.requestId}') + logger.info(f'etag: {resp.body.etag}') + return True, { + 'requestId': resp.requestId, + 'etag': resp.body.etag, + 'versionId': resp.body.versionId, + 'storageClass': resp.body.storageClass + } + else: + error_msg = f'图片上传失败: {resp.errorCode} - {resp.errorMessage}' + logger.error(error_msg) + logger.error(f'requestId: {resp.requestId}') + return False, { + 'requestId': resp.requestId, + 'errorCode': resp.errorCode, + 'errorMessage': resp.errorMessage + } + except Exception as e: + error_msg = f'图片上传异常: {str(e)}' + logger.error(error_msg) + logger.error(traceback.format_exc()) + return False, {'error': str(e), 'traceback': traceback.format_exc()} + + diff --git a/Util/OcrParser.py b/Util/OcrParser.py new file mode 100644 index 0000000..622d172 --- /dev/null +++ b/Util/OcrParser.py @@ -0,0 +1,126 @@ +# coding=utf-8 +import re + +class OcrParser: + @staticmethod + def parse(ocr_lines): + """ + 解析 OCR 文本行,提取场站结构化数据。 + 不依赖 LLM,使用规则和正则匹配。 + """ + result = { + "station_name": "", + "distance": "", + "price": None, + "piles": [], + "parking": "", + "tags": [] + } + + # 预处理:清洗无关字符 + clean_lines = [] + for line in ocr_lines: + # 去除 "行 X: " 前缀 + text = re.sub(r"^行\s*\d+:\s*", "", line) + # 去除 "(置信度: ...)" 后缀 + text = re.sub(r"\s*\(置信度:.*?\)\s*$", "", text) + text = text.strip() + if text: + clean_lines.append(text) + + # 1. 场站名称 (Station Name) + # 策略:通常是第一行,且不包含特定关键词(如km, /度, ¥等) + for line in clean_lines: + if len(line) < 2: continue + if line.startswith("(") or line.startswith("(") or line == "…": continue + + # 排除明显属性行 + if any(k in line.lower() for k in ["km", "/度", "¥", "停车", "积分", "组团"]): + continue + + # 排除纯数字 + if re.match(r"^\d+$", line): continue + + # 排除可能是充电枪信息的行 (例如 "闲2/4", "快", "慢") + if re.search(r"\d+/\d+", line): continue + if line in ["快", "慢", "超", "快充", "慢充", "超充"]: continue + + result["station_name"] = line + break + + # 2. 距离 (Distance) + for line in clean_lines: + # 匹配 "7.4km", "17.4km" + m = re.search(r"(\d+(\.\d+)?)\s*km", line, re.IGNORECASE) + if m: + result["distance"] = m.group(0) + break + + # 3. 价格 (Price) + for line in clean_lines: + # 匹配 "0.7111/度", "1.2/度" + m = re.search(r"(\d+\.\d+)(?=/度)", line) + if m: + try: + result["price"] = float(m.group(1)) + break + except: pass + + # 4. 充电枪信息 (Piles) + # 规则:查找 "快", "慢", "超" 以及 "x/y" 格式 + # 示例: "快", "闲3/4" (跨行) 或 "快充 3/4" (同行) + current_type = "未知" + + # 辅助:先尝试在单行内同时匹配类型和数量 + # 如果单行内有 "快" 和 "3/4",则直接提取 + # 如果单行只有类型,更新 current_type + # 如果单行只有 "3/4",使用 current_type + + for line in clean_lines: + # 更新当前类型上下文 + if "快" in line: current_type = "快" + elif "慢" in line: current_type = "慢" + elif "超" in line: current_type = "超" + + # 匹配 "3/4" 或 "闲3/4" + # 排除价格行 (包含小数点,如 0.7111/度 这里的 / 前后也可能是数字,需小心) + if "/度" in line: continue + + # 匹配分数结构:整数/整数 + # (?:闲)? 可选的前缀 "闲" + m = re.search(r"(?:闲)?(\d+)/(\d+)", line) + if m: + # 再次确认不是价格(有时候 OCR 会把 . 漏掉,变成 07111/度,但通常会有 /度) + # 简单校验:总数通常不会特别大,比如不会是 2024/12 (日期) + try: + free = int(m.group(1)) + total = int(m.group(2)) + + # 过滤可能的日期或异常值 + if total > 500: continue + + result["piles"].append({ + "type": current_type, + "free": free, + "total": total + }) + except: pass + + # 5. 停车信息 (Parking) + for line in clean_lines: + if "停车" in line: + # 清理前缀符号,如 "·收费停车" -> "收费停车" + clean_text = re.sub(r"^[·\.\sP]+", "", line) + result["parking"] = clean_text + break + + # 6. 标签 (Tags) + # 收集除上述已解析字段外的简短关键词 + known_keywords = ["快", "慢", "超", "P", "组团", "积分"] + for line in clean_lines: + # 简单匹配一些常见 Tag + if "积分" in line: result["tags"].append(line) + elif "组团" in line: result["tags"].append("组团") + elif line.strip() == "P": result["tags"].append("P") + + return result diff --git a/Util/PaChongGaoDeKit.py b/Util/PaChongGaoDeKit.py new file mode 100644 index 0000000..bc49544 --- /dev/null +++ b/Util/PaChongGaoDeKit.py @@ -0,0 +1,267 @@ +""" +高德地图高精度坐标获取工具类 +""" +import json +import os +import random +import re +import time +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.chrome.service import Service +from selenium.webdriver.common.by import By +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait + +class PaChongGaoDeKit: + def __init__(self, headless=True, cookie_file='amap_cookies.json'): + self.headless = headless + self.cookie_file = cookie_file + self.driver = None + + # Ensure cookie file path is absolute if relative + if not os.path.isabs(self.cookie_file): + # Assuming relative to this file or current working directory + # For now, let's assume it's relative to the project root or current execution path + # Better to use absolute path if possible. + # If the file is in the same directory as this script: + current_dir = os.path.dirname(os.path.abspath(__file__)) + potential_path = os.path.join(current_dir, self.cookie_file) + if os.path.exists(potential_path): + self.cookie_file = potential_path + else: + # Fallback to checking root/Config or similar if needed, or just leave as is + pass + + def _init_driver(self): + if self.driver: + return + + print(f"正在启动 Chrome 浏览器 (无头模式={self.headless})...") + chrome_options = Options() + if self.headless: + chrome_options.add_argument('--headless') + + # 解决驱动与浏览器不匹配的常见配置 + chrome_options.add_argument('--no-sandbox') + chrome_options.add_argument('--disable-dev-shm-usage') + chrome_options.add_argument('--window-size=1920,1080') + chrome_options.add_argument('--lang=zh-CN') + chrome_options.add_argument("--disable-blink-features=AutomationControlled") + chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) + chrome_options.add_experimental_option('useAutomationExtension', False) + + service = Service() + try: + from webdriver_manager.chrome import ChromeDriverManager + from webdriver_manager.core.os_manager import ChromeType + # 使用 ChromeDriverManager 自动下载匹配版本的 ChromeDriver + driver_path = ChromeDriverManager().install() + service = Service(driver_path) + print(f"已成功加载 ChromeDriver: {driver_path}") + except ImportError: + print("提示:未安装 webdriver_manager 库,建议安装以获得更好的驱动管理体验:pip install webdriver-manager") + except Exception as e: + print(f"提示:自动管理驱动失败,尝试使用系统默认驱动。错误原因: {e}") + + try: + self.driver = webdriver.Chrome(service=service, options=chrome_options) + + if not self.headless: + self.driver.maximize_window() + + self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { + "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" + }) + except Exception as e: + print(f"致命错误:无法启动 Chrome 浏览器。请确保已安装 Chrome 且版本与驱动匹配。详情: {e}") + raise e + + def _load_cookies(self): + if not self.driver: + return False + + if not os.path.exists(self.cookie_file): + print(f"Cookie file not found: {self.cookie_file}") + return False + + try: + # Visit domain first + self.driver.get('https://www.amap.com') + time.sleep(1) + + with open(self.cookie_file, 'r', encoding='utf-8') as f: + cookies = json.load(f) + + for cookie in cookies: + if 'expiry' in cookie: + cookie['expiry'] = int(cookie['expiry']) + if 'sameSite' in cookie and cookie['sameSite'] not in ['Strict', 'Lax', 'None']: + del cookie['sameSite'] + try: + self.driver.add_cookie(cookie) + except: + pass + return True + except Exception as e: + print(f"Failed to load cookies: {e}") + return False + + def ensure_logged_in(self): + self._init_driver() + if not self._load_cookies(): + print("Warning: Failed to load cookies, coordinate query might fail.") + + # Navigate to picker tool + self.driver.get('https://lbs.amap.com/tools/picker') + time.sleep(2) + + def parse_coordinates_info(self, text): + if not text: + return None + try: + clean_text = re.sub(r'[\u3000\t\n\r ]+', ',', text) + clean_text = re.sub(r'[,,]+', ',', clean_text).strip(',') + pattern = r'([7-9]?[0-9]\.[0-9]{1,}|1[0-3][0-9]\.[0-9]{1,})[,,]\s*([1-8]?[0-9]\.[0-9]{1,}|90\.[0-9]{1,})' + matches = re.finditer(pattern, clean_text) + + valid_coordinates = [] + for match in matches: + lng = match.group(1).strip() + lat = match.group(2).strip() + try: + lng_float = float(lng) + lat_float = float(lat) + if 70 <= lng_float <= 140 and 0 <= lat_float <= 60: + valid_coordinates.append((lng_float, lat_float)) + except ValueError: + continue + + if valid_coordinates: + # Return the first valid one + return valid_coordinates[0] + return None + except Exception: + return None + + def get_coordinate(self, address: str): + """ + Query coordinate for a single address. + Returns: (lng, lat) tuple or (None, None) + """ + if not address: + return None, None + + if not self.driver: + self.ensure_logged_in() + + try: + # Search input + search_input = WebDriverWait(self.driver, 10).until( + EC.presence_of_element_located((By.ID, 'txtSearch')) + ) + search_input.clear() + search_input.send_keys(address) + + # Click search + try: + search_button = WebDriverWait(self.driver, 5).until( + EC.presence_of_element_located((By.CLASS_NAME, 'btn-search')) + ) + search_button.click() + except: + search_input.send_keys(Keys.ENTER) + + time.sleep(2) # Wait for result + + # Get coordinate + coordinate_text = None + try: + coord_elem = WebDriverWait(self.driver, 10).until( + EC.presence_of_element_located((By.ID, 'txtCoordinate')) + ) + val = coord_elem.get_attribute('value') + if val and val.strip(): + coordinate_text = val.strip() + else: + coordinate_text = coord_elem.text.strip() + except: + pass + + if coordinate_text: + result = self.parse_coordinates_info(coordinate_text) + if result: + return result + + return None, None + + except Exception as e: + print(f"Error querying address '{address}': {e}") + # Try to recover session if needed, or just return None + return None, None + + def close(self): + if self.driver: + try: + self.driver.quit() + except: + pass + self.driver = None + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + + def login_and_save_cookies(self): + """ + 打开浏览器进行手动登录,并将 Cookie 保存到文件。 + 该方法将阻塞,直到用户确认登录完成。 + """ + # 强制切换为非无头模式以便手动登录 + if self.headless: + print("切换至可视化模式进行登录...") + self.close() + self.headless = False + + self._init_driver() + + print("正在跳转至高德地图登录页面...") + # 跳转至通常需要登录的页面 + self.driver.get('https://lbs.amap.com/tools/picker') + + print("\n" + "="*60) + print("操作指引:") + print("1. 浏览器窗口已打开,请在窗口中手动完成登录。") + print("2. 您可以选择扫码登录或账号密码登录。") + print("3. 登录成功并跳转到控制台页面后,请回到此窗口。") + print("4. 在下方按 [回车键(Enter)],程序将自动抓取并保存 Cookie。") + print("="*60 + "\n") + + input("等待登录完成,确认后请按 [Enter] 继续...") + + # 保存 Cookie + try: + cookies = self.driver.get_cookies() + with open(self.cookie_file, 'w', encoding='utf-8') as f: + json.dump(cookies, f, indent=4) + print(f"成功:Cookie 已保存至: {self.cookie_file}") + return True + except Exception as e: + print(f"错误:保存 Cookie 失败: {e}") + return False + +if __name__ == "__main__": + # Test code + # Ensure you have 'amap_cookies.json' in the same directory or provide full path + # If no cookies, it might fail to load the picker page correctly if login is required. + + kit = PaChongGaoDeKit(headless=False) + try: + addr = "北京市天安门" + lng, lat = kit.get_coordinate(addr) + print(f"{addr}: {lng}, {lat}") + finally: + kit.close() diff --git a/Util/PaddleOCRKit.py b/Util/PaddleOCRKit.py new file mode 100644 index 0000000..9d4b24e --- /dev/null +++ b/Util/PaddleOCRKit.py @@ -0,0 +1,113 @@ +# coding=utf-8 +import os +import sys +import logging +import cv2 +import numpy as np +from paddleocr import PaddleOCR +from Util.OcrParser import OcrParser + +# Initialize logger +logger = logging.getLogger("PaddleOCRKit") + +class PaddleOCRKit: + _instance = None + _ocr = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super(PaddleOCRKit, cls).__new__(cls) + cls._instance._initialize_model() + return cls._instance + + def _initialize_model(self): + """ + Initialize the PaddleOCR model once. + Using PP-OCRv4 mobile model for speed. + """ + try: + logger.info("Initializing PaddleOCR (PP-OCRv4 Mobile)...") + # use_angle_cls is deprecated, using use_textline_orientation instead + # ocr_version='PP-OCRv4' defaults to mobile model + self._ocr = PaddleOCR( + use_textline_orientation=True, + lang="ch", + ocr_version='PP-OCRv4' + ) + logger.info("PaddleOCR initialized successfully.") + except Exception as e: + logger.error(f"Failed to initialize PaddleOCR: {e}") + self._ocr = None + + def recognize(self, image_input): + """ + Recognize text from an image and parse it into structured data. + + :param image_input: Image path (str) or OpenCV image object (numpy.ndarray) + :return: Parsed structured data (dict) or None if failed + """ + if self._ocr is None: + logger.error("PaddleOCR model is not initialized.") + return None + + try: + # PaddleOCR handles both path and ndarray + # predict() is recommended over ocr() in newer versions, but ocr() is the stable high-level API + # We use ocr() as in the test script which worked well. + # cls=True was causing issues in test, but use_textline_orientation=True in init handles it? + # actually in test script: ocr = PaddleOCR(use_textline_orientation=True, ...) + # result = ocr.ocr(image_path) -> this worked, but gave a warning about predict. + # Let's stick to ocr() for now as it returns the structure we expect. + + result = self._ocr.ocr(image_input) + + ocr_text_lines = [] + + # Handle result structure + if not result: + logger.warning("OCR returned empty result.") + else: + res = result[0] + if res is None: + logger.warning("OCR result[0] is None.") + elif isinstance(res, dict) and 'rec_texts' in res: + # New PaddleOCR / Paddlex format + ocr_text_lines = res['rec_texts'] + elif isinstance(res, list): + # Legacy PaddleOCR format + for line in res: + # line structure: [[points], (text, confidence)] + if len(line) >= 2 and isinstance(line[1], (tuple, list)): + ocr_text_lines.append(line[1][0]) + + # --- 关键:打印原始识别内容 --- + if ocr_text_lines: + logger.info(f"🔍 OCR 原始识别文字 ({len(ocr_text_lines)} 行):") + for i, line in enumerate(ocr_text_lines): + logger.info(f" [{i+1}] {line}") + else: + logger.info("No text detected.") + return {} + + # Parse with Regex Parser + parsed_data = OcrParser.parse(ocr_text_lines) + + # --- 关键:打印解析后的结构化数据 --- + if parsed_data: + logger.info("📦 OCR 解析结果 (JSON):") + logger.info(f" {parsed_data}") + + return parsed_data + + except Exception as e: + logger.error(f"Error during OCR recognition: {e}") + return None + +# Global instance for easy access +_kit_instance = None + +def get_ocr_kit(): + global _kit_instance + if _kit_instance is None: + _kit_instance = PaddleOCRKit() + return _kit_instance diff --git a/Util/RedisKit.py b/Util/RedisKit.py new file mode 100644 index 0000000..4c59505 --- /dev/null +++ b/Util/RedisKit.py @@ -0,0 +1,843 @@ +import asyncio +import logging +import uuid +import json + +import redis +from Config.Config import ( + REDIS_HOST, REDIS_PORT, REDIS_DB, REDIS_PASSWORD, + REDIS_DECODE_RESPONSES, REDIS_MAX_CONNECTIONS +) +# 创建logger实例 +logger = logging.getLogger(__name__) + +class RedisKit: + """ + 异步Redis工具类,提供所有Redis操作的异步实现 + 单例模式确保全局只有一个Redis连接池 + """ + _instance = None + _lock = asyncio.Lock() + _redis_pool = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + @classmethod + async def _ensure_pool(cls): + """ + 确保Redis连接池已创建 + """ + if cls._redis_pool is None: + async with cls._lock: + if cls._redis_pool is None: + try: + # 创建同步Redis连接池 + sync_pool = redis.ConnectionPool( + host=REDIS_HOST, + port=REDIS_PORT, + db=REDIS_DB, + password=REDIS_PASSWORD, + decode_responses=REDIS_DECODE_RESPONSES, + max_connections=REDIS_MAX_CONNECTIONS + ) + # 创建Redis连接实例 + cls._redis_pool = redis.Redis( + connection_pool=sync_pool, + encoding='utf-8', + decode_responses=REDIS_DECODE_RESPONSES + ) + # 测试连接 + await asyncio.to_thread(cls._redis_pool.ping) + logger.info("Redis连接池创建成功") + except Exception as e: + logger.error(f"Redis连接池创建失败: {e}") + raise + + @classmethod + async def get_connection(cls): + """ + 获取Redis连接实例 + + Returns: + redis.Redis: Redis连接实例 + """ + await cls._ensure_pool() + return cls._redis_pool + + async def get_data(self, key): + """ + 异步从Redis中获取数据 + + Args: + key (str): Redis键名 + + Returns: + any: Redis中存储的值,如果键不存在则返回None + """ + try: + await self._ensure_pool() + return await asyncio.to_thread(RedisKit._redis_pool.get, key) + except Exception as e: + logger.error(f"从Redis获取数据失败(key={key}): {e}") + return None + + async def exists(self, key): + """ + 异步检查Redis键是否存在 + + Args: + key (str): Redis键名 + + Returns: + bool: 键存在返回True,不存在或失败返回False + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.exists, key) + return bool(result) + except Exception as e: + logger.error(f"检查Redis键是否存在失败(key={key}): {e}") + return False + + async def set_data(self, key, value, expire=None): + """ + 异步向Redis中写入数据 + + Args: + key (str): Redis键名 + value (str): 要存储的值 + expire (int, optional): 过期时间(秒),默认不过期 + + Returns: + bool: 写入成功返回True,失败返回False + """ + try: + await self._ensure_pool() + if expire: + result = await asyncio.to_thread(RedisKit._redis_pool.setex, key, expire, value) + else: + result = await asyncio.to_thread(RedisKit._redis_pool.set, key, value) + return result + except Exception as e: + logger.error(f"向Redis写入数据失败(key={key}): {e}") + return False + + async def delete_data(self, key): + """ + 异步从Redis中删除数据 + + Args: + key (str): Redis键名 + + Returns: + bool: 删除成功返回True,失败返回False + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.delete, key) + return result > 0 # delete返回删除的键数量,大于0表示删除成功 + except Exception as e: + logger.error(f"从Redis删除数据失败(key={key}): {e}") + return False + + async def keys(self, pattern='*'): + """ + 异步获取匹配模式的所有键 + + Args: + pattern (str): 匹配模式 + + Returns: + list: 匹配的键列表 + """ + try: + await self._ensure_pool() + return await asyncio.to_thread(RedisKit._redis_pool.keys, pattern) + except Exception as e: + logger.error(f"获取Redis键列表失败(pattern={pattern}): {e}") + return [] + + async def delete(self, *names): + """ + 异步删除一个或多个键 + + Args: + *names: 要删除的键名 + + Returns: + int: 删除的键数量 + """ + try: + await self._ensure_pool() + if not names: + return 0 + return await asyncio.to_thread(RedisKit._redis_pool.delete, *names) + except Exception as e: + logger.error(f"删除Redis键失败: {e}") + return 0 + + async def publish(self, channel, message): + """ + 异步发布消息到Redis频道 + + Args: + channel (str): Redis频道名称 + message (str): 要发布的消息 + + Returns: + int: 接收消息的订阅者数量 + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.publish, channel, message) + return result + except Exception as e: + logger.error(f"Redis发布消息失败(channel={channel}): {e}") + return 0 + + async def subscribe(self, channel): + """ + 异步订阅Redis频道 + + Args: + channel (str): Redis频道名称 + + Returns: + redis.client.PubSub: PubSub对象,用于接收消息 + """ + try: + await self._ensure_pool() + pubsub = RedisKit._redis_pool.pubsub() + await asyncio.to_thread(pubsub.subscribe, channel) + return pubsub + except Exception as e: + logger.error(f"Redis订阅频道失败(channel={channel}): {e}") + return None + + async def save_user_token(self, person_id, platform, token, expire=86400): + """ + 异步保存用户的token到Redis + + Args: + person_id (str): 用户ID + platform (str): 平台 + token (str): 生成的token + expire (int): 过期时间(秒),默认24小时 + + Returns: + bool: 保存成功返回True,失败返回False + """ + try: + # 使用固定格式的key:user_token:{person_id}:{platform} + key = f"user_token:{person_id}:{platform}" + return await self.set_data(key, token, expire) + except Exception as e: + logger.error(f"保存用户token失败(person_id={person_id}, platform={platform}): {e}") + return False + + async def get_user_token(self, person_id, platform): + """ + 异步获取用户在Redis中存储的token + + Args: + person_id (str): 用户ID + platform (str): 平台 + + Returns: + str: 用户的token,如果不存在或过期则返回None + """ + try: + key = f"user_token:{person_id}:{platform}" + return await self.get_data(key) + except Exception as e: + logger.error(f"获取用户token失败(person_id={person_id}, platform={platform}): {e}") + return None + + async def validate_user_token(self, person_id, platform, token): + """ + 异步验证用户的token是否与Redis中存储的一致 + + Args: + person_id (str): 用户ID + platform (str): 平台、终端 + token (str): 待验证的token + + Returns: + bool: token有效返回True,无效返回False + """ + try: + stored_token = await self.get_user_token(person_id, platform) + # 如果没有存储的token,或者存储的token与当前token不一致,则token无效 + return stored_token is not None and stored_token == token + except Exception as e: + logger.error(f"验证用户token失败(person_id={person_id}, platform={platform}): {e}") + return False + + async def delete_user_token(self, person_id, platform=None): + """ + 异步删除用户在Redis中存储的token + + Args: + person_id (str): 用户ID + platform (str, optional): 平台,如果为None则删除所有平台的token + + Returns: + bool: 删除成功返回True,失败返回False + """ + try: + await self._ensure_pool() + if platform: + # 删除特定平台的token + key = f"user_token:{person_id}:{platform}" + return await self.delete_data(key) + else: + # 删除所有平台的token(使用模式匹配) + pattern = f"user_token:{person_id}:*" + cursor = b'0' + deleted_count = 0 + + # 使用scan命令查找所有匹配的键 + while cursor: + cursor, keys = await asyncio.to_thread( + RedisKit._redis_pool.scan, + cursor=cursor, + match=pattern, + count=100 + ) + if keys: + deleted = await asyncio.to_thread( + RedisKit._redis_pool.delete, *keys + ) + deleted_count += deleted + + return deleted_count > 0 + except Exception as e: + logger.error(f"删除用户token失败(person_id={person_id}): {e}") + return False + + async def list_push(self, key, value, expire=None): + """ + 异步向Redis List中推入数据(LPUSH) + + Args: + key (str): Redis键名 + value (str): 要推入的值 + expire (int, optional): 过期时间(秒),如果设置则同时为key设置过期时间 + + Returns: + int: 推入后list的长度,失败返回-1 + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.lpush, key, value) + + # 如果设置了过期时间,为key设置TTL + if expire and result > 0: + await asyncio.to_thread(RedisKit._redis_pool.expire, key, expire) + + return result + except Exception as e: + logger.error(f"向Redis List推入数据失败(key={key}): {e}") + return -1 + + async def list_pop(self, key): + """ + 异步从Redis List中弹出数据(RPOP) + + Args: + key (str): Redis键名 + + Returns: + str: 弹出的值,如果list为空或失败返回None + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.rpop, key) + return result + except Exception as e: + logger.error(f"从Redis List弹出数据失败(key={key}): {e}") + return None + + async def list_length(self, key): + """ + 异步获取Redis List的长度 + + Args: + key (str): Redis键名 + + Returns: + int: list的长度,如果失败返回-1 + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.llen, key) + return result + except Exception as e: + logger.error(f"获取Redis List长度失败(key={key}): {e}") + return -1 + + async def list_get_all(self, key): + """ + 异步获取Redis List中的所有数据(LRANGE 0 -1) + + Args: + key (str): Redis键名 + + Returns: + list: list中的所有数据,如果失败返回空列表 + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.lrange, key, 0, -1) + return result if result else [] + except Exception as e: + logger.error(f"获取Redis List所有数据失败(key={key}): {e}") + return [] + + async def list_clear(self, key): + """ + 异步清空Redis List(删除key) + + Args: + key (str): Redis键名 + + Returns: + bool: 清空成功返回True,失败返回False + """ + try: + return await self.delete_data(key) + except Exception as e: + logger.error(f"清空Redis List失败(key={key}): {e}") + return False + + async def set_is_member(self, key, value): + """ + 异步检查值是否在Redis集合中 + + Args: + key (str): Redis键名 + value: 要检查的值 + + Returns: + bool: 值在集合中返回True,不在或失败返回False + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.sismember, key, value) + return bool(result) + except Exception as e: + logger.error(f"检查值是否在Redis集合中失败(key={key}): {e}") + return False + + async def set_add(self, key, value): + """ + 异步向Redis集合中添加值 + + Args: + key (str): Redis键名 + value: 要添加的值 + + Returns: + bool: 添加成功返回True,失败返回False + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.sadd, key, value) + return result > 0 # sadd返回添加的元素数量,大于0表示添加成功 + except Exception as e: + logger.error(f"向Redis集合添加值失败(key={key}): {e}") + return False + + async def set_remove(self, key, value): + """ + 异步从Redis集合中移除值 + + Args: + key (str): Redis键名 + value: 要移除的值 + + Returns: + bool: 移除成功返回True,失败返回False + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.srem, key, value) + return result > 0 # srem返回移除的元素数量,大于0表示移除成功 + except Exception as e: + logger.error(f"从Redis集合移除值失败(key={key}): {e}") + return False + + async def set_cardinality(self, key): + """ + 异步获取Redis集合的成员数量 + + Args: + key (str): Redis键名 + + Returns: + int: 集合的成员数量,如果失败返回0 + """ + try: + await self._ensure_pool() + result = await asyncio.to_thread(RedisKit._redis_pool.scard, key) + return result + except Exception as e: + logger.error(f"获取Redis集合成员数量失败(key={key}): {e}") + return 0 + + # 分布式锁相关方法 + async def acquire_lock(self, lock_name, timeout=300): + """ + 获取分布式锁 + + Args: + lock_name (str): 锁的名称 + timeout (int): 锁的超时时间(秒),默认300秒 + + Returns: + str: 锁ID,如果获取失败返回None + """ + try: + await self._ensure_pool() + # 生成唯一锁ID + lock_id = str(uuid.uuid4()) + key = f"lock:{lock_name}" + + # 使用Redis原子操作设置锁 + result = await asyncio.to_thread( + RedisKit._redis_pool.setnx, key, lock_id + ) + + if result: + # 设置锁的过期时间 + await asyncio.to_thread( + RedisKit._redis_pool.expire, key, timeout + ) + logger.info(f"获取分布式锁成功: {lock_name}, lock_id: {lock_id}") + return lock_id + else: + logger.info(f"获取分布式锁失败: {lock_name} (锁已存在)") + return None + except Exception as e: + logger.error(f"获取分布式锁失败: {lock_name}, 错误: {e}") + return None + + async def release_lock(self, lock_name, lock_id): + """ + 释放分布式锁 + + Args: + lock_name (str): 锁的名称 + lock_id (str): 锁ID + + Returns: + bool: 是否成功释放锁 + """ + try: + await self._ensure_pool() + key = f"lock:{lock_name}" + + # 使用Lua脚本原子性检查并释放锁 + lua_script = """ + if redis.call('get', KEYS[1]) == ARGV[1] then + return redis.call('del', KEYS[1]) + else + return 0 + end + """ + + result = await asyncio.to_thread( + RedisKit._redis_pool.eval, lua_script, 1, key, lock_id + ) + + if result == 1: + logger.info(f"释放分布式锁成功: {lock_name}, lock_id: {lock_id}") + return True + else: + logger.info(f"释放分布式锁失败: {lock_name}, lock_id: {lock_id} (锁不存在或已被其他进程持有)") + return False + except Exception as e: + logger.error(f"释放分布式锁失败: {lock_name}, 错误: {e}") + return False + + async def renew_lock(self, lock_name, lock_id, timeout=300): + """ + 续约分布式锁 + + Args: + lock_name (str): 锁的名称 + lock_id (str): 锁ID + timeout (int): 续约时间(秒),默认300秒 + + Returns: + bool: 是否成功续约 + """ + try: + await self._ensure_pool() + key = f"lock:{lock_name}" + + # 使用Lua脚本原子性检查并续约锁 + lua_script = """ + if redis.call('get', KEYS[1]) == ARGV[1] then + return redis.call('expire', KEYS[1], ARGV[2]) + else + return 0 + end + """ + + result = await asyncio.to_thread( + RedisKit._redis_pool.eval, lua_script, 1, key, lock_id, timeout + ) + + if result == 1: + logger.info(f"续约分布式锁成功: {lock_name}, lock_id: {lock_id}") + return True + else: + logger.info(f"续约分布式锁失败: {lock_name}, lock_id: {lock_id} (锁不存在或已被其他进程持有)") + return False + except Exception as e: + logger.error(f"续约分布式锁失败: {lock_name}, 错误: {e}") + return False + + + + + + # 任务进度监控相关方法 + async def set_task_progress(self, task_id, progress, status="processing", message=""): + """ + 设置任务进度 + + Args: + task_id (str): 任务ID + progress (int): 进度百分比(0-100) + status (str): 任务状态(waiting, processing, completed, failed) + message (str): 任务消息 + + Returns: + bool: 设置成功返回True,失败返回False + """ + try: + await self._ensure_pool() + key = f"task:progress:{task_id}" + + # 构造进度数据 + progress_data = { + "task_id": task_id, + "progress": min(100, max(0, progress)), # 确保进度在0-100之间 + "status": status, + "message": message, + "update_time": asyncio.get_event_loop().time() + } + + # 序列化进度数据 + progress_json = json.dumps(progress_data, ensure_ascii=False) + + # 保存到Redis + await asyncio.to_thread( + RedisKit._redis_pool.set, key, progress_json + ) + + # 设置过期时间为24小时 + await asyncio.to_thread( + RedisKit._redis_pool.expire, key, 86400 + ) + + logger.info(f"设置任务进度成功: {task_id}, 进度: {progress}%, 状态: {status}") + return True + except Exception as e: + logger.error(f"设置任务进度失败: {task_id}, 错误: {e}") + return False + + async def get_task_progress(self, task_id): + """ + 获取任务进度 + + Args: + task_id (str): 任务ID + + Returns: + dict: 任务进度数据,如果不存在返回None + """ + try: + await self._ensure_pool() + key = f"task:progress:{task_id}" + + # 从Redis获取进度数据 + progress_json = await asyncio.to_thread( + RedisKit._redis_pool.get, key + ) + + if progress_json: + return json.loads(progress_json) + else: + return None + except Exception as e: + logger.error(f"获取任务进度失败: {task_id}, 错误: {e}") + return None + + async def complete_task(self, task_id, success=True, message=""): + """ + 完成任务 + + Args: + task_id (str): 任务ID + success (bool): 任务是否成功完成 + message (str): 完成消息 + + Returns: + bool: 设置成功返回True,失败返回False + """ + status = "completed" if success else "failed" + progress = 100 if success else 0 + return await self.set_task_progress(task_id, progress, status, message) + + async def delete_task_progress(self, task_id): + """ + 删除任务进度记录 + + Args: + task_id (str): 任务ID + + Returns: + bool: 删除成功返回True,失败返回False + """ + try: + await self._ensure_pool() + key = f"task:progress:{task_id}" + + # 从Redis删除进度记录 + result = await asyncio.to_thread( + RedisKit._redis_pool.delete, key + ) + + logger.info(f"删除任务进度记录成功: {task_id}") + return result > 0 + except Exception as e: + logger.error(f"删除任务进度记录失败: {task_id}, 错误: {e}") + return False + + @classmethod + async def close(cls): + """ + 关闭Redis连接池 + """ + if cls._redis_pool: + # 同步Redis连接池不需要等待关闭 + cls._redis_pool.connection_pool.disconnect() + cls._redis_pool = None + logger.info("Redis连接池已关闭") + + +# 创建全局实例 +redisKit = RedisKit() + + +async def main(): + """ + 测试异步Redis操作的main函数 + """ + print("开始测试异步Redis工具类...") + + try: + # 测试基本数据操作 + print("\n=== 测试基本数据操作 ===") + + # 测试设置和获取数据 + test_key = "test_key" + test_value = "test_value_123" + + result = await redisKit.set_data(test_key, test_value, expire=60) + print(f"设置数据结果: {result}") + + get_value = await redisKit.get_data(test_key) + print(f"获取数据结果: {get_value}") + + # 测试用户token操作 + print("\n=== 测试用户token操作 ===") + + # 保存用户token + person_id = "user123" + platform = "web" + token = "jwt_token_xyz789" + + save_result = await redisKit.save_user_token(person_id, platform, token, expire=120) + print(f"保存token结果: {save_result}") + + # 获取用户token + stored_token = await redisKit.get_user_token(person_id, platform) + print(f"获取token结果: {stored_token}") + + # 验证token + validate_result = await redisKit.validate_user_token(person_id, platform, token) + print(f"验证token结果: {validate_result}") + + # 验证错误的token + wrong_token = "wrong_token" + wrong_validate_result = await redisKit.validate_user_token(person_id, platform, wrong_token) + print(f"验证错误token结果: {wrong_validate_result}") + + # 测试删除操作 + print("\n=== 测试删除操作 ===") + + # 删除测试数据 + delete_result = await redisKit.delete_data(test_key) + print(f"删除数据结果: {delete_result}") + + # 删除用户token + delete_token_result = await redisKit.delete_user_token(person_id, platform) + print(f"删除token结果: {delete_token_result}") + + # 测试批量token删除功能 + print("\n=== 测试批量token删除功能 ===") + + # 保存多个平台的token + platforms = ["android", "ios", "web"] + for i, platform in enumerate(platforms): + await redisKit.save_user_token(f"user{i + 1}", platform, f"token{i + 1}", expire=300) + print(f"保存用户{i+1}的{platform}平台token") + + # 删除特定用户的所有token + user_to_delete = "user2" + batch_delete_result = await redisKit.delete_user_token(user_to_delete) + print(f"批量删除{user_to_delete}的所有token结果: {batch_delete_result}") + + # 验证删除结果 + for platform in platforms: + token_check = await redisKit.get_user_token(user_to_delete, platform) + print(f"删除后{user_to_delete}-{platform}平台的token状态: {'已删除' if token_check is None else '存在'}") + + print("\n=== 所有测试完成 ===") + + except Exception as e: + print(f"测试过程中发生错误: {e}") + import traceback + traceback.print_exc() + + finally: + # 清理测试数据并关闭连接池 + print("\n清理测试数据并关闭连接池...") + + # 清理测试用的数据 + test_keys_to_cleanup = ["test_key"] + for key in test_keys_to_cleanup: + await redisKit.delete_data(key) + + # 清理测试用户token + cleanup_users = ["user123", "user1", "user2", "user3"] + for user in cleanup_users: + try: + await redisKit.delete_user_token(user) + except: + pass # 忽略清理过程中的错误 + + # 关闭Redis连接池 + await redisKit.close() + print("Redis连接池已关闭") + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/Util/Win32Patch.py b/Util/Win32Patch.py new file mode 100644 index 0000000..a3c4403 --- /dev/null +++ b/Util/Win32Patch.py @@ -0,0 +1,30 @@ +import asyncio +import logging +import sys +from DbKit.Db import Db +# 配置日志 +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +def patch(): + # 在Windows上使用SelectorEventLoopPolicy可以减少SSL错误 + if sys.platform == 'win32': + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + + # 为Db类添加临时的异步上下文管理器支持 + def patch_db_context_manager(): + # 为Db类添加异步上下文管理器支持 + if not hasattr(Db, '__aenter__'): + async def __aenter__(self): + return self + + async def __aexit__(self, exc_type, exc_val, exc_tb): + # 简单的清理,不做实际操作,避免事件循环问题 + return False + + # 动态添加方法 + Db.__aenter__ = __aenter__ + Db.__aexit__ = __aexit__ + + # 应用补丁 + patch_db_context_manager() \ No newline at end of file diff --git a/Util/XinDianTuReadImageKit.py b/Util/XinDianTuReadImageKit.py new file mode 100644 index 0000000..edbfcee --- /dev/null +++ b/Util/XinDianTuReadImageKit.py @@ -0,0 +1,1290 @@ +import numpy as np +from PIL import Image +import os +import asyncio +import hashlib +import json +import aiohttp +import logging +import base64 +from openai import OpenAI, BadRequestError +from Config.Config import ( + ALY_LLM_API_KEY, VL_MODEL_NAME, VL_MODEL_NAME_AD, + SAFE_EXCLUDE_RATIO, FALLBACK_WIDTH, FALLBACK_HEIGHT, + BOTTOM_SAFE_EXCLUDE_RATIO +) + +logger = logging.getLogger(__name__) + +class XinDianTuReadImageKit: + _client = OpenAI( + api_key=ALY_LLM_API_KEY, + base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" + ) + + # 通用回退设备信息,仅在无法动态获取设备信息时使用 + _FALLBACK_DEVICE_INFO = { + "displayWidth": FALLBACK_WIDTH, + "displayHeight": FALLBACK_HEIGHT, + "productName": "generic" + } + + _prompt = ( + "仅输出JSON数组(不含任何说明文字),按从左到右、从上到下的顺序识别图片中的充电站区域。识别规则如下:\n" + "1. 必须是卡片形式的充电站信息区域。\n" + "2. 每一个卡片必须同时具备以下所有要素,否则严禁识别:\n" + " - 场站名称 (station_name);\n" + " - 距离信息 (distance, 例如 '5.3km'),位于卡片右上角;\n" + " - 金额/电费 (price,例如 '0.8490');\n" + " - 充电枪信息 (piles,包含'超'、'快'或'慢'的类型、总枪数和空闲枪数,例如 '快 闲4/4')。\n" + "3. 如果缺少上述任何一项要素(例如只有名称和距离,但没有电费或枪数信息),说明它不是真正的场站卡片(可能是广告或功能入口),请直接跳过。\n" + "\n" + "JSON对象字段要求:\n" + "1. b_use: 状态标识(1或0)。如果场站名称为灰色或带有“暂停使用”等标签,则为0,否则为1。\n" + "2. station_name: 场站名称;\n" + "3. price: 一度电的价格(数字);\n" + "4. pro_price: Pro会员价格(数字),无则为null;\n" + "5. piles: 充电枪列表 [{type: '快', free: 4, total: 4}];\n" + "6. parking: 停车费用描述(通常在'P'图标后,例如 '收费停车:以场站实际收费规则为准' 或 '限时免费停车...')。\n" + "7. distance: 距离信息字符串(例如 '5.3km')。\n" + "8. bounds: {x1,y1,x2,y2} 区域像素坐标(0-1000);\n" + "9. bounds_norm: {left,top,right,bottom} 归一化坐标(0-1);\n" + "10. station_name_bounds: 场站名称文字区域坐标 {x1,y1,x2,y2}(0-1000);\n" + "11. station_name_bounds_norm: 场站名称文字归一化坐标(0-1)。\n" + "\n" + "重要约束(违反者不予识别):\n" + "A. 严禁识别广告位和筛选标签。如“夜间免停”、“洗手间”、“不限车长”、“不限车高”、“组团”、“综合排序”等均不是场站。\n" + "B. 真正的场站卡片必须是一个横跨屏幕的大卡片,包含:场站名称(大号加粗)、金额(¥开头)、距离(km结尾)、充电枪状态(闲x/x)。\n" + "C. 严禁将屏幕中间的筛选标签误认为场站卡片。\n" + "\n" + "严格返回纯JSON格式。" + ) + + @staticmethod + def _extract_json(text: str) -> str: + if not text: + return "[]" + + cleaned = text.strip() + if "```" in cleaned: + lines = [] + for line in cleaned.splitlines(): + if line.strip().startswith("```"): + continue + lines.append(line) + cleaned = "\n".join(lines).strip() + + decoder = json.JSONDecoder() + + pos = 0 + while pos < len(cleaned): + idx_dict = cleaned.find("{", pos) + idx_list = cleaned.find("[", pos) + + candidates = [i for i in (idx_dict, idx_list) if i != -1] + if not candidates: + break + + start = min(candidates) + snippet = cleaned[start:] + try: + _, end = decoder.raw_decode(snippet) + return snippet[:end] + except json.JSONDecodeError: + pos = start + 1 + continue + + return "[]" + + @staticmethod + def _add_center(obj, device_info): + return XinDianTuReadImageKit._add_click_point(obj, device_info, anchor="center") + + @staticmethod + def _add_click_point(obj, device_info, anchor: str = "center"): + # 获取显示宽高,增加容错 + display_width = float(device_info.get("displayWidth") or device_info.get("width") or 1080) + display_height = float(device_info.get("displayHeight") or device_info.get("height") or 2400) + + bounds = obj.get("bounds") + bn = obj.get("bounds_norm") + text_bounds = obj.get("station_name_bounds") + text_bn = obj.get("station_name_bounds_norm") + uia_x = None + uia_y = None + + def get_pixel_coords(b_data, d_w, d_h): + if not b_data: + return None + + # Extract values based on dict or list + if isinstance(b_data, list) and len(b_data) == 4: + v1, v2, v3, v4 = b_data + elif isinstance(b_data, dict): + # 兼容多种可能的键名 + v1 = b_data.get("left") if b_data.get("left") is not None else b_data.get("x1") + v2 = b_data.get("top") if b_data.get("top") is not None else b_data.get("y1") + v3 = b_data.get("right") if b_data.get("right") is not None else b_data.get("x2") + v4 = b_data.get("bottom") if b_data.get("bottom") is not None else b_data.get("y2") + + if any(v is None for v in (v1, v2, v3, v4)): + return None + else: + return None + + try: + v1, v2, v3, v4 = float(v1), float(v2), float(v3), float(v4) + except (ValueError, TypeError): + return None + + max_v = max(v1, v2, v3, v4) + + # 1. 0-1 归一化坐标 + if max_v <= 1.05: + x1, y1, x2, y2 = v1 * d_w, v2 * d_h, v3 * d_w, v4 * d_h + # 2. 0-1000 归一化坐标 (Qwen-VL 常用) + elif max_v <= 1005: + x1, y1, x2, y2 = (v1 / 1000.0) * d_w, (v2 / 1000.0) * d_h, (v3 / 1000.0) * d_w, (v4 / 1000.0) * d_h + # 3. 绝对像素坐标 + else: + x1, y1, x2, y2 = v1, v2, v3, v4 + + return min(x1, x2), min(y1, y2), max(x1, x2), max(y1, y2) + + # 优先使用场站名称区域进行点击 (最安全) + coords = get_pixel_coords(text_bn, display_width, display_height) or get_pixel_coords(text_bounds, display_width, display_height) + if coords: + x1, y1, x2, y2 = coords + uia_x = int(x1 + (x2 - x1) / 2) + uia_y = int(y1 + (y2 - y1) / 2) + logger.info(f"坐标计算: 使用文字区域 -> ({uia_x}, {uia_y}) | 区域: {coords} | 屏幕: {display_width}x{display_height}") + + # 备选:使用整个卡片区域 + if uia_x is None: + coords = get_pixel_coords(bn, display_width, display_height) or get_pixel_coords(bounds, display_width, display_height) + if coords: + x1, y1, x2, y2 = coords + w, h = x2 - x1, y2 - y1 + if anchor == "top_left": + uia_x = int(x1 + max(5.0, w * 0.15)) + uia_y = int(y1 + max(5.0, h * 0.20)) + else: + # 默认中心点,但稍微偏上一点,避开底部可能的按钮 + uia_x = int(x1 + w / 2) + uia_y = int(y1 + h * 0.4) + logger.info(f"坐标计算: 使用卡片区域 -> ({uia_x}, {uia_y}) | 区域: {coords} | 屏幕: {display_width}x{display_height}") + + # --- 安全过滤:过滤掉屏幕顶部的点击坐标 (通常是广告或菜单) --- + if uia_y is not None: + # 如果点击点在屏幕顶部 SAFE_EXCLUDE_RATIO 范围内,极大概率是误触广告位,将其排除 + if uia_y < (display_height * SAFE_EXCLUDE_RATIO): + logger.warning(f"安全排除: 坐标 ({uia_x}, {uia_y}) 位于屏幕顶部 {int(SAFE_EXCLUDE_RATIO*100)}% 区域,疑似广告或菜单,已忽略。") + return None + + # 如果点击点在屏幕底部 BOTTOM_SAFE_EXCLUDE_RATIO 范围内,极大概率是误触底部功能区(如扫码充电),将其排除 + if uia_y > (display_height * (1 - BOTTOM_SAFE_EXCLUDE_RATIO)): + logger.warning(f"安全排除: 坐标 ({uia_x}, {uia_y}) 位于屏幕底部 {int(BOTTOM_SAFE_EXCLUDE_RATIO*100)}% 区域,疑似底部功能区,已忽略。") + return None + + if uia_x is not None and uia_y is not None: + obj["uia_center_x"] = uia_x + obj["uia_center_y"] = uia_y + + # Clean up temporary fields + for k in ["bounds", "bounds_norm", "station_name_bounds", "station_name_bounds_norm"]: + if k in obj: + del obj[k] + return obj + + @staticmethod + async def find_all_time_button_coordinate(image_url: str, device_info: dict = None) -> dict: + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + prompt = ( + "仅输出JSON对象(不含任何说明文字),请找到图片中带有“全部时段”字样的按钮区域(通常在价格表下方,是一个带有右箭头的文字按钮)。\n" + "返回格式示例:\n" + "{\n" + ' "bounds": {"x1": 100, "y1": 200, "x2": 300, "y2": 400}, \n' + ' "bounds_norm": {"left": 0.1, "top": 0.2, "right": 0.3, "bottom": 0.4}\n' + "}\n" + "注意:bounds应使用0-1000的归一化坐标空间。\n" + "如果未找到,返回空JSON {}。" + ) + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": image_url + }, + }, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + try: + data = json.loads(raw) + if isinstance(data, dict) and (data.get("bounds") or data.get("bounds_norm")): + data = XinDianTuReadImageKit._add_center(data, device_info) + # 只返回中心坐标 + return { + "uia_center_x": data.get("uia_center_x"), + "uia_center_y": data.get("uia_center_y") + } + return {} + except Exception as e: + logger.error(f"Error parsing JSON: {e}") + logger.error(f"Raw content: {raw}") + return {} + + @staticmethod + async def find_station_coordinate_first_page(image_url: str, station_name: str, device_info: dict = None) -> dict: + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + prompt = ( + "仅输出JSON对象(不含任何说明文字)。" + "请在图片中找到场站名称完全匹配“" + str(station_name) + "”的那一行/卡片," + "返回该场站名称文字本身的区域坐标(优先返回归一化坐标)。" + "返回格式示例:" + "{\"station_name_bounds\": {\"x1\": 100, \"y1\": 200, \"x2\": 300, \"y2\": 240}, " + "\"station_name_bounds_norm\": {\"left\": 0.1, \"top\": 0.2, \"right\": 0.3, \"bottom\": 0.24}}" + "注意:bounds使用0-1000归一化坐标空间;如果找不到,返回空JSON {}。" + ) + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + try: + data = json.loads(raw) + if isinstance(data, dict) and (data.get("station_name_bounds") or data.get("station_name_bounds_norm") or data.get("bounds") or data.get("bounds_norm")): + data = XinDianTuReadImageKit._add_click_point(data, device_info, anchor="station_text") + return { + "uia_center_x": data.get("uia_center_x"), + "uia_center_y": data.get("uia_center_y") + } + return {} + except Exception: + return {} + + @staticmethod + async def parse_first_level_image_url(image_url: str, device_info: dict = None) -> list: + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": image_url + }, + }, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": XinDianTuReadImageKit._prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + try: + data = json.loads(raw) + if isinstance(data, list): + # 过滤掉 None (即被 _add_click_point 排除掉的顶部项) + data = [XinDianTuReadImageKit._add_click_point(x, device_info, anchor="station_text") for x in data if x.get("b_use", 1) == 1] + data = [x for x in data if x is not None] + elif isinstance(data, dict): + if data.get("b_use", 1) == 1: + data = XinDianTuReadImageKit._add_click_point(data, device_info, anchor="station_text") + data = [data] if data is not None else [] + else: + data = [] + + # Clean up temporary field b_use if it still exists + if isinstance(data, list): + for item in data: + if "b_use" in item: + del item["b_use"] + elif isinstance(data, dict) and "b_use" in data: + del data["b_use"] + + # If dict result, wrap in list for consistency if needed, but keeping as is based on original logic logic implies list return + if isinstance(data, dict): + return [data] if data else [] + + if isinstance(data, list) and data: + # 移除旧的关键词过滤逻辑,完全信任视觉模型的识别结果 + # 如果未来发现模型识别了太多广告,可以在 Prompt 中强化 "严禁识别广告" 的约束 + filtered = [] + for item in data: + if not isinstance(item, dict): + continue + name = item.get("station_name") + if not name: + continue + filtered.append(item) + data = filtered + + if isinstance(data, list) and data: + tasks = [] + idxs = [] + for i, item in enumerate(data): + if not isinstance(item, dict): + continue + if item.get("uia_center_x") is None or item.get("uia_center_y") is None: + name = item.get("station_name") + if name: + idxs.append(i) + tasks.append(asyncio.create_task( + XinDianTuReadImageKit.find_station_coordinate_first_page(image_url, name, device_info) + )) + if tasks: + results = await asyncio.gather(*tasks, return_exceptions=True) + for i, r in zip(idxs, results): + if isinstance(r, dict) and r.get("uia_center_x") is not None and r.get("uia_center_y") is not None: + data[i]["uia_center_x"] = r.get("uia_center_x") + data[i]["uia_center_y"] = r.get("uia_center_y") + + for item in data: + if isinstance(item, dict): + item["uia_center_x"] = 100 + item.setdefault("uia_center_y", None) + + return data + except Exception as e: + logger.error(f"Error parsing JSON: {e}") + logger.error(f"Raw content: {raw}") + return [] + + @staticmethod + async def parse_hybrid_image(image_path, uploader, cdn_domain): + """ + 统一入口:混合识别模式 + """ + return await XinDianTuReadImageKit.get_stations_hybrid(image_path, uploader, cdn_domain) + + @staticmethod + async def parse_vl_image(vl_image_url, json_metadata, device_info=None): + """ + 基于 _vl.jpg (带绿框) 和 JSON 元数据进行识别 + """ + if not json_metadata or "cards" not in json_metadata: + return [] + + cards_meta = json_metadata["cards"] + # 按 id 或 Y 坐标排序,确保顺序一致 (Kit 生成时已经是 top-down) + cards_meta.sort(key=lambda x: x["rect"][1]) + + prompt = ( + "图片中用绿色矩形框标记了若干个充电站卡片区域。\n" + "请按从上到下的顺序,依次识别每个绿色框内的场站信息,并返回一个JSON数组。\n" + "数组中元素的顺序必须与图片中绿色框从上到下的顺序严格一致。\n" + "如果某个框内不是有效的场站卡片(例如是广告),请返回null或空对象,不要跳过顺序。\n" + "\n" + "每个JSON对象包含以下字段:\n" + "1. station_name: 场站名称;\n" + "2. price: 价格(数字);\n" + "3. pro_price: Pro会员价(数字,无则null);\n" + "4. piles: 充电枪描述字符串(例如 '快 闲4/4');\n" + "5. tags: 标签列表(如 ['限时免费']);\n" + "6. parking: 停车费用描述(通常在'P'图标后,例如 '收费停车:以场站实际收费规则为准' 或 '限时免费停车...')。\n" + "7. distance: 距离信息字符串(例如 '5.3km')。\n" + "\n" + "严格返回纯JSON格式。" + ) + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": vl_image_url}}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + final_stations = [] + try: + llm_data = json.loads(raw) + if isinstance(llm_data, list): + # 尝试与 cards_meta 对齐 + count = min(len(llm_data), len(cards_meta)) + for i in range(count): + item = llm_data[i] + meta = cards_meta[i] + + if not item or not isinstance(item, dict): + continue + + name = item.get("station_name") + if not name: + continue + + # 注入元数据中的点击坐标 + click_pt = meta.get("click_point", [0, 0]) + cx, cy = click_pt + + # 安全检查 + img_h = 2400 + if device_info: + img_h = float(device_info.get("displayHeight") or device_info.get("height") or 2400) + else: + img_h = json_metadata.get("height", 2400) + + # 顶部安全排除 + if cy < (img_h * SAFE_EXCLUDE_RATIO): + logger.warning(f"VL安全排除: 坐标 ({cx}, {cy}) 位于屏幕顶部 {int(SAFE_EXCLUDE_RATIO*100)}% 区域,已忽略。") + continue + + # 底部安全排除 + if cy > (img_h * (1 - BOTTOM_SAFE_EXCLUDE_RATIO)): + logger.warning(f"VL安全排除: 坐标 ({cx}, {cy}) 位于屏幕底部 {int(BOTTOM_SAFE_EXCLUDE_RATIO*100)}% 区域,疑似底部功能区,已忽略。") + continue + + item["uia_center_x"] = cx + item["uia_center_y"] = cy + item["rect"] = meta.get("rect") + + final_stations.append(item) + else: + logger.warning(f"LLM return format error: expected list, got {type(llm_data)}") + + except Exception as e: + logger.error(f"Error parsing VL response: {e}") + + return final_stations + + @staticmethod + async def get_stations_hybrid(image_path, uploader, cdn_domain): + """ + 混合识别模式:图形学切片 + 大模型小图 OCR + """ + # 1. 图形学切片 + segments = XinDianTuReadImageKit.get_card_segments(image_path) + if not segments: + return [] + + # 2. 对每个切片并行进行 OCR + tasks = [] + for seg in segments: + # 上传切片 + patch_path = seg["patch_path"] + remote_path = f"tmp/patches/{os.path.basename(patch_path)}" + uploader.upload_file(patch_path, remote_path) + patch_url = f"{cdn_domain}/{remote_path}" + + # 记录上传后的 URL 供识别使用 + seg["patch_url"] = patch_url + tasks.append(XinDianTuReadImageKit.recognize_card_text(patch_url)) + + # 等待所有 OCR 完成 + results = await asyncio.gather(*tasks) + + # 3. 组装结果 + final_stations = [] + for i, res in enumerate(results): + name = res.get("station_name") + if name and name != "未知": + seg = segments[i] + res["x"] = seg["center_x"] + res["y"] = seg["center_y"] + final_stations.append(res) + + # 4. 后置过滤 (复用原有过滤逻辑) + if final_stations: + processed_excluded_titles = {str(x).replace(" ", "").strip() for x in STATION_EXCLUDED_TITLES} + filtered = [] + for item in final_stations: + name = item.get("station_name") + normalized_name = str(name).replace(" ", "").strip() + if normalized_name in processed_excluded_titles: + continue + if any(kw in normalized_name for kw in STATION_BLACKLIST_KEYWORDS): + continue + filtered.append(item) + final_stations = filtered + + return final_stations + + @staticmethod + @staticmethod + def get_card_segments(image_path, output_dir="./Debug/Patches"): + """ + 基于水平灰色分割带 (Divider Band) 切取场站卡片 + 返回: list of dict {"patch_path": str, "center_x": int, "center_y": int, "y_range": tuple} + """ + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + try: + img = Image.open(image_path).convert('RGB') + width, height = img.size + img_data = np.array(img) + + logger.info(f"页面分析 - 分辨率: {width}x{height}") + + # 1. 行特征分析:识别分割线 (Divider) + # 分割线特征:横贯全屏,亮度均匀,通常比纯白(255)稍暗,比文字内容亮 + # 典型值:Mean=242-247, Std<10 + + row_types = [] # 0: Unknown/Content, 1: Divider, 2: White/Empty + + # 采样点:左中右 + l_x, m_x, r_x = int(width * 0.05), int(width * 0.5), int(width * 0.95) + + debug_rows = [] + + for y in range(height): + # 避开顶部和底部导航栏 (15% - 85%) - 扩大排除范围以避免误识别 Header/Footer + if y < height * 0.15 or y > height * 0.85: + row_types.append(1) # 视为无关区域 (标记为 Divider 以防止形成 Segment) + continue + + row = img_data[y] + row_mean = np.mean(row) + row_std = np.std(row) + + # 判定逻辑: + # 1. 纯白行 (卡片底色) -> mean > 252 (允许微小噪点) + # 2. 分割线 (Divider) -> 230 < mean < 252 且 std < 15 (颜色均匀) + # 3. 内容行 (Content) -> mean <= 230 或 (mean > 230 且 std >= 15) (有文字/图片导致方差大) + + if row_mean > 252: + r_type = 2 # White/Empty + elif 230 < row_mean <= 252 and row_std < 15: + r_type = 1 # Divider + else: + r_type = 0 # Content + + row_types.append(r_type) + + # Debug log sampling + if y % 50 == 0: + debug_rows.append(f"Row {y}: Mean={row_mean:.1f}, Std={row_std:.1f} -> Type={r_type}") + + if debug_rows: + logger.info("行特征采样 (调试用):\n" + "\n".join(debug_rows)) + + # 2. 聚合连续的 Content 区域 (Type 0 or Type 2 sandwiched by Type 0) + # 实际上,卡片是由 Divider 分隔开的区域。 + # 我们寻找两个 Divider 之间的区域,且该区域必须包含 Content (Type 0)。 + + segments = [] + + # 简化状态机: + # 寻找非 Divider 的连续段 + in_segment = False + seg_start = -1 + has_content = False + + raw_blocks = [] + + for y, r_type in enumerate(row_types): + if r_type != 1: # Not Divider + if not in_segment: + in_segment = True + seg_start = y + has_content = False + + if r_type == 0: + has_content = True + else: # Is Divider + if in_segment: + # 结束一段 + if has_content: # 只有包含内容的段才算 + raw_blocks.append((seg_start, y)) + in_segment = False + + # 处理最后一段 + if in_segment and has_content: + raw_blocks.append((seg_start, len(row_types))) + + # 3. 过滤和后处理 + # 合并距离很近的块?或者过滤太小的块 + base_name = os.path.splitext(os.path.basename(image_path))[0] + + valid_segments = [] + logger.info(f"Initial raw blocks count: {len(raw_blocks)}") + + for i, (y1, y2) in enumerate(raw_blocks): + h = y2 - y1 + # 过滤太小的块 (可能是杂噪或单纯的文字行) + if h < 50: + # logger.debug(f"Block {i} too small: {h}") + continue + # 过滤太大的块 (可能是全屏错误) + if h > 1000: + continue + + # 再次确认内部是否有足够的“暗像素”(内容) + # 避免切出纯白的空隙 + region = img_data[y1:y2] + region_mean = np.mean(region) + if region_mean > 254.5: # 整体太白 (放宽阈值,避免误杀大面积白色的卡片) + logger.info(f" [-] 忽略区域 {i}: Y({y1}-{y2}), H={h}, 整体太白 (Mean={region_mean:.1f} > 254.5)") + continue + + # --- 优化:边缘背景检查与宽度裁剪 (Margin Check & Crop) --- + # 不再直接拒绝白边,而是尝试计算内容的有效宽度 + # 假设:有效内容行的方差较高,或者亮度显著不同于背景 + + # 简单策略:保留全宽,但增加高度限制 + if h < 60: # 稍微降低阈值以测试 + logger.info(f" [-] 忽略区域 {i}: Y({y1}-{y2}), H={h}, 高度不足 (<60)") + continue + + # 计算左右边距的平均亮度,辅助判断(仅记录日志,不强行过滤) + margin_w = max(5, int(width * 0.05)) + l_margin = img_data[y1:y2, 0:margin_w] + r_margin = img_data[y1:y2, width-margin_w:width] + l_mean = np.mean(l_margin) + r_mean = np.mean(r_margin) + + # 如果是全宽卡片,左右边缘可能是白色的。 + # 之前的逻辑: if l_mean > 252 or r_mean > 252: continue (导致漏检) + # 现在移除该逻辑。 + + # --- 新增:自动裁剪水平宽度 (Auto Horizontal Crop) --- + # 尝试找到内容的左右边界 (基于列的方差或亮度差异) + x1, x2 = 0, width + + # 从左向右扫描 + for x in range(0, int(width * 0.4), 2): + col = img_data[y1:y2, x] + # 如果这一列不是纯色背景 (std > 5) 或者明显比背景暗 (mean < 245) + if np.std(col) > 5 or np.mean(col) < 245: + x1 = x + break + + # 从右向左扫描 + for x in range(width - 1, int(width * 0.6), -2): + col = img_data[y1:y2, x] + if np.std(col) > 5 or np.mean(col) < 245: + x2 = x + 1 + break + + # 增加一点 padding + x1 = max(0, x1 - 10) + x2 = min(width, x2 + 10) + + # 如果裁剪后宽度太小,可能不是有效卡片 + if (x2 - x1) < width * 0.5: + logger.info(f" [-] 忽略区域 {i}: 裁剪后宽度过小 ({x2-x1})") + continue + + # 保存 + patch = img.crop((x1, y1, x2, y2)) + patch_name = f"{base_name}_p{i}_{y1}.jpg" + patch_path = os.path.join(output_dir, patch_name) + patch.save(patch_path) + + center_y = (y1 + y2) // 2 + valid_segments.append({ + "patch_path": os.path.abspath(patch_path), + "center_x": (x1 + x2) // 2, + "center_y": center_y, + "y_range": (y1, y2) + }) + logger.info(f" [+] 发现卡片 {i}: Y({y1}-{y2}), H={h}, Crop X({x1}-{x2}), 边缘(L={l_mean:.1f}, R={r_mean:.1f}), 已保存") + + logger.info(f"分析完成:识别到 {len(valid_segments)} 个区域") + return valid_segments + + except Exception as e: + logger.error(f"图形学切片失败: {e}", exc_info=True) + return [] + + @staticmethod + async def recognize_card_text(patch_url): + """ + 对切片进行小图 OCR 识别,提取场站详细信息 + """ + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "请识别图片中的充电站信息,并以 JSON 格式输出:{\"station_name\": \"...\", \"price\": \"...\", \"piles\": \"空闲数/总数\"}。只输出 JSON,不要有其他文字。" + }, + {"type": "image_url", "image_url": {"url": patch_url}} + ] + } + ], + max_tokens=200 + ) + ) + content = resp.choices[0].message.content.strip() + # 尝试解析 JSON + try: + import json + import re + json_match = re.search(r'\{.*\}', content, re.DOTALL) + if json_match: + return json.loads(json_match.group()) + except Exception: + logger.warning(f"OCR 结果解析 JSON 失败: {content}") + + return {"station_name": "未知"} + + @staticmethod + async def detect_ad(image_url: str, device_info: dict = None) -> dict: + """ + 检测图片中是否存在广告弹窗,并定位关闭按钮坐标 + + 参数: + image_url: 图片地址 + device_info: 设备信息 + + 返回: + { + "has_ad": bool, + "uia_center_x": int|None, + "uia_center_y": int|None + } + """ + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + prompt = ( + "分析图片中是否存在覆盖在主界面上的广告弹窗(Popup Ad)。" + "如果存在,请找到关闭该弹窗的按钮(通常是一个带有 'X' 的图标,可能在弹窗的右上角、右下角或正下方)。" + "仅输出JSON对象(不含任何说明文字),包含以下字段:" + "1. has_ad: 布尔值,是否存在广告弹窗;" + "2. close_button_bounds: 关闭按钮的像素坐标或归一化坐标(0-1000) {x1,y1,x2,y2}。如果不存在广告则为 null。" + "注意:只需识别最明显的那个关闭按钮。严格返回纯JSON。" + ) + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME_AD, # 使用更强的视觉模型 + messages=[ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": image_url}, + }, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + try: + data = json.loads(raw) + has_ad = data.get("has_ad", False) + if has_ad and data.get("close_button_bounds"): + # 使用现有的辅助方法转换坐标 + temp_obj = {"bounds": data.get("close_button_bounds")} + XinDianTuReadImageKit._add_click_point(temp_obj, device_info) + return { + "has_ad": True, + "uia_center_x": temp_obj.get("uia_center_x"), + "uia_center_y": temp_obj.get("uia_center_y") + } + return {"has_ad": False, "uia_center_x": None, "uia_center_y": None} + except Exception as e: + logger.error(f"Error parsing ad detection JSON: {e}") + return {"has_ad": False, "uia_center_x": None, "uia_center_y": None} + + @staticmethod + async def _download_as_base64(url: str) -> str: + """Helper to download image and convert to base64 for VL model fallback""" + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as resp: + if resp.status != 200: + return None + content = await resp.read() + if not content: + return None + return base64.b64encode(content).decode('utf-8') + except Exception as e: + logger.error(f"Failed to download image for base64 conversion: {e}") + return None + + @staticmethod + async def parse_price_schedule(station_name: str, image_url: str, device_info: dict = None) -> list: + """ + 解析价格时段表(整图),提取每一行的时间区间与费用信息 + + 参数: + image_url: 图片地址(包含“当前时段电费/全部时段电费”弹窗或列表) + device_info: 设备信息,用于提升视觉理解一致性(可选) + + 返回: + 列表,每个元素为: + { + "start": "HH:MM", 开始时间 + "end": "HH:MM", 结束时间 + "price_kwh": float|None, 总价或站点价(元/度) + "electric_fee_kwh": float|None, 电费(元/度) + "service_fee_kwh": float|None 服务费(元/度) + } + 说明: + - 使用 qwen3-vl-flash 进行视觉解析,提示词约束输出为纯 JSON 数组 + - 若某项缺失则返回 None(保持结构统一) + """ + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + # 视觉解析提示词:约束输出字段与格式,避免模型输出说明文字 + prompt = ( + "仅输出JSON数组(不含任何说明文字)。识别图片中所有时段的价格信息,返回每一行:" + "1) start: 开始时间(HH:MM),2) end: 结束时间(HH:MM)," + "3) price_kwh: 价格(元/度,站点价或总价)," + "4) electric_fee_kwh: 电费(元/度)," + "5) service_fee_kwh: 服务费(元/度)。" + "所有数值以数字返回,例如 1.1800。若缺失某项则填 null。严格返回纯JSON数组。" + "注意:如果某行价格信息为空或表示同上,请尝试复用上一行的价格信息。" + ) + + loop = asyncio.get_event_loop() + + def _do_request(url_val): + return XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": url_val}, + }, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + + try: + # 在线程池中同步调用 OpenAI 兼容接口,避免阻塞事件循环 + resp = await loop.run_in_executor(None, lambda: _do_request(image_url)) + except BadRequestError as e: + # 尝试捕获 DataInspection 错误并进行 Base64 回退 + err_code = getattr(e, 'code', '') or '' + if not err_code and hasattr(e, 'body') and isinstance(e.body, dict): + err_code = e.body.get('code', '') + + # 如果是媒体格式或数据检查错误 + if 'InvalidParameter.DataInspection' in str(err_code) or 'media format' in str(e).lower(): + logger.warning(f"Image URL rejected ({err_code}). Attempting Base64 fallback: {image_url}") + base64_str = await XinDianTuReadImageKit._download_as_base64(image_url) + if base64_str: + # 简单推断格式,默认 jpeg + ext = "jpeg" + lower_url = image_url.lower() + if ".png" in lower_url: + ext = "png" + elif ".webp" in lower_url: + ext = "webp" + elif ".jpg" in lower_url or ".jpeg" in lower_url: + ext = "jpeg" + + data_uri = f"data:image/{ext};base64,{base64_str}" + resp = await loop.run_in_executor(None, lambda: _do_request(data_uri)) + else: + logger.error("Base64 download failed during fallback.") + return [] + else: + logger.error(f"API BadRequestError: {e}") + return [] + except Exception as e: + logger.error(f"API Unexpected Error: {e}") + return [] + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + try: + # 反序列化模型返回的 JSON + rows = json.loads(raw) + if not isinstance(rows, list): + return [] + norm = [] + for r in rows: + if not isinstance(r, dict): + continue + # 兼容不同来源字段命名,统一为目标键 + start = r.get("start") + end = r.get("end") + price = r.get("price_kwh") + elec = r.get("electric_fee_kwh") + serv = r.get("service_fee_kwh") + # station_name = station_name + # 将字符串数字安全转换为 float;缺失则为 None + norm.append({ + "station_name": station_name, + "start": start, + "end": end, + "price_kwh": float(price) if isinstance(price, (int, float, str)) and str(price) else None, + "electric_fee_kwh": float(elec) if isinstance(elec, (int, float, str)) and str(elec) else None, + "service_fee_kwh": float(serv) if isinstance(serv, (int, float, str)) and str(serv) else None, + }) + + for i in range(1, len(norm)): + curr = norm[i] + prev = norm[i - 1] + for k in ("price_kwh", "electric_fee_kwh", "service_fee_kwh"): + if curr.get(k) is None and prev.get(k) is not None: + curr[k] = prev[k] + + return norm + except Exception as e: + logger.error(f"Error parsing JSON: {e}") + logger.error(f"Raw content: {raw}") + return [] + + @staticmethod + def _to_minutes(t: str) -> int: + """ + 将 "HH:MM" 转为分钟数(0-1440) + 说明: + - 特殊处理 "24:00" -> 1440,方便区间闭合处理 + - 非法格式返回 0 + """ + if not t: + return 0 + try: + h, m = t.split(":") + h = int(h) + m = int(m) + if h == 24 and m == 0: + return 24 * 60 + return h * 60 + m + except Exception: + return 0 + + @staticmethod + def _fmt(t: int) -> str: + """ + 将分钟数格式化为 "HH:MM" + """ + h = t // 60 + m = t % 60 + return f"{h:02d}:{m:02d}" + + @staticmethod + def expand_schedule_to_hourly(rows: list) -> list: + """ + 将时段列表按小时边界拆分 + + 参数: + rows: parse_price_schedule 返回的时段列表 + + 返回: + 每小时一条数据的列表,区间为闭开 [start, end) 的连续小时段 + 说明: + - 例如 05:00-08:00 -> 05:00-06:00, 06:00-07:00, 07:00-08:00 + - 保留每小时的价格、电费、服务费不变 + """ + hourly = [] + for r in rows: + # 起止时间转分钟 + s = XinDianTuReadImageKit._to_minutes(r.get("start")) + e = XinDianTuReadImageKit._to_minutes(r.get("end")) + if e <= s: + continue + cur = s + while cur < e: + # 下一小时边界;不超过区间终点 + nxt = min(e, ((cur // 60) + 1) * 60) + hourly.append({ + "start": XinDianTuReadImageKit._fmt(cur), + "end": XinDianTuReadImageKit._fmt(nxt), + "price_kwh": r.get("price_kwh"), + "electric_fee_kwh": r.get("electric_fee_kwh"), + "service_fee_kwh": r.get("service_fee_kwh"), + }) + cur = nxt + return hourly + + @staticmethod + async def _fetch_md5(url: str) -> str: + """ + 下载图片并计算 MD5(用于内容去重) + + 返回: + 32位十六进制 MD5 字符串;失败返回空字符串 + """ + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as resp: + if resp.status != 200: + return "" + content = await resp.read() + return hashlib.md5(content).hexdigest() + except Exception: + return "" + + @staticmethod + async def parse_address(station_name: str, image_url: str, device_info: dict = None) -> dict: + """ + 解析图片中的充电站地址信息,同时识别“全部时段”按钮坐标 + + 参数: + station_name:场站名称 + image_url: 图片地址 + device_info: 设备信息(可选) + + 返回: + 字典,包含 address 字段以及 uia_center_x/uia_center_y (如果找到按钮) + """ + if device_info is None: + logger.warning("未提供动态设备信息,使用通用回退配置。") + device_info = XinDianTuReadImageKit._FALLBACK_DEVICE_INFO + + # 启动寻找“全部时段”按钮的任务,为后续可能的点击做准备 + button_task = asyncio.create_task(XinDianTuReadImageKit.find_all_time_button_coordinate(image_url, device_info)) + + prompt = ( + "仅输出JSON对象(不含任何说明文字)。" + "任务1:识别图片中充电站的完整名称(full_station_name)。" + f"提示:列表中看到的名称可能是截断的(例如“{station_name}”),请在图片上方找到最匹配的完整名称。" + "任务2:识别充电站的详细地址(address)。" + "寻找规则:地址通常紧跟在场站名称下方,或者在‘距离’图标(定位小图表)附近,或者在带有‘导航’按钮的同一行。" + "返回包含 full_station_name 和 address 字段的JSON对象,例如 {\"full_station_name\": \"完整名称\", \"address\": \"详细地址\"}。" + "如果找不到,对应字段返回空字符串。" + "严格返回纯JSON格式。" + ) + + loop = asyncio.get_event_loop() + resp = await loop.run_in_executor( + None, + lambda: XinDianTuReadImageKit._client.chat.completions.create( + model=VL_MODEL_NAME, + messages=[ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": {"url": image_url}, + }, + {"type": "text", "text": json.dumps(device_info, ensure_ascii=False)}, + {"type": "text", "text": prompt}, + ], + }, + ], + ) + ) + + content = resp.choices[0].message.content or "" + raw = XinDianTuReadImageKit._extract_json(content) + + result = {} + try: + data = json.loads(raw) + if isinstance(data, dict): + result = data + except Exception as e: + logger.error(f"Error parsing address JSON: {e}") + + # 等待并合并按钮坐标结果 + try: + button_result = await button_task + if button_result: + result.update(button_result) + except Exception as e: + logger.error(f"Error in button coordinate task: {e}") + + return result + + @staticmethod + async def parse_price_schedule_multi(station_name: str, image_urls: list, device_info: dict = None) -> list: + """ + 多图解析(按图片内容 MD5 去重)并合并时段结果 + + 参数: + image_urls: 多张价格表图片的 URL 列表 + device_info: 设备信息(可选) + + 逻辑: + 1. 逐张下载并计算 MD5,去重得到唯一图片集合 + 2. 对每张唯一图片解析价格时段 + 3. 将所有图片的时段行合并为一个列表返回 + + 返回: + 合并后的时段列表(未按小时拆分) + """ + if not image_urls: + return [] + # MD5 -> URL 的映射,用于去重 + md5_to_url = {} + for u in image_urls: + m = await XinDianTuReadImageKit._fetch_md5(u) + if m and m not in md5_to_url: + md5_to_url[m] = u + unique_urls = list(md5_to_url.values()) + # 合并时段结果 + combined = [] + for u in unique_urls: + rows = await XinDianTuReadImageKit.parse_price_schedule(station_name, u, device_info=device_info) + if rows: + combined.extend(rows) + return combined + + @staticmethod + def hourly_full_day(rows: list) -> list: + """ + 将时段列表规整为全天24个整点小时段 + + 参数: + rows: 原始时段列表(可来自多图合并) + + 返回: + 固定24条记录(00:00-01:00 到 23:00-24:00), + 若某小时未被任何时段覆盖,则费用为 None + 说明: + - 选择覆盖该小时段的时段(若多个,则选择重叠时间最长的一个) + - 保证返回结构完整,便于后续消费端显示或补全 + """ + # 预处理:转换为分钟区间 + intervals = [] + for r in rows: + s = XinDianTuReadImageKit._to_minutes(r.get("start")) + e = XinDianTuReadImageKit._to_minutes(r.get("end")) + if e <= s: + continue + s = max(0, s) + e = min(1440, e) + intervals.append({ + "s": s, "e": e, + "price_kwh": r.get("price_kwh"), + "electric_fee_kwh": r.get("electric_fee_kwh"), + "service_fee_kwh": r.get("service_fee_kwh"), + }) + intervals.sort(key=lambda x: (x["s"], x["e"])) + + result = [] + for h in range(24): + hs = h * 60 + he = (h + 1) * 60 + best = None + best_overlap = 0 + for it in intervals: + overlap = max(0, min(he, it["e"]) - max(hs, it["s"])) + if overlap > best_overlap: + best_overlap = overlap + best = it + result.append({ + "start": XinDianTuReadImageKit._fmt(hs), + "end": XinDianTuReadImageKit._fmt(he), + "price_kwh": best["price_kwh"] if best else None, + "electric_fee_kwh": best["electric_fee_kwh"] if best else None, + "service_fee_kwh": best["service_fee_kwh"] if best else None, + }) + return result + + +async def test1(): + # 测试新电途第一层结构的读取 + url = "https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/Temp/8fd79c68-fec6-4ca7-8d8e-fbff3c6862c8.jpg" + print(f"Testing First Level with URL: {url}") + result = await XinDianTuReadImageKit.parse_first_level_image_url(url) + print("First Level Result:") + print(json.dumps(result, ensure_ascii=False, indent=2)) + + +async def test2(station_name: str): + # 测试新电途第二层结构的读取 + url = "https://dsideal.obs.myhuaweicloud.com/HuangHai/Temp/SecondPage.jpg" + print(f"Testing address extraction from: {url}") + result = await XinDianTuReadImageKit.parse_address(station_name, url) + result["station_name"] = station_name + print("Address result:") + print(json.dumps(result, ensure_ascii=False, indent=2)) + + +async def test3(station_name: str): + # 测试新电途价格表图片的解析 + samples = [ + "https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/Temp/XinDianTu/1.jpg", + "https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/Temp/XinDianTu/2.jpg", + ] + rows = await XinDianTuReadImageKit.parse_price_schedule_multi(station_name, samples) + hourly = XinDianTuReadImageKit.hourly_full_day(rows) + print(json.dumps(hourly, ensure_ascii=False, indent=2)) + + +if __name__ == "__main__": + #asyncio.run(test1()) + station_name = '吉林省看守所充电站' + #asyncio.run(test2(station_name)) + asyncio.run(test3(station_name)) diff --git a/Util/__init__.py b/Util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Util/__pycache__/Kit.cpython-310.pyc b/Util/__pycache__/Kit.cpython-310.pyc new file mode 100644 index 0000000..4cb929d Binary files /dev/null and b/Util/__pycache__/Kit.cpython-310.pyc differ diff --git a/Util/__pycache__/LlmUtil.cpython-310.pyc b/Util/__pycache__/LlmUtil.cpython-310.pyc new file mode 100644 index 0000000..98f5caf Binary files /dev/null and b/Util/__pycache__/LlmUtil.cpython-310.pyc differ diff --git a/Util/__pycache__/ObsUtil.cpython-310.pyc b/Util/__pycache__/ObsUtil.cpython-310.pyc new file mode 100644 index 0000000..470c178 Binary files /dev/null and b/Util/__pycache__/ObsUtil.cpython-310.pyc differ diff --git a/Util/__pycache__/OcrParser.cpython-310.pyc b/Util/__pycache__/OcrParser.cpython-310.pyc new file mode 100644 index 0000000..b36f8f5 Binary files /dev/null and b/Util/__pycache__/OcrParser.cpython-310.pyc differ diff --git a/Util/__pycache__/PaChongGaoDeKit.cpython-310.pyc b/Util/__pycache__/PaChongGaoDeKit.cpython-310.pyc new file mode 100644 index 0000000..9e444bf Binary files /dev/null and b/Util/__pycache__/PaChongGaoDeKit.cpython-310.pyc differ diff --git a/Util/__pycache__/PaddleOCRKit.cpython-310.pyc b/Util/__pycache__/PaddleOCRKit.cpython-310.pyc new file mode 100644 index 0000000..665af33 Binary files /dev/null and b/Util/__pycache__/PaddleOCRKit.cpython-310.pyc differ diff --git a/Util/__pycache__/RedisKit.cpython-310.pyc b/Util/__pycache__/RedisKit.cpython-310.pyc new file mode 100644 index 0000000..fba8891 Binary files /dev/null and b/Util/__pycache__/RedisKit.cpython-310.pyc differ diff --git a/Util/__pycache__/RedisKit.cpython-313.pyc b/Util/__pycache__/RedisKit.cpython-313.pyc new file mode 100644 index 0000000..b9874b1 Binary files /dev/null and b/Util/__pycache__/RedisKit.cpython-313.pyc differ diff --git a/Util/__pycache__/Win32Patch.cpython-310.pyc b/Util/__pycache__/Win32Patch.cpython-310.pyc new file mode 100644 index 0000000..06616be Binary files /dev/null and b/Util/__pycache__/Win32Patch.cpython-310.pyc differ diff --git a/Util/__pycache__/XinDianTuReadImageKit.cpython-310.pyc b/Util/__pycache__/XinDianTuReadImageKit.cpython-310.pyc new file mode 100644 index 0000000..fb57996 Binary files /dev/null and b/Util/__pycache__/XinDianTuReadImageKit.cpython-310.pyc differ diff --git a/Util/__pycache__/XinDianTuReadImageKit.cpython-313.pyc b/Util/__pycache__/XinDianTuReadImageKit.cpython-313.pyc new file mode 100644 index 0000000..feea2ea Binary files /dev/null and b/Util/__pycache__/XinDianTuReadImageKit.cpython-313.pyc differ diff --git a/Util/__pycache__/__init__.cpython-310.pyc b/Util/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..19e342c Binary files /dev/null and b/Util/__pycache__/__init__.cpython-310.pyc differ diff --git a/Util/__pycache__/__init__.cpython-313.pyc b/Util/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..9b24b31 Binary files /dev/null and b/Util/__pycache__/__init__.cpython-313.pyc differ diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/run.py b/run.py new file mode 100644 index 0000000..5ac40b4 --- /dev/null +++ b/run.py @@ -0,0 +1,53 @@ +# coding=utf-8 +import sys +import os +import argparse +import asyncio + +# 添加当前目录到 sys.path +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +def main(): + parser = argparse.ArgumentParser(description="dsCrawler 统一启动入口") + # nargs='?' 表示参数可选,如果未提供,值为 None + parser.add_argument("app", nargs='?', help="要启动的小程序应用名称 (例如: XinDianTu)") + parser.add_argument("--action", default="run", help="要执行的操作 (run=全流程, crawl=仅爬取, coord=仅补全坐标)") + + args = parser.parse_args() + + if args.app is None: + print("您没有输入要爬取的供应商名称,系统将默认爬取新电途。") + app_name = "XinDianTu" + else: + app_name = args.app + + action = args.action + + print(f"🚀 正在启动应用: {app_name} (Action: {action})") + + try: + if app_name == "XinDianTu": + from Apps.XinDianTu import Run + from Apps.XinDianTu import Crawler + from Apps.XinDianTu import Coord + + if action == "run": + asyncio.run(Run.main()) + elif action == "crawl": + # 仅运行爬虫部分(需要自己处理 service 初始化) + print("暂未实现单独运行 crawl,请使用 run") + elif action == "coord": + asyncio.run(Coord.main()) + else: + print(f"未知操作: {action}") + else: + print(f"❌ 未找到应用: {app_name}") + print("可用应用: XinDianTu") + + except ImportError as e: + print(f"❌ 导入错误: {e}") + except Exception as e: + print(f"❌ 运行错误: {e}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/一键更新.cmd b/一键更新.cmd new file mode 100644 index 0000000..d8f5331 --- /dev/null +++ b/一键更新.cmd @@ -0,0 +1,21 @@ +git config --global user.name "HuangHai" +git config --global user.email "10402852@qq.com" + +:: 删除旧凭据(注意保持协议一致) +cmdkey /delete:git:http://www.yelite.cn:27825 + +:: 添加正确格式的HTTP协议凭据(注意不要带路径) +cmdkey /generic:git:http://www.yelite.cn:27825 /user:huanghai /pass:mdcija780522 + +:: 设置凭据存储(保持原有配置) +git config --global credential.helper manager + +git config --global core.autocrlf false +git config --global http.sslVerify true + +git add -A . +git commit -am 'commit' +git pull --no-edit +git push origin main + +