Dim*_*ris 3 python-2.7 ckan ubuntu-14.04
我的目标是使用(a)CKAN API或(b)CKANAPI CLI或(c)贴纸(如果(c)可能)下载在私有数据集中作为资源保存的文件.
我试图使用(a)下载文件失败.例如,使用资源URL和/ urllib2或requests文件被下载但它已损坏(.zip)或CKAN登录页面存储在文件( .xls)中.
我尝试过使用(b)太不成功了.例如,使用以下代码:
ckanapi dump datasets dataset_name --datapackages=~/ckan_out -r http://localhost:5000 -a XXXXX-XXXX-XXXX-XXXX-XXXXXXXXX
URL xxxxxxxxxxxx refused connection. The resource will not be downloaded
Run Code Online (Sandbox Code Playgroud)
我还没有找到任何具有下载资源功能的东西paster.
是否可以使用CKAN工具自动化下载私有资源的过程?
我应该将数据集从私有更改为公共,下载资源,然后再将它们设为私有?
任何见解都非常受欢迎.
CKAN 2.5.2,UBUNTU 14.04
不幸的是,CKAN API不提供下载资源数据的功能(仅用于元数据:) resource_show.资源下载由CKAN的Web UI代码处理.这意味着您不能使用API提供的身份验证方法(即您的API密钥),但必须使用您的普通凭据(用户名+密码):
import requests
CKAN_URL = 'http://localhost:5000'
def login(username, password):
'''
Login to CKAN.
Returns a ``requests.Session`` instance with the CKAN
session cookie.
'''
s = requests.Session()
data = {'login': username, 'password': password}
url = CKAN_URL + '/login_generic'
r = s.post(url, data=data)
if 'field-login' in r.text:
# Response still contains login form
raise RuntimeError('Login failed.')
return s
def download_resource_data(session, pkg_id, res_id):
url = '{ckan}/dataset/{pkg}/resource/{res}/download/'.format(
ckan=CKAN_URL, pkg=pkg_id, res=res_id)
return session.get(url).content
if __name__ == '__main__':
session = login('my-user', 'my-password')
data = download_resource_data(session, 'some-package', 'some-resource')
print(data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |