Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- try:
- import npyscreen
- except ImportError:
- raise ImportError('Установи необходимый пакет командой "pip install npyscreen"')
- import re
- import threading
- from subprocess import Popen, PIPE
- '''
- Скрипт для упрощения понимания происходящего. Если он тебе не нравится, просто не используй его.
- Предполагается, что у тебя установлен https://github.com/JayDDee/cpuminer-opt
- Предполагается, что у тебя установлен python3 и модуль npyscreen.
- Скрипт работает через жопу, это говнокод, бла-бла-бла... Допиливай сам, умник. Мне надоело.
- '''
- MINER_NAME: str = "cpuminer" # на случай, если нужен './cpuminer' или что-то ещё
- MINER_ALGO: str = "yespowerr16" # это вряд ли придётся менять
- POOL_ADDRESS: str = "2chpool.cc" # пул ещё не сдох?
- WALLET: str = "YnGGEgfH6SmjBHXDYr7hemoqq1Ey7PhRpy.sup2ch" # оставь как есть!! не трогай эту настройку.
- IGNORED_WORDS = ["**********",
- "A",
- "with",
- "BTC",
- "CPU",
- "CPU:",
- "SW",
- "Algo",
- "Starting",
- "Lost",
- "Diff",
- "Stale"]
- class MamkinMiner(npyscreen.NPSAppManaged):
- def __init__(self):
- self.miner = Popen
- self.ready = False
- self.stat = [['За последние', '--'], # 0
- ['Хешрейт', 'погоди'], # 1
- ['Скорость шариков', 'погоди'], # 2
- ['Отправлено шариков', '0'], # 3
- ['Принято шариков', '0'], # 4
- ['Накопано блоков', 'ты серьёзно?'], # 5
- ['За эту сессию', ''], # 6
- ['Хешрейт', 'погоди'], # 7
- ['Скорость шариков', 'погоди'], # 8
- ['Отправлено шариков', '0'], # 9
- ['Принято шариков', '0'], # 10
- ['Накопано блоков', 'не смеши'], # 11
- ['ХР по мнению пула', 'погоди'], # 12
- ['Мин. сложность', 'погоди'], # 13
- ['Макс. сложность', 'погоди'], # 14
- ['Твоя сложность сейчас', 'погоди'], # 15
- ['Сложность сети', 'погоди'], # 16
- ['Текущий блок', 'погоди'], # 17
- ['Жоп', 'погоди']] # 18
- self.F = npyscreen.Form
- self.block_last = npyscreen.BoxTitle
- self.block_overall = npyscreen.BoxTitle
- self.block_varia = npyscreen.BoxTitle
- self.operation_thread = threading.Thread(target=self.start_mining)
- self.operation_thread.start()
- super().__init__()
- def main(self):
- self.F = npyscreen.Form(name='Мам, смотри, я майнер! Ну маааам...')
- self.block_last = self.F.add(npyscreen.BoxTitle, max_width=40, max_height=7)
- self.update_text(self.block_last)
- self.block_overall = self.F.add(npyscreen.BoxTitle, max_width=40, max_height=7)
- self.update_text(self.block_overall)
- self.block_varia = self.F.add(npyscreen.BoxTitle, name="Всякоразличности:", max_width=40, max_height=9)
- self.update_text(self.block_varia)
- self.F.edit()
- def update_text(self, text_block):
- out = []
- if text_block == self.block_last:
- start, stop = 1, 5
- text_block.name = ' '.join(self.stat[0])
- elif text_block == self.block_overall:
- start, stop = 7, 11
- text_block.name = ' '.join(self.stat[6])
- elif text_block == self.block_varia:
- start, stop = 12, 18
- line_len = 35
- for i in range(start, stop + 1):
- n = line_len - len(self.stat[i][0]) - len(self.stat[i][1])
- out.append(self.stat[i][0] + ' ' * n + self.stat[i][1])
- text_block.values = out
- text_block.display()
- def start_mining(self):
- self.miner = Popen([MINER_NAME,
- '-a', MINER_ALGO,
- '-o', f'stratum+tcp://{POOL_ADDRESS}:63368',
- '-u', WALLET,
- '-p', 'c=YTN', '-q', '--no-color',
- '--cpu-affinity', '0xff', '-t', '8'],
- stdout=PIPE, encoding='utf-8')
- for line in iter(self.miner.stdout.readline, b''):
- line = line.strip()
- if len(line):
- self.parse(line)
- def parse(self, data):
- words = data.split()
- try:
- if words[0] in IGNORED_WORDS:
- pass
- elif re.fullmatch(r'\[\d{4}-\d\d-\d\d', words[0]):
- if words[2] == 'New' and words[3] == 'Work:':
- self.stat[17][1] = words[5][:-1] # block
- self.stat[16][1] = words[8][:-1] # net diff
- self.stat[18][1] = words[10] # job
- elif words[2] == 'New' and words[3] == 'Stratum':
- self.stat[15][1] = words[5][:-1]
- elif words[0] == "Periodic":
- self.stat[0][1] = words[2]
- self.stat[6][1] = words[3]
- elif words[0] == "Share":
- self.stat[2][1] = words[2]
- self.stat[8][1] = words[3]
- elif words[0] == "Hash":
- self.stat[1][1] = words[2]
- self.stat[7][1] = words[3]
- self.stat[12][1] = words[4][1:-1]
- elif words[0] == "Submitted":
- self.stat[3][1] = words[1]
- self.stat[9][1] = words[2]
- elif words[0] == "Accepted":
- self.stat[4][1] = words[1]
- self.stat[10][1] = words[2]
- elif words[0] == "Hi/Lo":
- self.stat[14][1] = words[3]
- self.stat[13][1] = words[5]
- else:
- pass
- except IndexError:
- print("словили")
- self.update_text(self.block_last)
- self.update_text(self.block_overall)
- self.update_text(self.block_varia)
- if __name__ == '__main__':
- app = MamkinMiner()
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment