Last active
March 22, 2023 19:36
-
-
Save np5/a5603d1698ae88bd20e26e542e3db786 to your computer and use it in GitHub Desktop.
How to get the Apple computer identifiers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import argparse | |
import urllib.request | |
PAGES = ( | |
("https://support.apple.com/en-us/HT201862", "MacBook Air", "LAPTOP"), | |
("https://support.apple.com/en-us/HT201300", "MacBook Pro", "LAPTOP"), | |
("https://support.apple.com/en-us/HT201894", "Mac mini", "DESKTOP"), | |
("https://support.apple.com/en-us/HT213073", "Mac Studio", "DESKTOP"), | |
("https://support.apple.com/en-us/HT201634", "iMac", "DESKTOP"), | |
("https://support.apple.com/en-us/HT202888", "Mac Pro", "DESKTOP"), | |
) | |
def get_page_content(url): | |
f = urllib.request.urlopen(url) | |
return f.read().decode("utf-8") | |
def extract_model_identifiers(content): | |
for line in content.splitlines(): | |
if "Model Identifier" not in line: | |
continue | |
line = line.split(":")[1].strip() | |
line = line.replace("<br>", "") | |
line = line.strip() | |
line = line.replace(" ", ";") # Robust split | |
line = line.replace(", ", ";") # Robust split v2 | |
for model_identifier in line.split(";"): | |
model_identifier = model_identifier.strip(", ") | |
if model_identifier: | |
yield model_identifier | |
def pretty_print(model, machine_type, model_identifiers): | |
print(model, "-", machine_type.title()) | |
for model_identifier in model_identifiers: | |
print(" -", model_identifier) | |
def quick_and_dirty_header_print(): | |
print("Model,Type,Identifier") | |
def quick_and_dirty_csv_print(model, machine_type, model_identifiers): | |
for model_identifier in model_identifiers: | |
print(f'{model},{machine_type},"{model_identifier}"') | |
def get_all_model_identifiers(args): | |
if args.csv: | |
quick_and_dirty_header_print() | |
for url, model, machine_type in PAGES: | |
content = get_page_content(url) | |
model_identifiers = list(extract_model_identifiers(content)) | |
model_identifiers.sort() | |
if not args.csv: | |
pretty_print(model, machine_type, model_identifiers) | |
else: | |
quick_and_dirty_csv_print(model, machine_type, model_identifiers) | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser("apple_model_identifiers.py") | |
group = parser.add_mutually_exclusive_group() | |
group.add_argument('-p', '--pretty', action='store_true', help='Pretty print') | |
group.add_argument('-c', '--csv', action='store_true', help='CSV output') | |
args = parser.parse_args() | |
get_all_model_identifiers(args) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Model | Type | Identifier | |
---|---|---|---|
MacBook Air | LAPTOP | Mac14,2 | |
MacBook Air | LAPTOP | MacBookAir10,1 | |
MacBook Air | LAPTOP | MacBookAir2,1 | |
MacBook Air | LAPTOP | MacBookAir3,1 | |
MacBook Air | LAPTOP | MacBookAir3,2 | |
MacBook Air | LAPTOP | MacBookAir4,1 | |
MacBook Air | LAPTOP | MacBookAir4,2 | |
MacBook Air | LAPTOP | MacBookAir5,1 | |
MacBook Air | LAPTOP | MacBookAir5,2 | |
MacBook Air | LAPTOP | MacBookAir6,1 | |
MacBook Air | LAPTOP | MacBookAir6,1 | |
MacBook Air | LAPTOP | MacBookAir6,2 | |
MacBook Air | LAPTOP | MacBookAir6,2 | |
MacBook Air | LAPTOP | MacBookAir7,1 | |
MacBook Air | LAPTOP | MacBookAir7,2 | |
MacBook Air | LAPTOP | MacBookAir7,2 | |
MacBook Air | LAPTOP | MacBookAir8,1 | |
MacBook Air | LAPTOP | MacBookAir8,2 | |
MacBook Air | LAPTOP | MacBookAir9,1 | |
MacBook Pro | LAPTOP | Mac14,10 | |
MacBook Pro | LAPTOP | Mac14,5 | |
MacBook Pro | LAPTOP | Mac14,6 | |
MacBook Pro | LAPTOP | Mac14,7 | |
MacBook Pro | LAPTOP | Mac14,9 | |
MacBook Pro | LAPTOP | MacBookPro10,1 | |
MacBook Pro | LAPTOP | MacBookPro10,1 | |
MacBook Pro | LAPTOP | MacBookPro10,2 | |
MacBook Pro | LAPTOP | MacBookPro10,2 | |
MacBook Pro | LAPTOP | MacBookPro11,1 | |
MacBook Pro | LAPTOP | MacBookPro11,1 | |
MacBook Pro | LAPTOP | MacBookPro11,2 | |
MacBook Pro | LAPTOP | MacBookPro11,2 | |
MacBook Pro | LAPTOP | MacBookPro11,3 | |
MacBook Pro | LAPTOP | MacBookPro11,3 | |
MacBook Pro | LAPTOP | MacBookPro11,4 | |
MacBook Pro | LAPTOP | MacBookPro11,5 | |
MacBook Pro | LAPTOP | MacBookPro12,1 | |
MacBook Pro | LAPTOP | MacBookPro13,1 | |
MacBook Pro | LAPTOP | MacBookPro13,2 | |
MacBook Pro | LAPTOP | MacBookPro13,3 | |
MacBook Pro | LAPTOP | MacBookPro14,1 | |
MacBook Pro | LAPTOP | MacBookPro14,2 | |
MacBook Pro | LAPTOP | MacBookPro14,3 | |
MacBook Pro | LAPTOP | MacBookPro15,1 | |
MacBook Pro | LAPTOP | MacBookPro15,1 | |
MacBook Pro | LAPTOP | MacBookPro15,2 | |
MacBook Pro | LAPTOP | MacBookPro15,2 | |
MacBook Pro | LAPTOP | MacBookPro15,3 | |
MacBook Pro | LAPTOP | MacBookPro15,4 | |
MacBook Pro | LAPTOP | MacBookPro16,1 | |
MacBook Pro | LAPTOP | MacBookPro16,2 | |
MacBook Pro | LAPTOP | MacBookPro16,3 | |
MacBook Pro | LAPTOP | MacBookPro16,4 | |
MacBook Pro | LAPTOP | MacBookPro17,1 | |
MacBook Pro | LAPTOP | MacBookPro18,1 | |
MacBook Pro | LAPTOP | MacBookPro18,2 | |
MacBook Pro | LAPTOP | MacBookPro18,3 | |
MacBook Pro | LAPTOP | MacBookPro18,4 | |
MacBook Pro | LAPTOP | MacBookPro4,1 | |
MacBook Pro | LAPTOP | MacBookPro4,1 | |
MacBook Pro | LAPTOP | MacBookPro5,1 | |
MacBook Pro | LAPTOP | MacBookPro5,2 | |
MacBook Pro | LAPTOP | MacBookPro5,2 | |
MacBook Pro | LAPTOP | MacBookPro5,3 | |
MacBook Pro | LAPTOP | MacBookPro5,3 | |
MacBook Pro | LAPTOP | MacBookPro5,5 | |
MacBook Pro | LAPTOP | MacBookPro6,1 | |
MacBook Pro | LAPTOP | MacBookPro6,2 | |
MacBook Pro | LAPTOP | MacBookPro7,1 | |
MacBook Pro | LAPTOP | MacBookPro8,1 | |
MacBook Pro | LAPTOP | MacBookPro8,1 | |
MacBook Pro | LAPTOP | MacBookPro8,2 | |
MacBook Pro | LAPTOP | MacBookPro8,2 | |
MacBook Pro | LAPTOP | MacBookPro8,3 | |
MacBook Pro | LAPTOP | MacBookPro8,3 | |
MacBook Pro | LAPTOP | MacBookPro9,1 | |
MacBook Pro | LAPTOP | MacBookPro9,2 | |
Mac mini | DESKTOP | Mac14,12 | |
Mac mini | DESKTOP | Mac14,3 | |
Mac mini | DESKTOP | Macmini3,1 | |
Mac mini | DESKTOP | Macmini3,1 | |
Mac mini | DESKTOP | Macmini4,1 | |
Mac mini | DESKTOP | Macmini5,1 | |
Mac mini | DESKTOP | Macmini5,2 | |
Mac mini | DESKTOP | Macmini6,1 | |
Mac mini | DESKTOP | Macmini6,2 | |
Mac mini | DESKTOP | Macmini7,1 | |
Mac mini | DESKTOP | Macmini8,1 | |
Mac mini | DESKTOP | Macmini9,1 | |
Mac Studio | DESKTOP | Mac13,1 | |
Mac Studio | DESKTOP | Mac13,2 | |
iMac | DESKTOP | iMac10,1 | |
iMac | DESKTOP | iMac10,1 | |
iMac | DESKTOP | iMac11,2 | |
iMac | DESKTOP | iMac11,3 | |
iMac | DESKTOP | iMac12,1 | |
iMac | DESKTOP | iMac12,2 | |
iMac | DESKTOP | iMac13,1 | |
iMac | DESKTOP | iMac13,2 | |
iMac | DESKTOP | iMac14,1 | |
iMac | DESKTOP | iMac14,2 | |
iMac | DESKTOP | iMac14,4 | |
iMac | DESKTOP | iMac15,1 | |
iMac | DESKTOP | iMac15,1 | |
iMac | DESKTOP | iMac16,1 | |
iMac | DESKTOP | iMac16,2 | |
iMac | DESKTOP | iMac17,1 | |
iMac | DESKTOP | iMac18,1 | |
iMac | DESKTOP | iMac18,2 | |
iMac | DESKTOP | iMac18,3 | |
iMac | DESKTOP | iMac19,1 | |
iMac | DESKTOP | iMac19,2 | |
iMac | DESKTOP | iMac20,1 | |
iMac | DESKTOP | iMac20,2 | |
iMac | DESKTOP | iMac21,1 | |
iMac | DESKTOP | iMac21,2 | |
iMac | DESKTOP | iMac9,1 | |
iMac | DESKTOP | iMac9,1 | |
iMac | DESKTOP | iMacPro1,1 | |
Mac Pro | DESKTOP | MacPro4,1 | |
Mac Pro | DESKTOP | MacPro5,1 | |
Mac Pro | DESKTOP | MacPro5,1 | |
Mac Pro | DESKTOP | MacPro5,1 | |
Mac Pro | DESKTOP | MacPro5,1 | |
Mac Pro | DESKTOP | MacPro6,1 | |
Mac Pro | DESKTOP | MacPro7,1 | |
Mac Pro | DESKTOP | MacPro7,1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MacBook Air - Laptop | |
- Mac14,2 | |
- MacBookAir10,1 | |
- MacBookAir2,1 | |
- MacBookAir3,1 | |
- MacBookAir3,2 | |
- MacBookAir4,1 | |
- MacBookAir4,2 | |
- MacBookAir5,1 | |
- MacBookAir5,2 | |
- MacBookAir6,1 | |
- MacBookAir6,1 | |
- MacBookAir6,2 | |
- MacBookAir6,2 | |
- MacBookAir7,1 | |
- MacBookAir7,2 | |
- MacBookAir7,2 | |
- MacBookAir8,1 | |
- MacBookAir8,2 | |
- MacBookAir9,1 | |
MacBook Pro - Laptop | |
- Mac14,10 | |
- Mac14,5 | |
- Mac14,6 | |
- Mac14,7 | |
- Mac14,9 | |
- MacBookPro10,1 | |
- MacBookPro10,1 | |
- MacBookPro10,2 | |
- MacBookPro10,2 | |
- MacBookPro11,1 | |
- MacBookPro11,1 | |
- MacBookPro11,2 | |
- MacBookPro11,2 | |
- MacBookPro11,3 | |
- MacBookPro11,3 | |
- MacBookPro11,4 | |
- MacBookPro11,5 | |
- MacBookPro12,1 | |
- MacBookPro13,1 | |
- MacBookPro13,2 | |
- MacBookPro13,3 | |
- MacBookPro14,1 | |
- MacBookPro14,2 | |
- MacBookPro14,3 | |
- MacBookPro15,1 | |
- MacBookPro15,1 | |
- MacBookPro15,2 | |
- MacBookPro15,2 | |
- MacBookPro15,3 | |
- MacBookPro15,4 | |
- MacBookPro16,1 | |
- MacBookPro16,2 | |
- MacBookPro16,3 | |
- MacBookPro16,4 | |
- MacBookPro17,1 | |
- MacBookPro18,1 | |
- MacBookPro18,2 | |
- MacBookPro18,3 | |
- MacBookPro18,4 | |
- MacBookPro4,1 | |
- MacBookPro4,1 | |
- MacBookPro5,1 | |
- MacBookPro5,2 | |
- MacBookPro5,2 | |
- MacBookPro5,3 | |
- MacBookPro5,3 | |
- MacBookPro5,5 | |
- MacBookPro6,1 | |
- MacBookPro6,2 | |
- MacBookPro7,1 | |
- MacBookPro8,1 | |
- MacBookPro8,1 | |
- MacBookPro8,2 | |
- MacBookPro8,2 | |
- MacBookPro8,3 | |
- MacBookPro8,3 | |
- MacBookPro9,1 | |
- MacBookPro9,2 | |
Mac mini - Desktop | |
- Mac14,12 | |
- Mac14,3 | |
- Macmini3,1 | |
- Macmini3,1 | |
- Macmini4,1 | |
- Macmini5,1 | |
- Macmini5,2 | |
- Macmini6,1 | |
- Macmini6,2 | |
- Macmini7,1 | |
- Macmini8,1 | |
- Macmini9,1 | |
Mac Studio - Desktop | |
- Mac13,1 | |
- Mac13,2 | |
iMac - Desktop | |
- iMac10,1 | |
- iMac10,1 | |
- iMac11,2 | |
- iMac11,3 | |
- iMac12,1 | |
- iMac12,2 | |
- iMac13,1 | |
- iMac13,2 | |
- iMac14,1 | |
- iMac14,2 | |
- iMac14,4 | |
- iMac15,1 | |
- iMac15,1 | |
- iMac16,1 | |
- iMac16,2 | |
- iMac17,1 | |
- iMac18,1 | |
- iMac18,2 | |
- iMac18,3 | |
- iMac19,1 | |
- iMac19,2 | |
- iMac20,1 | |
- iMac20,2 | |
- iMac21,1 | |
- iMac21,2 | |
- iMac9,1 | |
- iMac9,1 | |
- iMacPro1,1 | |
Mac Pro - Desktop | |
- MacPro4,1 | |
- MacPro5,1 | |
- MacPro5,1 | |
- MacPro5,1 | |
- MacPro5,1 | |
- MacPro6,1 | |
- MacPro7,1 | |
- MacPro7,1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment