All Projects → hofstadter-io → Self Driving Desktop

hofstadter-io / Self Driving Desktop

Licence: mit
Desktop Automation Framework. Drive your mouse and keyboard with an easy to use language.

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Self Driving Desktop

txproto
Scriptable multimedia sandbox. Captures, streams and records from a variety of sources.
Stars: ✭ 68 (-87.31%)
Mutual labels:  recording
SwiftUIViewRecorder
Efficiently record any SwiftUI View as image or video
Stars: ✭ 20 (-96.27%)
Mutual labels:  recording
pedalboard
Online guitar pedalboard
Stars: ✭ 48 (-91.04%)
Mutual labels:  recording
Media-Recorder-API-Demo
An implementation of the MediaStream Recording API
Stars: ✭ 122 (-77.24%)
Mutual labels:  recording
streamdvr
DVR for streaming entertainment
Stars: ✭ 51 (-90.49%)
Mutual labels:  recording
CAM
macOS camera recording using ffmpeg
Stars: ✭ 43 (-91.98%)
Mutual labels:  recording
midi-recorder
🎹 The easiest way to record MIDI. No install. Automatically records.
Stars: ✭ 38 (-92.91%)
Mutual labels:  recording
Recordmp3js
Record MP3 files directly from the browser using JS and HTML
Stars: ✭ 413 (-22.95%)
Mutual labels:  recording
amanuensis
The Amanuensis is an automated songwriting and recording system aimed at ridding the process of anything left-brained, so one need never leave a creative, spontaneous and improvisational state of mind, from the inception of the song until its final master. See the README for instructions and feel free to message me at soundcloud.com/to_the_sun.
Stars: ✭ 30 (-94.4%)
Mutual labels:  recording
cm
Configuration management for all VOC systems
Stars: ✭ 17 (-96.83%)
Mutual labels:  recording
FrameCapture
A simple frame-by-frame capture tool for Unity to record perfectly smooth, supersampled replays or cinematics.
Stars: ✭ 60 (-88.81%)
Mutual labels:  recording
SWET
Selenium WebDriver Page Test / workflow recorder (successor to SWD recorder)
Stars: ✭ 34 (-93.66%)
Mutual labels:  recording
scr
🎤 A Super CRappy SCReenshot & SCreen Recording SCRipt for Sound Cloud Rappers + audio recorder, yes (sponsored by https://git.io/kiwmi)
Stars: ✭ 16 (-97.01%)
Mutual labels:  recording
vcr.js
Mock server with Proxy and Record support inspired by ruby VCR.
Stars: ✭ 41 (-92.35%)
Mutual labels:  recording
reading books record repository
📚 책을 읽고 정리합니다. 📖 Summary of Books 👉 우리 같이 책을 읽어볼까요?
Stars: ✭ 25 (-95.34%)
Mutual labels:  recording
rdScreenRecordSDK-for-Windows
Windows录屏SDK
Stars: ✭ 19 (-96.46%)
Mutual labels:  recording
MIDITapeRecorder
AUv3 MIDI Tape Recorder
Stars: ✭ 91 (-83.02%)
Mutual labels:  recording
Betamax
A VCR imitation designed only for python-requests.
Stars: ✭ 468 (-12.69%)
Mutual labels:  recording
Animatedrecordingview
Android animated recording view
Stars: ✭ 345 (-35.63%)
Mutual labels:  recording
termbacktime
Terminal recording and playback.
Stars: ✭ 33 (-93.84%)
Mutual labels:  recording

self-driving-desktop

Desktop Automation Framework. Drive your keyboard and mouse with text files.

pip3 install self-driving-desktop

Running

Playing a playlist:

sdd playlist.txt

Recording a playlist:

sdd --record recording.txt

Playlists

# Import other playlist files
import "test/main.txt";

# Create Coordinates
coords {
  "center": {
    "1080p": [960, 540],
    "720p":  [640, 360]
  }
};

# Create a playlist
playlist "openChrome" {
  # Run programs in the shell
  shell "google-chrome";
  sleep 2.0;

  # Name the new window
  active "hofChrome";
  sleep 0.5;

  # Use hotkeys to arrange
  hotkeys "winleft" "right";
  sleep 1;
};

playlist "closeChrome" {
  # Focus a named window
  focus "hofChrome";
  hotkeys "alt" "f4";
  sleep 1;
};

playlist "readTheDocs" {
  # Go to a webpage
  focus "hofChrome";
  sleep 0.2;

  # Type the URL
  write "https://docs.hofstadter.io\n" 0.05;

  # Goto an imported coordinate
  coord "getting-started" 0.5;
};

# Move the mouse in a square
playlist "repeatTest" {
  mm 100 100 1;
  mm 1000 100 1;
  mm 1000 500 1;
  mm 100 500 1;
};

# Our main playlist
playlist "main" {
  # Goto a named coordinate, also with offset
  coord "center" 1;
  coord "center" 250 -250 1;

  # Operate the browser
  play "openChrome";
  play "readTheDocs";
  play "closeChrome";

  # Play a playlist multiple times
  play "repeatTest" 4;

};

# Set screen size
screen "1080p";

# Set the global delay between steps
delay 0.025;

# Finally, play our main playlist
play "main";

Grammar

Top-level:

  • file has steps and playlists
  • steps are the only thing run
  • play runs a playlist
# relative imports from file
import "relative/path.txt";

# named coordinates
coords {
  # coord name
  "center": {
    # screen identifier
    "1080p": [960, 540],
    "720p":  [640, 360]
  }
};

# define playlists
playlist "my-playlist" {
  steps...;
};

playlist "main" {
  steps...;
  # run playlists from playlists
  play "my-playlist"
}

# set the screen identifier
screen "1080p";

# run a playlist
play "my-playlist" "main";

Steps:

  • play "name" "nameB" ... [N];: run one or more playlists, optionally repeat N times.
  • delay x.y;: set delay between steps to x.y seconds
  • sleep x.y;: sleep for x.y seconds
  • screen "screen";: set the screen resolution identifier
  • shell "quoted strings"+;: exec a command from the program

windows:

  • active "someName";: name the active window
  • focus "someName";: focus a named window

mouse:

  • mouse x y s;: move the mouse to x,y in s seconds
  • coord "name" s;: move the mouse to a named coordinate in s seconds
  • coord "name" x y s;: move to a named coordinate with offset in s seconds
  • click;: click the left mouse button
  • btnclick [left,middle,right];
  • btndown [left,middle,right];
  • btnup [left,middle,right];
  • drag [left,middle,right] x y s;: drag the mouse to x,y in s seconds
  • scroll n;: scroll n lines, negative is up
  • hscroll n;: horizontal scroll n "clicks", negative is left

keyboard:

  • keypress "key";
  • keydown "key";
  • keyup "key";
  • hotkeys "quoted" "keys" ...;: press some keys together
  • write "quoted string\n";: type a string, "\n" is enter

clipboard:

  • copy;, just ctrl-c
  • paste;, just ctrl-v
  • save_clipboard "name"; save the clipboard contents to "name"
  • load_clipboard "name"; load the clipboard contents from "name"
  • copy_clipboard "name"; copy && save the clipboard contents to "name"
  • paste_clipboard "name"; load the clipboard contents from "name" && paste

all keys are from pyautogui

Grammer Definition

Recording

You can record your mouse and keyboard to a playlist file by:

sdd record.txt --record

Note, not all keys are working yet.

A keymap to fix some is here.

Development Setup

virtualenv --python python3 penv
source penv/bin/activate
pip install -r requirements.txt
export PYTHONPATH=.
python self_driving_desktop/__main__.py ...

Install from local repository:

git clone https://github.com/hofstadter-io/self-driving-desktop
pip3 install ./self-driving-desktop/
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].