diff --git a/README.md b/README.md index fcd3bb3..fa08a1d 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,12 @@ Thanks to [Alfred-Workflow](https://github.com/deanishe/alfred-workflow) * MD5 * Base64 * ASCII -* DateTime: Timestamp to DateTime, DateTime to Timestamp +* DateTime: Now, Timestamp to DateTime, DateTime to Timestamp * Html: Encode, Decode * JavaScript: JavaScript encodeURI, encodeURIComponent, decode * SHA: SHA1, SHA223, SHA256, SHA384, SHA512 * Number: Dec, Bin, Oct, Hex +* UUID: New UUID, Remove dash in UUID, Format UUID with dash   diff --git a/hasher.py b/hasher.py index c487945..4d66031 100644 --- a/hasher.py +++ b/hasher.py @@ -10,9 +10,10 @@ from model.md5 import MD5 from model.number import Number from model.sha import SHA +from model.the_uuid import TheUUID from workflow import Workflow, ICON_INFO -__version__ = "1.2.5" +__version__ = "1.2.6" class Hasher: @@ -32,7 +33,8 @@ def __init__(self, wf): Javascript(), SHA(), Number(), - ASCII() + ASCII(), + TheUUID() ] self.modelDict = dict() self.max_age = 60 * 60 * 24 * 365 @@ -61,15 +63,16 @@ def convert_all(self, query): def convert_by_type(self, query): query = str(query).strip() - if query.find(' ') == -1: - return [] - - group = query.split(' ', 1) - type_value = group[0] - input_value = group[1] - - if type_value in self.modelDict: - return self.modelDict[type_value].convert(input_value) + if " " not in query: + if query in self.modelDict: + return self.modelDict[query].convert("") + else: + group = query.split(' ', 1) + type_value = group[0] + input_value = group[1] + + if type_value in self.modelDict: + return self.modelDict[type_value].convert(input_value) def autocomplete(self, query): result = [] diff --git a/icons/uuid.png b/icons/uuid.png new file mode 100644 index 0000000..26a0d10 Binary files /dev/null and b/icons/uuid.png differ diff --git a/info.plist b/info.plist index 8197f55..dd6947d 100644 --- a/info.plist +++ b/info.plist @@ -156,7 +156,7 @@ version - 1.2.5 + 1.2.6 webaddress https://github.com/dozer47528/alfred2-hasher diff --git a/model/date_time.py b/model/date_time.py index 99ee537..66e8387 100644 --- a/model/date_time.py +++ b/model/date_time.py @@ -1,4 +1,5 @@ import re +import time from datetime import datetime from dateutil.parser import parse @@ -18,41 +19,70 @@ def totimestamp(self, dt, epoch=datetime(1970, 1, 1)): def convert(self, query): result = [] - if re.search('^\d+(\.\d?)?$', query): - timestamp = float(query) - local_datetime = datetime.fromtimestamp(timestamp) - utc_datetime = datetime.utcfromtimestamp(timestamp) + if not query: + now = int(time.time()) + local_datetime = datetime.fromtimestamp(now) + utc_datetime = datetime.utcfromtimestamp(now) result += [ Item( - title=u'TimeStamp to DateTime(Local)' + ': ' + query, + title=u'Timestamp', + subtitle=str(now), + arg=self.name + u'-now-timestamp:' + str(now), + valid=True, + icon=self.icon_path() + ), + Item( + title=u'Local Datetime', subtitle=str(local_datetime), - arg=self.name + u'-timestamp-to-datetime-local:' + str(local_datetime), + arg=self.name + u'-now-datetime-local:' + str(local_datetime), valid=True, icon=self.icon_path() ), Item( - title=u'TimeStamp to DateTime(UTC)' + ': ' + query, + title=u'UTC Datetime', subtitle=str(utc_datetime), - arg=self.name + u'-timestamp-to-datetime-utc:' + str(utc_datetime), + arg=self.name + u'-now-datetime--utc:' + str(utc_datetime), valid=True, icon=self.icon_path() ) ] else: - try: - time = parse(query) - convert_result = str(self.totimestamp(time)) + if re.search('^\d+(\.\d?)?$', query): + timestamp = float(query) + local_datetime = datetime.fromtimestamp(timestamp) + utc_datetime = datetime.utcfromtimestamp(timestamp) + result += [ Item( - title=u'TimeStamp to DateTime to TimeStamp' + ': ' + query, - subtitle=convert_result, - arg=self.name + u'-datetime-to-timestamp:' + convert_result, + title=u'TimeStamp to DateTime(Local)' + ': ' + query, + subtitle=str(local_datetime), + arg=self.name + u'-timestamp-to-datetime-local:' + str(local_datetime), + valid=True, + icon=self.icon_path() + ), + Item( + title=u'TimeStamp to DateTime(UTC)' + ': ' + query, + subtitle=str(utc_datetime), + arg=self.name + u'-timestamp-to-datetime-utc:' + str(utc_datetime), valid=True, icon=self.icon_path() ) ] - except: - pass + else: + try: + parsed_datetime = parse(query) + convert_result = str(self.totimestamp(parsed_datetime)) + result += [ + Item( + title=u'TimeStamp to DateTime to TimeStamp' + ': ' + query, + subtitle=convert_result, + arg=self.name + u'-datetime-to-timestamp:' + convert_result, + valid=True, + icon=self.icon_path() + ) + ] + except: + pass return result diff --git a/model/the_uuid.py b/model/the_uuid.py new file mode 100644 index 0000000..281d007 --- /dev/null +++ b/model/the_uuid.py @@ -0,0 +1,51 @@ +import uuid + +from model.base_model import BaseModel +from workflow.workflow import Item + + +class TheUUID(BaseModel): + def __init__(self): + self.name = u'uuid' + self.desc = u'UUID Converter' + + def convert(self, query): + result = [] + + if not query: + new_uuid = str(uuid.uuid4()) + result += [ + Item( + title=u'New UUID', + subtitle=new_uuid, + arg=self.name + u'-uuid4:' + new_uuid, + valid=True, + icon=self.icon_path() + ) + ] + else: + if "-" in query: + no_dash_uuid = query.replace('-', '') + result += [ + Item( + title=u'UUID without dash', + subtitle=no_dash_uuid, + arg=self.name + u'-uuid-without-dash:' + no_dash_uuid, + valid=True, + icon=self.icon_path() + ) + ] + + if "-" not in query and len(query) == 32: + formatted_uuid = "%s-%s-%s-%s-%s" % (query[0:8], query[8:12], query[12:16], query[16:20], query[20:]) + result += [ + Item( + title=u'Formatted UUID', + subtitle=formatted_uuid, + arg=self.name + u'-formatted-uuid:' + formatted_uuid, + valid=True, + icon=self.icon_path() + ) + ] + + return result