Bayangkan kamu bisa merekam semua gerakan mouse dan keyboard, lalu memutarnya kembali secara otomatis seperti robot asisten pribadi. Dengan Python dan beberapa library tambahan, hal ini bukan hanya mungkin — tapi bisa kamu lakukan sekarang juga.
Berikut ini adalah contoh script Python yang berfungsi sebagai perekam aktivitas keyboard dan mouse, serta bisa memutarnya kembali sesuai urutan waktu saat direkam.
Contoh Script:
import pyautogui
import keyboard
import time
import json
from pynput import mouse
from threading import Thread
actions = []
recording = False
pressed_keys = set() # ✅ Tambahan untuk mencegah duplikasi key
def record_action(event_type, details):
timestamp = time.time()
actions.append((timestamp, event_type, details))
def record():
global recording, actions, pressed_keys
actions = []
pressed_keys = set() # ✅ Reset state
recording = True
print("📼 Recording started. Press Ctrl+Shift+S to stop.")
start_time = time.time()
# ✅ Hook keyboard dengan pencegahan duplikasi
def on_key_event(e):
if not recording:
return
if e.event_type == 'down' and e.name not in pressed_keys:
pressed_keys.add(e.name)
record_action('key', e.name)
elif e.event_type == 'up' and e.name in pressed_keys:
pressed_keys.remove(e.name)
keyboard.hook(on_key_event)
# Hook mouse events
def on_click(x, y, button, pressed):
if recording:
if pressed:
record_action('mousedown', (x, y, str(button)))
else:
record_action('mouseup', (x, y, str(button)))
def on_move(x, y):
if recording:
record_action('move', (x, y))
mouse_listener = mouse.Listener(on_click=on_click, on_move=on_move)
mouse_listener.start()
# Stop logic
while recording:
if keyboard.is_pressed('ctrl+alt+shift+s'):
recording = False
print("🛑 Recording stopped.")
break
time.sleep(0.01)
mouse_listener.stop()
# Save actions with relative timestamp
base_time = actions[0][0] if actions else time.time()
relative_actions = [(round(t - base_time, 4), tpe, data) for t, tpe, data in actions]
with open("actions.json", "w") as f:
json.dump(relative_actions, f)
print(f"💾 Saved {len(relative_actions)} actions to actions.json")
def replay():
speed_multiplier = 50.0 # 🔥 bisa diubah misalnya 10.0 untuk turbo
try:
with open("actions.json", "r") as f:
recorded = json.load(f)
except:
print("❌ actions.json not found.")
return
print(f"▶ Replaying actions {speed_multiplier}x faster...")
for i, (delay, event_type, details) in enumerate(recorded):
if i > 0:
prev_delay = recorded[i - 1][0]
delay_diff = (delay - prev_delay) / speed_multiplier
time.sleep(max(0, delay_diff))
if event_type == "move":
x, y = details
pyautogui.moveTo(x, y)
elif event_type == "mousedown":
x, y, button = details
pyautogui.mouseDown(x, y, button=button.replace("Button.", ""))
elif event_type == "mouseup":
x, y, button = details
pyautogui.mouseUp(x, y, button=button.replace("Button.", ""))
elif event_type == "key":
pyautogui.press(details)
print("✅ Done replay!")
if __name__ == "__main__":
print("=== KESO RECORDER ===")
while True:
cmd = input("Type 's' to start recording, 'doit' to replay, or 'exit': ").strip().lower()
if cmd == 's':
record()
elif cmd == 'doit':
replay()
elif cmd == 'exit':
break
else:
print("❓ Unknown command.")
Apa Gunanya Script Ini?
Script ini memungkinkan kamu untuk:
- Merekam aktivitas kamu di komputer, termasuk klik, gerakan mouse, dan penekanan tombol keyboard.
- Menyimpan aktivitas tersebut ke dalam file
actions.json
. - Memutar ulang semua aktivitas itu secara otomatis dengan perintah replay.
Cocok digunakan untuk:
- Automasi tugas berulang,
- Demonstrasi penggunaan software,
- Testing UI secara manual,
- Atau sekadar eksperimen dengan automasi.
Bagaimana Cara Kerjanya?
Script ini terdiri dari dua fungsi utama:
1. record()
: Merekam Aktivitas
- Menggunakan
keyboard.hook()
untuk mencatat setiap tombol yang ditekan dan dilepas, dengan pencegahan duplikasi agar tidak mencatat tombol yang ditekan terus-menerus. - Menggunakan
pynput.mouse.Listener
untuk mencatat pergerakan dan klik mouse. - Semua aktivitas disimpan sebagai data
(timestamp, jenis_event, detail_event)
. - Tekan
Ctrl + Alt + Shift + S
untuk menghentikan proses perekaman. - Hasil rekaman disimpan dalam format JSON dengan timestamp relatif (agar bisa diatur kecepatan pemutaran ulangnya).
2. replay()
: Memutar Ulang Aktivitas
- Membaca file
actions.json
. - Memainkan kembali semua event dengan
pyautogui
, seperti:- Memindahkan kursor,
- Melakukan klik,
- Menekan tombol keyboard.
- Durasi antar tindakan dipercepat dengan
speed_multiplier
(misalnya 50x lebih cepat dari aslinya).
Cara Menggunakan
- Buka terminal atau command prompt, lalu jalankan file script ini.
- Saat muncul prompt:
- Ketik
's'
untuk mulai merekam, - Ketik
'doit'
untuk memutar ulang rekaman, - Ketik
'exit'
untuk keluar.
- Ketik
- Selama proses rekam berlangsung, lakukan aktivitas seperti biasa.
- Tekan
Ctrl + Alt + Shift + S
untuk berhenti merekam. - Jalankan replay untuk melihat ulang semua aktivitasmu dijalankan secara otomatis.
Kesimpulan
Script ini adalah contoh nyata bahwa Python sangat fleksibel dan kuat untuk membuat program automasi yang nyata berguna. Dengan sedikit kreativitas, kamu bisa mengembangkannya menjadi:
- Macro recorder pribadi,
- Tool testing aplikasi,
- Atau bahkan bagian dari software RPA (Robotic Process Automation) sederhana.
Selamat mencoba… dan selamat ber-eksperimen dengan automasi Python! 🐍✨