Source code for helios.utilities.parsing_utils

"""Helper functions for paths and URLs."""
import hashlib
import os
from datetime import datetime

# Python 2 to 3 fix.
try:
    from urlparse import urlparse
except ImportError:
    from urllib.parse import urlparse


[docs]def parse_time(data): """ Parse time from a URL or image name. Args: data (str): Image URL or name. Returns: datetime.datetime: The parsed time as a datetime object. """ time_string = str(os.path.splitext(os.path.split(data)[-1])[0].split('_')[-1]) time_stamp = datetime.strptime(time_string, '%Y%m%d%H%M%S%f') return time_stamp
[docs]def parse_camera(data): """ Parse camera name from a URL or image name. Args: data (str): Image URL or name. Returns: str: Camera name. """ # Extract tail and remove the extension. _, tail = os.path.split(os.path.splitext(data)[0]) # Split by underscore and remove final index (time string). name = '_'.join(tail.split('_')[0:-1]) # Check for md5 hash (first 4 characters) try: hash_index = name.index('-') except ValueError: return name # Verify that the first 4 characters are actually the hash. md5_hash = hashlib.md5(name[hash_index + 1:].encode('utf-8')).hexdigest() if name[0:4] == md5_hash[0:4]: return name[5:] return name
[docs]def parse_image_name(url): """ Parse image name from a URL. Args: url (str): Image URL. Returns: str: Image name. """ return os.path.split(url)[-1]
[docs]def parse_url(url): """ Parse a URL into its components. Args: url (str): Image URL. Returns: urllib.parse.ParseResult: Parsed URL. """ return urlparse(url)