[파이thhon] 집에서 못 찾는 아이폰 소리를 내고 싶어요.

개시하다


혹시 집에서 아이폰의 위치를 모르시나요?저 있어요.
나는 내 집에서 구글 홈을 사용하기 때문에 이들에게 "야, 구글, 아이폰을 찾아라"라고 말하고, 어디로 가는 아이폰의 소리를 들을 수 있다면 쉽게 찾을 수 있다.
이번에는 파이톤pyicloud 프로그램 라이브러리를 사용해 먼저 지령선상에서 아이폰의 소리를 실현한다.

이 신청을 통해서 알 수 있는 것들.

  • 프로그램을 통해 아이클라우드에 로그인하면'아이폰 찾기'기능을 호출할 수 있다
  • 이 신청으로 해결할 수 없는 일.

  • 아이폰을 집에 두고 가지 마세요
  • 컨디션

  • macOS Big Sur 11.2(Intel CPU)
  • Python 3.9.1
  • pip 20.3.3
  • pyicloud v0.10.2
  • v0.팩스 인증 10.1~2개 공식 대응1년 동안 세션을 끝낼 수 없습니다.
  • 필요한 라이브러리 설치


    pip3 install pyicloud
    

    인증까지


    from pyicloud import PyiCloudService
    import sys
    
    APPLE_ID = 'your_apple_id'
    PASSWORD = 'your_apple_id_password'
    COOKIE_DIR = './cookie'
    
    api = PyiCloudService(apple_id=APPLE_ID, password=PASSWORD, cookie_directory=COOKIE_DIR)
    
    if api.requires_2fa:
        print("Two-factor authentication required.")
        code = input("Enter the code you received of one of your approved devices: ")
        result = api.validate_2fa_code(code)
        print("Code validation result: {}".format(result))
    
        if not result:
            print("Failed to verify security code")
            sys.exit(1)
    
        if not api.is_trusted_session:
            print("Session is not trusted. Requesting trust...")
            result = api.trust_session()
            print("Session trust result {}".format(result))
    
            if not result:
                print("Failed to request trust. You will likely be prompted for the code again in the coming weeks")
    elif api.requires_2sa:
        import click
        print("Two-step authentication required. Your trusted devices are:")
    
        devices = api.trusted_devices
        for i, device in enumerate(devices):
            print("  {}: {}".format(i, device.get("deviceName", "SMS to %s".format(device.get("phoneNumber")))))
    
        device = click.prompt("Which device would you like to use?", default=0)
        device = devices[device]
        if not api.send_verification_code(device):
            print("Failed to send verification code")
            sys.exit(1)
    
        code = click.prompt("Please enter validation code")
        if not api.validate_verification_code(device, code):
            print("Failed to verify verification code")
            sys.exit(1)
    
    여기서 한 번 실행하면 인증용 코드를 입력하라는 프롬프트가 표시되므로 자체 아이폰 등에 표시된 6비트 코드를 입력하면 세션 정보./cookie 디렉토리에 저장된다.이 저장된 세션 정보는 다음 실행에 불러올 것이기 때문에 인증할 필요가 없습니다.
    ※ 2 단계별 인증이 없는 계정elif api.requires_2sa: 이후 일부 코드가 확인되지 않아서(현재 팩스 인증 2개 추천)

    iCloud에 등록된 장치 목록 가져오기


    api.devices
    
    => {'aAbBcCdDeEfFgGhHiIjJkK': <AppleDevice(iPad Pro: iPad Pro 12.9)>, 'lLmMnNoOpPqQrRsStTuUvV': <AppleDevice(iPhone 8: My iPhone6s)>}
    
    ※ 홈 공유 사용 시 자신이 공유한 장비도 반환

    검색된 목록에서 장치 지정


    api.devices[1]
    
    => iPhone 8: My iPhone8
    
    api.devices['lLmMnNoOpPqQrRsStTuUvV']
    
    => iPhone 8: My iPhone8
    

    iCloud에 등록된 첫 번째 장치 가져오기


    api.iphone
    
    => iPad Pro: iPad Pro 12.9
    

    장치 위치 가져오기


    api.iphone.location()
    
    => {'isOld': False, 'isInaccurate': False, 'altitude': 0.0, 'positionType': 'Cell', 'latitude': 35.6809591, 'floorLevel': 0, 'horizontalAccuracy': 65.0, 'locationType': '', 'timeStamp': 1612427791108, 'locationFinished': False, 'verticalAccuracy': 0.0, 'longitude': 139.7673068}
    
    api.iphone.location()['latitude']
    
    => 35.6809591
    
    api.iphone.location()['longitude']
    
    => 139.7673068
    

    장치에서 사운드 재생(상당한 사운드 발생에 주의)


    api.iphone.play_sound()
    
    ※ 알림 소리가 꺼져도 소리가 납니다!

    총결산


    파이썬에서 iCloud 정보에 액세스했습니다.pycloud의 v0.10.1 미만이면 팩스 인증 세션 2개4시간밖에 안 됐어요.인 것 같지만 2021/2/1에 발표된 v0.10.1부터 회화가 장기간 유지되기 때문에 활용하는 자리가 많아진다.까먹었을 때 세션이 거의 끝나가니까 끊었을 때 슬랙에게 미리 알리는 등
    가정에서 공유하는 기기에 대한 정보도 얻을 수 있기 때문에 아이가 아이폰을 가지고 있다면 활용해 보려고 한다.
    속편이 언제인지는 모르겠지만 구글 홈에서 아이폰 소리를 내고 싶다.

    좋은 웹페이지 즐겨찾기