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