收集、存储和显示来自Foursquare、iCloud等的实时位置信息。
django-location的Python项目详细描述
Django位置
您是否在Foursquare上登记?你跟踪 你的跑步或自行车通勤 运行仪表 ?你使用iOS设备吗? 为什么让第三方界面成为你日常生活的唯一窗口 动作?
此django应用程序将使用由 Foursquare,iCloud,如果你碰巧是它的用户,Runmeter,和 将其存储在数据库中以供随意显示。
安装
您可以从pip安装:
pip install django-location
或者从github签出并安装源代码 存储库:
git clone https://github.com/latestrevision/django-location.git cd django-location python setup.py install
您需要将django social auth和django位置都添加到 project's urls.py ;从技术上讲,您可以使用任何您想要的url, 但是为了下面的说明,我们希望您 添加如下:
url(r'^location/', include('location.urls')), url(r'', include('social_auth.urls')),
位置源
对于下面的一些消费者,特别是iCloud和Runmeter,您将 需要设置一个cron作业来处理某些周期性任务,您可以 通过添加cron作业来执行此操作:
python /path/to/your/manage.py location_consumer
我建议每隔5到10分钟运行一次,但是选择更长的时间 间隔只有很小的影响;或者减少采样频率 (对于iCloud消费者)或增加更新延迟(在 Runmeter使用者的情况)。
正方形
Foursquare在消费者中有选择 允许它立即将签入信息发布到api的设置 此应用程序提供的终结点。为了支持这一点,你需要 执行以下操作:
转到foursquare开发人员 站点 并创建新的消费者。
- 输入Django Social Auth的Foursquare后端的回调URL (通常 http://yourdomain.com/complete/foursquare/ )。
- 打开推送API通知('push checkins by this consumer's 用户")。
- 输入django location应用程序的推送url(通常 https://yourdomain.com/location/foursquare/ )。注:Foursquare 要求通过https建立连接。
配置以下设置:
FOURSQUARE_CONSUMER_KEY = "THECLIENTIDYOUJUSTGENERATED" FOURSQUARE_CONSUMER_SECRET = "THECLIENTSECRETYOUJUSTGENERATED"
转到django location应用程序的配置url(通常 http://yourdomain.com/admin/location/locationsource/configure accounts/ ) 在登录到管理员时,单击"授权Foursquare" 按钮。这会带你到Foursquare的网站 配置选项,并授权您的web应用程序接收 从用户wi签入登录到Foursquare。
如果一切都安排好了,你不应该再做什么,但是 Foursquare确实为消费者提供了"发送测试按钮" 控制台,可用于验证所有内容是否正确 已连接。
< > >
运行仪表
Runmeter 不提供API, 但允许您将应用程序配置为发送电子邮件 开始(和结束)跑步、骑自行车或 别的。要使用runmeter中的信息,我们将对其进行配置 将电子邮件发送到未使用的电子邮件收件箱(重要),并配置 django位置以使用这些电子邮件并提取坐标 从链接到KML文件。
- 配置Runmeter应用程序以发送开始和结束 通过POP3或IMAP访问邮箱的通知。
- 设置django邮箱以使用来自此邮箱的邮件(请参阅 django邮箱的 文档)。
- 更新用户的位置使用者设置记录以设置字段 runmeter_e mail 匹配用户设备的电子邮件地址 将发送Runmeter更新。 < > >
iCloud
icloud 提供名为"查找我的iPhone"的服务 这允许您随意请求设备的位置。这个图书馆 为您提供使用此服务的位置信息的简单方法 作为您的位置来源之一。
识别与您的帐户关联的设备,您可以 使用 列表iCloud设备 管理命令来执行此操作:
python /path/to/your/manage.py list_icloud_devices <icloud username> <icloud password>
用您的 iCloud用户名和密码。
这将打印设备及其ID的列表;在我的例子中,它将打印 像这样:
Name: MacBook Air 11": sinclair -- ID: reGYDh9XwqNWTGIhNBuEwP1ds0F/Lg5t/fxNbZ3V939hhXawByErk+HYVNSUzmWV Name: iPhone 4S: Adam Coddingtons iPhone -- ID: i9vbKRGIcLYqJnXMc1b257kUWnoyEBcEh6yM+IfmiMLh7BmOpALU+w==
更新用户的位置使用者设置记录以包括用户的 iCloud用户名 , iCloud密码 ,以及来自 您希望收集哪些位置信息。
< > >
使用模板标记显示位置
您可以使用 当前位置 模板标记来收集 给定用户的最近位置。
简单示例:
{% load current_location %} {% current_location of 'adam' as location_of_adam %} <p> {{ location_of_adam.user.username }} is at {{ location_of_adam.location.coords.1 }}, {{ location_of_adam.location.coords.0 }} </p>
如果你安装了"Django社区"和"Django人口普查地点", 您还可以打印城市和社区信息:
{% load current_location %} {% current_location of 'adam' as location_of_adam %} <p> {{ location_of_adam.user.username }} is in the {{ location_of_adam.neighborhood.name }} neighborhood of {{ location_of_adam.city.name }}, {{ location_of_adam.city.get_state_display }}. </p>
你可能并不总是有一个给定的社区或城市信息 点,也许你想用谷歌地图来显示地图 api;这里有一个充实的版本:
pip install django-location0