unrealon 2.0.14__py3-none-any.whl → 2.0.16__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/METADATA +2 -1
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/RECORD +7 -7
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/entry_points.txt +1 -0
- unrealon_installer/core.py +36 -58
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/LICENSE +0 -0
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/WHEEL +0 -0
- {unrealon-2.0.14.dist-info → unrealon-2.0.16.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unrealon
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.16
|
|
4
4
|
Summary: Enterprise-grade web scraping platform with AI-powered automation and real-time orchestration capabilities
|
|
5
5
|
Author-email: UnrealOn Team <team@unrealon.com>
|
|
6
6
|
License: MIT
|
|
@@ -33,6 +33,7 @@ Requires-Dist: aiohttp>=3.8.0
|
|
|
33
33
|
Requires-Dist: httpx>=0.23.0
|
|
34
34
|
Requires-Dist: beautifulsoup4>=4.13.5
|
|
35
35
|
Requires-Dist: pydantic-yaml>=1.6.0
|
|
36
|
+
Requires-Dist: jinja2>=3.1.0
|
|
36
37
|
Requires-Dist: rich>=13.0.0
|
|
37
38
|
Requires-Dist: pyyaml>=6.0
|
|
38
39
|
Requires-Dist: python-socketio>=5.0
|
|
@@ -127,12 +127,12 @@ unrealon_driver/utils/__init__.py,sha256=2Sz3eats5q4O2fDmefDuJt8M_zkN6xrS-9xXntW
|
|
|
127
127
|
unrealon_driver/utils/time.py,sha256=Oxk1eicKeZl8ZWbf7gu1Ll716k6CpXmVj67FHSnPIsA,184
|
|
128
128
|
unrealon_installer/__init__.py,sha256=JxA2hKat5E6R6nt-batuAc-2Cr0nO2M0XW0vOFU_xy0,333
|
|
129
129
|
unrealon_installer/browser_fixes.py,sha256=I09aEMWwvN8-SbGJqJQHcnvsR4_JmjoiRKoyIqft4Rc,7754
|
|
130
|
-
unrealon_installer/core.py,sha256=
|
|
130
|
+
unrealon_installer/core.py,sha256=2BDDTrKthFtSqdRq0gSLkzN6lpMC9ER024wFMb1E5VQ,4584
|
|
131
131
|
unrealon_installer/platform.py,sha256=NI6-j6674jLWjF0RFRDwXW01D0OueEhhijjevgmbAVs,3122
|
|
132
132
|
unrealon_installer/templates.py,sha256=jU3Fznp_VfZedfWNutVzepGUv2QYI2Q4LM_j8H38CrU,1896
|
|
133
|
-
unrealon-2.0.
|
|
134
|
-
unrealon-2.0.
|
|
135
|
-
unrealon-2.0.
|
|
136
|
-
unrealon-2.0.
|
|
137
|
-
unrealon-2.0.
|
|
138
|
-
unrealon-2.0.
|
|
133
|
+
unrealon-2.0.16.dist-info/LICENSE,sha256=eEH8mWZW49YMpl4Sh5MtKqkZ8aVTzKQXiNPEnvL14ns,1070
|
|
134
|
+
unrealon-2.0.16.dist-info/METADATA,sha256=-z8xcBDIOXBoV1_iBWpMIo8CZx9_R0JlTlF73etZS24,15718
|
|
135
|
+
unrealon-2.0.16.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
|
|
136
|
+
unrealon-2.0.16.dist-info/entry_points.txt,sha256=tBJgozewpyuXznEYIsLwfE1s16VRjy3Wizhuyh26zb4,153
|
|
137
|
+
unrealon-2.0.16.dist-info/top_level.txt,sha256=qN6Q72fe4_i8mTOhYcO3fhGa3g4dmBgvZOsqmK4j8D8,66
|
|
138
|
+
unrealon-2.0.16.dist-info/RECORD,,
|
unrealon_installer/core.py
CHANGED
|
@@ -14,21 +14,22 @@ from .templates import TemplateEngine
|
|
|
14
14
|
from .browser_fixes import fix_browsers, diagnose_browsers
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def install_parser(
|
|
17
|
+
def install_parser(parser_path: str = ".") -> bool:
|
|
18
18
|
"""
|
|
19
19
|
Install everything for a UnrealOn parser.
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
|
-
parser_name: Name like "upbit_concurrent"
|
|
23
22
|
parser_path: Path to parser directory
|
|
24
23
|
|
|
25
24
|
Returns:
|
|
26
25
|
True if success, False if failed
|
|
27
26
|
"""
|
|
27
|
+
parser_dir = Path(parser_path).resolve()
|
|
28
|
+
parser_name = parser_dir.name # Auto-detect from directory name
|
|
29
|
+
|
|
28
30
|
print(f"🚀 Installing {parser_name}")
|
|
29
31
|
print("=" * 40)
|
|
30
32
|
|
|
31
|
-
parser_dir = Path(parser_path).resolve()
|
|
32
33
|
os.chdir(parser_dir)
|
|
33
34
|
|
|
34
35
|
# 1. Apply platform fixes
|
|
@@ -46,74 +47,51 @@ def install_parser(parser_name: str, parser_path: str = ".") -> bool:
|
|
|
46
47
|
|
|
47
48
|
print(f"✅ Python {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")
|
|
48
49
|
|
|
49
|
-
# 3.
|
|
50
|
-
|
|
51
|
-
return False
|
|
52
|
-
|
|
53
|
-
# 4. Install browsers
|
|
54
|
-
if not _install_browsers():
|
|
55
|
-
return False
|
|
50
|
+
# 3. Check if basic tools are available (optional)
|
|
51
|
+
_check_tools_availability()
|
|
56
52
|
|
|
57
|
-
#
|
|
53
|
+
# 4. Create batch files (Windows only)
|
|
58
54
|
if platform.system() == "Windows":
|
|
59
55
|
_create_batch_files(parser_name)
|
|
60
56
|
|
|
61
|
-
print(f"\n✅ {parser_name}
|
|
62
|
-
print("
|
|
57
|
+
print(f"\n✅ {parser_name} setup completed!")
|
|
58
|
+
print("\n📋 Next steps:")
|
|
59
|
+
print("1. Install dependencies: pip install -r requirements.txt")
|
|
60
|
+
print("2. Install browsers: playwright install chromium")
|
|
61
|
+
print("3. Run parser: python main.py 5 2")
|
|
63
62
|
if platform.system() == "Windows":
|
|
64
|
-
print("Or:
|
|
63
|
+
print(" Or use: START.bat (includes setup menu)")
|
|
65
64
|
|
|
66
65
|
return True
|
|
67
66
|
|
|
68
67
|
|
|
69
|
-
def
|
|
70
|
-
"""
|
|
71
|
-
print("
|
|
68
|
+
def _check_tools_availability():
|
|
69
|
+
"""Check if basic tools are available (non-blocking)."""
|
|
70
|
+
print("🔍 Checking available tools...")
|
|
72
71
|
|
|
72
|
+
# Check pip
|
|
73
73
|
try:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
print("
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def _install_browsers() -> bool:
|
|
91
|
-
"""Install Playwright browsers with smart fixing."""
|
|
92
|
-
print("🌐 Installing browsers...")
|
|
93
|
-
|
|
94
|
-
# First, diagnose any issues
|
|
95
|
-
issues = diagnose_browsers()
|
|
96
|
-
|
|
97
|
-
# If there are issues, try to fix them
|
|
98
|
-
if not all(issues.values()):
|
|
99
|
-
print("🔧 Detected browser issues, applying fixes...")
|
|
100
|
-
if fix_browsers(force_reinstall=False):
|
|
101
|
-
print("✅ Browser issues fixed")
|
|
102
|
-
return True
|
|
103
|
-
else:
|
|
104
|
-
print("❌ Could not fix browser issues")
|
|
105
|
-
return False
|
|
106
|
-
|
|
107
|
-
# If no issues, just install normally
|
|
74
|
+
subprocess.run([sys.executable, "-m", "pip", "--version"],
|
|
75
|
+
check=True, capture_output=True)
|
|
76
|
+
print("✅ pip available")
|
|
77
|
+
except:
|
|
78
|
+
print("⚠️ pip not available")
|
|
79
|
+
|
|
80
|
+
# Check if requirements.txt exists
|
|
81
|
+
if Path("requirements.txt").exists():
|
|
82
|
+
print("✅ requirements.txt found")
|
|
83
|
+
print("💡 To install dependencies: pip install -r requirements.txt")
|
|
84
|
+
else:
|
|
85
|
+
print("⚠️ requirements.txt not found")
|
|
86
|
+
|
|
87
|
+
# Check playwright
|
|
108
88
|
try:
|
|
109
|
-
subprocess.run([sys.executable, "-
|
|
89
|
+
subprocess.run([sys.executable, "-c", "import playwright"],
|
|
110
90
|
check=True, capture_output=True)
|
|
111
|
-
print("✅
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
print(
|
|
115
|
-
# Try fixing as fallback
|
|
116
|
-
return fix_browsers(force_reinstall=True)
|
|
91
|
+
print("✅ playwright available")
|
|
92
|
+
except:
|
|
93
|
+
print("⚠️ playwright not available")
|
|
94
|
+
print("💡 To install: pip install playwright && playwright install chromium")
|
|
117
95
|
|
|
118
96
|
|
|
119
97
|
def _create_batch_files(parser_name: str):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|