def download_server(memory, options, url, output_name_item_percentage=None): """ download_server @type memory: Memory, None @type options: optparse.Values, instance @type url: str, unicode @type output_name_item_percentage: str """ if memory: url = os.path.normpath(url) url = options.server + options.cryptobox + "/" + url session = memory.get("session") result = session.get(url, timeout=3600, stream=True, verify=False) else: result = requests.get(url, timeout=3600, stream=True, verify=False) if result.status_code == 403: raise ServerForbidden(result.reason) if result.status_code == 500: raise ServerError(result.reason) tf_download = get_named_temporary_file(auto_delete=False) if "Content-Length" in result.headers: size = int(result.headers['Content-Length'].strip()) downloaded_bytes = 0 prev_percenage = -1 last_update = time.time() for buf in result.iter_content(1024): if buf: tf_download.write(buf) downloaded_bytes += len(buf) divider = float(size) / 100 if divider > 0: percentage = int(float(downloaded_bytes) / divider) if percentage != prev_percenage: if time.time() - last_update > 0.5: if output_name_item_percentage: update_item_progress( percentage, output_name_item_percentage) else: update_item_progress(percentage) last_update = time.time() prev_percenage = percentage return tf_download else: tf_download.write(result.content) return tf_download.name
def download_server(memory, options, url, output_name_item_percentage=None): """ download_server @type memory: Memory, None @type options: optparse.Values, instance @type url: str, unicode @type output_name_item_percentage: str """ if memory: url = os.path.normpath(url) url = options.server + options.cryptobox + "/" + url session = memory.get("session") result = session.get(url, timeout=3600, stream=True, verify=False) else: result = requests.get(url, timeout=3600, stream=True, verify=False) if result.status_code == 403: raise ServerForbidden(result.reason) if result.status_code == 500: raise ServerError(result.reason) tf_download = get_named_temporary_file(auto_delete=False) if "Content-Length" in result.headers: size = int(result.headers["Content-Length"].strip()) downloaded_bytes = 0 prev_percenage = -1 last_update = time.time() for buf in result.iter_content(1024): if buf: tf_download.write(buf) downloaded_bytes += len(buf) divider = float(size) / 100 if divider > 0: percentage = int(float(downloaded_bytes) / divider) if percentage != prev_percenage: if time.time() - last_update > 0.5: if output_name_item_percentage: update_item_progress(percentage, output_name_item_percentage) else: update_item_progress(percentage) last_update = time.time() prev_percenage = percentage return tf_download else: tf_download.write(result.content) return tf_download.name
def read_file(path, read_data=False): """ @type path: str or unicode @type read_data: bool @return: @rtype: """ if read_data: tempfile_data = get_named_temporary_file(auto_delete=False) dataf = open(path, "rb") chunk = dataf.read(2**20 * 5) while chunk: tempfile_data.write(chunk) chunk = dataf.read(2**20 * 5) tempfile_data.seek(0) data = tempfile_data.name else: data = None stats = os.stat(path) return stats.st_ctime, stats.st_atime, stats.st_mtime, stats.st_mode, stats.st_uid, stats.st_gid, stats.st_size, data
def read_file(path, read_data=False): """ @type path: str or unicode @type read_data: bool @return: @rtype: """ if read_data: tempfile_data = get_named_temporary_file(auto_delete=False) dataf = open(path, "rb") chunk = dataf.read(2**20*5) while chunk: tempfile_data.write(chunk) chunk = dataf.read(2 ** 20 * 5) tempfile_data.seek(0) data = tempfile_data.name else: data = None stats = os.stat(path) return stats.st_ctime, stats.st_atime, stats.st_mtime, stats.st_mode, stats.st_uid, stats.st_gid, stats.st_size, data