🧆 improve and test parse_ios_screenshot_name
This commit is contained in:
parent
806a07b719
commit
bbf17ee59c
@ -1226,23 +1226,34 @@ FASTLANE_IOS_MAP = {
|
|||||||
|
|
||||||
def parse_ios_screenshot_name(path):
|
def parse_ios_screenshot_name(path):
|
||||||
"""
|
"""
|
||||||
Infer type info from screenshot file name.
|
Infer type and categorization info from screenshot file name.
|
||||||
|
|
||||||
Device type/name is part of the file name of iOS fastlane screenshots.
|
This is not really an exact algorithm, it's based on filenames observed in
|
||||||
Here are some example:
|
the wild.
|
||||||
* 'iPhone 8+ @ iOS 16-1.png'
|
|
||||||
* 'iPad Pro 12.9" 2gen @ iOS 16-1.png'
|
|
||||||
* '1_ipadPro129_1.1.png'
|
|
||||||
* '1_iphone6Plus_1.1.png'
|
|
||||||
"""
|
"""
|
||||||
s = path.stem.split('@')
|
s = path.stem.split('@')
|
||||||
if len(s) >= 2:
|
if len(s) >= 2:
|
||||||
if "iphone" in s[0].lower():
|
if "iphone" in s[0].lower():
|
||||||
return ("phoneScreenshots", '@'.join(s[1:]))
|
return ("phoneScreenshots", s[0].strip(), ('@'.join(s[1:])).split('-')[0].strip())
|
||||||
elif "ipad" in s[0].lower():
|
elif "ipad" in s[0].lower():
|
||||||
return ("tenInchScreenshots", "@".join(s[1:]))
|
return ("tenInchScreenshots", s[0].strip(), ('@'.join(s[1:])).split('-')[0].strip())
|
||||||
else:
|
else:
|
||||||
return ('phoneScreenshots', s[0])
|
fragments = path.stem.lower().split("_")
|
||||||
|
device = "unknown"
|
||||||
|
os = "unknown"
|
||||||
|
screenshot_type = "phoneScreenshots"
|
||||||
|
for f in fragments:
|
||||||
|
if "iphone" in f:
|
||||||
|
device = f
|
||||||
|
continue
|
||||||
|
if "ipad" in f:
|
||||||
|
screenshot_type = "tenInchScreenshots"
|
||||||
|
device = f
|
||||||
|
if "ios" in f:
|
||||||
|
os = f
|
||||||
|
return (screenshot_type, device, os)
|
||||||
|
|
||||||
|
return ("phoneScreenshots", 'unknown', 'unknown')
|
||||||
|
|
||||||
|
|
||||||
def insert_localized_ios_app_metadata(apps_with_packages):
|
def insert_localized_ios_app_metadata(apps_with_packages):
|
||||||
@ -1275,18 +1286,24 @@ def insert_localized_ios_app_metadata(apps_with_packages):
|
|||||||
m = LANG_CODE.match(locale)
|
m = LANG_CODE.match(locale)
|
||||||
if m:
|
if m:
|
||||||
screenshots[locale] = {}
|
screenshots[locale] = {}
|
||||||
|
fcfs_idevice = None
|
||||||
|
fcfs_ios = None
|
||||||
for screenshot in (lang_sdir).iterdir():
|
for screenshot in (lang_sdir).iterdir():
|
||||||
if screenshot.suffix[1:] in ALLOWED_EXTENSIONS:
|
if screenshot.suffix[1:] in ALLOWED_EXTENSIONS:
|
||||||
# asdf #TODO
|
screenshot_type, idevice_name, ios_name = parse_ios_screenshot_name(screenshot)
|
||||||
device_name, screenshot_name = parse_ios_screenshot_name(screenshot)
|
|
||||||
|
|
||||||
if not screenshots[locale].get(device_name):
|
if not fcfs_idevice:
|
||||||
screenshots[locale][device_name] = {}
|
fcfs_idevice = idevice_name
|
||||||
screenshots[locale][device_name][screenshot_name] = screenshot
|
fcfs_ios = ios_name
|
||||||
|
|
||||||
|
if fcfs_idevice == idevice_name and fcfs_ios == ios_name:
|
||||||
|
if not screenshots[locale].get(screenshot_type):
|
||||||
|
screenshots[locale][screenshot_type] = {}
|
||||||
|
screenshots[locale][screenshot_type][screenshot] = screenshot
|
||||||
|
|
||||||
# copy screenshots to repo dir
|
# copy screenshots to repo dir
|
||||||
for locale, translated_screenshots in screenshots.items():
|
for locale, translated_screenshots in screenshots.items():
|
||||||
for device, translated_device_screenthos in translated_screenshots.items():
|
for device, translated_device_screenshots in translated_screenshots.items():
|
||||||
dest_dir = pathlib.Path('repo') / package_name / locale / device
|
dest_dir = pathlib.Path('repo') / package_name / locale / device
|
||||||
dest_dir.mkdir(mode=0o755, parents=True, exist_ok=True)
|
dest_dir.mkdir(mode=0o755, parents=True, exist_ok=True)
|
||||||
for name, path in translated_device_screenshots.items():
|
for name, path in translated_device_screenshots.items():
|
||||||
|
@ -2042,6 +2042,35 @@ class TestScanRepoForIpas(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestParseIosScreenShotName(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.maxDiff = None
|
||||||
|
|
||||||
|
def test_parse_ios_screenshot_name_atforamt_iphone8(self):
|
||||||
|
self.assertEqual(
|
||||||
|
fdroidserver.update.parse_ios_screenshot_name(Path("iPhone 8+ @ iOS 16-1.png")),
|
||||||
|
("phoneScreenshots", "iPhone 8+", "iOS 16",),
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_parse_ios_screenshot_name_atforamt_ipad13(self):
|
||||||
|
self.assertEqual(
|
||||||
|
fdroidserver.update.parse_ios_screenshot_name(Path("iPad Pro 12.9\" 2gen @ iOS 16-1.png")),
|
||||||
|
("tenInchScreenshots", "iPad Pro 12.9\" 2gen", "iOS 16",),
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_parse_ios_screenshot_name_underscoreforamt_ipad(self):
|
||||||
|
self.assertEqual(
|
||||||
|
fdroidserver.update.parse_ios_screenshot_name(Path("1_ipadPro129_1.1.png")),
|
||||||
|
("tenInchScreenshots", "ipadpro129", "unknown",),
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_parse_ios_screenshot_name_underscoreforamt_iphone(self):
|
||||||
|
self.assertEqual(
|
||||||
|
fdroidserver.update.parse_ios_screenshot_name(Path("1_iphone6Plus_1.1.png")),
|
||||||
|
("phoneScreenshots", "iphone6plus", "unknown",),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.chdir(os.path.dirname(__file__))
|
os.chdir(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user