RIZER 1.0.20__py3-none-any.whl → 1.4.0__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.
Files changed (79) hide show
  1. RIZER/APIS/__pycache__/__init__.cpython-312.pyc +0 -0
  2. RIZER/Pb2/__pycache__/__init__.cpython-312.pyc +0 -0
  3. {rizer → RIZER}/main.py +1 -1
  4. {rizer → RIZER}/requirements.txt +4 -0
  5. RIZER/rizer_runner.py +263 -0
  6. RIZER/setup.py +93 -0
  7. RIZER/tests/__init__.py +1 -0
  8. RIZER/tests/test_runner.py +90 -0
  9. rizer-1.4.0.dist-info/METADATA +232 -0
  10. rizer-1.4.0.dist-info/RECORD +47 -0
  11. rizer-1.4.0.dist-info/entry_points.txt +2 -0
  12. rizer-1.4.0.dist-info/licenses/LICENSE +21 -0
  13. rizer-1.4.0.dist-info/top_level.txt +1 -0
  14. rizer/RIZER.egg-info/PKG-INFO +0 -3
  15. rizer/RIZER.egg-info/SOURCES.txt +0 -19
  16. rizer/RIZER.egg-info/dependency_links.txt +0 -1
  17. rizer/RIZER.egg-info/entry_points.txt +0 -2
  18. rizer/RIZER.egg-info/top_level.txt +0 -2
  19. rizer/__init__.py +0 -1
  20. rizer/build/lib/APIS/__init__.py +0 -1
  21. rizer/build/lib/APIS/insta.py +0 -140
  22. rizer/build/lib/Pb2/DEcwHisPErMsG_pb2.py +0 -42
  23. rizer/build/lib/Pb2/Fo_pb2.py +0 -28
  24. rizer/build/lib/Pb2/GenWhisperMsg_pb2.py +0 -48
  25. rizer/build/lib/Pb2/MajoRLoGinrEq_pb2.py +0 -28
  26. rizer/build/lib/Pb2/MajoRLoGinrEs_pb2.py +0 -36
  27. rizer/build/lib/Pb2/PorTs_pb2.py +0 -36
  28. rizer/build/lib/Pb2/Team_msg_pb2.py +0 -48
  29. rizer/build/lib/Pb2/__init__.py +0 -1
  30. rizer/build/lib/Pb2/sQ_pb2.py +0 -38
  31. rizer/create_inits.py +0 -17
  32. rizer/dist/rizer-1.0.0-py3-none-any.whl +0 -0
  33. rizer/dist/rizer-1.0.0.tar.gz +0 -0
  34. rizer/install.sh +0 -36
  35. rizer/package.json +0 -13
  36. rizer/pyproject.toml +0 -3
  37. rizer/rizer_launcher.py +0 -57
  38. rizer/rizerrunner.py +0 -57
  39. rizer/runner.py +0 -46
  40. rizer/setup.py +0 -13
  41. rizer-1.0.20.dist-info/METADATA +0 -3
  42. rizer-1.0.20.dist-info/RECORD +0 -68
  43. rizer-1.0.20.dist-info/entry_points.txt +0 -2
  44. rizer-1.0.20.dist-info/top_level.txt +0 -3
  45. rizer_launcher.py +0 -59
  46. {APIS → RIZER/APIS}/__init__.py +0 -0
  47. {rizer → RIZER}/APIS/__pycache__/insta.cpython-312.pyc +0 -0
  48. {APIS → RIZER/APIS}/insta.py +0 -0
  49. {Pb2 → RIZER/Pb2}/DEcwHisPErMsG_pb2.py +0 -0
  50. {Pb2 → RIZER/Pb2}/Fo_pb2.py +0 -0
  51. {Pb2 → RIZER/Pb2}/GenWhisperMsg_pb2.py +0 -0
  52. {Pb2 → RIZER/Pb2}/MajoRLoGinrEq_pb2.py +0 -0
  53. {Pb2 → RIZER/Pb2}/MajoRLoGinrEs_pb2.py +0 -0
  54. {Pb2 → RIZER/Pb2}/PorTs_pb2.py +0 -0
  55. {Pb2 → RIZER/Pb2}/Team_msg_pb2.py +0 -0
  56. {Pb2 → RIZER/Pb2}/__init__.py +0 -0
  57. {rizer → RIZER}/Pb2/__pycache__/DEcwHisPErMsG_pb2.cpython-312.pyc +0 -0
  58. {rizer → RIZER}/Pb2/__pycache__/MajoRLoGinrEq_pb2.cpython-312.pyc +0 -0
  59. {rizer → RIZER}/Pb2/__pycache__/MajoRLoGinrEs_pb2.cpython-312.pyc +0 -0
  60. {rizer → RIZER}/Pb2/__pycache__/PorTs_pb2.cpython-312.pyc +0 -0
  61. {rizer → RIZER}/Pb2/__pycache__/Team_msg_pb2.cpython-312.pyc +0 -0
  62. {rizer → RIZER}/Pb2/__pycache__/sQ_pb2.cpython-312.pyc +0 -0
  63. {Pb2 → RIZER/Pb2}/sQ_pb2.py +0 -0
  64. {rizer → RIZER}/accounts.json +0 -0
  65. {rizer → RIZER/build/lib}/APIS/__init__.py +0 -0
  66. {rizer → RIZER/build/lib}/APIS/insta.py +0 -0
  67. {rizer → RIZER/build/lib}/Pb2/DEcwHisPErMsG_pb2.py +0 -0
  68. {rizer → RIZER/build/lib}/Pb2/Fo_pb2.py +0 -0
  69. {rizer → RIZER/build/lib}/Pb2/GenWhisperMsg_pb2.py +0 -0
  70. {rizer → RIZER/build/lib}/Pb2/MajoRLoGinrEq_pb2.py +0 -0
  71. {rizer → RIZER/build/lib}/Pb2/MajoRLoGinrEs_pb2.py +0 -0
  72. {rizer → RIZER/build/lib}/Pb2/PorTs_pb2.py +0 -0
  73. {rizer → RIZER/build/lib}/Pb2/Team_msg_pb2.py +0 -0
  74. {rizer → RIZER/build/lib}/Pb2/__init__.py +0 -0
  75. {rizer → RIZER/build/lib}/Pb2/sQ_pb2.py +0 -0
  76. {rizer → RIZER}/xC4.py +0 -0
  77. {rizer → RIZER}/xHeaders.py +0 -0
  78. /rizer/xKEys.py → /RIZER/xKEYs.py +0 -0
  79. {rizer-1.0.20.dist-info → rizer-1.4.0.dist-info}/WHEEL +0 -0
{rizer → RIZER}/main.py RENAMED
@@ -7,7 +7,7 @@ from concurrent.futures import ThreadPoolExecutor
7
7
  from threading import Thread
8
8
  from Pb2 import DEcwHisPErMsG_pb2 , MajoRLoGinrEs_pb2 , PorTs_pb2 , MajoRLoGinrEq_pb2 , sQ_pb2 , Team_msg_pb2
9
9
  from cfonts import render, say
10
- from .APIS import insta
10
+ from RIZER.APIS import insta
11
11
  from flask import Flask, jsonify, request
12
12
  import asyncio
13
13
  import signal
@@ -1,4 +1,8 @@
1
1
  requests
2
+ protobuf
3
+ colorama
4
+ pycryptodome
5
+ requests
2
6
  httpx
3
7
  google
4
8
  protobuf
RIZER/rizer_runner.py ADDED
@@ -0,0 +1,263 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ RIZER Launcher - Terminal Entry Point
4
+ Handles UID/Password injection and main.py execution
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import re
10
+ import subprocess
11
+ import shutil
12
+ from pathlib import Path
13
+
14
+ # Color codes for terminal
15
+ class Colors:
16
+ RED = '\033[91m'
17
+ GREEN = '\033[92m'
18
+ YELLOW = '\033[93m'
19
+ BLUE = '\033[94m'
20
+ MAGENTA = '\033[95m'
21
+ CYAN = '\033[96m'
22
+ WHITE = '\033[97m'
23
+ BOLD = '\033[1m'
24
+ UNDERLINE = '\033[4m'
25
+ END = '\033[0m'
26
+
27
+ def clear_screen():
28
+ """Clear terminal screen"""
29
+ os.system('cls' if os.name == 'nt' else 'clear')
30
+
31
+ def print_logo():
32
+ """Display colorful ASCII logo"""
33
+ logo = f"""
34
+ {Colors.CYAN}{Colors.BOLD}
35
+ ██████╗░██╗███████╗███████╗██████╗░
36
+ ██╔══██╗██║╚════██║██╔════╝██╔══██╗
37
+ ██████╔╝██║░░███╔═╝█████╗░░██████╔╝
38
+ ██╔══██╗██║██╔══╝░░██╔══╝░░██╔══██╗
39
+ ██║░░██║██║███████╗███████╗██║░░██║
40
+ ╚═╝░░╚═╝╚═╝╚══════╝╚══════╝╚═╝░░╚═╝
41
+ {Colors.END}
42
+ {Colors.GREEN}{Colors.BOLD} RIZER v1.0.0{Colors.END}
43
+ {Colors.YELLOW} Free Fire Automation Tool{Colors.END}
44
+ """
45
+ print(logo)
46
+
47
+ def get_package_dir():
48
+ """Get the directory where package is installed"""
49
+ return Path(__file__).parent.absolute()
50
+
51
+ def check_files():
52
+ """Check for required files and warn if missing"""
53
+ pkg_dir = get_package_dir()
54
+ required = {
55
+ 'main.py': pkg_dir / 'main.py',
56
+ 'APIS/': pkg_dir / 'APIS',
57
+ 'Pb2/': pkg_dir / 'Pb2',
58
+ 'accounts.json': pkg_dir / 'accounts.json'
59
+ }
60
+
61
+ missing = []
62
+ for name, path in required.items():
63
+ if not path.exists():
64
+ missing.append(name)
65
+
66
+ if missing:
67
+ print(f"{Colors.YELLOW}⚠️ Warning: Missing files: {', '.join(missing)}{Colors.END}")
68
+ print(f"{Colors.YELLOW} Some features may not work correctly.{Colors.END}\n")
69
+ return False
70
+ return True
71
+
72
+ def update_main_py(uid, password):
73
+ """Update UID and Password in main.py"""
74
+ pkg_dir = get_package_dir()
75
+ main_py = pkg_dir / 'main.py'
76
+
77
+ if not main_py.exists():
78
+ print(f"{Colors.RED}❌ Error: main.py not found!{Colors.END}")
79
+ return False
80
+
81
+ try:
82
+ # Read content
83
+ with open(main_py, 'r', encoding='utf-8', errors='ignore') as f:
84
+ content = f.read()
85
+
86
+ # Pattern to match: Uid , Pw = 'uiddd','passwordd'
87
+ # Handle both single and double quotes
88
+ patterns = [
89
+ r"Uid\s*,\s*Pw\s*=\s*'uiddd','passwordd'",
90
+ r'Uid\s*,\s*Pw\s*=\s*"uiddd","passwordd"',
91
+ r"Uid\s*,\s*Pw\s*=\s*'[^']*','[^']*'",
92
+ r'Uid\s*,\s*Pw\s*=\s*"[^"]*","[^"]*"'
93
+ ]
94
+
95
+ replacement = f"Uid , Pw = '{uid}','{password}'"
96
+
97
+ new_content = None
98
+ for pattern in patterns:
99
+ if re.search(pattern, content):
100
+ new_content = re.sub(pattern, replacement, content)
101
+ break
102
+
103
+ if new_content is None:
104
+ # Try line-by-line replacement
105
+ lines = content.split('\n')
106
+ new_lines = []
107
+ found = False
108
+ for line in lines:
109
+ if 'uiddd' in line and 'passwordd' in line:
110
+ line = re.sub(r"'uiddd'", f"'{uid}'", line)
111
+ line = re.sub(r'"uiddd"', f'"{uid}"', line)
112
+ line = re.sub(r"'passwordd'", f"'{password}'", line)
113
+ line = re.sub(r'"passwordd"', f'"{password}"', line)
114
+ found = True
115
+ new_lines.append(line)
116
+
117
+ if found:
118
+ new_content = '\n'.join(new_lines)
119
+
120
+ if new_content is None:
121
+ print(f"{Colors.RED}❌ Error: Could not find UID/Password pattern in main.py{Colors.END}")
122
+ return False
123
+
124
+ # Write back
125
+ with open(main_py, 'w', encoding='utf-8') as f:
126
+ f.write(new_content)
127
+
128
+ return True
129
+
130
+ except Exception as e:
131
+ print(f"{Colors.RED}❌ Error updating main.py: {e}{Colors.END}")
132
+ return False
133
+
134
+ def reset_main_py():
135
+ """Reset main.py to default values"""
136
+ pkg_dir = get_package_dir()
137
+ main_py = pkg_dir / 'main.py'
138
+
139
+ if not main_py.exists():
140
+ return
141
+
142
+ try:
143
+ with open(main_py, 'r', encoding='utf-8', errors='ignore') as f:
144
+ content = f.read()
145
+
146
+ # Reset to defaults
147
+ content = re.sub(r"Uid\s*,\s*Pw\s*=\s*'[^']*','[^']*'", "Uid , Pw = 'uiddd','passwordd'", content)
148
+ content = re.sub(r'Uid\s*,\s*Pw\s*=\s*"[^"]*","[^"]*"', 'Uid , Pw = "uiddd","passwordd"', content)
149
+
150
+ with open(main_py, 'w', encoding='utf-8') as f:
151
+ f.write(content)
152
+ except:
153
+ pass
154
+
155
+ def fix_imports():
156
+ """Fix relative import issues by adding package to path"""
157
+ pkg_dir = get_package_dir()
158
+ if str(pkg_dir) not in sys.path:
159
+ sys.path.insert(0, str(pkg_dir))
160
+
161
+ # Also add APIS and Pb2 to path
162
+ apis_dir = pkg_dir / 'APIS'
163
+ pb2_dir = pkg_dir / 'Pb2'
164
+
165
+ if apis_dir.exists() and str(apis_dir) not in sys.path:
166
+ sys.path.insert(0, str(apis_dir))
167
+ if pb2_dir.exists() and str(pb2_dir) not in sys.path:
168
+ sys.path.insert(0, str(pb2_dir))
169
+
170
+ def run_main_py():
171
+ """Execute main.py as raw script"""
172
+ pkg_dir = get_package_dir()
173
+ main_py = pkg_dir / 'main.py'
174
+
175
+ if not main_py.exists():
176
+ print(f"{Colors.RED}❌ Error: main.py not found!{Colors.END}")
177
+ return 1
178
+
179
+ try:
180
+ # Fix imports before running
181
+ fix_imports()
182
+
183
+ # Change to package directory so relative imports work
184
+ original_dir = os.getcwd()
185
+ os.chdir(pkg_dir)
186
+
187
+ # Execute main.py
188
+ print(f"{Colors.GREEN}🚀 Launching main.py...{Colors.END}\n")
189
+
190
+ # Use subprocess to run in isolated environment but show logs
191
+ env = os.environ.copy()
192
+ env['PYTHONPATH'] = str(pkg_dir)
193
+
194
+ result = subprocess.run(
195
+ [sys.executable, str(main_py)],
196
+ cwd=str(pkg_dir),
197
+ env=env
198
+ )
199
+
200
+ os.chdir(original_dir)
201
+ return result.returncode
202
+
203
+ except KeyboardInterrupt:
204
+ print(f"\n{Colors.YELLOW}⚠️ Interrupted by user{Colors.END}")
205
+ return 0
206
+ except Exception as e:
207
+ print(f"{Colors.RED}❌ Error running main.py: {e}{Colors.END}")
208
+ return 1
209
+
210
+ def main():
211
+ """Main entry point"""
212
+ try:
213
+ clear_screen()
214
+ print_logo()
215
+
216
+ # Check files (warn but don't crash)
217
+ check_files()
218
+
219
+ # Get user input
220
+ print(f"{Colors.CYAN}{Colors.BOLD}╔════════════════════════════════════╗{Colors.END}")
221
+ print(f"{Colors.CYAN}{Colors.BOLD}║ Account Configuration ║{Colors.END}")
222
+ print(f"{Colors.CYAN}{Colors.BOLD}╚════════════════════════════════════╝{Colors.END}\n")
223
+
224
+ uid = input(f"{Colors.GREEN}Enter UID: {Colors.END}").strip()
225
+
226
+ if not uid:
227
+ print(f"{Colors.RED}❌ UID cannot be empty!{Colors.END}")
228
+ return 1
229
+
230
+ # Password visible during input (as requested)
231
+ password = input(f"{Colors.GREEN}Enter Password: {Colors.END}").strip()
232
+
233
+ if not password:
234
+ print(f"{Colors.RED}❌ Password cannot be empty!{Colors.END}")
235
+ return 1
236
+
237
+ print(f"\n{Colors.YELLOW}⚙️ Updating credentials...{Colors.END}")
238
+
239
+ # Update main.py
240
+ if not update_main_py(uid, password):
241
+ return 1
242
+
243
+ print(f"{Colors.GREEN}✅ Credentials updated successfully!{Colors.END}\n")
244
+
245
+ # Run main.py
246
+ exit_code = run_main_py()
247
+
248
+ # Reset credentials after execution
249
+ reset_main_py()
250
+
251
+ return exit_code
252
+
253
+ except KeyboardInterrupt:
254
+ print(f"\n{Colors.YELLOW}\n⚠️ Exiting safely...{Colors.END}")
255
+ reset_main_py()
256
+ return 0
257
+ except Exception as e:
258
+ print(f"{Colors.RED}❌ Unexpected error: {e}{Colors.END}")
259
+ reset_main_py()
260
+ return 1
261
+
262
+ if __name__ == '__main__':
263
+ sys.exit(main())
RIZER/setup.py ADDED
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ RIZER - Free Fire Automation Tool
4
+ Setup configuration for PyPI distribution
5
+ """
6
+
7
+ from setuptools import setup, find_packages
8
+ from pathlib import Path
9
+ import os
10
+
11
+ # Read requirements
12
+ def read_requirements():
13
+ req_file = Path(__file__).parent / 'requirements.txt'
14
+ if req_file.exists():
15
+ with open(req_file, encoding='utf-8') as f:
16
+ return [line.strip() for line in f if line.strip() and not line.startswith('#')]
17
+ return []
18
+
19
+ # Read long description
20
+ def read_readme():
21
+ readme_file = Path(__file__).parent / 'README.md'
22
+ if readme_file.exists():
23
+ with open(readme_file, encoding='utf-8') as f:
24
+ return f.read()
25
+ return "RIZER - Free Fire Automation Tool"
26
+
27
+ setup(
28
+ name='RIZER',
29
+ version='1.4.0',
30
+ author='RIZER Team',
31
+ author_email='support@rizer.tool',
32
+ description='Free Fire Automation Tool with Terminal Launcher',
33
+ long_description=read_readme(),
34
+ long_description_content_type='text/markdown',
35
+ url='https://github.com/rizer/tool',
36
+ packages=find_packages(),
37
+
38
+ # Include package data files
39
+ include_package_data=True,
40
+
41
+ # Explicitly specify package data for better control
42
+ package_data={
43
+ 'RIZER': [
44
+ 'main.py',
45
+ 'xC4.py',
46
+ 'xHeaders.py',
47
+ 'xKEYs.py',
48
+ 'accounts.json',
49
+ 'requirements.txt',
50
+ 'APIS/*',
51
+ 'APIS/**/*',
52
+ 'Pb2/*',
53
+ 'Pb2/**/*',
54
+ ],
55
+ },
56
+
57
+ # Alternative: use MANIFEST.in for more complex patterns
58
+ # include_package_data=True will respect MANIFEST.in
59
+
60
+ install_requires=read_requirements(),
61
+
62
+ entry_points={
63
+ 'console_scripts': [
64
+ 'RIZER=RIZER.rizer_runner:main',
65
+ ],
66
+ },
67
+
68
+ classifiers=[
69
+ 'Development Status :: 4 - Beta',
70
+ 'Intended Audience :: End Users/Desktop',
71
+ 'License :: OSI Approved :: MIT License',
72
+ 'Programming Language :: Python :: 3',
73
+ 'Programming Language :: Python :: 3.7',
74
+ 'Programming Language :: Python :: 3.8',
75
+ 'Programming Language :: Python :: 3.9',
76
+ 'Programming Language :: Python :: 3.10',
77
+ 'Programming Language :: Python :: 3.11',
78
+ 'Programming Language :: Python :: 3.12',
79
+ 'Operating System :: OS Independent',
80
+ 'Environment :: Console',
81
+ 'Topic :: Utilities',
82
+ ],
83
+
84
+ python_requires='>=3.7',
85
+ zip_safe=False,
86
+
87
+ # Additional metadata
88
+ keywords='free fire, automation, gaming, tool, cli',
89
+ project_urls={
90
+ 'Bug Reports': 'https://github.com/rizer/tool/issues',
91
+ 'Source': 'https://github.com/rizer/tool',
92
+ },
93
+ )
@@ -0,0 +1 @@
1
+ # Tests package
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ RIZER Test Suite
4
+ Tests for rizer_runner functionality
5
+ """
6
+
7
+ import unittest
8
+ import sys
9
+ import os
10
+ import tempfile
11
+ import shutil
12
+ from pathlib import Path
13
+
14
+ # Add parent to path
15
+ sys.path.insert(0, str(Path(__file__).parent.parent))
16
+
17
+ from RIZER.rizer_runner import Colors
18
+
19
+ class TestRIZERRunner(unittest.TestCase):
20
+
21
+ def setUp(self):
22
+ """Create temporary directory for tests"""
23
+ self.test_dir = tempfile.mkdtemp()
24
+ self.test_main = Path(self.test_dir) / 'main.py'
25
+
26
+ # Create test main.py with pattern
27
+ test_content = """
28
+ # Test main.py
29
+ Uid , Pw = 'uiddd','passwordd'
30
+
31
+ def main():
32
+ print(f"UID: {Uid}")
33
+ print(f"PW: {Pw}")
34
+ """
35
+ self.test_main.write_text(test_content)
36
+
37
+ def tearDown(self):
38
+ """Clean up temporary directory"""
39
+ shutil.rmtree(self.test_dir)
40
+
41
+ def test_update_main_py_pattern(self):
42
+ """Test UID/Password pattern exists"""
43
+ content = self.test_main.read_text()
44
+ self.assertIn("'uiddd'", content)
45
+ self.assertIn("'passwordd'", content)
46
+
47
+ def test_colors_exist(self):
48
+ """Test color codes are defined"""
49
+ self.assertTrue(hasattr(Colors, 'RED'))
50
+ self.assertTrue(hasattr(Colors, 'GREEN'))
51
+ self.assertTrue(hasattr(Colors, 'CYAN'))
52
+ self.assertTrue(hasattr(Colors, 'END'))
53
+
54
+ class TestPackageStructure(unittest.TestCase):
55
+
56
+ def test_package_files_exist(self):
57
+ """Test that all required files exist"""
58
+ package_dir = Path(__file__).parent.parent / 'RIZER'
59
+
60
+ required_files = [
61
+ '__init__.py',
62
+ 'rizer_runner.py',
63
+ 'main.py',
64
+ ]
65
+
66
+ for file in required_files:
67
+ path = package_dir / file
68
+ self.assertTrue(path.exists(), f"Missing required file: {file}")
69
+
70
+ def test_entry_point(self):
71
+ """Test that entry point function exists"""
72
+ from RIZER.rizer_runner import main
73
+ self.assertTrue(callable(main))
74
+
75
+ def run_tests():
76
+ """Run the test suite"""
77
+ loader = unittest.TestLoader()
78
+ suite = unittest.TestSuite()
79
+
80
+ suite.addTests(loader.loadTestsFromTestCase(TestRIZERRunner))
81
+ suite.addTests(loader.loadTestsFromTestCase(TestPackageStructure))
82
+
83
+ runner = unittest.TextTestRunner(verbosity=2)
84
+ result = runner.run(suite)
85
+
86
+ return result.wasSuccessful()
87
+
88
+ if __name__ == '__main__':
89
+ success = run_tests()
90
+ sys.exit(0 if success else 1)