# from cv2 import imdecode,IMREAD_GRAYSCALE ,TM_CCOEFF_NORMED , matchTemplate # from numpy import frombuffer,uint8,where # from io import BytesIO # from requests import get # def find_element_coordinatesofmic(): # template = imdecode(frombuffer(BytesIO(get("https://shethjenil-automatic-song-rec.static.hf.space/voiceelement.jpg").content).read(), uint8), IMREAD_GRAYSCALE) # screen_image = imdecode(frombuffer(device.screencap(), uint8), IMREAD_GRAYSCALE) # w, h = template.shape[::-1] # loc = where(matchTemplate(screen_image, template, TM_CCOEFF_NORMED) >= 0.8) # return [loc[1][0] + w // 2, loc[0][0] + h // 2] from os import getenv, path, remove, makedirs import winshell import sys from shutil import copyfile , rmtree def add_to_startmenu(target, shortcut_name): shortcut = winshell.shortcut(path.join(winshell.start_menu(), f"{shortcut_name}.lnk")) shortcut.path = target print(shortcut.show_cmd) shortcut.write() def remove_from_startmenu(shortcut_name): remove(path.join(winshell.start_menu(), f"{shortcut_name}.lnk")) if len(sys.argv) == 2: if sys.argv[1] == "--uninstall": if path.exists(path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC")): rmtree(path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC")) remove_from_startmenu("Song Recognizer") sys.exit() if not path.exists(path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC")) or (len(sys.argv) == 2 and sys.argv[1] == "--install"): try: # Create directory if it doesn't exist makedirs(path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC")) except OSError as e: print("Error creating directory:", e) sys.exit(1) try: # Copy file to the created directory copyfile(sys.argv[0], path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC", sys.argv[0].split("\\")[-1])) add_to_startmenu(path.join(getenv("LOCALAPPDATA"), "JENILSOFTWARESONGREC", sys.argv[0].split("\\")[-1]), "Song Recognizer") except IOError as e: print("Error copying file:", e) sys.exit(1) sys.exit() from subprocess import Popen , DEVNULL from time import sleep from ppadb.client import Client from os import remove,chdir from pytube import Search from xml.etree.ElementTree import parse from json import dump ,load from tkinter import messagebox from tkinter.simpledialog import askstring chdir(getattr(sys, '_MEIPASS', path.abspath(path.dirname(__file__)))) #change a path to your project folder try: messagebox.showinfo(message="this program is made by Vicky,varshil,jeet(leader),preet to dedicating SCIENCE FEST 2024") messagebox.showinfo(message="in mobile in setting in system build number tap 7 times to open developer options Enable USB debugging and then connect your mobile to pc and tap ok") Popen(r"data\adb kill-server", shell=True, stdout=DEVNULL, stderr=DEVNULL) Popen(r"data\adb start-server", shell=True, stdout=DEVNULL, stderr=DEVNULL) while True: global device try: device = Client(host="127.0.0.1", port=5037).devices()[0] break except: messagebox.showwarning(message="waiting for device") pass messagebox.showwarning(message="please unlock and open your mobile during project") global screentimeout while True: password = askstring("password","enter password") if password.strip() != "": if device.shell(f"locksettings clear --old {password}").strip() == "Lock credential cleared": device.shell(f"#locksettings set-disabled 1") break else: messagebox.showwarning(message="wrong password") messagebox.showwarning(message="""IF YOU HAVE A PATTERN LOCK THEN ENTER A POINT NUMBER INSTEAD OF PASSWORD LIKE FOR UPPER LEFT POINT IS 1 AND LAST BOTTOM RIGHT IS 9 MIDDLE POINT IS 5 AND LAST BOTTOM LEFT IS 7""") else: if device.shell("locksettings clear").strip() == "Lock credential cleared": device.shell(f"#locksettings set-disabled 1") break else: messagebox.showwarning(message="wrong password") messagebox.showwarning(message="""IF YOU HAVE A PATTERN LOCK THEN ENTER A POINT NUMBER INSTEAD OF PASSWORD LIKE FOR UPPER LEFT POINT IS 1 AND LAST BOTTOM RIGHT IS 9 MIDDLE POINT IS 5 AND LAST BOTTOM LEFT IS 7""") device.shell("input keyevent KEYCODE_POWER") screentimeout=device.shell("settings get system screen_off_timeout") device.shell("settings put system screen_off_timeout 1800000") if device.shell(f"ls /sdcard/cfg.json").strip() != "/sdcard/cfg.json": device.shell("am start -n com.google.android.googlequicksearchbox/com.google.android.apps.search.googleapp.activity.GoogleAppActivity") device.shell("uiautomator dump") device.pull("/sdcard/window_dump.xml", "window_dump.xml") a = [node.attrib['bounds'] for node in parse('window_dump.xml').getroot().iter() if "text" in node.attrib and node.attrib["content-desc"] == "Voice search"][0].split("][")[0].replace("[","").split(",") mic = [int(a[0]), int(a[1])] device.input_tap(mic[0], mic[1]) sleep(1) device.shell("uiautomator dump") device.pull("/sdcard/window_dump.xml", "window_dump.xml") a = [node.attrib['bounds'] for node in parse('window_dump.xml').getroot().iter() if "text" in node.attrib and node.attrib["text"] == "Search for a song"][0].split("][")[0].replace("[","").split(",") songbutton=[int(a[0]), int(a[1])] dump({"mic": mic, "songbutton": songbutton}, open("cfg.json", "w+")) device.push("cfg.json", "/sdcard/cfg.json") device.shell("am force-stop com.google.android.googlequicksearchbox") device.shell("rm /sdcard/window_dump.xml") remove("cfg.json") remove("window_dump.xml") else: device.pull("/sdcard/cfg.json", "cfg.json") cfg = load(open("cfg.json", "r")) cfg = load(open("cfg.json", "r")) mic = cfg["mic"] songbutton = cfg["songbutton"] def get_song_artist(): device.shell("svc data enable") device.shell("input keyevent KEYCODE_POWER") global mic , songbutton device.shell("am start -n com.google.android.googlequicksearchbox/com.google.android.apps.search.googleapp.activity.GoogleAppActivity") sleep(2) device.input_tap(mic[0],mic[1]) #mic device.input_tap(songbutton[0],songbutton[1]) #songbutton sleep(20) device.shell("uiautomator dump") device.pull("/sdcard/window_dump.xml", "window_dump.xml") song, artist = [node.attrib["text"] for node in parse('window_dump.xml').getroot().iter() if "text" in node.attrib and (text := node.attrib["text"].strip()) != ""][1:3] remove("window_dump.xml") device.shell("am force-stop com.google.android.googlequicksearchbox") device.shell("input keyevent KEYCODE_HOME") device.shell("svc data disable") device.shell("input keyevent KEYCODE_POWER") Popen(rf'data\vlc -f --audio-visual=goom --no-video-title-show --no-qt-fs-controller "{list(filter(lambda x: x.itag == 251, Search(f"{song} by {artist}").results[0].streams))[0].url}"', shell=True, stdout=DEVNULL, stderr=DEVNULL).communicate() while messagebox.askretrycancel(message="RECORD START"): get_song_artist() device.shell("settings put system screen_off_timeout " + screentimeout) Popen(r"data\adb kill-server", shell=True) except Exception as e: device.shell("settings put system screen_off_timeout " + screentimeout) Popen(r"data\adb kill-server", shell=True) # C:\Users\Admin\Documents\data>adb shell locksettings # usage: locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN # locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN # locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD # locksettings clear [--old OLD_CREDENTIAL] # locksettings verify [--old OLD_CREDENTIAL] # locksettings set-disabled DISABLED # locksettings get-disabled # flags: # --user USER_ID: specify the user, default value is current user # locksettings set-pattern: sets a pattern # A pattern is specified by a non-separated list of numbers that index the cell # on the pattern in a 1-based manner in left to right and top to bottom order, # i.e. the top-left cell is indexed with 1, whereas the bottom-right cell # is indexed with 9. Example: 1234 # locksettings set-pin: sets a PIN # locksettings set-password: sets a password # locksettings clear: clears the unlock credential # locksettings verify: verifies the credential and unlocks the user # locksettings set-disabled: sets whether the lock screen should be disabled # locksettings get-disabled: retrieves whether the lock screen is disabled