2022.02.21.8

This commit is contained in:
ульба 2022-02-21 12:08:23 +05:00
parent 2944496e47
commit a705ab5785
44 changed files with 624 additions and 262 deletions

View File

@ -1,3 +1,3 @@
global-include *.md *.png *.ini *.txt global-include *.md *.png *.ini *.txt *.py
global-exclude ./generated global-exclude ./generated
exclude deploy.py readme-template.md .gitignore exclude deploy.py readme-template.md .gitignore

View File

@ -7,7 +7,10 @@ from PIL import Image
from MockupEngineer import templates from MockupEngineer import templates
from MockupEngineer.templates import Device, ALL_TEMPLATES from MockupEngineer.templates import Device, ALL_TEMPLATES
from MockupEngineer.utils import random_string from MockupEngineer.utils import random_string, get_title
from MockupEngineer.utils.about import author
__author__ = author()
generated_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'generated') generated_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'generated')
if not os.path.exists(generated_path): if not os.path.exists(generated_path):
@ -35,9 +38,12 @@ class MockupEngineerInstance:
dicted = dict() dicted = dict()
for template in self.templates: for template in self.templates:
if template.type in dicted.keys(): if template.type in dicted.keys():
dicted[template.type].append(template) dicted[template.type]["templates"].append(template)
else: else:
dicted[template.type] = [template] dicted[template.type] = {
"title": get_title(template.type),
"templates": [template]
}
return dicted return dicted
def generate(self, template_id: str, def generate(self, template_id: str,

View File

@ -1,29 +1,82 @@
import os
import webbrowser import webbrowser
from MockupEngineer import MockupEngineerInstance from MockupEngineer import MockupEngineerInstance, Device
def main(): def cls():
mockup = MockupEngineerInstance() os.system('cls' if os.name == 'nt' else 'clear')
i = 0
for template in mockup.templates: class Main:
print('[{}] {} {} [{}] ({})'.format(i, template.manufacturer, template.name, template.resolution, template.year)) def __init__(self):
i += 1 print('Loading modules...')
template = mockup.templates[int(input('Choose device: '))] self.mockup = MockupEngineerInstance()
print('- - - - - - - - - -') cls()
i = 0 self.select_category()
for color in template.colors:
print('[{}] {}'.format(i, color.color)) def exit(self):
i += 1 cls()
color = template.colors[int(input('Choose color: '))].color exit()
print('- - - - - - - - - -')
screenshot = input('Enter path to screenshot: ') def input(self, placeholder: str, func, args=()):
print('- - - - - - - - - -\nWorking...') cls()
mockup = mockup.generate(template.id, screenshot, color, external_storage=True) return func(input(placeholder), *args)
print('- - - - - - - - - -\nSuccess: {}'.format(mockup))
webbrowser.open(mockup, new=0, autoraise=True) def menu(self, **variants):
variants = {a.replace('var', ''): b for a, b in variants.items()}
for a, (b, _, _) in variants.items():
print(' [{}] {}'.format(a, b))
val = input('Enter value: ')
if val not in variants:
cls()
print('Invalid value, try again:')
return self.menu(**variants)
else:
variants[val][1](*variants[val][2])
def select_category(self):
cls()
print('Select device category:')
self.menu(**{str(num + 1): (a['title'], self.select_template, (b,)) for num, (b, a) in
enumerate(self.mockup.get_templates().items())},
var0=('Exit', self.exit, ()))
def select_template(self, category: str):
cls()
print('Choose a device:')
self.menu(**{str(num + 1): (
'{} {} ({}) [{}]'.format(a.manufacturer, a.name, a.resolution, a.year), self.select_color, (a.id,)) for
num, a
in enumerate(self.mockup.get_templates()[category]['templates'])},
var0=('Back', self.select_category, ()))
def select_color(self, template_id):
cls()
print('Choose color:')
template = self.mockup.get_template(template_id)
self.menu(
**{str(num + 1): (a.color, self.enter_path, (a.color, template)) for num, a in enumerate(template.colors)},
var0=('Back', self.select_template, (template.type,)))
def enter_path(self, color: str, template: Device):
self.input('Enter the path to the screenshot: ', self.generate, (color, template))
def generate(self, path: str, color: str, template: Device):
if not os.path.isfile(path):
return self.input('File does not exist, try again: ', self.generate, (color, template))
if not (path.lower().endswith('.png') or path.lower().endswith('.jpg') or path.lower().endswith('.jpeg')):
return self.input('MockupEngineer supports .png and .jpeg screenshots, try again: ', self.generate,
(color, template))
cls()
print('Generating...')
url = self.mockup.generate(screenshot_path=path, template_id=template.id, color=color, external_storage=True)
cls()
print('Success: {}'.format(url))
webbrowser.open(url)
self.menu(var1=('Back', self.select_category, ()),
var0=('Exit', self.exit, ()))
if __name__ == '__main__': if __name__ == '__main__':
main() Main()

View File

@ -1,11 +1,14 @@
import datetime
import hashlib import hashlib
import os import os
from configparser import ConfigParser from configparser import ConfigParser, NoOptionError, NoSectionError
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from MockupEngineer.utils.about import author, author_url
templates_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates') templates_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')
@ -36,6 +39,13 @@ class DeviceImage:
rotate: bool rotate: bool
@dataclass(frozen=False)
class About:
author: str
url: str
created: str
@dataclass(frozen=False) @dataclass(frozen=False)
class Device: class Device:
def __init__(self, path: str): def __init__(self, path: str):
@ -66,8 +76,45 @@ class Device:
mask_path=os.path.join(templates_path, path, 'mask.png') if config.get('image', 'mask') == 'true' else None, mask_path=os.path.join(templates_path, path, 'mask.png') if config.get('image', 'mask') == 'true' else None,
rotate=config.get('image', 'rotate') == 'true') rotate=config.get('image', 'rotate') == 'true')
self.__path__ = path
self.about = About(
author=self.__get_author__(config),
url=self.__get_url__(config),
created=self.__get_creation_date__(config)
)
def __str__(self): def __str__(self):
return '<MockupEngineer.templates.Device {} {} {}>'.format(self.manufacturer, self.name, self.year) return '<MockupEngineer.templates.Device {} {} {}>'.format(self.manufacturer, self.name, self.year)
def __post_init__(self): def __post_init__(self):
self.colors = sorted(self.colors, key=lambda a: a.color) self.colors = sorted(self.colors, key=lambda a: a.color)
def __write_config__(self, config: ConfigParser) -> None:
with open(os.path.join(templates_path, self.__path__, 'config.ini'), 'w', encoding='utf8') as f:
config.write(f)
def __get_author__(self, config: ConfigParser) -> str:
try:
return config.get('about', 'author')
except (NoOptionError, NoSectionError):
if 'about' not in config.sections():
config.add_section('about')
config['about']['author'] = author()
self.__write_config__(config)
def __get_url__(self, config: ConfigParser) -> str:
try:
return config.get('about', 'url')
except (NoOptionError, NoSectionError):
if 'about' not in config.sections():
config.add_section('about')
config['about']['url'] = author_url()
self.__write_config__(config)
def __get_creation_date__(self, config: ConfigParser) -> str:
dates = [os.path.getmtime(str(os.path.join(templates_path, self.__path__, item))) for _, item in config['colors'].items()]
date = datetime.datetime.utcfromtimestamp(max(dates)) if dates else datetime.datetime.utcnow()
config['about']['created'] = date.strftime('%d.%m.%Y')
self.__write_config__(config)
return config.get('about', 'created')

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Samsung manufacturer = Samsung
name = Galaxy S20 name = Galaxy S20
@ -20,3 +18,9 @@ x = 200
y = 200 y = 200
mask = true mask = true
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Samsung manufacturer = Samsung
name = Galaxy S20 Ultra name = Galaxy S20 Ultra
@ -19,3 +17,9 @@ x = 200
y = 200 y = 200
mask = true mask = true
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iMac 21" name = iMac 21"
@ -18,3 +16,9 @@ x = 173
y = 178 y = 178
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iMac 24" name = iMac 24"
@ -24,3 +22,9 @@ x = 235
y = 217 y = 217
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 03.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPad 9 name = iPad 9
@ -20,3 +18,9 @@ x = 150
y = 275 y = 275
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPad Air 4 name = iPad Air 4
@ -22,3 +20,9 @@ x = 150
y = 150 y = 150
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPad Mini 5 name = iPad Mini 5
@ -20,3 +18,9 @@ x = 150
y = 330 y = 330
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPad Pro 4 11" name = iPad Pro 4 11"
@ -19,3 +17,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPad Pro 4 12.9" name = iPad Pro 4 12.9"
@ -19,3 +17,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 12 name = iPhone 12
@ -22,3 +20,9 @@ x = 180
y = 180 y = 180
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 12 Mini name = iPhone 12 Mini
@ -22,3 +20,9 @@ x = 160
y = 160 y = 160
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 12 Pro name = iPhone 12 Pro
@ -21,3 +19,9 @@ x = 180
y = 180 y = 180
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 12 Pro Max name = iPhone 12 Pro Max
@ -21,3 +19,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 13 name = iPhone 13
@ -22,3 +20,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 19.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 13 Mini name = iPhone 13 Mini
@ -22,3 +20,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 19.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 13 Pro name = iPhone 13 Pro
@ -21,3 +19,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 19.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone 13 Pro Max name = iPhone 13 Pro Max
@ -21,3 +19,9 @@ x = 201
y = 202 y = 202
mask = true mask = true
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 19.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone SE name = iPhone SE
@ -20,3 +18,9 @@ x = 150
y = 300 y = 300
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 31.01.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone Xr name = iPhone Xr
@ -23,3 +21,9 @@ x = 110
y = 110 y = 110
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone Xs name = iPhone Xs
@ -20,3 +18,9 @@ x = 162
y = 142 y = 142
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = iPhone Xs Max name = iPhone Xs Max
@ -20,3 +18,9 @@ x = 182
y = 172 y = 172
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook 12" name = MacBook 12"
@ -19,3 +17,9 @@ x = 286
y = 180 y = 180
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook Air (M1) name = MacBook Air (M1)
@ -18,3 +16,9 @@ x = 252
y = 142 y = 142
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 03.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook Pro 13" name = MacBook Pro 13"
@ -18,3 +16,9 @@ x = 388
y = 176 y = 176
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook Pro 15" name = MacBook Pro 15"
@ -18,3 +16,9 @@ x = 328
y = 167 y = 167
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook Pro 16" name = MacBook Pro 16"
@ -18,3 +16,9 @@ x = 340
y = 224 y = 224
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = MacBook Pro 16" name = MacBook Pro 16"
@ -19,3 +17,9 @@ x = 406
y = 123 y = 123
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Google manufacturer = Google
name = Pixel name = Pixel
@ -20,3 +18,9 @@ x = 149
y = 317 y = 317
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Google manufacturer = Google
name = Pixel 4 name = Pixel 4
@ -20,3 +18,9 @@ x = 100
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Google manufacturer = Google
name = Pixel 4 XL name = Pixel 4 XL
@ -20,3 +18,9 @@ x = 100
y = 250 y = 250
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Google manufacturer = Google
name = Pixel 5 name = Pixel 5
@ -19,3 +17,9 @@ x = 200
y = 200 y = 200
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Google manufacturer = Google
name = Pixelbook Go name = Pixelbook Go
@ -18,3 +16,9 @@ x = 236
y = 185 y = 185
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = Pro Display XDR name = Pro Display XDR
@ -18,3 +16,9 @@ x = 140
y = 133 y = 133
mask = false mask = false
rotate = false rotate = false
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -1,5 +1,3 @@
# https://github.com/ulbwazhine/MockupEngineer
[info] [info]
manufacturer = Apple manufacturer = Apple
name = Watch Series 6 44mm name = Watch Series 6 44mm
@ -27,3 +25,9 @@ x = 129
y = 241 y = 241
mask = false mask = false
rotate = true rotate = true
[about]
author = ulbwa
url = https://ulbwa.xyz
created = 01.02.2022

View File

@ -3,6 +3,9 @@ import functools
import random import random
import string import string
specified_keys = {"pc": 'Computers',
'wear': 'Wearable devices'}
def run_sync(func, *args, **kwargs): def run_sync(func, *args, **kwargs):
return asyncio.get_event_loop() \ return asyncio.get_event_loop() \
@ -14,3 +17,7 @@ def run_sync(func, *args, **kwargs):
def random_string(n: int): def random_string(n: int):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(n)) return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(n))
def get_title(a: str):
return '{}s'.format(a.title()) if a not in specified_keys.keys() else specified_keys[a]

View File

@ -0,0 +1,10 @@
import os
def author() -> str:
return 'ulbwa'
def author_url() -> str:
return 'https://ulbwa.xyz'

View File

@ -43,9 +43,7 @@ def create_readme():
mockup = MockupEngineerInstance() mockup = MockupEngineerInstance()
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme-template.md'), 'r') as f: with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme-template.md'), 'r') as f:
data = Template(f.read()).render(templates=mockup.get_templates(), os=os, data = Template(f.read()).render(templates=mockup.get_templates(), os=os, enumerate=enumerate)
specified_keys={"pc": 'Computers',
'wear': 'Wearable devices'})
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme.md'), 'w') as f: with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'readme.md'), 'w') as f:
f.write(data) f.write(data)
@ -78,7 +76,7 @@ def run_pypi():
if __name__ == '__main__': if __name__ == '__main__':
# create_readme() create_readme()
# create_examples() # create_examples()
# bump_version() bump_version()
run_pypi() run_pypi()

View File

@ -63,7 +63,7 @@ from MockupEngineer import MockupEngineerInstance
mockup = MockupEngineerInstance() mockup = MockupEngineerInstance()
mockup.generate(template=mockup.templates[0], mockup.generate(template_id=mockup.templates[0].id,
screenshot_path='/path/to/screenshot', screenshot_path='/path/to/screenshot',
color=mockup.templates[0].colors[0].color) color=mockup.templates[0].colors[0].color)
``` ```
@ -73,7 +73,7 @@ mockup.generate(template=mockup.templates[0],
``` ```
#### `MockupEngineerInstance.generate` parameters: #### `MockupEngineerInstance.generate` parameters:
* `template`: *Template* — Device template model, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*. * `template_id`: *int* — Device template id, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
* `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**. * `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**.
* `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*. * `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*.
* `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*. * `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*.
@ -83,10 +83,13 @@ mockup.generate(template=mockup.templates[0],
Full list of all currently supported mockups Full list of all currently supported mockups
{% for a, b in templates.items() %} {% for a, b in templates.items() %}
### {{'{}s'.format(a.title()) if a not in specified_keys.keys() else specified_keys[a]}} ### {{b.title}}
{% for c in b %} {% for c in b.templates %}
* [{{c.manufacturer}} {{c.name}}](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/{{os.path.basename(os.path.dirname(c.preview))}}/preview.png) ({{c.year}}) [{{c.resolution}}] * [{{c.manufacturer}} {{c.name}}](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/{{os.path.basename(os.path.dirname(c.preview))}}/preview.png) ({{c.year}}) [{{c.resolution}}]
{% for d in c.colors %} * *{{d.color}}* * Author: [@{{c.about.author}}]({{c.about.url}}) [{{c.about.created}}]
* ID: `{{c.id}}`
* Colors:
{% for d in c.colors %} * * *{{d.color}}*
{% endfor %}{% endfor %}{% endfor %} {% endfor %}{% endfor %}{% endfor %}
You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer). You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer).

326
readme.md
View File

@ -63,7 +63,7 @@ from MockupEngineer import MockupEngineerInstance
mockup = MockupEngineerInstance() mockup = MockupEngineerInstance()
mockup.generate(template=mockup.templates[0], mockup.generate(template_id=mockup.templates[0].id,
screenshot_path='/path/to/screenshot', screenshot_path='/path/to/screenshot',
color=mockup.templates[0].colors[0].color) color=mockup.templates[0].colors[0].color)
``` ```
@ -73,7 +73,7 @@ mockup.generate(template=mockup.templates[0],
``` ```
#### `MockupEngineerInstance.generate` parameters: #### `MockupEngineerInstance.generate` parameters:
* `template`: *Template* — Device template model, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*. * `template_id`: *int* — Device template id, must be passed from *MockupEngineerInstance.templates* or *MockupEngineerInstance.get_templates()*.
* `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**. * `screenshot_path`: *str* — Absolute path to the image in **JPG, PNG format**.
* `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*. * `color`: *Optional[str]* — Optional parameter, force device color. Must be passed according to *Template.colors[**n**].color*.
* `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*. * `orientation`: *str* — Optional parameter, force device orientation. Must be *landscape* or *portrait*.
@ -86,188 +86,290 @@ Full list of all currently supported mockups
### Phones ### Phones
* [Samsung Galaxy S20](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20/preview.png) (2020) [1440 x 3200] * [Samsung Galaxy S20](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20/preview.png) (2020) [1440 x 3200]
* *Cloud Blue* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Cosmic Grey* * ID: `84b30848f1af25c9a3bff6583bbbe75a`
* *Pink* * Colors:
* * *Cloud Blue*
* * *Cosmic Grey*
* * *Pink*
* [Samsung Galaxy S20 Ultra](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20ultra/preview.png) (2020) [1440 x 3200] * [Samsung Galaxy S20 Ultra](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/galaxys20ultra/preview.png) (2020) [1440 x 3200]
* *Cosmic Black* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Cosmic Grey* * ID: `c4168e005483c3579bef74898a4b0384`
* Colors:
* * *Cosmic Black*
* * *Cosmic Grey*
* [Apple iPhone 12](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12/preview.png) (2020) [1170 x 2532] * [Apple iPhone 12](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12/preview.png) (2020) [1170 x 2532]
* *Black* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Blue* * ID: `1648990cfee89db1d6cb744c998e783a`
* *Green* * Colors:
* *Product Red* * * *Black*
* *White* * * *Blue*
* * *Green*
* * *Product Red*
* * *White*
* [Apple iPhone 12 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12mini/preview.png) (2020) [1080 x 2340] * [Apple iPhone 12 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12mini/preview.png) (2020) [1080 x 2340]
* *Black* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Blue* * ID: `aea792f252c0ba0847741c0a4a6dd3ca`
* *Green* * Colors:
* *Product Red* * * *Black*
* *White* * * *Blue*
* * *Green*
* * *Product Red*
* * *White*
* [Apple iPhone 12 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12pro/preview.png) (2020) [1170 x 2532] * [Apple iPhone 12 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12pro/preview.png) (2020) [1170 x 2532]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Graphite* * ID: `b25e4e76e2083e389761d3495a347e58`
* *Pacific Blue* * Colors:
* *Silver* * * *Gold*
* * *Graphite*
* * *Pacific Blue*
* * *Silver*
* [Apple iPhone 12 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12promax/preview.png) (2020) [1284 x 2778] * [Apple iPhone 12 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone12promax/preview.png) (2020) [1284 x 2778]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Graphite* * ID: `658c22b16917a70e5e1703f300ef98fe`
* *Pacific Blue* * Colors:
* *Silver* * * *Gold*
* * *Graphite*
* * *Pacific Blue*
* * *Silver*
* [Apple iPhone 13](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13/preview.png) (2021) [1170 x 2532] * [Apple iPhone 13](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13/preview.png) (2021) [1170 x 2532]
* *Blue* * Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
* *Midnight* * ID: `e03132ca8b4b0483e9d8f4a1ec1be1f5`
* *Pink* * Colors:
* *Product Red* * * *Blue*
* *Starlight* * * *Midnight*
* * *Pink*
* * *Product Red*
* * *Starlight*
* [Apple iPhone 13 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13mini/preview.png) (2021) [1080 x 2340] * [Apple iPhone 13 Mini](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13mini/preview.png) (2021) [1080 x 2340]
* *Blue* * Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
* *Midnight* * ID: `d0346fb29c4c3de9ff70953a7ae3bfee`
* *Pink* * Colors:
* *Product Red* * * *Blue*
* *Starlight* * * *Midnight*
* * *Pink*
* * *Product Red*
* * *Starlight*
* [Apple iPhone 13 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13pro/preview.png) (2021) [1170 x 2532] * [Apple iPhone 13 Pro](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13pro/preview.png) (2021) [1170 x 2532]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
* *Graphite* * ID: `1c6f40f0490c7e0cf35de1c96af5c720`
* *Sierra Blue* * Colors:
* *Silver* * * *Gold*
* * *Graphite*
* * *Sierra Blue*
* * *Silver*
* [Apple iPhone 13 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13promax/preview.png) (2021) [1284 x 2778] * [Apple iPhone 13 Pro Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphone13promax/preview.png) (2021) [1284 x 2778]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [19.02.2022]
* *Graphite* * ID: `edc57edf104fdba42fdf935986b09ab8`
* *Sierra Blue* * Colors:
* *Silver* * * *Gold*
* * *Graphite*
* * *Sierra Blue*
* * *Silver*
* [Apple iPhone SE](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonese2020/preview.png) (2020) [750 x 1334] * [Apple iPhone SE](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonese2020/preview.png) (2020) [750 x 1334]
* *Black* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Product Red* * ID: `7ed0bde8cf28335afb6bf7e8fc90806b`
* *White* * Colors:
* * *Black*
* * *Product Red*
* * *White*
* [Apple iPhone Xr](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexr/preview.png) (2018) [828 x 1792] * [Apple iPhone Xr](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexr/preview.png) (2018) [828 x 1792]
* *Blue* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Coral* * ID: `5213bfd57a03c81ad4dc702952810ee6`
* *Product Red* * Colors:
* *Silver* * * *Blue*
* *Space Gray* * * *Coral*
* *Yellow* * * *Product Red*
* * *Silver*
* * *Space Gray*
* * *Yellow*
* [Apple iPhone Xs](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexs/preview.png) (2019) [1125 x 2436] * [Apple iPhone Xs](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexs/preview.png) (2019) [1125 x 2436]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Silver* * ID: `4b17c9428565db596f647b448656b744`
* *Space Gray* * Colors:
* * *Gold*
* * *Silver*
* * *Space Gray*
* [Apple iPhone Xs Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexsmax/preview.png) (2019) [1242 x 2688] * [Apple iPhone Xs Max](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/iphonexsmax/preview.png) (2019) [1242 x 2688]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Silver* * ID: `2c9c1c6b8c0b598fe1c1aca4c1f334f8`
* *Space Gray* * Colors:
* * *Gold*
* * *Silver*
* * *Space Gray*
* [Google Pixel](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel/preview.png) (2016) [1080 x 1920] * [Google Pixel](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel/preview.png) (2016) [1080 x 1920]
* *Quite Black* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Really Blue* * ID: `ede34489f377fcc7852a326dd79c2550`
* *Very Silver* * Colors:
* * *Quite Black*
* * *Really Blue*
* * *Very Silver*
* [Google Pixel 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4/preview.png) (2019) [1080 x 2280] * [Google Pixel 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4/preview.png) (2019) [1080 x 2280]
* *Just Black* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Clearly White* * ID: `673398cd2adaadd60506fb0140b83ab9`
* *Oh So Orange* * Colors:
* * *Just Black*
* * *Clearly White*
* * *Oh So Orange*
* [Google Pixel 4 XL](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4xl/preview.png) (2019) [1440 x 3040] * [Google Pixel 4 XL](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel4xl/preview.png) (2019) [1440 x 3040]
* *Just Black* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Clearly White* * ID: `c55e7641f3ba76d7b777281b0ba4aa87`
* *Oh So Orange* * Colors:
* * *Just Black*
* * *Clearly White*
* * *Oh So Orange*
* [Google Pixel 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel5/preview.png) (2020) [1080 x 2340] * [Google Pixel 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixel5/preview.png) (2020) [1080 x 2340]
* *Just Black* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Sorta Sage* * ID: `870266635f047a49c2eae83f7d46e26e`
* Colors:
* * *Just Black*
* * *Sorta Sage*
### Computers ### Computers
* [Apple iMac 21"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac212015/preview.png) (2015) [4096 x 2304] * [Apple iMac 21"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac212015/preview.png) (2015) [4096 x 2304]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* ID: `385eb0911d0edb6821c18a2193bdadaf`
* Colors:
* * *Silver*
* [Apple iMac 24"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac242021/preview.png) (2021) [4480 x 2520] * [Apple iMac 24"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/imac242021/preview.png) (2021) [4480 x 2520]
* *Green* * Author: [@ulbwa](https://ulbwa.xyz) [03.02.2022]
* *Yellow* * ID: `40a349f85ca132c2d6c1444db0be9561`
* *Orange* * Colors:
* *Pink* * * *Green*
* *Purple* * * *Yellow*
* *Blue* * * *Orange*
* *Silver* * * *Pink*
* * *Purple*
* * *Blue*
* * *Silver*
* [Apple MacBook 12"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbook122016/preview.png) (2016) [2304 x 1440] * [Apple MacBook 12"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbook122016/preview.png) (2016) [2304 x 1440]
* *Space Gray* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Gold* * ID: `f74ec99f02ed5fafbe1cb1767763ed91`
* Colors:
* * *Space Gray*
* * *Gold*
* [Apple MacBook Air (M1)](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookair2020/preview.png) (2020) [2560 x 1600] * [Apple MacBook Air (M1)](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookair2020/preview.png) (2020) [2560 x 1600]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [03.02.2022]
* ID: `1f3fe3fec5b92861b7958bc75f40fe95`
* Colors:
* * *Silver*
* [Apple MacBook Pro 13"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro132015/preview.png) (2015) [2560 x 1600] * [Apple MacBook Pro 13"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro132015/preview.png) (2015) [2560 x 1600]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* ID: `2f15fb3eb0dde3b76771f3090c6ddbb6`
* Colors:
* * *Silver*
* [Apple MacBook Pro 15"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro152015/preview.png) (2015) [2880 x 1800] * [Apple MacBook Pro 15"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro152015/preview.png) (2015) [2880 x 1800]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* ID: `ba492b242a78b7f49caa41f61b5b3418`
* Colors:
* * *Silver*
* [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162019/preview.png) (2019) [3072 x 1920] * [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162019/preview.png) (2019) [3072 x 1920]
* *Space Gray* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* ID: `0bfe5c7d2a8a4e5398090c3027791ed1`
* Colors:
* * *Space Gray*
* [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162021/preview.png) (2021) [3456 x 2234] * [Apple MacBook Pro 16"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/macbookpro162021/preview.png) (2021) [3456 x 2234]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Space Gray* * ID: `80467845e71272f0d8d2bd13490a73f3`
* Colors:
* * *Silver*
* * *Space Gray*
* [Google Pixelbook Go](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixelbookgo/preview.png) (2019) [1920 x 1080] * [Google Pixelbook Go](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/pixelbookgo/preview.png) (2019) [1920 x 1080]
* *Just Black* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* ID: `6911ed9934b1c877a0b01c3750c2b79e`
* Colors:
* * *Just Black*
* [Apple Pro Display XDR](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/prodisplayxdr/preview.png) (2019) [6016 x 3384] * [Apple Pro Display XDR](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/prodisplayxdr/preview.png) (2019) [6016 x 3384]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* ID: `8b728f1faab0389874db4bb0ae6244e5`
* Colors:
* * *Silver*
### Tablets ### Tablets
* [Apple iPad 9](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipad9/preview.png) (2021) [2160 x 1620] * [Apple iPad 9](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipad9/preview.png) (2021) [2160 x 1620]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Silver* * ID: `9c1f043b21ef803bd467135b83105f0b`
* *Space Gray* * Colors:
* * *Gold*
* * *Silver*
* * *Space Gray*
* [Apple iPad Air 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadair4/preview.png) (2020) [2360 x 1640] * [Apple iPad Air 4](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadair4/preview.png) (2020) [2360 x 1640]
* *Green* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Rose Gold* * ID: `569262bc590b30cfb296471c3c8a4af8`
* *Silver* * Colors:
* *Sky Blue* * * *Green*
* *Space Gray* * * *Rose Gold*
* * *Silver*
* * *Sky Blue*
* * *Space Gray*
* [Apple iPad Mini 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadmini5/preview.png) (2021) [2048 x 1536] * [Apple iPad Mini 5](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadmini5/preview.png) (2021) [2048 x 1536]
* *Gold* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Silver* * ID: `7a8b3c603fe34817d9233e5b6afed174`
* *Space Gray* * Colors:
* * *Gold*
* * *Silver*
* * *Space Gray*
* [Apple iPad Pro 4 11"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro114/preview.png) (2020) [2388 x 1668] * [Apple iPad Pro 4 11"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro114/preview.png) (2020) [2388 x 1668]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Space Gray* * ID: `e47f6e3bb880a034866f59f97f612abe`
* Colors:
* * *Silver*
* * *Space Gray*
* [Apple iPad Pro 4 12.9"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro134/preview.png) (2020) [2732 x 2048] * [Apple iPad Pro 4 12.9"](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/ipadpro134/preview.png) (2020) [2732 x 2048]
* *Silver* * Author: [@ulbwa](https://ulbwa.xyz) [31.01.2022]
* *Space Gray* * ID: `9a85db6aeb1d45c896daff67af785936`
* Colors:
* * *Silver*
* * *Space Gray*
### Wearable devices ### Wearable devices
* [Apple Watch Series 6 44mm](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/watchseries644mm/preview.png) (2020) [368 x 448] * [Apple Watch Series 6 44mm](https://raw.githubusercontent.com/ulbwazhine/MockupEngineer/main/MockupEngineer/templates/watchseries644mm/preview.png) (2020) [368 x 448]
* *Aluminum Case - Blue* * Author: [@ulbwa](https://ulbwa.xyz) [01.02.2022]
* *Aluminum Case - Gold* * ID: `e055638cf7325a856ed0369dc8d0dcb1`
* *Aluminum Case - Space Gray* * Colors:
* *Aluminum Case - Silver* * * *Aluminum Case - Blue*
* *Aluminum Case - Product Red* * * *Aluminum Case - Gold*
* *Titanium Case - Light* * * *Aluminum Case - Space Gray*
* *Titanium Case - Dark* * * *Aluminum Case - Silver*
* *Stainless Steel Case - Gold* * * *Aluminum Case - Product Red*
* *Stainless Steel Case - Graphite* * * *Titanium Case - Light*
* *Stainless Steel Case - Silver* * * *Titanium Case - Dark*
* * *Stainless Steel Case - Gold*
* * *Stainless Steel Case - Graphite*
* * *Stainless Steel Case - Silver*
You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer). You can help the project by adding support for new mockups by contributing on [GitHub](https://github.com/ulbwazhine/MockupEngineer).

View File

@ -3,7 +3,7 @@ from setuptools import setup, find_packages
setup( setup(
name='MockupEngineer', name='MockupEngineer',
version='2022.02.19.1', version='2022.02.21.8',
packages=find_packages(), packages=find_packages(),
url='https://github.com/ulbwazhine/MockupEngineer', url='https://github.com/ulbwazhine/MockupEngineer',
license='MIT', license='MIT',