-
Notifications
You must be signed in to change notification settings - Fork 0
/
zenodo_export.py
51 lines (40 loc) · 1.41 KB
/
zenodo_export.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os
from dotenv import load_dotenv
from influxdb_client_3 import InfluxDBClient3, Point
import requests
load_dotenv()
# Influx DB Credentials
INFLUX_CLUSTER_URL = os.getenv("INFLUX_CLUSTER_URL", "")
INFLUX_ORGANIZATION_ID = os.getenv("INFLUX_ORGANIZATION_ID", "")
INFLUX_TOKEN = os.getenv("INFLUX_TOKEN", "")
INFLUX_BUCKET = os.getenv("INFLUX_BUCKET", "")
# Zenodo Credentials
ZENODO_TOKEN = os.getenv("ZENODO_TOKEN")
# General information
filename = "export.csv"
path = "./data/%s" % filename
# FETCH DATA
INFLUX_QUERY = "SELECT * FROM \"soil\" WHERE time >= now() - interval '1 hour'" # get data for the past hour
client = InfluxDBClient3(token=INFLUX_TOKEN,
host=INFLUX_CLUSTER_URL,
org=INFLUX_ORGANIZATION_ID,
database=INFLUX_BUCKET)
reader = client.query(query=INFLUX_QUERY, language="sql")
reader.to_pandas().to_csv(path) # store file locally
# UPLOAD DATA
headers = {"Content-Type": "application/json"}
params = {'access_token': ZENODO_TOKEN}
# generate a upload URL
r = requests.post('https://sandbox.zenodo.org/api/deposit/depositions',
params=params,
json={},
headers=headers)
bucket_url = r.json()["links"]["bucket"]
# upload file
with open(path, "rb") as fp:
r = requests.put(
"%s/%s" % (bucket_url, filename),
data=fp,
params=params,
)
print(r.json())