Source code for nrgpy.api.upload
try:
from nrgpy import logger
except ImportError:
pass
from datetime import datetime
from nrgpy.utils.utilities import string_date_check, draw_progress_bar
from .auth import nrg_api, upload_url
import os
import requests
[docs]class nrg_api_upload(nrg_api):
def __init__(
self,
client_id="",
client_secret="",
filename="",
rld_dir="",
site_filter="",
site_filter2="",
start_date="1970-01-01",
end_date="2150-12-31",
):
super().__init__(client_id, client_secret)
self.filename = filename
self.rld_dir = rld_dir
self.site_filter = site_filter
self.site_filter2 = site_filter2
self.start_date = start_date
self.end_date = end_date
self.headers = {"Authorization": "Bearer {}".format(self.session_token)}
if filename:
self.pad = 1
self.counter = 1
self.raw_count = 1
self.progress_bar = False
self.start_time = datetime.now()
self.upload_file()
if rld_dir:
self.upload_directory()
[docs] def upload_file(self):
if self.progress_bar:
draw_progress_bar(self.counter, self.raw_count, self.start_time)
elif self.raw_count == 1:
print(
"{0} | API | uploading {1} ... ".format(
datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
os.path.basename(self.filename),
),
end="",
flush=True,
)
else:
print(
"{0} | API | uploading {1}/{2} ... {3} ... ".format(
datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
str(self.counter).rjust(self.pad),
str(self.raw_count).ljust(self.pad),
os.path.basename(self.filename),
),
end="",
flush=True,
)
self.encoded_rld_bytes = self.prepare_file_bytes(self.filename)
data = {"type": self.filename[-3:].upper(), "filebytes": self.encoded_rld_bytes}
self.response = requests.request(
"POST", upload_url, headers=self.headers, data=data
)
if self.progress_bar is False:
if int(self.response.status_code) < 300:
print("[OK]")
else:
print(f"[FAILED] {self.response.status_code}")
[docs] def upload_directory(self, progress_bar=True):
self.progress_bar = progress_bar
self.start_time = datetime.now()
self.files = [
f
for f in sorted(os.listdir(self.rld_dir))
if self.site_filter in f
and self.site_filter2 in f
and f.lower().endswith(("rwd", "rld"))
and string_date_check(self.start_date, self.end_date, f)
]
self.raw_count = len(self.files)
self.pad = len(str(self.raw_count)) + 1
self.counter = 1
for rld in self.files:
self.filename = os.path.join(self.rld_dir, rld)
self.upload_file()
self.counter += 1