Переделать скрипт для автоматической записи видео
Цена договорная
Есть скрипт, который автоматически запускает запись в OBS, когда на бирже открывается позиция (подключение происходит через API ключи). Помимо этого он автоматически переименовывает файл и указывает название монеты и тд.
Мне нужно переделать этот скрипт под простое нажатие кнопки. Проще говоря, открывается сделка - нажимается клавиша - сделка закрывается - клавиша нажимается снова.
Вот код основного файла:
from binance.client import Client
import time
import getpass
import os
import sys
import subprocess
import tempfile
import win32gui, win32con
import ctypes
ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 6 )
API_KEY,SECRET_KEY = open("keys.txt","r").read().split("\n")
client = Client(API_KEY, SECRET_KEY)
# The_program_to_hide = win32gui.GetForegroundWindow()
# win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
videos = "C:\\Users\\vadim\\Videos"
def start_recording():
# For unixish systems:
args = ["obs"]
cwd = None
# For Windows:
if sys.platform == "win32":
cwd = r"C:\Program Files\obs-studio\bin\64bit"
args = [os.path.join(cwd, "obs64.exe")]
args.append("--startrecording")
args.append("--minimize-to-tray")
p = subprocess.Popen(
args=args
, cwd=cwd
#, stdout=subprocess.PIPE
#, stderr=subprocess.STDOUT
)
print("OBS PID: %s" % p.pid)
fn = os.path.join(tempfile.gettempdir(), "obs.%s.pid" % getpass.getuser())
print("OBS PID file: %s" % fn)
f = open(fn, "w")
f.write("%s" % p.pid)
f.close()
def stop_recording(coin):
fn = os.path.join(tempfile.gettempdir(), "obs.%s.pid" % getpass.getuser())
if not os.path.exists(fn):
print("OBS PID file does not exists: %s" % fn)
sys.exit(2)
print("OBS PID file: %s" % fn)
f = open(fn, "r")
pid = f.read()
f.close()
print("OBS PID: %s" % pid)
# For unixish systems:
args = ["kill", "%s" % pid]
# For Windows:
if sys.platform == "win32":
args = ["taskkill", "/f", "/pid", "%s" % pid]
subprocess.Popen(args=args).communicate()
os.remove(fn)
for file in os.listdir(videos):
if ".mkv" in file:
time.sleep(4)
if coin in os.listdir(videos):
os.replace(os.path.join(videos,file),os.path.join(videos,coin,file))
else:
os.mkdir(os.path.join(videos,coin))
os.replace(os.path.join(videos,file),os.path.join(videos,coin,file))
print("STARTING")
while True:
orders = client.futures_adl_quantile_estimate(recvWindow=60000)
time.sleep(1)
if orders != []:
name = orders[0]["symbol"]
print(f"start recording sybol = {name}")
start_recording()
while True:
orders = client.futures_adl_quantile_estimate(recvWindow=60000)
time.sleep(1)
if orders == []:
print(f" end recording symbol = {name}")
time.sleep(8)
stop_recording(name)
break
Остальные файлы тоже могу отправить.
Мне нужно переделать этот скрипт под простое нажатие кнопки. Проще говоря, открывается сделка - нажимается клавиша - сделка закрывается - клавиша нажимается снова.
Вот код основного файла:
from binance.client import Client
import time
import getpass
import os
import sys
import subprocess
import tempfile
import win32gui, win32con
import ctypes
ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 6 )
API_KEY,SECRET_KEY = open("keys.txt","r").read().split("\n")
client = Client(API_KEY, SECRET_KEY)
# The_program_to_hide = win32gui.GetForegroundWindow()
# win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
videos = "C:\\Users\\vadim\\Videos"
def start_recording():
# For unixish systems:
args = ["obs"]
cwd = None
# For Windows:
if sys.platform == "win32":
cwd = r"C:\Program Files\obs-studio\bin\64bit"
args = [os.path.join(cwd, "obs64.exe")]
args.append("--startrecording")
args.append("--minimize-to-tray")
p = subprocess.Popen(
args=args
, cwd=cwd
#, stdout=subprocess.PIPE
#, stderr=subprocess.STDOUT
)
print("OBS PID: %s" % p.pid)
fn = os.path.join(tempfile.gettempdir(), "obs.%s.pid" % getpass.getuser())
print("OBS PID file: %s" % fn)
f = open(fn, "w")
f.write("%s" % p.pid)
f.close()
def stop_recording(coin):
fn = os.path.join(tempfile.gettempdir(), "obs.%s.pid" % getpass.getuser())
if not os.path.exists(fn):
print("OBS PID file does not exists: %s" % fn)
sys.exit(2)
print("OBS PID file: %s" % fn)
f = open(fn, "r")
pid = f.read()
f.close()
print("OBS PID: %s" % pid)
# For unixish systems:
args = ["kill", "%s" % pid]
# For Windows:
if sys.platform == "win32":
args = ["taskkill", "/f", "/pid", "%s" % pid]
subprocess.Popen(args=args).communicate()
os.remove(fn)
for file in os.listdir(videos):
if ".mkv" in file:
time.sleep(4)
if coin in os.listdir(videos):
os.replace(os.path.join(videos,file),os.path.join(videos,coin,file))
else:
os.mkdir(os.path.join(videos,coin))
os.replace(os.path.join(videos,file),os.path.join(videos,coin,file))
print("STARTING")
while True:
orders = client.futures_adl_quantile_estimate(recvWindow=60000)
time.sleep(1)
if orders != []:
name = orders[0]["symbol"]
print(f"start recording sybol = {name}")
start_recording()
while True:
orders = client.futures_adl_quantile_estimate(recvWindow=60000)
time.sleep(1)
if orders == []:
print(f" end recording symbol = {name}")
time.sleep(8)
stop_recording(name)
break
Остальные файлы тоже могу отправить.
- Файлы
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.