Source code for nrgpy.api.upload
try:
from nrgpy import logger
except ImportError:
pass
from datetime import datetime
from nrgpy.utils.utilities import 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 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