All Projects → clayshieh → FMF_Server

clayshieh / FMF_Server

Licence: other
FindMyFriends API intended to be used for server side applications written using requests and iCloud.com

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to FMF Server

ngx-metrika
Angular Yandex Metrika (Модуль поддержки счетчиков Яндекс Метрика для Angular 6+)
Stars: ✭ 13 (-40.91%)
Mutual labels:  tracking
VideoRecognitionTracking
Real time object or face detection recognition and tracking in video. The Full end-to-end project.
Stars: ✭ 36 (+63.64%)
Mutual labels:  tracking
packages.unity.com
Tracking changes of few Unity packages
Stars: ✭ 24 (+9.09%)
Mutual labels:  tracking
groucho
Know all your users. Scalable front-end (anon) personalization & attribution
Stars: ✭ 31 (+40.91%)
Mutual labels:  tracking
matomo-tracker
Stand alone library for using matamo tracking in frontend projects
Stars: ✭ 138 (+527.27%)
Mutual labels:  tracking
flyxc
GPS track visualization, flight planning, live tracking, and more ...
Stars: ✭ 47 (+113.64%)
Mutual labels:  tracking
COVID-19-tracker
北航大数据高精尖中心研究团队进行数据来源的整理与获取,利用自然语言处理等技术从已公开全国4626确诊患者轨迹中抽取了基本信息(性别、年龄、常住地、工作、武汉/湖北接触史等)、轨迹(时间、地点、交通工具、事件)及病患关系形成结构化信息
Stars: ✭ 75 (+240.91%)
Mutual labels:  tracking
RustyTaintChain
The simplest of implementations for FIFO (Clayton's case from 1816) money tracking algorithm.
Stars: ✭ 16 (-27.27%)
Mutual labels:  tracking
vue-plausible
Plausible Analytics Vue.js Plugin and NuxtJS Module
Stars: ✭ 107 (+386.36%)
Mutual labels:  tracking
VIAN
No description or website provided.
Stars: ✭ 18 (-18.18%)
Mutual labels:  tracking
corona tracker
COVID-19 tracking app - submission for https://wirvsvirushackathon.org/
Stars: ✭ 13 (-40.91%)
Mutual labels:  tracking
icloud3
iCloud3 - An advanced device_tracker custom_component for iPhones, iPads, etc. It monitors zone & location updates triggered by the HA iOS App and supports Apple 2fa verification.
Stars: ✭ 304 (+1281.82%)
Mutual labels:  tracking
VOT2019
The Winner and Runner-up Trackers for VOT-2019 Challenges
Stars: ✭ 49 (+122.73%)
Mutual labels:  tracking
mailbox
📨 簡易電子報發送系統,使用 #Golang 實作,send campaign mail with open, click tracker.
Stars: ✭ 26 (+18.18%)
Mutual labels:  tracking
pytorch-mot-tracking
Demo the Kalman Filter on pedestrian tracking with YOLOv3.
Stars: ✭ 76 (+245.45%)
Mutual labels:  tracking
smashblock
📡 🛡️A self-updating extensive blocklist filter for AdGaurd. Be sure to 🌟 this repository for updates!
Stars: ✭ 66 (+200%)
Mutual labels:  tracking
accomplist
ACCOMPLIST - List Compiler
Stars: ✭ 51 (+131.82%)
Mutual labels:  tracking
tracking-python3
In this repository I will give some implementation of single and multiple object tracking algorithms. These include meanShift, CamShift, Boosting, MIL, KCF, TLD , GoTurn, and MedianFlow. Additionally I will show you how to grab frames at a very high FPS from camera and videos.
Stars: ✭ 98 (+345.45%)
Mutual labels:  tracking
3D-Tracking-MVS
3D position tracking for soccer players with multi-camera videos
Stars: ✭ 68 (+209.09%)
Mutual labels:  tracking
keeptrack.space
🌎📡 TypeScript Astrodynamics Software for Non-Engineers. 3D Visualization of satellite data and the sensors that track them.
Stars: ✭ 61 (+177.27%)
Mutual labels:  tracking

FMF_Server

FindMyFriends API intended to be used for server side applications written using requests and iCloud.com

Prerequisites

The only non standard Python Library you need is requests which you can install by running

pip install requests

Getting Started

Import FMF into your Python file by including the following line

import FMF

Usage

Initialize the client with your apple ID login which should be your email and password.

f = FMF("[email protected]", "password")

When you want to refresh the location status of all your Find My Friend contacts, call the update() method

f.update()

You can also specify the number of minimum attempts (to get a more accurate reading), the maximum number of attempts (to prevent significant delays) and the wait time (in seconds) between each attempt to avoid spamming Apple servers. The default settings that I've personally found to be good enough are as follows: 2 minimum attempts, 7 maximum attempts and a 3 second wait time.

When you want to get the location data of a contact use the get_user_by_name() method with the contact's contact name as it appears in your contacts.

f.get_user_by_name("Best Friend")

the api currently does not play well with contacts with emoji's in the name so an alternative method to find the contact is provided, get_user_by_id().

f.get_user_by_id("~QLKSDFKL8.DK")

You can also specify a function with the optional hook argument to do something with the user's name and the returned data. For example if you are using a SMS Api that has a text() function, if you set hook=text then it will execute text(user, result) where user is the contact name of the person you are trying to find and result is the data of said user's current location information.

Notes

  • Whenever the script authenticates the iCloud login, the script will trigger Apple to send you an email that a device has logged into your iCloud. I believe Apple has implemented a cookie/session variable system to remember devices that log into iCloud. Currently this API does not have the functionality to remember said cookie, store it, and reuse the cookie whenever authenticate is called so if you call authenticate n times you will receive n emails from Apple. Apple does not require you to take any actions to confirm the identity of the device so it does not affect the functionality of the API.
  • This API does NOT work when 2FA is enabled on the icloud account.

Acknowledgements

I initially referenced Vladimir Smirnov's iCloud API for general iCloud workflow and cookie implementation which can be found here

https://github.com/mindcollapse/iCloud-API/

I have sinced changed the code significantly for my own use and changed to using requests instead of httplib2 as it is better supported. Thanks!

Contributing

Pull requests and contributions are welcomed!

Support

For any questions or concerns, please create an issue or contact me.

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].