如何在 Python 的 VKontakte 中使用偏移量?
How to use offset in VKontakte with Python?
我正在尝试构建一个脚本,我可以在其中获取特定位置的签到。出于某种原因,当我指定纬度时,长坐标 VK 从不 returns 任何签到,所以我必须先获取位置 ID,然后从该列表中请求签到。但是我不确定如何使用偏移功能,我认为它应该有点像分页功能。
到目前为止我有这个:
import vk
import json
app_id = #enter app id
login_nr = #enter your login phone or email
password = '' #enter password
vkapi = vk.API(app_id, login_nr, password)
vkapi.getServerTime()
def get_places(lat, lon, rad):
name_list = []
try:
locations = vkapi.places.search(latitude=lat, longitude=lon, radius=rad)
name_list.append(locations['items'])
except Exception, e:
print '*********------------ ERROR ------------*********'
print str(e)
return name_list
# Returns last checkins up to a maximum of 100
# Define the number of checkins you want, 100 being maximum
def get_checkins_id(place_id,check_count):
checkin_list= []
try:
checkins = vkapi.places.getCheckins(place = place_id, count = check_count)
checkin_list.append(checkins['items'])
except Exception, e:
print '*********------------ ERROR ------------*********'
print str(e)
return checkin_list
我最终想做的是将两者组合成一个函数,但在此之前我必须弄清楚偏移量是如何工作的,当前的 VK API 文档对此解释得不太好。我希望代码读取类似于:
def get_users_list_geo(lat, lon, rad, count):
users_list = []
locations_lists = []
users = []
locations = vkapi.places.search(latitude=lat, longitude=lon, radius=rad)
for i in locations[0]:
locations_list.append(i['id'])
for i in locations:
# Get each location ID
# Get Checkins for location
# Append checkin and ID to the list
据我所知,我必须在签到时计算偏移量,然后以某种方式计算签到次数超过 100 次的位置。无论如何,我将不胜感激任何类型的帮助、建议或任何东西。如果您对脚本有任何建议,我也很想听听。我正在自学 Python 很明显我到目前为止还不是很好。
谢谢!
我和 VK API 和 javascript 一起工作过,但我认为,逻辑是一样的。
TL;DR:偏移量是一些结果(从第一个开始),API 应该在响应中跳过
例如,您进行查询,应该 return 1000 个结果(假设您知道结果的确切数量)。
但是VKreturn给你每次请求只有100。那么,如何获得其他900呢?
你对API说:给我next
100个结果。接下来是偏移量——您想要跳过的结果数,因为您已经处理了它们。所以,VK API 需要 1000 个结果,跳过前 100 个,然后 return 给你下一个(第二个)100.
此外,如果您在第一段中谈论此方法 (http://vk.com/dev/places.getCheckins),请检查您的 lat/long 是浮点数,而不是整数。尝试 swap lat/long 可能会有用 - 也许你把它们弄混了?
我正在尝试构建一个脚本,我可以在其中获取特定位置的签到。出于某种原因,当我指定纬度时,长坐标 VK 从不 returns 任何签到,所以我必须先获取位置 ID,然后从该列表中请求签到。但是我不确定如何使用偏移功能,我认为它应该有点像分页功能。
到目前为止我有这个:
import vk
import json
app_id = #enter app id
login_nr = #enter your login phone or email
password = '' #enter password
vkapi = vk.API(app_id, login_nr, password)
vkapi.getServerTime()
def get_places(lat, lon, rad):
name_list = []
try:
locations = vkapi.places.search(latitude=lat, longitude=lon, radius=rad)
name_list.append(locations['items'])
except Exception, e:
print '*********------------ ERROR ------------*********'
print str(e)
return name_list
# Returns last checkins up to a maximum of 100
# Define the number of checkins you want, 100 being maximum
def get_checkins_id(place_id,check_count):
checkin_list= []
try:
checkins = vkapi.places.getCheckins(place = place_id, count = check_count)
checkin_list.append(checkins['items'])
except Exception, e:
print '*********------------ ERROR ------------*********'
print str(e)
return checkin_list
我最终想做的是将两者组合成一个函数,但在此之前我必须弄清楚偏移量是如何工作的,当前的 VK API 文档对此解释得不太好。我希望代码读取类似于:
def get_users_list_geo(lat, lon, rad, count):
users_list = []
locations_lists = []
users = []
locations = vkapi.places.search(latitude=lat, longitude=lon, radius=rad)
for i in locations[0]:
locations_list.append(i['id'])
for i in locations:
# Get each location ID
# Get Checkins for location
# Append checkin and ID to the list
据我所知,我必须在签到时计算偏移量,然后以某种方式计算签到次数超过 100 次的位置。无论如何,我将不胜感激任何类型的帮助、建议或任何东西。如果您对脚本有任何建议,我也很想听听。我正在自学 Python 很明显我到目前为止还不是很好。
谢谢!
我和 VK API 和 javascript 一起工作过,但我认为,逻辑是一样的。
TL;DR:偏移量是一些结果(从第一个开始),API 应该在响应中跳过
例如,您进行查询,应该 return 1000 个结果(假设您知道结果的确切数量)。 但是VKreturn给你每次请求只有100。那么,如何获得其他900呢?
你对API说:给我next
100个结果。接下来是偏移量——您想要跳过的结果数,因为您已经处理了它们。所以,VK API 需要 1000 个结果,跳过前 100 个,然后 return 给你下一个(第二个)100.
此外,如果您在第一段中谈论此方法 (http://vk.com/dev/places.getCheckins),请检查您的 lat/long 是浮点数,而不是整数。尝试 swap lat/long 可能会有用 - 也许你把它们弄混了?