Matomo 原名 Piwik API.getBulkRequest returns 空列表
Matomo formerly Piwik API.getBulkRequest returns empty list
真是奇怪:
API.getBulkRequest 不适用于 python-requests
如果我在浏览器中尝试相同,它工作正常。
如果我尝试在 python 中执行任何其他 matomo 请求,它工作正常。
这是我的代码:
对于 url,我只是使用了 Matomo 报告中的示例 API 参考。
import requests
urls = [
'method%3dVisitsSummary.get%26idSite%3d1%26date%3d2012-03-06%26period%3dday',
'method%3dVisitorInterest.getNumberOfVisitsPerVisitDuration%26idSite%3d1%26date%3d2012-03-06%26period%3dday']
params = {
'method': 'API.getBulkRequest',
'urls': urls,
'format': 'json',
'module': 'API',
'token_auth': MATOMO_SECRECT_TOKEN,
}
r = requests.post(api_url, params)
print(r)
print(r.json())
Result:
<Response [200]>
[]
谁能看出明显的错误?
以下内容有效:
import requests
api_url="https://demo.matomo.org/"
params = {
'method': 'API.getBulkRequest',
'urls[0]': 'method%3dVisitsSummary.get%26idSite%3d3%26date%3d2012-03-06%26period%3dday',
'urls[1]': 'method%3dVisitorInterest.getNumberOfVisitsPerVisitDuration%26idSite%3d3%26date%3d2012-03-06%26period%3dday',
'format': 'json',
'module': 'API',
'token_auth': "anonymous",
}
r = requests.post(api_url, params)
print(r)
print(r.json())
&urls[0]=test&urls[1]=test
相对于PHP有点特殊,requests不会自动生成这样的结构。
您可以这样添加参数:
for index, url in enumerate(urls):
params["urls[{count}]".format(count=index)] = url
真是奇怪: API.getBulkRequest 不适用于 python-requests
如果我在浏览器中尝试相同,它工作正常。
如果我尝试在 python 中执行任何其他 matomo 请求,它工作正常。
这是我的代码:
对于 url,我只是使用了 Matomo 报告中的示例 API 参考。
import requests
urls = [
'method%3dVisitsSummary.get%26idSite%3d1%26date%3d2012-03-06%26period%3dday',
'method%3dVisitorInterest.getNumberOfVisitsPerVisitDuration%26idSite%3d1%26date%3d2012-03-06%26period%3dday']
params = {
'method': 'API.getBulkRequest',
'urls': urls,
'format': 'json',
'module': 'API',
'token_auth': MATOMO_SECRECT_TOKEN,
}
r = requests.post(api_url, params)
print(r)
print(r.json())
Result:
<Response [200]>
[]
谁能看出明显的错误?
以下内容有效:
import requests
api_url="https://demo.matomo.org/"
params = {
'method': 'API.getBulkRequest',
'urls[0]': 'method%3dVisitsSummary.get%26idSite%3d3%26date%3d2012-03-06%26period%3dday',
'urls[1]': 'method%3dVisitorInterest.getNumberOfVisitsPerVisitDuration%26idSite%3d3%26date%3d2012-03-06%26period%3dday',
'format': 'json',
'module': 'API',
'token_auth': "anonymous",
}
r = requests.post(api_url, params)
print(r)
print(r.json())
&urls[0]=test&urls[1]=test
相对于PHP有点特殊,requests不会自动生成这样的结构。
您可以这样添加参数:
for index, url in enumerate(urls):
params["urls[{count}]".format(count=index)] = url