#! /usr/bin/env python3
import re, pyperclip
# Create a regex for phone numbers - needs to update for 1112223333 style
phoneRegex = re.compile(r'''
# 415-555-0000, 555-5555, (555) 555-5555, 555-5555 ext 12345, ext. 12345, x12345
(
((\d\d\d)|(\(\d\d\d\)))? # area code (optional)
(\s|-)? # first separator
\d\d\d #first 3 digits
(-)? #separator
\d\d\d\d # last 4 digits
(((ext(\.)?\s)|x) #extension word-part (optional)
(\d{2,5}))? #extension num-part (optional)
)
''', re.VERBOSE)
# Create a regex for email addresses
emailRegex = re.compile(r'''
# some.+thing_@someting.com/edu/net/etc
[a-zA-Z0-9_.+]+ # name part
@ # @ symbol
[a-zA-Z0-9_.+]+ # domain name part
''', re.VERBOSE)
# Get text off clipboard
text = pyperclip.paste()
# TODO: Extract email/phone from text
extractedPhone = phoneRegex.findall(text)
extractedEmail = emailRegex.findall(text)
allPhoneNumbers = []
for phoneNumber in extractedPhone:
allPhoneNumbers.append(phoneNumber[0])
# Copy extracted email/phone to clipboard
results = '\n'.join(allPhoneNumbers) + '\n' + '\n'.join(extractedEmail)
pyperclip.copy(results)
IyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKCmltcG9ydCByZSwgcHlwZXJjbGlwCgojIENyZWF0ZSBhIHJlZ2V4IGZvciBwaG9uZSBudW1iZXJzIC0gbmVlZHMgdG8gdXBkYXRlIGZvciAxMTEyMjIzMzMzIHN0eWxlCnBob25lUmVnZXggPSByZS5jb21waWxlKHInJycKIyA0MTUtNTU1LTAwMDAsIDU1NS01NTU1LCAoNTU1KSA1NTUtNTU1NSwgNTU1LTU1NTUgZXh0IDEyMzQ1LCBleHQuIDEyMzQ1LCB4MTIzNDUKKAooKFxkXGRcZCl8KFwoXGRcZFxkXCkpKT8gICAjIGFyZWEgY29kZSAob3B0aW9uYWwpCihcc3wtKT8gICAgICAgICAgICAgICAgICAgICAjIGZpcnN0IHNlcGFyYXRvcgpcZFxkXGQgICAgICAgICAgICAgICAgICAgICAjZmlyc3QgMyBkaWdpdHMKKC0pPyAgICAgICAgICAgICAgICAgICAgICAgICNzZXBhcmF0b3IKXGRcZFxkXGQgICAgICAgICAgICAgICAgICAgIyBsYXN0IDQgZGlnaXRzCigoKGV4dChcLik/XHMpfHgpICAgICAgICAgICNleHRlbnNpb24gd29yZC1wYXJ0IChvcHRpb25hbCkKIChcZHsyLDV9KSk/ICAgICAgICAgICAgICAgI2V4dGVuc2lvbiBudW0tcGFydCAob3B0aW9uYWwpCikKJycnLCByZS5WRVJCT1NFKQoKIyBDcmVhdGUgYSByZWdleCBmb3IgZW1haWwgYWRkcmVzc2VzCmVtYWlsUmVnZXggPSByZS5jb21waWxlKHInJycKIyBzb21lLit0aGluZ19Ac29tZXRpbmcuY29tL2VkdS9uZXQvZXRjCgpbYS16QS1aMC05Xy4rXSsgICAgICAgICAgICAjIG5hbWUgcGFydApAICAgICAgICAgICAgICAgICAgICAgICAgICAjIEAgc3ltYm9sClthLXpBLVowLTlfLitdKyAgICAgICAgICAgICMgZG9tYWluIG5hbWUgcGFydAoKJycnLCByZS5WRVJCT1NFKQoKIyBHZXQgdGV4dCBvZmYgY2xpcGJvYXJkCnRleHQgPSBweXBlcmNsaXAucGFzdGUoKQoKCiMgVE9ETzogRXh0cmFjdCBlbWFpbC9waG9uZSBmcm9tIHRleHQKZXh0cmFjdGVkUGhvbmUgPSBwaG9uZVJlZ2V4LmZpbmRhbGwodGV4dCkKZXh0cmFjdGVkRW1haWwgPSBlbWFpbFJlZ2V4LmZpbmRhbGwodGV4dCkKCmFsbFBob25lTnVtYmVycyA9IFtdCmZvciBwaG9uZU51bWJlciBpbiBleHRyYWN0ZWRQaG9uZToKICAgIGFsbFBob25lTnVtYmVycy5hcHBlbmQocGhvbmVOdW1iZXJbMF0pCgojIENvcHkgZXh0cmFjdGVkIGVtYWlsL3Bob25lIHRvIGNsaXBib2FyZApyZXN1bHRzID0gJ1xuJy5qb2luKGFsbFBob25lTnVtYmVycykgKyAnXG4nICsgJ1xuJy5qb2luKGV4dHJhY3RlZEVtYWlsKQpweXBlcmNsaXAuY29weShyZXN1bHRzKQo=