Browse Source

initial commit

master
Raphael Roberts 8 years ago
commit
6100a3221f
  1. 181
      adb.py
  2. 16
      defaults.json
  3. 287
      keycodes.json

181
adb.py

@ -0,0 +1,181 @@
import datetime
import json
import os
import re
import shutil
import subprocess
import time
debug = True
with open('defaults.json') as d,open('keycodes.json') as k:
defaults = json.load(d)
keycodes = json.load(k)
exe = defaults['exe']
for key,value in defaults['local'].items():
defaults['local'][key] = os.path.expandvars(value)
#I can't lmao
exists = '''if [ -e {} ]
then
echo "True"
else
echo "False"
fi'''
def merge(src, dst,log = False):
if not os.path.exists(dst):
return False
ok = True
for path, dirs, files in os.walk(src):
relPath = os.path.relpath(path, src)
destPath = os.path.join(dst, relPath)
if not os.path.exists(destPath):
os.makedirs(destPath)
for file in files:
destFile = os.path.join(destPath, file)
if os.path.isfile(destFile):
if log:
print("Skipping existing file: " + os.path.join(relPath, file))
ok = False
continue
srcFile = os.path.join(path, file)
shutil.move(srcFile, destFile)
for path, dirs, files in os.walk(src, False):
if len(files) == 0 and len(dirs) == 0:
os.rmdir(path)
return ok
def _adb(*args,out = False):
args = [exe] + list(args)
if out:
return subprocess.check_output(args,shell = False).decode().rstrip('\r\n')
else:
subprocess.call(args,shell = False)
def get_info():
thing = _adb("devices","-l",out = True)
formed = list(filter(bool,thing.split("\r\n")))[1:]
main = {}
for device in formed:
categories = re.split(" +",device)
device_dict = {
"serial":categories[0],
"mode":categories[1]
}
device_dict.update(dict(category.split(":") for category in categories[2:]))
main[categories[0]] = device_dict
return main
class device:
def prim_device():
while True:
prim_device_serial = get_info()
if len(prim_device_serial.keys()) > 0:
return device(list(prim_device_serial.keys())[0])
def __init__(self,serial=None):
if serial:
self.serial = serial
self.info = get_info()[serial]
else:
self.serial,self.info = get_info().items()[0]
def adb(self,*args,out = False):
args = ['-s',self.serial]+ list(args)
return _adb(*args,out = out)
def sudo(self,*args,out = False):
args = '"{}"'.format(" ".join(args))
return self.adb("shell","su","-c",args,out = out)
def exists(self,file):
e = exists.format(file)
res = self.sudo(e,out=True)
return res == "True"
def reboot(self,mode = None):
if mode:
if mode == "soft":
pid = self.adb("shell","pidof","zygote",out = True)
return self.sudo("kill",pid,out=True)
else:
self.adb("reboot",mode)
else:
self.adb("reboot")
def delete(self,path):
self.sudo("rm","-rf",path)
def copy(self,remote,local,del_duplicate = True):
if os.path.exists(computer):
last = os.path.split(computer)[-1]
real_dir = computer
computer = os.path.join(defaults['temp'],last)
flag = True
self.adb("pull","-a",phone,computer)
if flag:
shutil.merge(computer,real_dir)
if os.path.exists(computer) and delete_dups:
shutil.rmtree(computer)
def send_keycode(self,code):
try:
keycode = keycodes[code]
except KeyError:
keycode = str(code)
self.adb("shell","input","keyevent",keycode)
def move(self,remote,local,del_duplicate = True):
self.copy(remote,local,del_duplicate = del_duplicate)
self.delete(remote)
def push(self,local,remote):
self.adb('push',local,remote)
def backup(*partitions,name = None,backupdir):
options_dict = {
"system": "S",
"data": "D",
"cache": "C",
"recovery": "R",
"spec_part_1": "1",
"spec_part_2": "2",
"spec_part_3": "3",
"boot": "B",
"as": "A"
}
options = "".join(options_dict[option] for option in partitions)
if not name:
name = "backup_"+datetime.datetime.today().strftime(defaults['date_format'])
filename = os.path.join(backupdir,name)
self.adb("shell","twrp","backup",options,name)
phone_dir = "/data/media/0/TWRP/BACKUPS/{serial}/{name}".format(serial = self.serial,name = name)
self.move(phone_dir,filename)
def unlock_phone(self,pin):
self.send_keycode('power')
self.send_keycode('space')
self.adb("shell","input","text",str(pin))
self.send_keycode('enter')
def install(self,name):
if os.path.exists(name):
local_name = name
name = os.path.split(name)[-1]
update_path = '{}/{}'.format(defaults['remote']['updates'],name)
if not self.exists(update_path):
self.push(local_name,defaults['remote']['updates'])
else:
update_path = '{}/{}'.format(defaults['remote']['updates'],name)
self.adb("shell","twrp","install",update_path)
if __name__ == "__main__" and debug:
d = device.prim_device()

16
defaults.json

@ -0,0 +1,16 @@
{
"exe": "c:\\Program Files (x86)\\ADB\\adb.exe",
"date_format":"%Y-%m-%d_%H.%M.%S",
"local": {
"TWRP": "%userprofile%\\Android\\TWRP",
"TitaniumBackup": "%userprofile%\\Android\\TitaniumBackup",
"temp": "%userprofile%\\Android\\harbor",
"screenshots": "%userprofile%\\Pictures\\Screenshots",
"updates": "%userprofile%\\Downloads\\sort\\phone_updates"
},
"remote": {
"screenshots": "/sdcard/Pictures/Screenshots",
"titanium_backup": "/sdcard/TitaniumBackup",
"updates": "/data/lineageos_updates"
}
}

287
keycodes.json

@ -0,0 +1,287 @@
{
"unknown": "0",
"soft_left": "1",
"soft_right": "2",
"home": "3",
"back": "4",
"call": "5",
"endcall": "6",
"0": "7",
"1": "8",
"2": "9",
"3": "10",
"4": "11",
"5": "12",
"6": "13",
"7": "14",
"8": "15",
"9": "16",
"star": "17",
"pound": "18",
"dpad_up": "19",
"dpad_down": "20",
"dpad_left": "21",
"dpad_right": "22",
"dpad_center": "23",
"volume_up": "24",
"volume_down": "25",
"power": "26",
"camera": "27",
"clear": "28",
"a": "29",
"b": "30",
"c": "31",
"d": "32",
"e": "33",
"f": "34",
"g": "35",
"h": "36",
"i": "37",
"j": "38",
"k": "39",
"l": "40",
"m": "41",
"n": "42",
"o": "43",
"p": "44",
"q": "45",
"r": "46",
"s": "47",
"t": "48",
"u": "49",
"v": "50",
"w": "51",
"x": "52",
"y": "53",
"z": "54",
"comma": "55",
"period": "56",
"alt_left": "57",
"alt_right": "58",
"shift_left": "59",
"shift_right": "60",
"tab": "61",
"space": "62",
"sym": "63",
"explorer": "64",
"envelope": "65",
"enter": "66",
"del": "67",
"grave": "68",
"minus": "69",
"equals": "70",
"left_bracket": "71",
"right_bracket": "72",
"backslash": "73",
"semicolon": "74",
"apostrophe": "75",
"slash": "76",
"at": "77",
"num": "78",
"headsethook": "79",
"focus": "80",
"plus": "81",
"menu": "82",
"notification": "83",
"search": "84",
"media_play_pause": "85",
"media_stop": "86",
"media_next": "87",
"media_previous": "88",
"media_rewind": "89",
"media_fast_forward": "90",
"mute": "91",
"page_up": "92",
"page_down": "93",
"pictsymbols": "94",
"switch_charset": "95",
"button_a": "96",
"button_b": "97",
"button_c": "98",
"button_x": "99",
"button_y": "100",
"button_z": "101",
"button_l1": "102",
"button_r1": "103",
"button_l2": "104",
"button_r2": "105",
"button_thumbl": "106",
"button_thumbr": "107",
"button_start": "108",
"button_select": "109",
"button_mode": "110",
"escape": "111",
"forward_del": "112",
"ctrl_left": "113",
"ctrl_right": "114",
"caps_lock": "115",
"scroll_lock": "116",
"meta_left": "117",
"meta_right": "118",
"function": "119",
"sysrq": "120",
"break": "121",
"move_home": "122",
"move_end": "123",
"insert": "124",
"forward": "125",
"media_play": "126",
"media_pause": "127",
"media_close": "128",
"media_eject": "129",
"media_record": "130",
"f1": "131",
"f2": "132",
"f3": "133",
"f4": "134",
"f5": "135",
"f6": "136",
"f7": "137",
"f8": "138",
"f9": "139",
"f10": "140",
"f11": "141",
"f12": "142",
"num_lock": "143",
"numpad_0": "144",
"numpad_1": "145",
"numpad_2": "146",
"numpad_3": "147",
"numpad_4": "148",
"numpad_5": "149",
"numpad_6": "150",
"numpad_7": "151",
"numpad_8": "152",
"numpad_9": "153",
"numpad_divide": "154",
"numpad_multiply": "155",
"numpad_subtract": "156",
"numpad_add": "157",
"numpad_dot": "158",
"numpad_comma": "159",
"numpad_enter": "160",
"numpad_equals": "161",
"numpad_left_paren": "162",
"numpad_right_paren": "163",
"volume_mute": "164",
"info": "165",
"channel_up": "166",
"channel_down": "167",
"zoom_in": "168",
"zoom_out": "169",
"tv": "170",
"window": "171",
"guide": "172",
"dvr": "173",
"bookmark": "174",
"captions": "175",
"settings": "176",
"tv_power": "177",
"tv_input": "178",
"stb_power": "179",
"stb_input": "180",
"avr_power": "181",
"avr_input": "182",
"prog_red": "183",
"prog_green": "184",
"prog_yellow": "185",
"prog_blue": "186",
"app_switch": "187",
"button_1": "188",
"button_2": "189",
"button_3": "190",
"button_4": "191",
"button_5": "192",
"button_6": "193",
"button_7": "194",
"button_8": "195",
"button_9": "196",
"button_10": "197",
"button_11": "198",
"button_12": "199",
"button_13": "200",
"button_14": "201",
"button_15": "202",
"button_16": "203",
"language_switch": "204",
"manner_mode": "205",
"3d_mode": "206",
"contacts": "207",
"calendar": "208",
"music": "209",
"calculator": "210",
"zenkaku_hankaku": "211",
"eisu": "212",
"muhenkan": "213",
"henkan": "214",
"katakana_hiragana": "215",
"yen": "216",
"ro": "217",
"kana": "218",
"assist": "219",
"brightness_down": "220",
"brightness_up": "221",
"media_audio_track": "222",
"sleep": "223",
"wakeup": "224",
"pairing": "225",
"media_top_menu": "226",
"11": "227",
"12": "228",
"last_channel": "229",
"tv_data_service": "230",
"voice_assist": "231",
"tv_radio_service": "232",
"tv_teletext": "233",
"tv_number_entry": "234",
"tv_terrestrial_analog": "235",
"tv_terrestrial_digital": "236",
"tv_satellite": "237",
"tv_satellite_bs": "238",
"tv_satellite_cs": "239",
"tv_satellite_service": "240",
"tv_network": "241",
"tv_antenna_cable": "242",
"tv_input_hdmi_1": "243",
"tv_input_hdmi_2": "244",
"tv_input_hdmi_3": "245",
"tv_input_hdmi_4": "246",
"tv_input_composite_1": "247",
"tv_input_composite_2": "248",
"tv_input_component_1": "249",
"tv_input_component_2": "250",
"tv_input_vga_1": "251",
"tv_audio_description": "252",
"tv_audio_description_mix_up": "253",
"tv_audio_description_mix_down": "254",
"tv_zoom_mode": "255",
"tv_contents_menu": "256",
"tv_media_context_menu": "257",
"tv_timer_programming": "258",
"help": "259",
"navigate_previous": "260",
"navigate_next": "261",
"navigate_in": "262",
"navigate_out": "263",
"stem_primary": "264",
"stem_1": "265",
"stem_2": "266",
"stem_3": "267",
"dpad_up_left": "268",
"dpad_down_left": "269",
"dpad_up_right": "270",
"dpad_down_right": "271",
"media_skip_forward": "272",
"media_skip_backward": "273",
"media_step_forward": "274",
"media_step_backward": "275",
"soft_sleep": "276",
"cut": "277",
"copy": "278",
"paste": "279",
"system_navigation_up": "280",
"system_navigation_down": "281",
"system_navigation_left": "282",
"system_navigation_right": "283",
"all_apps": "284"
}
Loading…
Cancel
Save