From 30a7f7d9b06df754ad8533256b9103090bae078e Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:17:42 +0300 Subject: [PATCH 01/44] Wortmann to Terra --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tablet-10.yml | 2 +- Tests/fixtures/tablet-11.yml | 2 +- Tests/fixtures/tablet-5.yml | 2 +- Tests/fixtures/tablet-7.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index c1434f1c9a..d3adfdbcf2 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1816,6 +1816,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'PW' => 'Telpo', 'TLS' => 'TeloSystems', 'TER' => 'Teracube', + 'WR' => 'Terra', 'TD' => 'Tesco', 'TA' => 'Tesla', '9T' => 'Tetratab', @@ -2078,7 +2079,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'WON' => 'WONDER', 'WO' => 'Wonu', 'W1' => 'Woo', - 'WR' => 'Wortmann', 'WX' => 'Woxter', 'WOZ' => 'WOZIFAN', 'XQ' => 'X-AGE', diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index 0288cf8625..40ee77630b 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -10655,7 +10655,7 @@ engine_version: 79.0.3945.136 device: type: tablet - brand: Wortmann + brand: Terra model: Terra Pad 1005 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-11.yml b/Tests/fixtures/tablet-11.yml index 2fafcdf24e..6d6ee9cc4e 100644 --- a/Tests/fixtures/tablet-11.yml +++ b/Tests/fixtures/tablet-11.yml @@ -6419,7 +6419,7 @@ engine_version: 124.0.6367.179 device: type: tablet - brand: Wortmann + brand: Terra model: Terra Pad 1200 V2 os_family: Android browser_family: Opera diff --git a/Tests/fixtures/tablet-5.yml b/Tests/fixtures/tablet-5.yml index 513f1da56e..69ca35806d 100644 --- a/Tests/fixtures/tablet-5.yml +++ b/Tests/fixtures/tablet-5.yml @@ -1111,7 +1111,7 @@ engine_version: 79.0.3945.79 device: type: tablet - brand: Wortmann + brand: Terra model: Terra Pad 1004 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-7.yml b/Tests/fixtures/tablet-7.yml index 81ac5886b8..57859be24e 100644 --- a/Tests/fixtures/tablet-7.yml +++ b/Tests/fixtures/tablet-7.yml @@ -103,7 +103,7 @@ engine_version: 95.0.4638.74 device: type: tablet - brand: Wortmann + brand: Terra model: Terra Pad 1006 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 76a1ec4426..bdc837c496 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34399,8 +34399,8 @@ Bobarry: device: 'tablet' model: 'K10 SE' -# Wortmann (wortmann.de) -Wortmann: +# Terra (sub-brand of wortmann.de used for consumer electronics, https://en.wikipedia.org/wiki/Wortmann) +Terra: regex: 'TERRA[ _]PAD[ _](\d+)(_V2)?(?:[);/ ]|$)' device: 'tablet' model: 'Terra Pad $1$2' From f603f9f8c318cd7b14ca88b2e520316a9fe37546 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:21:21 +0300 Subject: [PATCH 02/44] VOX to VOX Electronics --- Tests/fixtures/tv-4.yml | 2 +- Tests/fixtures/tv.yml | 2 +- regexes/device/televisions.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/fixtures/tv-4.yml b/Tests/fixtures/tv-4.yml index 1a1707bad0..92b53f8ac6 100644 --- a/Tests/fixtures/tv-4.yml +++ b/Tests/fixtures/tv-4.yml @@ -7892,7 +7892,7 @@ engine_version: 108.0.5359.128 device: type: tv - brand: VOX + brand: VOX Electronics model: "" os_family: GNU/Linux browser_family: Opera diff --git a/Tests/fixtures/tv.yml b/Tests/fixtures/tv.yml index 75cd6a9624..5dc2e57cd5 100644 --- a/Tests/fixtures/tv.yml +++ b/Tests/fixtures/tv.yml @@ -7858,7 +7858,7 @@ engine_version: 53.0.2785.143 device: type: tv - brand: VOX + brand: VOX Electronics model: Smart TV (2017) os_family: GNU/Linux browser_family: Opera diff --git a/regexes/device/televisions.yml b/regexes/device/televisions.yml index 160f584a42..ba9ddb961c 100644 --- a/regexes/device/televisions.yml +++ b/regexes/device/televisions.yml @@ -1426,8 +1426,8 @@ VORTEX (RO): - regex: '_TV_[A-Z0-9]+_([0-9]{4});' model: 'Smart TV ($1)' -# VOX (https://www.voxelectronics.com/) -VOX: +# VOX Electronics (https://www.voxelectronics.com/) +VOX Electronics: regex: 'VOX[;,)]' device: 'tv' models: From ba4eb546cf839fab25873c90bed0bebd66c3ca93 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:25:25 +0300 Subject: [PATCH 03/44] VK Mobile to Viable Korea --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/feature_phone.yml | 4 ++-- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index d3adfdbcf2..a88dafb158 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -2000,7 +2000,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'VIL' => 'Visual Land', 'VI1' => 'VILLAON', 'VIM' => 'VIMOQ', - 'VK' => 'VK Mobile', + 'VK' => 'Viable Korea', 'JM' => 'v-mobile', 'VHO' => 'V-HOPE', 'VHM' => 'V-HOME', diff --git a/Tests/fixtures/feature_phone.yml b/Tests/fixtures/feature_phone.yml index 2a6016381e..5197122834 100644 --- a/Tests/fixtures/feature_phone.yml +++ b/Tests/fixtures/feature_phone.yml @@ -930,7 +930,7 @@ engine_version: "" device: type: feature phone - brand: VK Mobile + brand: Viable Korea model: VK700 os_family: Real-time OS browser_family: Unknown @@ -948,7 +948,7 @@ engine_version: "" device: type: feature phone - brand: VK Mobile + brand: Viable Korea model: VK900 os_family: Real-time OS browser_family: Unknown diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index bdc837c496..d3618b5beb 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -28022,8 +28022,8 @@ Fenoti: - regex: '(?:FENOTI_)?(42FN6000F)(?:[);/ ]|$)' model: '$1' -# VK Mobile -VK Mobile: +# Viable Korea, also known as VK Mobile (https://en.namu.wiki/w/VK모바일, not related to either Russian "VK" (has "VK Mobile" division) or distributors like https://www.facebook.com/profile.php?id=100068485995715 and https://www.facebook.com/VKmobillethemines/ +Viable Korea: regex: 'VK-VK([79]00)(?:[);/ ]|$)' device: 'feature phone' model: 'VK$1' From 9f34cd0b802c207562009f019fb0acde6ff22053 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:36:13 +0300 Subject: [PATCH 04/44] TWX to TWZ Corporation --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-21.yml | 20 ++++++++++---------- Tests/fixtures/smartphone-35.yml | 2 +- Tests/fixtures/tablet-10.yml | 4 ++-- regexes/device/mobiles.yml | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index a88dafb158..ebe88bba4a 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1893,7 +1893,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'TV' => 'TVC', 'TVP' => 'TV+', 'TW' => 'TWM', - 'Z1' => 'TWZ', + 'Z1' => 'TWZ Corporation', '6T' => 'Twoe', 'TWN' => 'TwinMOS', '15' => 'Tymes', diff --git a/Tests/fixtures/smartphone-21.yml b/Tests/fixtures/smartphone-21.yml index 02b2b91941..1256b5e8e7 100644 --- a/Tests/fixtures/smartphone-21.yml +++ b/Tests/fixtures/smartphone-21.yml @@ -2765,7 +2765,7 @@ engine_version: 76.0.3809.89 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: Y60 os_family: Android browser_family: Chrome @@ -2783,7 +2783,7 @@ engine_version: 75.0.3770.143 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: Y68 os_family: Android browser_family: Chrome @@ -2801,7 +2801,7 @@ engine_version: 71.0.3578.99 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: A49 os_family: Android browser_family: Opera @@ -2819,7 +2819,7 @@ engine_version: 73.0.3683.90 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: A55 os_family: Android browser_family: Chrome @@ -2837,7 +2837,7 @@ engine_version: 30.0.0.0 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: A567 os_family: Android browser_family: Chrome @@ -2855,7 +2855,7 @@ engine_version: "534.30" device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: AA8 os_family: Android browser_family: Android Browser @@ -2873,7 +2873,7 @@ engine_version: 30.0.0.0 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: QQ2 os_family: Android browser_family: Chrome @@ -2891,7 +2891,7 @@ engine_version: 30.0.0.0 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: QQ1 os_family: Android browser_family: Chrome @@ -2909,7 +2909,7 @@ engine_version: "534.30" device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: A95 os_family: Android browser_family: Android Browser @@ -2927,7 +2927,7 @@ engine_version: 39.0.0.0 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: Y52 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-35.yml b/Tests/fixtures/smartphone-35.yml index 53e1b18ad3..f01200073e 100644 --- a/Tests/fixtures/smartphone-35.yml +++ b/Tests/fixtures/smartphone-35.yml @@ -659,7 +659,7 @@ engine_version: 80.0.3987.162 device: type: smartphone - brand: TWZ + brand: TWZ Corporation model: OX X1 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index 40ee77630b..c18e516587 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -3221,7 +3221,7 @@ engine_version: 76.0.3809.111 device: type: tablet - brand: TWZ + brand: TWZ Corporation model: TabPlay 125 os_family: Android browser_family: Chrome @@ -3239,7 +3239,7 @@ engine_version: 55.0.2883.91 device: type: tablet - brand: TWZ + brand: TWZ Corporation model: TabPlay 126 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index d3618b5beb..6cc4295d34 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -33664,7 +33664,7 @@ TWM: model: 'Amazing $1' # TWZ or TWZ Corporation PLC (twz.co.th) -TWZ: +TWZ Corporation: regex: 'TWZ[-_ ](?:TabPlay|Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])|TWZQQ1|(?:OX_X1)(?:[);/ ]|$)' device: 'smartphone' models: From 2059669863bc750001c65a96baaf4b232ce2934c Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:39:29 +0300 Subject: [PATCH 05/44] Twoe to 2E --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/smartphone-19.yml | 4 ++-- Tests/fixtures/smartphone-22.yml | 2 +- Tests/fixtures/smartphone.yml | 2 +- regexes/device/mobiles.yml | 18 ++++++------------ 5 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index ebe88bba4a..b3585cee17 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1894,7 +1894,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'TVP' => 'TV+', 'TW' => 'TWM', 'Z1' => 'TWZ Corporation', - '6T' => 'Twoe', 'TWN' => 'TwinMOS', '15' => 'Tymes', 'UC' => 'U.S. Cellular', diff --git a/Tests/fixtures/smartphone-19.yml b/Tests/fixtures/smartphone-19.yml index 2c7c3d8e3c..2caeb31d27 100644 --- a/Tests/fixtures/smartphone-19.yml +++ b/Tests/fixtures/smartphone-19.yml @@ -3073,7 +3073,7 @@ engine_version: 85.0.4183.81 device: type: smartphone - brand: Twoe + brand: 2E model: F534L os_family: Android browser_family: Chrome @@ -3091,7 +3091,7 @@ engine_version: 85.0.4183.81 device: type: smartphone - brand: Twoe + brand: 2E model: F572L os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-22.yml b/Tests/fixtures/smartphone-22.yml index 6cec870b2a..029b6a19a2 100644 --- a/Tests/fixtures/smartphone-22.yml +++ b/Tests/fixtures/smartphone-22.yml @@ -5961,7 +5961,7 @@ engine_version: 89.0.4389.90 device: type: smartphone - brand: Twoe + brand: 2E model: E500A os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone.yml b/Tests/fixtures/smartphone.yml index 91163fa844..fae5bb3953 100644 --- a/Tests/fixtures/smartphone.yml +++ b/Tests/fixtures/smartphone.yml @@ -4261,7 +4261,7 @@ engine_version: 79.0.3945.93 device: type: smartphone - brand: Twoe + brand: 2E model: E450R os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 6cc4295d34..a9aa63d8ed 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34436,15 +34436,19 @@ BB Mobile: device: 'smartphone' model: 'Techno Spark 3G X595BT' -# 2E (2e.ua) +# 2E or Twoe (2e.ua | https://gva.com.ua/mobilnye-telefony/2e-twoe/) 2E: - regex: '(?:E500A_2019|2E E450 2018)(?:[);/ ]|$)' + regex: '(?:(?:E500A_2019|2E E450 2018)|(?:TWOE[-_ ]E450R|F534L|F572L|E500A))(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'E500A_2019(?:[);/ ]|$)' model: 'E500A (2019)' - regex: '2E E450 2018(?:[);/ ]|$)' model: 'E450 (2018)' + - regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)' + model: '$1' + - regex: '(F534L|F572L|E500A)(?:[);/ ]|$)' + model: '$1' # Billion Billion: @@ -34617,16 +34621,6 @@ Jio: - regex: 'Jio/([^/]+)/' model: '$1' -# Twoe -Twoe: - regex: '(?:TWOE[-_ ]E450R|F534L|F572L|E500A)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'TWOE[-_ ](E450R)(?:[);/ ]|$)' - model: '$1' - - regex: '(F534L|F572L|E500A)(?:[);/ ]|$)' - model: '$1' - # iTruck iTruck: regex: 'iTRUCK 7 3G(?:[);/ ]|$)' From ae0615fb11550711add0c8ef36828b233a6f3755 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:49:39 +0300 Subject: [PATCH 06/44] TPS to SZ TPS --- Tests/fixtures/tablet-9.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/fixtures/tablet-9.yml b/Tests/fixtures/tablet-9.yml index 7097d37e37..565b7fc1c4 100644 --- a/Tests/fixtures/tablet-9.yml +++ b/Tests/fixtures/tablet-9.yml @@ -7247,7 +7247,7 @@ engine_version: 78.0.3904.96 device: type: tablet - brand: TPS + brand: SZ TPS model: SC10 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index a9aa63d8ed..77846e0fb1 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -42737,8 +42737,8 @@ AEEZO: device: 'tablet' model: '$1' -# TPS or SZ TPS -TPS: +# TPS or SZ TPS (https://www.tpswkn.com/tr/products-detail-478747) +SZ TPS: regex: 'TPS-(SC10)(?:[);/ ]|$)' device: 'tablet' model: '$1' From f57b6b645301bf8f86d3922cccc70aabe1478a45 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 19:55:11 +0300 Subject: [PATCH 07/44] Spark to Spark NZ --- Tests/fixtures/smartphone-2.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/fixtures/smartphone-2.yml b/Tests/fixtures/smartphone-2.yml index 13b2a3f57f..934aa84a0d 100644 --- a/Tests/fixtures/smartphone-2.yml +++ b/Tests/fixtures/smartphone-2.yml @@ -9300,7 +9300,7 @@ engine_version: 87.0.4280.141 device: type: smartphone - brand: Spark + brand: Spark NZ model: Plus 3 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 77846e0fb1..ab39b74b23 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -36162,8 +36162,8 @@ VAIO: - regex: '(VA-10J)' model: '$1' -# Spark (https://www.spark.co.nz/) -Spark: +# Spark (https://www.spark.co.nz/), NZ (New Zealand) used to avoid confusion with other hardware brands +Spark NZ: regex: 'Spark Plus 3(?:[);/ ]|$)' device: 'smartphone' models: From 02e0b1b457a65f12305553d818a28d5a99a79f08 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 20:30:27 +0300 Subject: [PATCH 08/44] TechSmart to Techmade --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-36.yml | 8 ++++---- regexes/device/mobiles.yml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index b3585cee17..99f1270ede 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1790,7 +1790,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'H4' => 'Technicolor', 'TEA' => 'TeachTouch', 'Z5' => 'Technika', - 'TE1' => 'TechSmart', + 'TE1' => 'Techmade', 'TX' => 'TechniSat', 'TT' => 'TechnoTrend', 'TTS' => 'TECHNOSAT', diff --git a/Tests/fixtures/smartphone-36.yml b/Tests/fixtures/smartphone-36.yml index 06805dda9b..f422931934 100644 --- a/Tests/fixtures/smartphone-36.yml +++ b/Tests/fixtures/smartphone-36.yml @@ -4657,8 +4657,8 @@ engine_version: 84.0.4147.111 device: type: smartphone - brand: TechSmart - model: T6 + brand: Techmade + model: TechSmart T6 os_family: Android browser_family: Chrome - @@ -4675,8 +4675,8 @@ engine_version: 76.0.3809.111 device: type: smartphone - brand: TechSmart - model: T5+ + brand: Techmade + model: TechSmart T5+ os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index ab39b74b23..e698dc7f73 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -27093,13 +27093,13 @@ Tecno Mobile: - regex: 'Tecno[ _-]?([a-z0-9_-]+)' model: '$1' -# TechSmart or Techmade -TechSmart: +# Techmade (often seen as TechSmart, which is actually a model line: https://www.ebay.it/itm/112931113112 https://www.ebay.it/itm/123071096677 https://www.facebook.com/661598300623815/photos/a.661606387289673/1242575672526072/?type=3&locale=hi_IN) +Techmade: regex: 'TECHSMART[_ ]' device: 'smartphone' models: - regex: 'TECHSMART[_ ]([^/;)]+)(?: Build|[);])' - model: '$1' + model: 'TechSmart $1' # TechPad (techpad.mx) TechPad: From 837379d04e43040c3956f43614ebdd14da0dea8f Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 20:39:29 +0300 Subject: [PATCH 09/44] Stream to Stream System --- Tests/fixtures/smartphone-31.yml | 4 ++-- Tests/fixtures/smartphone-32.yml | 4 ++-- Tests/fixtures/smartphone-35.yml | 4 ++-- Tests/fixtures/tv-4.yml | 8 ++++---- regexes/device/mobiles.yml | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Tests/fixtures/smartphone-31.yml b/Tests/fixtures/smartphone-31.yml index 007554f046..f2cd978095 100644 --- a/Tests/fixtures/smartphone-31.yml +++ b/Tests/fixtures/smartphone-31.yml @@ -9813,7 +9813,7 @@ engine_version: 85.0.4183.81 device: type: smartphone - brand: Stream + brand: Stream System model: B3 Maxi os_family: Android browser_family: Chrome @@ -9831,7 +9831,7 @@ engine_version: 84.0.4147.89 device: type: smartphone - brand: Stream + brand: Stream System model: B3 Simply os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-32.yml b/Tests/fixtures/smartphone-32.yml index 15da8cf163..2162d82215 100644 --- a/Tests/fixtures/smartphone-32.yml +++ b/Tests/fixtures/smartphone-32.yml @@ -8617,7 +8617,7 @@ engine_version: 87.0.4280.101 device: type: smartphone - brand: Stream + brand: Stream System model: B3 Pro os_family: Android browser_family: Chrome @@ -9085,7 +9085,7 @@ engine_version: 86.0.4240.185 device: type: smartphone - brand: Stream + brand: Stream System model: B1s os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-35.yml b/Tests/fixtures/smartphone-35.yml index f01200073e..d3efb12020 100644 --- a/Tests/fixtures/smartphone-35.yml +++ b/Tests/fixtures/smartphone-35.yml @@ -8011,7 +8011,7 @@ engine_version: 85.0.4183.81 device: type: smartphone - brand: Stream + brand: Stream System model: HT28 os_family: Android browser_family: Chrome @@ -8027,7 +8027,7 @@ version: 305.0.0.12.106 device: type: smartphone - brand: Stream + brand: Stream System model: HT16 os_family: Android browser_family: Unknown diff --git a/Tests/fixtures/tv-4.yml b/Tests/fixtures/tv-4.yml index 92b53f8ac6..6f0b377c24 100644 --- a/Tests/fixtures/tv-4.yml +++ b/Tests/fixtures/tv-4.yml @@ -2447,7 +2447,7 @@ engine_version: 68.0.3440.106 device: type: tv - brand: Stream + brand: Stream System model: WSTRF4022FTP os_family: Other Mobile browser_family: Unknown @@ -2465,7 +2465,7 @@ engine_version: 68.0.3440.106 device: type: tv - brand: Stream + brand: Stream System model: WSTRH3222FTP os_family: Other Mobile browser_family: Unknown @@ -2483,7 +2483,7 @@ engine_version: 68.0.3440.106 device: type: tv - brand: Stream + brand: Stream System model: WSTRU4322FTP os_family: Other Mobile browser_family: Unknown @@ -2501,7 +2501,7 @@ engine_version: 68.0.3440.106 device: type: tv - brand: Stream + brand: Stream System model: WSTRU5522FTP os_family: Other Mobile browser_family: Unknown diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index e698dc7f73..feeda78963 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -10921,8 +10921,8 @@ Huagan: - regex: 'Huagan[ _]([^;/)]+)(?: Build|[);])' model: '$1' -# Stream or Stream System -Stream: +# Stream or Stream System (https://www.streamsystem.es) +Stream System: regex: 'LGE; WSTR[0-9a-z]+;|(B3 (?:Maxi|Simply)|B3Pro|Android 8(?:[\d.]*);(?: [\w-]+;)? (?:B1s|HT28|HT16))(?:[);/ ]|$)' device: 'smartphone' models: From 148e3a1e8692a4381d969b154c5d96144b4a8e89 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Wed, 10 Sep 2025 20:53:20 +0300 Subject: [PATCH 10/44] Moved Hisense devices to Smartfren --- Tests/fixtures/smartphone-22.yml | 4 ++-- Tests/fixtures/smartphone-5.yml | 8 ++++---- regexes/device/mobiles.yml | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Tests/fixtures/smartphone-22.yml b/Tests/fixtures/smartphone-22.yml index 029b6a19a2..cd4b0a5f41 100644 --- a/Tests/fixtures/smartphone-22.yml +++ b/Tests/fixtures/smartphone-22.yml @@ -1183,8 +1183,8 @@ engine_version: "" device: type: smartphone - brand: Hisense - model: Smartfren Andromax U2 + brand: Smartfren + model: Andromax U2 os_family: Android browser_family: Opera - diff --git a/Tests/fixtures/smartphone-5.yml b/Tests/fixtures/smartphone-5.yml index 5602f9ee13..f9ded7f2ca 100644 --- a/Tests/fixtures/smartphone-5.yml +++ b/Tests/fixtures/smartphone-5.yml @@ -2987,8 +2987,8 @@ engine_version: "" device: type: smartphone - brand: Hisense - model: Smartfren Andromax R + brand: Smartfren + model: Andromax R os_family: Android browser_family: Android Browser - @@ -3005,8 +3005,8 @@ engine_version: 59.0.3071.125 device: type: smartphone - brand: Hisense - model: Smartfren Andromax Z + brand: Smartfren + model: Andromax Z os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index feeda78963..49a24de84f 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -24616,7 +24616,7 @@ Skyworth: # Smartfren Smartfren: - regex: 'Smartfren|Androtab|Andromax|PD6D1J|AD682J|AD68[89]G|AD6B1H|AD9A1H|AD682H|AD683G' + regex: 'Smartfren|Androtab|Andromax|PD6D1J|AD682J|AD68[89]G|AD6B1H|AD9A1H|AD682H|AD683G|I46D1G|EG680|EG98' device: 'smartphone' models: # explicit tablet models @@ -24645,6 +24645,12 @@ Smartfren: model: 'Andromax L' - regex: 'New Andromax-i' model: 'New Andromax I' + - regex: 'I46D1G' + model: 'Andromax R' + - regex: 'EG680' + model: 'Andromax Z' + - regex: 'EG98' + model: 'Andromax U2' - regex: 'Andromax[ _-]([^/;]+) Build' model: 'Andromax $1' @@ -43260,7 +43266,7 @@ Dyon: # Hisense (https://www.hisense-usa.com/) Hisense: - regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9-]*|HNR(?:320T|55[01]T)|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE(?:[237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|239E|103E|310[TM]|31[16]T|500T|501N|510[TM]|556N|7[23]0T|720E|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HiSmart [24]K ATV4|HiSmartTV A4' + regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9-]*|HNR(?:320T|55[01]T)|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|E2281|HAT4KDTV|HITV10[12]C|HLTE(?:[237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|239E|103E|310[TM]|31[16]T|500T|501N|510[TM]|556N|7[23]0T|720E|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HiSmart [24]K ATV4|HiSmartTV A4' device: 'smartphone' models: # explicit tablet models @@ -43304,12 +43310,6 @@ Hisense: model: 'H30' - regex: 'HLTE720E' model: 'U30' - - regex: 'I46D1G' - model: 'Smartfren Andromax R' - - regex: 'EG680' - model: 'Smartfren Andromax Z' - - regex: 'EG98' - model: 'Smartfren Andromax U2' - regex: 'HLTE200T(?:[);/ ]|$)' model: 'F26' - regex: 'HLTE210T(?:[);/ ]|$)' From 084c0efce2aa0b1f59a38b3d0eef718a3a1998de Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Thu, 11 Sep 2025 19:58:21 +0300 Subject: [PATCH 11/44] UE is Newman --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/tablet-8.yml | 5 +++-- regexes/device/mobiles.yml | 13 ++++++------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 99f1270ede..5610c72d79 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -630,7 +630,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'EZ' => 'Ezze', 'UF' => 'EYU', 'EYE' => 'Eyemoo', - 'UE1' => 'UE', '5F' => 'F150', 'FPS' => 'F+', 'F6' => 'Facebook', diff --git a/Tests/fixtures/tablet-8.yml b/Tests/fixtures/tablet-8.yml index 0a93c898aa..5046023065 100644 --- a/Tests/fixtures/tablet-8.yml +++ b/Tests/fixtures/tablet-8.yml @@ -9348,9 +9348,10 @@ engine: Blink engine_version: 79.0.3945.93 device: + #Previously "UE" brand, but based on spoiler https://4pda.to/forum/index.php?showtopic=740550 and several retailers (including https://www.youtube.com/watch?v=SD_qRgUTkxw) selling it as "UE 1 PAD", "Newman" is most likely more correct type: tablet - brand: UE - model: Pad 1 + brand: Newman + model: UE 1 PAD os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 49a24de84f..b5d96c2ae1 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34046,9 +34046,14 @@ SEMP TCL: # Newman Newman: - regex: 'Newman[ _](P308|K1|G5i)(?:[);/ ]|$)' + regex: '(?:(?:Newman[ _])(P308|K1|G5i|)|(UE Pad 1))(?:[);/ ]|$)' device: 'smartphone' model: '$1' + models: + - regex: 'Newman[ _](P308|K1|G5i)(?:[);/ ]|$)' + model: '$1' + - regex: 'UE Pad 1' + model: 'UE 1 PAD' # Swipe Swipe: @@ -41791,12 +41796,6 @@ OSCAL: device: 'tablet' model: 'Spider 8' -# UE or United Education (www.ue.cn) -UE: - regex: 'UE Pad 1' - device: 'tablet' - model: 'Pad 1' - # Hykker (www.hykker.com) Hykker: regex: 'Hykker_MyTab10' From a3b877c0887010859867a8feb458139bb471ebd1 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Thu, 11 Sep 2025 20:02:47 +0300 Subject: [PATCH 12/44] Sprint to Quanta Computer --- Tests/fixtures/tablet-6.yml | 12 ++++++------ regexes/device/mobiles.yml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Tests/fixtures/tablet-6.yml b/Tests/fixtures/tablet-6.yml index ab900a93a0..0bcda54494 100644 --- a/Tests/fixtures/tablet-6.yml +++ b/Tests/fixtures/tablet-6.yml @@ -1920,8 +1920,8 @@ engine_version: 81.0.4044.111 device: type: tablet - brand: Sprint - model: AQT100 + brand: Quanta Computer + model: Slate AQT100 os_family: Android browser_family: Chrome - @@ -1938,8 +1938,8 @@ engine_version: 83.0.4103.96 device: type: tablet - brand: Sprint - model: AQT80 + brand: Quanta Computer + model: Slate AQT80 os_family: Android browser_family: Chrome - @@ -1956,8 +1956,8 @@ engine_version: 84.0.4147.89 device: type: tablet - brand: Sprint - model: AQT82 + brand: Quanta Computer + model: Slate AQT82 os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index b5d96c2ae1..f72a90b510 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -38876,8 +38876,8 @@ Kiowa: - regex: 'S5 ULTRA' model: 'S5 Ultra' -# Sprint -Sprint: +# Quanta Computer ("Sprint" in previous versions, but "Sprint" seems to be a distributor brand, similar some HTC models https://phonedb.net/index.php?m=device&s=query&d=detailed_specs&brand=Sprint#result) +Quanta Computer: regex: 'AQT(100|8[02])(?:[);/ ]|$)' device: 'tablet' model: 'AQT$1' From f03e51941bf6ed05eab62d993e1b194d8408eda6 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Thu, 11 Sep 2025 20:11:45 +0300 Subject: [PATCH 13/44] Star to Kingelon --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-12.yml | 17 +++++++++-------- Tests/fixtures/smartphone-34.yml | 2 +- regexes/device/mobiles.yml | 6 +++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 5610c72d79..f17015ced5 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1013,6 +1013,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'K1' => 'Kiano', 'KID' => 'kidiby', '5W' => 'Kingbox', + 'S4' => 'Kingelon', 'KI' => 'Kingsun', 'KIS' => 'Kinstone', 'KF' => 'KINGZONE', @@ -1722,7 +1723,6 @@ abstract class AbstractDeviceParser extends AbstractParser '84' => 'Sprint', 'SPU' => 'SPURT', 'QS' => 'SQOOL', - 'S4' => 'Star', 'OL' => 'Starlight', 'STA' => 'Star-Light', '18' => 'Starmobile', diff --git a/Tests/fixtures/smartphone-12.yml b/Tests/fixtures/smartphone-12.yml index ddf562a2f3..d1b63b8624 100644 --- a/Tests/fixtures/smartphone-12.yml +++ b/Tests/fixtures/smartphone-12.yml @@ -621,7 +621,7 @@ engine_version: 43.0.2357.92 device: type: smartphone - brand: Star + brand: Kingelon model: N8800 os_family: Android browser_family: Chrome @@ -639,7 +639,7 @@ engine_version: 40.0.2214.109 device: type: smartphone - brand: Star + brand: Kingelon model: N9500 os_family: Android browser_family: Chrome @@ -657,7 +657,7 @@ engine_version: "534.30" device: type: smartphone - brand: Star + brand: Kingelon model: N9600 os_family: Android browser_family: Android Browser @@ -675,7 +675,7 @@ engine_version: 34.0.1847.114 device: type: smartphone - brand: Star + brand: Kingelon model: N9700 os_family: Android browser_family: Chrome @@ -693,7 +693,7 @@ engine_version: "534.30" device: type: smartphone - brand: Star + brand: Kingelon model: N9800 os_family: Android browser_family: Android Browser @@ -711,7 +711,7 @@ engine_version: "534.30" device: type: smartphone - brand: Star + brand: Kingelon model: N9977 os_family: Android browser_family: Android Browser @@ -729,8 +729,9 @@ engine_version: 30.0.0.0 device: type: smartphone - brand: Star - model: Note 3 + brand: Kingelon + #Previously "Note 3", probably because this is Samsung Note 3 clone, but officially it's N9000. Similar model was released as "Note 3" under 5Star brand + model: N9000 os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-34.yml b/Tests/fixtures/smartphone-34.yml index 10111ef9aa..fe6ef2a352 100644 --- a/Tests/fixtures/smartphone-34.yml +++ b/Tests/fixtures/smartphone-34.yml @@ -7005,7 +7005,7 @@ engine_version: "534.30" device: type: smartphone - brand: Star + brand: Kingelon model: N9589 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index f72a90b510..083091270c 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -26115,13 +26115,13 @@ Sonim: - regex: '(?:Sonim-)?XP9900' model: 'XP10' -# Star -Star: +# Kingelon (previously "Star", which seems to be as valid as "Tengda", since a bunch of devices were released both under Kingelon and Star or/and Tengda, for example https://www.needrom.com/download/star-n8800-miui-tengda-kingelon/, but only Kingelon seems to have a logo at least, which is at least some evidence of it being real) +Kingelon: regex: '(?:N(?:9[5678]00|8800|9000|9977)|Star[ _]N9589)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'N9000' - model: 'Note 3' + model: 'N9000' - regex: '(?:Star_)?N(9[5678]00|8800|9977|9589)(?:[);/ ]|$)' model: 'N$1' From ee586d2c5d4ec315f55bd06e9cc0b350a5f8e08e Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Thu, 11 Sep 2025 20:47:31 +0300 Subject: [PATCH 14/44] Megamax and Polarline to Polar --- Parser/Device/AbstractDeviceParser.php | 2 -- Tests/fixtures/tv-1.yml | 28 +++++++-------- Tests/fixtures/tv-2.yml | 20 +++++------ Tests/fixtures/tv-3.yml | 4 +-- Tests/fixtures/tv-4.yml | 48 +++++++++++++------------- regexes/device/mobiles.yml | 20 ++++------- 6 files changed, 56 insertions(+), 66 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index f17015ced5..886150ebd0 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1179,7 +1179,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'MEG' => 'MEGA VISION', 'MCA' => 'Megacable', 'MP' => 'MegaFon', - 'MGX' => 'MEGAMAX', 'X0' => 'mPhone', '3M' => 'Meitu', 'M1' => 'Meizu', @@ -1473,7 +1472,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'PVB' => 'PVBox', 'PL' => 'Polaroid', 'Q6' => 'Polar', - '97' => 'PolarLine', 'PP' => 'PolyPad', 'P5' => 'Polytron', 'P2' => 'Pomp', diff --git a/Tests/fixtures/tv-1.yml b/Tests/fixtures/tv-1.yml index 90717d4adc..55da397fc2 100644 --- a/Tests/fixtures/tv-1.yml +++ b/Tests/fixtures/tv-1.yml @@ -2759,8 +2759,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 32PL13TC-SM + brand: Polar + model: Polarline 32PL13TC-SM os_family: Android browser_family: Chrome - @@ -6148,8 +6148,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 55PU11TC-SM + brand: Polar + model: Polarline 55PU11TC-SM os_family: Android browser_family: Chrome - @@ -6166,8 +6166,8 @@ engine_version: 51.0.2704.91 device: type: tv - brand: PolarLine - model: 24PL51TC-SM + brand: Polar + model: Polarline 24PL51TC-SM os_family: Android browser_family: Chrome - @@ -7210,8 +7210,8 @@ engine_version: 89.0.4389.114 device: type: tv - brand: PolarLine - model: 40PL52TC-SM + brand: Polar + model: Polarline 40PL52TC-SM os_family: Android browser_family: Unknown - @@ -7833,8 +7833,8 @@ engine_version: 73.0.3683.90 device: type: tv - brand: PolarLine - model: 32PL13TC-SM + brand: Polar + model: Polarline 32PL13TC-SM os_family: Android browser_family: Chrome - @@ -7851,8 +7851,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 32PL14TC-SM + brand: Polar + model: Polarline 32PL14TC-SM os_family: Android browser_family: Chrome - @@ -8602,8 +8602,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 40PL11TC-SM + brand: Polar + model: Polarline 40PL11TC-SM os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/tv-2.yml b/Tests/fixtures/tv-2.yml index db271c78de..e9ddb1fa01 100644 --- a/Tests/fixtures/tv-2.yml +++ b/Tests/fixtures/tv-2.yml @@ -9769,8 +9769,8 @@ engine_version: 69.0.3497.91 device: type: tv - brand: PolarLine - model: 42PL11TC-SM + brand: Polar + model: Polarline 42PL11TC-SM os_family: Android browser_family: Chrome - @@ -9787,8 +9787,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 65PU51TC-SM + brand: Polar + model: Polarline 65PU51TC-SM os_family: Android browser_family: Chrome - @@ -9805,8 +9805,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 50PU11TC-SM + brand: Polar + model: Polarline 50PU11TC-SM os_family: Android browser_family: Chrome - @@ -9823,8 +9823,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 42PL11TC-SM + brand: Polar + model: Polarline 42PL11TC-SM os_family: Android browser_family: Chrome - @@ -9841,8 +9841,8 @@ engine_version: 66.0.3359.158 device: type: tv - brand: PolarLine - model: 24PL51TC-SM + brand: Polar + model: Polarline 24PL51TC-SM os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/tv-3.yml b/Tests/fixtures/tv-3.yml index 1123cb5156..88b80d8fe1 100644 --- a/Tests/fixtures/tv-3.yml +++ b/Tests/fixtures/tv-3.yml @@ -5939,8 +5939,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 32PL51STC-SM + brand: Polar + model: Polarline 32PL51STC-SM os_family: Android browser_family: Unknown - diff --git a/Tests/fixtures/tv-4.yml b/Tests/fixtures/tv-4.yml index 6f0b377c24..41f75f0d76 100644 --- a/Tests/fixtures/tv-4.yml +++ b/Tests/fixtures/tv-4.yml @@ -139,8 +139,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 43PL51TC-SM + brand: Polar + model: Polarline 43PL51TC-SM os_family: Android browser_family: Unknown - @@ -157,8 +157,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 43PU11TC-SM + brand: Polar + model: Polarline 43PU11TC-SM os_family: Android browser_family: Unknown - @@ -175,8 +175,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 32PL55TC-SM + brand: Polar + model: Polarline 32PL55TC-SM os_family: Android browser_family: Unknown - @@ -193,8 +193,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 42PL11TC-SM + brand: Polar + model: Polarline 42PL11TC-SM os_family: Android browser_family: Unknown - @@ -211,8 +211,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 40PL52TC-SM + brand: Polar + model: Polarline 40PL52TC-SM os_family: Android browser_family: Unknown - @@ -229,8 +229,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 32PL14TC-SM + brand: Polar + model: Polarline 32PL14TC-SM os_family: Android browser_family: Unknown - @@ -247,8 +247,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 32PL13TC-SM + brand: Polar + model: Polarline 32PL13TC-SM os_family: Android browser_family: Unknown - @@ -265,8 +265,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 24PL51TC-SM + brand: Polar + model: Polarline 24PL51TC-SM os_family: Android browser_family: Unknown - @@ -283,8 +283,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 43PL51STC-SM + brand: Polar + model: Polarline 43PL51STC-SM os_family: Android browser_family: Unknown - @@ -301,8 +301,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 24PL51TC-SM + brand: Polar + model: Polarline 24PL51TC-SM os_family: Android browser_family: Unknown - @@ -319,8 +319,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: PolarLine - model: 32PL13TC-SM + brand: Polar + model: Polarline 32PL13TC-SM os_family: Android browser_family: Unknown - @@ -5390,8 +5390,8 @@ engine_version: 83.0.4103.120 device: type: tv - brand: MEGAMAX - model: 42MG11FSM + brand: Polar + model: Megamax 42MG11FSM os_family: Android browser_family: Unknown - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 083091270c..88642c5da0 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -39178,19 +39178,17 @@ Glory Star: device: 'tablet' model: '' -# Polar (polar.ru) +# Polar (https://polartv.ru/). Previously Megamax and Polarline were separate, but it looks like they were never treated as sub-brands (registered as at least a trade-mark, have separate website, etc.), but rather as model-lines Polar: - regex: 'Polar(?:_W?K?)?[_ ]P\d{2}|(?:P42L31T2CSM|P32L33T2CSM)(?:[);/ ]|$)' + regex: '(?:(?:Polar(?:_W?K?)?[_ ]P\d{2}|(?:P42L31T2CSM|P32L33T2CSM))|(?:PolarLine[_ ](?:W?K?[_ ])?(\d{2}P[LU]\d{2}S?TC-SM))|(?:MEGAMAX(?:_W_)?(\d{2}MG11FSM)))(?:[);/ ]|$)' device: 'tv' models: - regex: '(?:Polar(?:_W?K?)?[_ ])?(P\d{2}[LU]\d{2}T2S?CSM)(?:[);/ ]|$)' model: '$1' - -# Polarline (sub brand Polar) -PolarLine: - regex: 'PolarLine[_ ](?:W?K?[_ ])?(\d{2}P[LU]\d{2}S?TC-SM)(?:[);/ ]|$)' - device: 'tv' - model: '$1' + - regex: 'MEGAMAX(?:_W_)?(\d{2}MG11FSM)' + model: 'Megamax $1' + - regex: 'PolarLine[_ ](?:W?K?[_ ])?(\d{2}P[LU]\d{2}S?TC-SM)(?:[);/ ]|$)' + model: 'Polarline $1' # MyGica (www.mygica.com) MyGica: @@ -44356,12 +44354,6 @@ PLDT: device: 'peripheral' model: 'TelPad MT7' -# MEGAMAX -MEGAMAX: - regex: 'MEGAMAX(?:_W_)?(\d{2}MG11FSM)' - device: 'tv' - model: '$1' - # PrismPlus (prismplus.sg) PRISM+: regex: 'PrismPlus' From 6db928a245f23619264f9eb4dd91825d121ba26d Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 09:52:51 +0300 Subject: [PATCH 15/44] White Mobile to Cherry Mobile --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/smartphone-33.yml | 2 +- regexes/device/mobiles.yml | 16 ++++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 886150ebd0..e9418f4dfa 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -2037,7 +2037,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'WAL' => 'Waltter', 'WAI' => 'Wainyok', 'WAT' => 'waipu.tv', - 'WHI' => 'White Mobile', 'WHO' => 'Whoop', 'WBL' => 'We. by Loewe.', 'WCP' => 'WeChip', diff --git a/Tests/fixtures/smartphone-33.yml b/Tests/fixtures/smartphone-33.yml index 48a976b440..4a805b8f3c 100644 --- a/Tests/fixtures/smartphone-33.yml +++ b/Tests/fixtures/smartphone-33.yml @@ -5391,7 +5391,7 @@ engine_version: 86.0.4240.99 device: type: smartphone - brand: White Mobile + brand: Cherry Mobile model: Omega Lite 3 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 88642c5da0..b28385e1dc 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -114,9 +114,9 @@ Adronix: - regex: 'Adronix[ _]?(MT[0-9]+|X1001)(?:[);/ ]|$)' model: '$1' -# Cherry Mobile (cherrymobile.com) +# Cherry Mobile (cherrymobile.com, defunct site). Cherry Mobile: - regex: 'Cherry|Superion[_ ](?:S2|Radar Deluxe|S1 DTV|S1 Plus DTV|Tab Pro)|Flare([ _])?(Selfie|2\.[01]|2X|4|A[123]|J[1235678]|P[13]|S[4-8]|X2|Y[3567]|S[ _]Play|HD|LITE|XL|X_V[23]|Y3s|Tab|INFINITY)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Aura 3s|Radar Deluxe 2|Desire R[678]|Desire_R[67]_Lite|Fusion Bolt|Omega[_ ](?:Icon 2|Icon Lite 2|lite[_ ][243][Cs]?|HD[ _][345]|HD_Duo|X)|Spin Max 2|Selfie_Two|Flare X Lite|Flare_5|Android 1.*Aqua S9|Aqua S10|MAIA PAD PLUS|COSMOS THREE| Revel 3G|Touch XL 2|DSR_(?:R8|R7P?)|CUBIX CUBE 3' + regex: 'Cherry|Superion[_ ](?:S2|Radar Deluxe|S1 DTV|S1 Plus DTV|Tab Pro)|Flare([ _])?(Selfie|2\.[01]|2X|4|A[123]|J[1235678]|P[13]|S[4-8]|X2|Y[3567]|S[ _]Play|HD|LITE|XL|X_V[23]|Y3s|Tab|INFINITY)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Aura 3s|Radar Deluxe 2|Desire R[678]|Desire_R[67]_Lite|Fusion Bolt|Omega[_ ](?:Icon 2|Icon Lite 2|lite[_ ][243][Cs]?|HD[ _][345]|HD_Duo|X)|Spin Max 2|Selfie_Two|Flare X Lite|Flare_5|Android 1.*Aqua S9|Aqua S10|MAIA PAD PLUS|COSMOS THREE| Revel 3G|Touch XL 2|DSR_(?:R8|R7P?)|CUBIX CUBE 3|AM1010V' device: 'smartphone' models: - regex: '(Flare2X|Aqua S(?:9|10)(?: (?:Max|Lite|Pro))?)' @@ -241,6 +241,10 @@ Cherry Mobile: - regex: 'Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])' model: '$1' + #Previously listed as "White Mobile" brand, but based on https://firmwarefile.com/cherry-mobile-omega-lite-3, https://forum.gsmhosting.com/vbb/f296/cherry-mobile-omega-lite-3-frp-remove-2259709/ and https://deviceatlas.com/device-data/devices/white-mobile/am1010v/30376111 (and others), this is likely "Cherry Mobile", especially since I was not able to find any evidence of "White Mobile" ever existing. + - regex: 'AM1010V' + model: 'Omega Lite 3' + # HTC (htc.com) HTC: regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|(? Date: Sat, 13 Sep 2025 09:57:46 +0300 Subject: [PATCH 16/44] Wanmukang to Zhongyu Display --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/desktop.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index e9418f4dfa..295c53939b 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -2047,7 +2047,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'WD' => 'Western Digital', 'WST' => 'Weston', 'WT' => 'Westpoint', - 'WAN' => 'Wanmukang', + 'WAN' => 'Zhongyu Display', 'WA1' => 'WANSA', 'WY' => 'Wexler', '3W' => 'WE', diff --git a/Tests/fixtures/desktop.yml b/Tests/fixtures/desktop.yml index 40a0f3b710..8b395281b2 100644 --- a/Tests/fixtures/desktop.yml +++ b/Tests/fixtures/desktop.yml @@ -8531,7 +8531,7 @@ engine_version: 103.0.0.0 device: type: desktop - brand: Wanmukang + brand: Zhongyu Display model: ZC-339 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index b28385e1dc..5e6b0ba9a9 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -41002,8 +41002,8 @@ JREN: device: 'tablet' model: '$1' -# Wanmukang (www.wanmuk.com) -Wanmukang: +# Zhongyu Display (previously Wanmukang (www.wanmuk.com), but ZC-339 is a motherboard from Zhongyu Display https://www-zyuxs-cn.translate.goog/news-8/650.html?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp | https://www.zyuxs.com) +Zhongyu Display: regex: '(?:ZC-339)(?:[);/ ]|$)' device: 'tablet' models: From a24c1a086f8213e4b229377acfc658aa1dc78ca3 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 15:05:10 +0300 Subject: [PATCH 17/44] Padpro to 7Ke tree --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tablet-11.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 295c53939b..0d2670304a 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1418,7 +1418,7 @@ abstract class AbstractDeviceParser extends AbstractParser '7P' => 'P-UP', 'PRA' => 'Pacific Research Alliance', 'PAG' => 'PAGRAER', - 'PAD' => 'Padpro', + 'PAD' => '7Ke tree', 'YP' => 'Paladin', 'PM' => 'Palm', 'PN' => 'Panacom', diff --git a/Tests/fixtures/tablet-11.yml b/Tests/fixtures/tablet-11.yml index 6d6ee9cc4e..1c4849a0f6 100644 --- a/Tests/fixtures/tablet-11.yml +++ b/Tests/fixtures/tablet-11.yml @@ -4589,7 +4589,7 @@ engine_version: 124.0.6367.82 device: type: tablet - brand: Padpro + brand: 7Ke tree model: GT40 Pro Max os_family: Android browser_family: Opera diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 5e6b0ba9a9..3430b2e5a3 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -43769,8 +43769,8 @@ Clovertek: device: 'tablet' model: '$1' -# Padpro -Padpro: +# 7Ke tree (previously "Padpro", but "Padpro" seem like a model line, for example at least https://www.ebay.com/itm/404866696988 and https://www.ubuy.com.se/en/product/G68Y4S8AO-new-listing-14-inch-big-screen-tablet-pc-android-13-16gb-ram-512gb-rom-deca-core-keyboard?ref=hm-google-redirect seem like the same device) +7Ke tree: regex: 'GT40promax' device: 'tablet' model: 'GT40 Pro Max' From 26ac48ef2bae999ea4d614c0bdb8d0f974f16db2 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 15:40:04 +0300 Subject: [PATCH 18/44] P-UP to Mode 1 --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/phablet-1.yml | 4 ++-- Tests/fixtures/phablet.yml | 4 ++-- Tests/fixtures/smartphone-23.yml | 4 ++-- regexes/device/mobiles.yml | 10 +++++----- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 0d2670304a..fd8a5ee8ed 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1415,7 +1415,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'O6' => 'Oyyu', 'OZ' => 'OzoneHD', 'OLL' => 'Ollee', - '7P' => 'P-UP', + '7P' => 'Mode 1', 'PRA' => 'Pacific Research Alliance', 'PAG' => 'PAGRAER', 'PAD' => '7Ke tree', diff --git a/Tests/fixtures/phablet-1.yml b/Tests/fixtures/phablet-1.yml index b552701fc8..659817b9ab 100644 --- a/Tests/fixtures/phablet-1.yml +++ b/Tests/fixtures/phablet-1.yml @@ -2811,8 +2811,8 @@ engine_version: 86.0.4240.110 device: type: phablet - brand: P-UP - model: Mode 1 RR + brand: Mode 1 + model: RR os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/phablet.yml b/Tests/fixtures/phablet.yml index 876b83e915..005323234a 100644 --- a/Tests/fixtures/phablet.yml +++ b/Tests/fixtures/phablet.yml @@ -6220,8 +6220,8 @@ engine_version: 86.0.4240.185 device: type: phablet - brand: P-UP - model: Mode 1 RS + brand: Mode 1 + model: RS os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-23.yml b/Tests/fixtures/smartphone-23.yml index 24a621338d..a464864ab0 100644 --- a/Tests/fixtures/smartphone-23.yml +++ b/Tests/fixtures/smartphone-23.yml @@ -3541,8 +3541,8 @@ engine_version: 67.0.3396.87 device: type: smartphone - brand: P-UP - model: Mode 1 MD-01P + brand: Mode 1 + model: MD-01P os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 3430b2e5a3..2cff39457e 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -35456,18 +35456,18 @@ Swisstone: device: 'smartphone' model: '$1' -# P-UP (Peaup Co., Ltd.) (p-up.jp, mode1.jp) -P-UP: +# Mode 1 (Previously P-UP (Peaup Co., Ltd.), and while Mode 1 is legally owned by P-UP (https://www.p-up.world/brands/), Mode 1 is a separate thing (https://mode1.jp), and not a model line or brand like "Galaxy" for Samsung) +Mode 1: regex: 'MD-0[143]P(?:[);/ ]|$)' device: 'phablet' models: - regex: 'MD-04P(?:[);/ ]|$)' - model: 'Mode 1 RR' + model: 'RR' - regex: 'MD-03P(?:[);/ ]|$)' - model: 'Mode 1 RS' + model: 'RS' - regex: 'MD-01P(?:[);/ ]|$)' device: 'smartphone' - model: 'Mode 1 MD-01P' + model: 'MD-01P' # Pacific Research Alliance (https://www.pacificresearchalliance.com/) Pacific Research Alliance: From e27f21700bf909a8b00b523c4c018eb5d5f89b5d Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 17:05:20 +0300 Subject: [PATCH 19/44] MMI to ARRIS --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/tv-1.yml | 3 ++- regexes/device/mobiles.yml | 10 +++------- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index fd8a5ee8ed..0c3b46cb94 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1212,7 +1212,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'ML' => 'MLLED', 'LS' => 'MLS', 'MLA' => 'MLAB', - '5H' => 'MMI', '4M' => 'Mobicel', 'M6' => 'Mobiistar', 'MOK' => 'Mobile Kingdom', diff --git a/Tests/fixtures/tv-1.yml b/Tests/fixtures/tv-1.yml index 55da397fc2..a5df610868 100644 --- a/Tests/fixtures/tv-1.yml +++ b/Tests/fixtures/tv-1.yml @@ -4944,7 +4944,8 @@ engine_version: 2.10.250 device: type: tv - brand: MMI + #Previously "MMI", but apparently MMI is a pairing mode https://www.verizon.com/supportresources/content/dam/verizon/support/consumer/documents/vms1100_install_ops_manual-s.pdf + brand: ARRIS model: VMS1100 os_family: GNU/Linux browser_family: Opera diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 2cff39457e..e558a0802b 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -3511,13 +3511,15 @@ Arnova: # ARRIS ARRIS: - regex: 'ARRIS' + regex: 'ARRIS|MMI, ([a-z0-9_ -]+), (?:wired|wireless)' device: 'tv' models: - regex: 'Arris_liberty,([a-z0-9-]+),(?:wired|wireless)' model: '$1' - regex: 'ARRIS[,;] ([^),;/]+)' model: '$1' + - regex: 'MMI, ([a-z0-9_ -]+), (?:wired|wireless)' + model: '$1' # Ask Ask: @@ -30740,12 +30742,6 @@ MLS: - regex: 'iQF ?200(?:[);/ ]|$)' model: 'iQF200' -# MMI -MMI: - regex: 'MMI, ([a-z0-9_ -]+), (?:wired|wireless)' - device: 'tv' - model: '$1' - # FLYCAT FLYCAT: regex: 'FLYCAT' From 5aad0a88442eb57d834a4cb2357e90f9b71e0690 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 17:28:59 +0300 Subject: [PATCH 20/44] MLAB to Microlab --- Tests/fixtures/tablet-9.yml | 2 +- regexes/device/mobiles.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/fixtures/tablet-9.yml b/Tests/fixtures/tablet-9.yml index 565b7fc1c4..5ceb001590 100644 --- a/Tests/fixtures/tablet-9.yml +++ b/Tests/fixtures/tablet-9.yml @@ -8363,7 +8363,7 @@ engine_version: 112.0.0.0 device: type: tablet - brand: MLAB + brand: Microlab model: Glowy 10 os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index e558a0802b..6546432825 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -42845,8 +42845,8 @@ UOOGOU: - regex: 'UOOGOU[_ ]([^/;)]+)(?: Build|[);])' model: '$1' -# MLAB or MicroLab -MLAB: +# MLAB or MicroLab (https://mlab.cl/about-us/) +Microlab: regex: 'MLAB[ _-]' device: 'tablet' models: From 4a936677c0080598653e3ca42aaf10fa4fd4b2df Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 17:58:51 +0300 Subject: [PATCH 21/44] MDTV to OTT --- Tests/fixtures/tv-1.yml | 4 ++-- regexes/device/mobiles.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/fixtures/tv-1.yml b/Tests/fixtures/tv-1.yml index a5df610868..c2ce17c64c 100644 --- a/Tests/fixtures/tv-1.yml +++ b/Tests/fixtures/tv-1.yml @@ -3389,8 +3389,8 @@ engine_version: 95.0.4638.74 device: type: tv - brand: MDTV - model: "" + brand: OTT + model: MDTV os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 6546432825..b3875ddfc0 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -35249,8 +35249,8 @@ MDC Store: - regex: 'MDC M5(?:[);/ ]|$)' model: 'M5' -# MDTV -MDTV: +# OTT (previously MDTV, but it looks to be a model line from OTT based on branding on the cardboard boxes, for example https://www.madridcenter.com/produto/tv-box-mdtv-pro-8k-32-256gb-android-11-1-5g-preto-749749.html) +OTT: regex: 'MDTV(?:[);/ ]|$)' device: 'tv' model: '' From f84aca664cb12dd1b87e6d67f0cf7fbae901a168 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 18:53:20 +0300 Subject: [PATCH 22/44] LPX-G to OTT --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/tv-2.yml | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 0c3b46cb94..6f9efc7bd1 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1111,7 +1111,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'LOG' => 'Logik', 'LGT' => 'Logitech', 'GY' => 'LOKMAT', - 'LPX' => 'LPX-G', '0L' => 'Lumigon', 'LU' => 'Lumus', 'LUM' => 'Lumitel', diff --git a/Tests/fixtures/tv-2.yml b/Tests/fixtures/tv-2.yml index e9ddb1fa01..96d522699d 100644 --- a/Tests/fixtures/tv-2.yml +++ b/Tests/fixtures/tv-2.yml @@ -49,8 +49,8 @@ engine_version: 78.0.3904.96 device: type: tv - brand: LPX-G - model: Box Max + brand: OTT + model: LPX-G Box Max os_family: Android browser_family: Chrome - From a0dc6134879d289608eb5531131f76ce187b420b Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 19:30:28 +0300 Subject: [PATCH 23/44] HLLO to Exertis --- Parser/Device/AbstractDeviceParser.php | 4 ++-- Tests/fixtures/tablet-7.yml | 4 ++-- Tests/fixtures/tv.yml | 4 ++-- regexes/device/mobiles.yml | 6 +++--- regexes/device/televisions.yml | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 6f9efc7bd1..73c9be689a 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -617,6 +617,7 @@ abstract class AbstractDeviceParser extends AbstractParser '5U' => 'EVPAD', 'EVV' => 'evvoli', 'E0' => 'EvroMedia', + 'EXR' => 'Exertis', 'XE' => 'ExMobile', '4Z' => 'Exmart', 'EH' => 'EXO', @@ -823,7 +824,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'H8' => 'Hitech', 'W3' => 'HiMax', '8X' => 'Hi Nova', - 'HLL' => 'HLLO', 'HKC' => 'HKC', 'HMD' => 'HMD', '8W' => 'HKPro', @@ -841,7 +841,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'H7' => 'Horizon', '4H' => 'Horizont', 'HO' => 'Hosin', - 'H3' => 'Hotel', + 'H3' => 'Hotel TV Company', 'HV' => 'Hotwav', 'U8' => 'Hot Pepper', 'HOT' => 'HOTACK', diff --git a/Tests/fixtures/tablet-7.yml b/Tests/fixtures/tablet-7.yml index 57859be24e..9d7fdb3d07 100644 --- a/Tests/fixtures/tablet-7.yml +++ b/Tests/fixtures/tablet-7.yml @@ -6219,8 +6219,8 @@ engine_version: 100.0.4896.127 device: type: tablet - brand: HLLO - model: SMB-H8009 + brand: Exertis + model: HLLO SMB-H8009 os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/tv.yml b/Tests/fixtures/tv.yml index 5dc2e57cd5..cf9a2d60d1 100644 --- a/Tests/fixtures/tv.yml +++ b/Tests/fixtures/tv.yml @@ -64,7 +64,7 @@ engine_version: 2.6.33 device: type: tv - brand: Hotel + brand: Hotel TV Company model: "" os_family: GNU/Linux browser_family: Opera @@ -6994,7 +6994,7 @@ engine_version: 44.0.2403.130 device: type: tv - brand: Hotel + brand: Hotel TV Company model: "" os_family: GNU/Linux browser_family: Opera diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index b3875ddfc0..39ea8630f9 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -40499,11 +40499,11 @@ Facetel: - regex: 'Q3pro(?:[);/ ]|$)' model: 'Q3 Pro' -# HLLO or Exertis HLLO -HLLO: +# Exertis (previously HLLO, but was not able to find any evidence of this being a brand besides it being part of Exertis accelerator. Search for the model also shows Exertis most of the times, so HLLO is probably a model line rather than a (sub-)brand) +Exertis: regex: '(SMB-H8009)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + model: 'HLLO $1' # YUMKEM YUMKEM: diff --git a/regexes/device/televisions.yml b/regexes/device/televisions.yml index ba9ddb961c..e7481d77c7 100644 --- a/regexes/device/televisions.yml +++ b/regexes/device/televisions.yml @@ -506,8 +506,8 @@ HOTACK: device: 'peripheral' model: '' -# Hotel -Hotel: +# Hotel TV Company (https://www.hoteltvcompany.co.uk/about/) +Hotel TV Company: regex: 'HOTEL[;,)]' device: 'tv' model: '' From b7c3f8d0bd4055130587baa2a8ae3a881beaaf16 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 19:33:19 +0300 Subject: [PATCH 24/44] High Q to EPIK Learning --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tablet-10.yml | 12 ++++++------ regexes/device/mobiles.yml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 73c9be689a..b2aaf902bd 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -584,6 +584,7 @@ abstract class AbstractDeviceParser extends AbstractParser '3E' => 'Enot', 'ENT' => 'Entity', 'ENV' => 'Envizen', + 'Q1' => 'EPIK Learning', '8E' => 'Epik One', 'EPK' => 'Epic', 'XP' => 'Epson', @@ -813,7 +814,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'HIH' => 'HiHi', 'HIK' => 'HiKing', 'H2' => 'Highscreen', - 'Q1' => 'High Q', 'HI1' => 'HIGH1ONE', 'HIG' => 'HiGrace', '1H' => 'Hipstreet', diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index c18e516587..15b9424622 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -9269,8 +9269,8 @@ engine_version: 80.0.3987.119 device: type: tablet - brand: High Q - model: ELT0704H + brand: EPIK Learning + model: HighQ ELT0704H os_family: Android browser_family: Chrome - @@ -9287,8 +9287,8 @@ engine_version: 81.0.4044.117 device: type: tablet - brand: High Q - model: ELT0706H + brand: EPIK Learning + model: HighQ ELT0706H os_family: Android browser_family: Chrome - @@ -9305,8 +9305,8 @@ engine_version: 81.0.4044.138 device: type: tablet - brand: High Q - model: ELT0802H + brand: EPIK Learning + model: HighQ ELT0802H os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 39ea8630f9..86e35d40ee 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -36744,8 +36744,8 @@ Electroneum: device: 'smartphone' model: '$1' -# High Q or HighQ -High Q: +# EPIK Learning (previously High Q or HighQ, but "HighQ" is a model line https://epiklearning.com/shop/) +EPIK Learning: regex: '(ELT070[46]H|ELT0802H)(?:[);/ ]|$)' device: 'tablet' model: '$1' From 667e9eeecca511eb8998f97b7a609360fb6c9c8a Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 19:53:36 +0300 Subject: [PATCH 25/44] BASE to Unikalne Smartphones --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-37.yml | 4 ++-- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index b2aaf902bd..29863b8a60 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -241,7 +241,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'BO' => 'BangOlufsen', 'BN' => 'Barnes & Noble', 'BAR' => 'BARTEC', - 'BAS' => 'BASE', 'BAU' => 'BAUHN', 'BB' => 'BBK', '0B' => 'BB Mobile', @@ -1910,6 +1909,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'UNI' => 'Unistrong', 'U2' => 'UNIWA', 'UND' => 'Uniden', + 'UNS' => 'Unikalne Smartphones', 'UNE' => 'UNITED', 'UGR' => 'United Group', 'UO' => 'Unnecto', diff --git a/Tests/fixtures/smartphone-37.yml b/Tests/fixtures/smartphone-37.yml index e22cd04873..a3f08b872c 100644 --- a/Tests/fixtures/smartphone-37.yml +++ b/Tests/fixtures/smartphone-37.yml @@ -2013,8 +2013,8 @@ engine_version: "533.1" device: type: smartphone - brand: BASE - model: Varia + brand: Unikalne Smartphones + model: BASE Varia os_family: Android browser_family: Android Browser - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 86e35d40ee..ca625cbe57 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -43121,8 +43121,8 @@ A&K: device: 'feature phone' model: '$1' -# BASE -BASE: +# Unikalne Smartphones (https://www.gsmchoice.com/en/catalogue/unikalne/) +Unikalne Smartphones: regex: 'BASE[_ ](Varia)' device: 'smartphone' model: '$1' From b5ede6e1a8a01f9018734fa1d3a9da237e6f9ddb Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:10:59 +0300 Subject: [PATCH 26/44] Cloud to Cloud Mobile --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-28.yml | 4 ++-- Tests/fixtures/smartphone-3.yml | 4 ++-- Tests/fixtures/smartphone-31.yml | 2 +- Tests/fixtures/smartphone-35.yml | 2 +- Tests/fixtures/smartphone-41.yml | 2 +- Tests/fixtures/smartphone-5.yml | 2 +- Tests/fixtures/tablet-6.yml | 2 +- Tests/fixtures/tablet-8.yml | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 29863b8a60..07fed4716c 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -377,7 +377,7 @@ abstract class AbstractDeviceParser extends AbstractParser '25' => 'Claresta', 'CLA' => 'CLAYTON', 'CLT' => 'Clovertek', - '1J' => 'Cloud', + '1J' => 'Cloud Mobile', 'CD' => 'Cloudfone', '6C' => 'Cloudpad', 'C0' => 'Clout', diff --git a/Tests/fixtures/smartphone-28.yml b/Tests/fixtures/smartphone-28.yml index 50e47fe1d3..182ad17bf4 100644 --- a/Tests/fixtures/smartphone-28.yml +++ b/Tests/fixtures/smartphone-28.yml @@ -2639,7 +2639,7 @@ engine_version: 94.0.4606.85 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Stratus C5 os_family: Android browser_family: Chrome @@ -2675,7 +2675,7 @@ engine_version: 95.0.4638.74 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Cyclone C4 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-3.yml b/Tests/fixtures/smartphone-3.yml index 916fb8f457..7fb59a6890 100644 --- a/Tests/fixtures/smartphone-3.yml +++ b/Tests/fixtures/smartphone-3.yml @@ -12652,7 +12652,7 @@ engine_version: 89.0.4389.105 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Storm C3 os_family: Android browser_family: Chrome @@ -12866,7 +12866,7 @@ engine_version: 96.0.4664.45 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Stratus C5 Elite os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-31.yml b/Tests/fixtures/smartphone-31.yml index f2cd978095..4943b9f67b 100644 --- a/Tests/fixtures/smartphone-31.yml +++ b/Tests/fixtures/smartphone-31.yml @@ -445,7 +445,7 @@ engine_version: 80.0.3987.99 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Cirrus C2 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-35.yml b/Tests/fixtures/smartphone-35.yml index d3efb12020..998eb8558f 100644 --- a/Tests/fixtures/smartphone-35.yml +++ b/Tests/fixtures/smartphone-35.yml @@ -2063,7 +2063,7 @@ engine_version: 111.0.0.0 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Stratus C7 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-41.yml b/Tests/fixtures/smartphone-41.yml index dc3033a23c..87c59fd733 100644 --- a/Tests/fixtures/smartphone-41.yml +++ b/Tests/fixtures/smartphone-41.yml @@ -6640,7 +6640,7 @@ engine_version: 85.0.4183.69 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Stratus C8 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/smartphone-5.yml b/Tests/fixtures/smartphone-5.yml index f9ded7f2ca..25c037ee07 100644 --- a/Tests/fixtures/smartphone-5.yml +++ b/Tests/fixtures/smartphone-5.yml @@ -9952,7 +9952,7 @@ engine_version: 100.0.4896.127 device: type: smartphone - brand: Cloud + brand: Cloud Mobile model: Typhoon C6 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-6.yml b/Tests/fixtures/tablet-6.yml index 0bcda54494..d8651dfb2c 100644 --- a/Tests/fixtures/tablet-6.yml +++ b/Tests/fixtures/tablet-6.yml @@ -6560,7 +6560,7 @@ engine_version: 94.0.4606.85 device: type: tablet - brand: Cloud + brand: Cloud Mobile model: Sunshine T1 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-8.yml b/Tests/fixtures/tablet-8.yml index 5046023065..4cdce7672a 100644 --- a/Tests/fixtures/tablet-8.yml +++ b/Tests/fixtures/tablet-8.yml @@ -4007,7 +4007,7 @@ engine_version: 102.0.0.0 device: type: tablet - brand: Cloud + brand: Cloud Mobile model: Sunshine T1 Elite os_family: Android browser_family: Chrome From 80099f8c309bfab2d80267a4b3820ac2be16deb9 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:15:19 +0300 Subject: [PATCH 27/44] Cloudpad to Cloudfone --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/tablet-10.yml | 8 ++++---- regexes/device/mobiles.yml | 18 +++++++----------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 07fed4716c..cdbf0f8180 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -379,7 +379,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'CLT' => 'Clovertek', '1J' => 'Cloud Mobile', 'CD' => 'Cloudfone', - '6C' => 'Cloudpad', 'C0' => 'Clout', 'CN' => 'CnM', 'CY' => 'Coby Kyros', diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index 15b9424622..75ce729500 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -7649,8 +7649,8 @@ engine_version: 75.0.3770.143 device: type: tablet - brand: Cloudpad - model: +VT107C + brand: Cloudfone + model: Cloudpad C701TV+ os_family: Android browser_family: Chrome - @@ -7667,8 +7667,8 @@ engine_version: 79.0.3945.93 device: type: tablet - brand: Cloudpad - model: +VTQ007C + brand: Cloudfone + model: Cloudpad C700QTV+ os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index ca625cbe57..3fbd353c19 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34745,19 +34745,9 @@ Cloud: device: 'tablet' model: '$1' -# Cloudpad -Cloudpad: - regex: '\+VT(?:107C|Q007C)(?:[);/ ]|$)' - device: 'tablet' - models: - - regex: '\+VT(107C)' - model: '+VT$1' - - regex: '\+VTQ(007C)' - model: '+VTQ$1' - # Cloudfone Cloudfone: - regex: 'CloudFone[ _]|(?:Thrill[ _](?:Boost[ ]?(2|3)?|Power|Snap|Access|Plus 16GB|Lite|HD)|Excite Prime 2 Pro|Excite Prime|ExciteC|NBA Edition|Go SP|Next Infinity Plus|Next Infinity|Next Lite|Go Connect)(?:[);/ ]|$)' + regex: '\+VT(?:107C|Q007C)|CloudFone[ _]|(?:Thrill[ _](?:Boost[ ]?(2|3)?|Power|Snap|Access|Plus 16GB|Lite|HD)|Excite Prime 2 Pro|Excite Prime|ExciteC|NBA Edition|Go SP|Next Infinity Plus|Next Infinity|Next Lite|Go Connect)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Thrill Boost 2 Plus(?:[);/ ]|$)' @@ -34794,6 +34784,12 @@ Cloudfone: model: 'Next Lite' - regex: 'Next(?:[);/ ]|$)' model: 'Next' + - regex: '\+VT107C' + device: 'tablet' + model: 'Cloudpad C701TV+' + - regex: '\+VTQ007C' + device: 'tablet' + model: 'Cloudpad C700QTV+' # Völfen (https://www.volfen.net/) Völfen: From 49a0c3a20aaf5d1c47fea1ed704c26fb030ae7e1 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:33:21 +0300 Subject: [PATCH 28/44] Crius Mea to Ooredoo --- Tests/fixtures/tablet-1.yml | 8 ++++---- regexes/device/mobiles.yml | 15 +++++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Tests/fixtures/tablet-1.yml b/Tests/fixtures/tablet-1.yml index 25ae80f38d..4e0f304e6e 100644 --- a/Tests/fixtures/tablet-1.yml +++ b/Tests/fixtures/tablet-1.yml @@ -3071,8 +3071,8 @@ engine_version: "535.19" device: type: tablet - brand: Crius Mea - model: Q7A + brand: Ooredoo + model: Crius Mea Q7A os_family: Android browser_family: Chrome - @@ -3089,8 +3089,8 @@ engine_version: "534.30" device: type: tablet - brand: Crius Mea - model: Q7A+ + brand: Ooredoo + model: Crius Mea Q7A+ os_family: Android browser_family: Android Browser - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 3fbd353c19..ac5eaad26c 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -3431,9 +3431,14 @@ MEO: # Ooredoo (https://www.ooredoo.qa/) Ooredoo: - regex: 'Sagemcom DIW387_UHD_OOR(?:[);/ ]|$)' # Sagemcom DIW387 + regex: 'Sagemcom DIW387_UHD_OOR|(Q7A\+?)(?:[);/ ]|$)' # Sagemcom DIW387 device: 'tv' - model: 'TV Box' + models: + - regex: 'Sagemcom DIW387_UHD_OOR(?:[);/ ]|$)' + model: 'TV Box' + - regex: '(Q7A\+?)(?:[);/ ]|$)' + device: 'tablet' + model: 'Crius Mea $1' # Meu MEU: @@ -6925,12 +6930,6 @@ Cricket: device: 'feature phone' model: '$1' -# Crius -Crius Mea: - regex: '(Q7A\+?)(?:[);/ ]|$)' - device: 'tablet' - model: '$1' - # Crosscall Crosscall: regex: 'Crosscall|ODYSSEY_Plus|Action-X[35]|Core-(?:M[45]|T[45]|X[345]|Z5)|Stellar-X5|Trekker-[MSX][1-4]|Odyssey S1' From 02b403c41f18b8a083b0330e2c8c71d2aebce0b6 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:37:27 +0300 Subject: [PATCH 29/44] Dazen to Coolpad --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/smartphone-3.yml | 4 ++-- regexes/device/mobiles.yml | 12 +++--------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index cdbf0f8180..e7a74b7efa 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -443,7 +443,6 @@ abstract class AbstractDeviceParser extends AbstractParser '7D' => 'Datamini', '6D' => 'Datalogic', 'D1' => 'Datsun', - 'DZ' => 'Dazen', 'DAS' => 'DASS', 'DAW' => 'Dawlance', 'DB' => 'Dbtel', diff --git a/Tests/fixtures/smartphone-3.yml b/Tests/fixtures/smartphone-3.yml index 7fb59a6890..ddb820bb33 100644 --- a/Tests/fixtures/smartphone-3.yml +++ b/Tests/fixtures/smartphone-3.yml @@ -10710,8 +10710,8 @@ engine_version: 94.0.4606.71 device: type: smartphone - brand: Dazen - model: 6A + brand: Coolpad + model: Dazen 6A os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index ac5eaad26c..4421fcc20d 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -6718,7 +6718,7 @@ Condor: # Coolpad (coolpad.us) Coolpad: - regex: '(?:YL-)?Coolpad|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|1872-A0|REVVLPLUS C3701A|VCR-[AI]0|C105-(?:8|E0)|C106-[789]|C107-9| C106|MTS-T0|ORL-C0|DLS-E0|182[56]-I01|1825-E0| 1825|8298-(?:M02|A01)|5560S|CP3320AS2|CP3321AT|CP350[34]L|cp3636a|CP3648AT?|CP3667AT|CP3669AS|cp3705A[S]?|CP3706AS|CP23NV3|CP8298_I00|CP8676_I0[23]|C103|CP03|C1-U02|SAC-A0| 203[29]|CP0[57]|CP12[psQ]?)(?:[);/ ]|$)|(8295|5860S) Build' + regex: '(?:YL-)?Coolpad|dazen|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|1872-A0|REVVLPLUS C3701A|VCR-[AI]0|C105-(?:8|E0)|C106-[789]|C107-9| C106|MTS-T0|ORL-C0|DLS-E0|182[56]-I01|1825-E0| 1825|8298-(?:M02|A01)|5560S|CP3320AS2|CP3321AT|CP350[34]L|cp3636a|CP3648AT?|CP3667AT|CP3669AS|cp3705A[S]?|CP3706AS|CP23NV3|CP8298_I00|CP8676_I0[23]|C103|CP03|C1-U02|SAC-A0| 203[29]|CP0[57]|CP12[psQ]?)(?:[);/ ]|$)|(8295|5860S) Build' device: 'smartphone' models: - regex: 'CP23NV3' @@ -6821,6 +6821,8 @@ Coolpad: model: '$1' - regex: '(?:YL-)?Coolpad[ _-]?([a-z0-9-]+)' model: '$1' + - regex: '6A' + model: '6A' # Clarmin (clarmin.com) Clarmin: @@ -7349,14 +7351,6 @@ Danew: device: 'tablet' model: 'DSlide $1' -# Dazen -Dazen: - regex: 'dazen' - device: 'smartphone' - models: - - regex: '6A' - model: '6A' - # Denver Electronics (denver-electronics.com) Denver: regex: '(?:TAQ_10[4G]|TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)|SDQ[_-](?:550[24]4L|52001G|50002G|57004L)' From fc1b13e3de7bf8491e351971f16ef78ae00b1e20 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:42:23 +0300 Subject: [PATCH 30/44] Digit4G to Digit --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/feature_phone.yml | 36 +++++++++++++------------- Tests/fixtures/smartphone-12.yml | 4 +-- Tests/fixtures/smartphone-37.yml | 24 ++++++++--------- Tests/fixtures/smartphone-39.yml | 8 +++--- Tests/fixtures/smartphone-7.yml | 8 +++--- regexes/device/mobiles.yml | 26 +++++++++---------- 7 files changed, 54 insertions(+), 54 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index e7a74b7efa..61afbcc9c5 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -471,7 +471,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'DH' => 'Digihome', 'DD' => 'Digiland', 'DIJ' => 'DIJITSU', - 'DIG' => 'Digit4G', + 'DIG' => 'Digit', 'DIC' => 'DIGICOM', 'Q0' => 'DIGIFORS', 'DIK' => 'DIKOM', diff --git a/Tests/fixtures/feature_phone.yml b/Tests/fixtures/feature_phone.yml index 5197122834..8b6dbc2d14 100644 --- a/Tests/fixtures/feature_phone.yml +++ b/Tests/fixtures/feature_phone.yml @@ -2772,8 +2772,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Bold + brand: Digit + model: Digit4G Bold os_family: Firefox OS browser_family: Firefox - @@ -2790,8 +2790,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Defender + brand: Digit + model: Digit4G Defender os_family: Firefox OS browser_family: Firefox - @@ -2808,8 +2808,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Elite + brand: Digit + model: Digit4G Elite os_family: Firefox OS browser_family: Firefox - @@ -2826,8 +2826,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Music + brand: Digit + model: Digit4G Music os_family: Firefox OS browser_family: Firefox - @@ -2844,8 +2844,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Power + brand: Digit + model: Digit4G Power os_family: Firefox OS browser_family: Firefox - @@ -2862,8 +2862,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Star + brand: Digit + model: Digit4G Star os_family: Firefox OS browser_family: Firefox - @@ -2880,8 +2880,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Lite + brand: Digit + model: Digit4G Lite os_family: Firefox OS browser_family: Firefox - @@ -2898,8 +2898,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Power Max + brand: Digit + model: Digit4G Power Max os_family: Firefox OS browser_family: Firefox - @@ -2916,8 +2916,8 @@ engine_version: "48.0" device: type: feature phone - brand: Digit4G - model: Shine + brand: Digit + model: Digit4G Shine os_family: Firefox OS browser_family: Firefox - diff --git a/Tests/fixtures/smartphone-12.yml b/Tests/fixtures/smartphone-12.yml index d1b63b8624..77237558db 100644 --- a/Tests/fixtures/smartphone-12.yml +++ b/Tests/fixtures/smartphone-12.yml @@ -10784,8 +10784,8 @@ engine_version: 104.0.0.0 device: type: smartphone - brand: Digit4G - model: Play1 + brand: Digit + model: Digit4G Play1 os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-37.yml b/Tests/fixtures/smartphone-37.yml index a3f08b872c..6e6e531a11 100644 --- a/Tests/fixtures/smartphone-37.yml +++ b/Tests/fixtures/smartphone-37.yml @@ -4341,8 +4341,8 @@ engine_version: 57.0.2987.108 device: type: smartphone - brand: Digit4G - model: E3 Pro + brand: Digit + model: Digit4G E3 Pro os_family: Android browser_family: Unknown - @@ -4377,8 +4377,8 @@ engine_version: 61.0.3163.98 device: type: smartphone - brand: Digit4G - model: E2 Pro + brand: Digit + model: Digit4G E2 Pro os_family: Android browser_family: Opera - @@ -7233,8 +7233,8 @@ engine_version: 120.0.6099.193 device: type: smartphone - brand: Digit4G - model: Infinity + brand: Digit + model: Digit4G Infinity os_family: Android browser_family: Chrome - @@ -7251,8 +7251,8 @@ engine_version: 105.0.5195.136 device: type: smartphone - brand: Digit4G - model: Infinity Max + brand: Digit + model: Digit4G Infinity Max os_family: Android browser_family: Chrome - @@ -7269,8 +7269,8 @@ engine_version: 120.0.6099.193 device: type: smartphone - brand: Digit4G - model: Glory1 + brand: Digit + model: Digit4G Glory1 os_family: Android browser_family: Chrome - @@ -7287,8 +7287,8 @@ engine_version: 91.0.4472.114 device: type: smartphone - brand: Digit4G - model: Energy Max + brand: Digit + model: Digit4G Energy Max os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-39.yml b/Tests/fixtures/smartphone-39.yml index 79fbe5781b..ba7bff375d 100644 --- a/Tests/fixtures/smartphone-39.yml +++ b/Tests/fixtures/smartphone-39.yml @@ -1291,8 +1291,8 @@ engine_version: 111.0.0.0 device: type: smartphone - brand: Digit4G - model: Next Ultra + brand: Digit + model: Digit4G Next Ultra os_family: Android browser_family: Chrome - @@ -1309,8 +1309,8 @@ engine_version: 106.0.0.0 device: type: smartphone - brand: Digit4G - model: E4 Pro + brand: Digit + model: Digit4G E4 Pro os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-7.yml b/Tests/fixtures/smartphone-7.yml index 67d4313221..8f0dae4d35 100644 --- a/Tests/fixtures/smartphone-7.yml +++ b/Tests/fixtures/smartphone-7.yml @@ -9147,8 +9147,8 @@ engine_version: 61.0.3163.98 device: type: smartphone - brand: Digit4G - model: Energy + brand: Digit + model: Digit4G Energy os_family: Android browser_family: Opera - @@ -9165,8 +9165,8 @@ engine_version: "534.30" device: type: smartphone - brand: Digit4G - model: Pro + brand: Digit + model: Digit4G Pro os_family: Android browser_family: Unknown - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 4421fcc20d..015fbb7de8 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -7584,33 +7584,33 @@ Digiland: - regex: '(Compumax Blue)' # Compumax model: '$1' -# Digit4G or DIGIT (https://digit4g.com/) -Digit4G: +# Digit (https://digit4g.com/) +Digit: regex: 'Digit_|Digit4G|Digit(?:4G|play1|next_Ultra)|DIGIT (?:INFINITY|Glory1)' device: 'smartphone' models: - regex: 'Digitplay1(?:[);/ ]|$)' - model: 'Play1' + model: 'Digit4G Play1' - regex: 'Digitnext_Ultra(?:[);/ ]|$)' - model: 'Next Ultra' + model: 'Digit4G Next Ultra' - regex: 'Glory1(?:[);/ ]|$)' - model: 'Glory1' + model: 'Digit4G Glory1' - regex: 'INFINITY MAX(?:[);/ ]|$)' - model: 'Infinity Max' + model: 'Digit4G Infinity Max' - regex: 'INFINITY(?:[);/ ]|$)' - model: 'Infinity' + model: 'Digit4G Infinity' - regex: 'Energy Max(?:[);/ ]|$)' - model: 'Energy Max' + model: 'Digit4G Energy Max' - regex: 'Digit_Digit4G[_-](Bold|Defender|Elite|Music|Power|Shine|Star)_4G(?:[);/ ]|$)' - model: '$1' + model: 'Digit4G $1' - regex: 'Digit_Digit4GLite_4G(?:[);/ ]|$)' - model: 'Lite' + model: 'Digit4G Lite' - regex: 'Digit_Digit4GPowerMAX_4G(?:[);/ ]|$)' - model: 'Power Max' + model: 'Digit4G Power Max' - regex: 'Digit4G[ _]E([234])[ _]pro(?:[);/ ]|$)' - model: 'E$1 Pro' + model: 'Digit4G E$1 Pro' - regex: 'Digit4G[ -](Energy|Pro)' - model: '$1' + model: 'Digit4G $1' # Compumax or COMPUMAX COMPUTER S.A.S (www.compumax.com.co) COMPUMAX: From eb2d8288cad52134988ae50799a8472f4248dddf Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:50:03 +0300 Subject: [PATCH 31/44] Ditecma to Idea GTO --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tablet-5.yml | 20 ++++++++++---------- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 61afbcc9c5..45db8d23a8 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -477,7 +477,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'DIK' => 'DIKOM', 'DQ' => 'DISH', 'DIS' => 'Disney', - '9D' => 'Ditecma', 'D2' => 'Digma', '1D' => 'Diva', 'DIV' => 'DiverMax', @@ -884,6 +883,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'IDI' => 'iDino', '6Z' => 'iData', 'IDC' => 'IDC', + '9D' => 'Idea GTO', 'IG' => 'iGet', 'IHL' => 'iHome Life', 'IH' => 'iHunt', diff --git a/Tests/fixtures/tablet-5.yml b/Tests/fixtures/tablet-5.yml index 69ca35806d..9aa653a516 100644 --- a/Tests/fixtures/tablet-5.yml +++ b/Tests/fixtures/tablet-5.yml @@ -2407,8 +2407,8 @@ engine_version: 79.0.3945.93 device: type: tablet - brand: Ditecma - model: M1092R + brand: Idea GTO + model: Ditecma M1092R os_family: Android browser_family: Chrome - @@ -2425,8 +2425,8 @@ engine_version: 78.0.3904.96 device: type: tablet - brand: Ditecma - model: M1092R-1 + brand: Idea GTO + model: Ditecma M1092R-1 os_family: Android browser_family: Chrome - @@ -2443,8 +2443,8 @@ engine_version: 81.0.4044.111 device: type: tablet - brand: Ditecma - model: M1092R-2 + brand: Idea GTO + model: Ditecma M1092R-2 os_family: Android browser_family: Chrome - @@ -2461,8 +2461,8 @@ engine_version: 83.0.4103.83 device: type: tablet - brand: Ditecma - model: M1092Rv4 + brand: Idea GTO + model: Ditecma M1092Rv4 os_family: Android browser_family: Chrome - @@ -2479,8 +2479,8 @@ engine_version: 84.0.4147.125 device: type: tablet - brand: Ditecma - model: M1092RV5 + brand: Idea GTO + model: Ditecma M1092RV5 os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 015fbb7de8..34561852ab 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -37397,8 +37397,8 @@ Seatel: - regex: 'Seatel[ _](L2|V8[AE]|T[5-8]|R6|V[89])(?:[);/ ]|$)' model: '$1' -# Ditecma (ditecma.com) -Ditecma: +# Idea GTO (previously listed as "Ditecma" with a link to a site of different organization; "Ditecma" was probably a model line, some images about the tablet show GTO logo, for example https://www.needrom.com/download/gto-ditecma-m1092r/ and https://www.youtube.com/watch?v=qlDFf7t2orY) +Idea GTO: regex: '(M1092R(?:-[12]|V[45])?)(?:[);/ ]|$)' device: 'tablet' model: '$1' From 83b5fb871fa72255b59fb299f1d8127953f3cc43 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sat, 13 Sep 2025 20:51:14 +0300 Subject: [PATCH 32/44] DMM to Dream Multimedia --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tv.yml | 2 +- regexes/device/televisions.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 45db8d23a8..df2b51c288 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -488,7 +488,7 @@ abstract class AbstractDeviceParser extends AbstractParser '5D' => 'DING DING', 'DIN' => 'Dinax', 'DNA' => 'Dinalink', - 'DM' => 'DMM', + 'DM' => 'Dream Multimedia', 'DMO' => 'DMOAO', 'DN' => 'DNS', 'DC' => 'DoCoMo', diff --git a/Tests/fixtures/tv.yml b/Tests/fixtures/tv.yml index cf9a2d60d1..2e3d31cc17 100644 --- a/Tests/fixtures/tv.yml +++ b/Tests/fixtures/tv.yml @@ -1547,7 +1547,7 @@ client: null device: type: tv - brand: DMM + brand: Dream Multimedia model: Dreambox os_family: GNU/Linux browser_family: Unknown diff --git a/regexes/device/televisions.yml b/regexes/device/televisions.yml index e7481d77c7..d8b55ab2c3 100644 --- a/regexes/device/televisions.yml +++ b/regexes/device/televisions.yml @@ -256,8 +256,8 @@ DIORA: - regex: '_TV_[A-Z0-9]+_([0-9]{4});' model: 'Smart TV ($1)' -# DMM -DMM: +# Dream Multimedia (https://www.dmm-tv.com) +Dream Multimedia: regex: 'DMM' device: 'tv' model: 'Dreambox' From 43895943dc5df861ccbafb47bdae25bda5df4319 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 10:08:01 +0300 Subject: [PATCH 33/44] Dreamtab to Powerway --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/tablet-2.yml | 8 ++++---- regexes/device/mobiles.yml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index df2b51c288..f2120eeaf5 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -509,7 +509,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'DJ' => 'Dragon Touch', 'DRA' => 'DRAGON', 'DY' => 'Dreamgate', - 'DRE' => 'DreamTab', 'DR1' => 'DreamStar', 'DTA' => 'Dtac', 'DU' => 'Dune HD', @@ -1476,6 +1475,7 @@ abstract class AbstractDeviceParser extends AbstractParser '3P' => 'Positivo BGH', '3F' => 'Porsche', 'PRT' => 'Portfolio', + 'DRE' => 'Powerway', 'PPD' => 'PPDS', 'P3' => 'PPTV', 'FP' => 'Premio', diff --git a/Tests/fixtures/tablet-2.yml b/Tests/fixtures/tablet-2.yml index 3ad189c8de..e20d9d8f02 100644 --- a/Tests/fixtures/tablet-2.yml +++ b/Tests/fixtures/tablet-2.yml @@ -9184,8 +9184,8 @@ engine_version: 76.0.3809.111 device: type: tablet - brand: DreamTab - model: DRN-809 + brand: Powerway + model: Dreamtab DRN-809 os_family: Android browser_family: Chrome - @@ -9202,8 +9202,8 @@ engine_version: 72.0.3626.121 device: type: tablet - brand: DreamTab - model: DRN-709 + brand: Powerway + model: Dreamtab DRN-709 os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 34561852ab..a600f16882 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -40627,8 +40627,8 @@ Denali: device: 'tablet' model: 'E-Tab $1' -# DreamTab -DreamTab: +# Powerway (previously Dreamtab, but it looks like a model line of Powerway as per some images, for example https://zebramo.com/products/powerway-tablet-tablet-tablet-tablet-tablet-351954019 and https://www.needrom.com/download/powerway-dreamtab-drn-x300/) +Powerway: regex: '(DRN-[78]09)(?:[);/ ]|$)' device: 'tablet' model: '$1' From 1806ae68dc475c2d3b19a671178ca80143b4dc0d Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 10:20:08 +0300 Subject: [PATCH 34/44] EKINOX to iGet --- Parser/Device/AbstractDeviceParser.php | 1 - Tests/fixtures/smartphone-36.yml | 4 ++-- regexes/device/mobiles.yml | 15 +++++---------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index f2120eeaf5..2791d6edc5 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -558,7 +558,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'UE' => 'Ematic', 'EMR' => 'Emporia', '4K' => 'EKT', - 'EKI' => 'EKINOX', '7E' => 'ELARI', '03' => 'Electroneum', 'Z8' => 'ELECTRONIA', diff --git a/Tests/fixtures/smartphone-36.yml b/Tests/fixtures/smartphone-36.yml index f422931934..5f4bbf6507 100644 --- a/Tests/fixtures/smartphone-36.yml +++ b/Tests/fixtures/smartphone-36.yml @@ -211,8 +211,8 @@ engine_version: 87.0.4280.101 device: type: smartphone - brand: EKINOX - model: E8 Ultra + brand: iGet + model: EKINOX E8 Ultra os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index a600f16882..ab5ad31c4a 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -33281,23 +33281,18 @@ Zfiner: device: 'tablet' model: 'Y900' -# EKINOX (https://ekinoxnigeria.com/) -EKINOX: - regex: '(?:E8_Ultra)(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'E8_Ultra' - model: 'E8 Ultra' - -# iGet (www.iget.eu) +# iGet (www.iget.eu, also covers EKINOX, which is a model line from this brand, previously treated as a separate brand) iGet: - regex: 'iGET SMART|(?:SMART[_ ](?:L20X|G10[12]|S7[02]|G71|G81[H]?|L10[234]|L11|L3[12]|W[12]0X|W101|W3[12]|W8[4X]|W20[23]|L206)(?:_eea)?|Android 5(?:[\d.]*);(?: [\w-]+;)? (?:S100))(?:[);/ ]|$)' + regex: 'iGET SMART|E8_Ultra|(?:SMART[_ ](?:L20X|G10[12]|S7[02]|G71|G81[H]?|L10[234]|L11|L3[12]|W[12]0X|W101|W3[12]|W8[4X]|W20[23]|L206)(?:_eea)?|Android 5(?:[\d.]*);(?: [\w-]+;)? (?:S100))(?:[);/ ]|$)' device: 'tablet' models: - regex: '(?:SMART[_ ])?S100(?:[);/ ]|$)' model: 'Smart S100' - regex: 'SMART[_ ](L20X|G10[12]|S7[02]|G71|G81[H]?|L10[234]|L11|W[12]0X|W101|W8[4X]|W3[12]|W20[23]|L206|L3[12])' model: 'Smart $1' + - regex: 'E8_Ultra' + device: 'smartphone' + model: 'E8 Ultra' # Phicomm Phicomm: From 26ce0fae5ada81469c4166b3d52833815470037e Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 10:31:55 +0300 Subject: [PATCH 35/44] Ericy to Ericsson --- Parser/Device/AbstractDeviceParser.php | 1 - regexes/device/mobiles.yml | 12 ++++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 2791d6edc5..772b8fa384 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -587,7 +587,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'E7' => 'Ergo', 'EC' => 'Ericsson', '05' => 'Erisson', - 'ER' => 'Ericy', 'EE' => 'Essential', 'E2' => 'Essentielb', '6E' => 'eSTAR', diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index ab5ad31c4a..4e488f8f18 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -8338,12 +8338,6 @@ Elenberg: - regex: '(TAB(?:101|728)[ _]3G|TAB7(?:[03]8|16|40|3[30]))' model: '$1' -# Ericy -Ericy: - regex: 'Ericy-([a-z0-9]+)' - device: 'feature phone' - model: '$1' - # Essential or Essential Products Essential: regex: 'PH-1(?:[);/ ]|$)' @@ -9146,15 +9140,17 @@ Ergo: model: 'GHS55' device: 'tv' -# Ericsson +# Ericsson (also includes "Ericy", which was previously treated as separate brand, but was not able to find evidence of it existence aside from being short name for Ericsson) Ericsson: - regex: '(?:Ericsson(?:/ )?[a-z0-9]+)|(?:R380 2\.0 WAP1\.1)' + regex: '(?:Ericsson(?:/ )?[a-z0-9]+)|(?:R380 2\.0 WAP1\.1)|Ericy-([a-z0-9]+)' device: 'feature phone' models: - regex: 'Ericsson(?:/ )?([a-z0-9]+)' model: '$1' - regex: 'R380 2\.0 WAP1\.1' model: 'R380' + - regex: 'Ericy-([a-z0-9]+)' + model: '$1' # Energizer (www.energizeyourdevice.com) Energizer: From 4c5a78f5e079252e83364fecb07c1910bc2bdc10 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 11:31:48 +0300 Subject: [PATCH 36/44] Gini to Pelephone --- Parser/Device/AbstractDeviceParser.php | 4 ++-- Tests/fixtures/smartphone-20.yml | 12 ++++++------ Tests/fixtures/smartphone-35.yml | 8 ++++---- Tests/fixtures/tablet-10.yml | 8 ++++---- regexes/device/mobiles.yml | 14 +++++++------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 772b8fa384..0dfa0b1fbe 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -726,7 +726,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'GG' => 'Gigabyte', 'GS' => 'Gigaset', 'GZ' => 'Ginzzu', - '1G' => 'Gini', 'GI' => 'Gionee', 'GIR' => 'GIRASOLE', 'G4' => 'Globex', @@ -1431,11 +1430,12 @@ abstract class AbstractDeviceParser extends AbstractParser 'PC' => 'PCD', 'PD' => 'PCD Argentina', 'PE' => 'PEAQ', + '1G' => 'Pelephone', + '8J' => 'Pelitt', 'PEN' => 'Penta', 'PG' => 'Pentagram', 'PQ' => 'Pendoo', '93' => 'Perfeo', - '8J' => 'Pelitt', '1P' => 'Phicomm', '4P' => 'Philco', 'PH' => 'Philips', diff --git a/Tests/fixtures/smartphone-20.yml b/Tests/fixtures/smartphone-20.yml index c0cfacfa0c..9fafaedbf7 100644 --- a/Tests/fixtures/smartphone-20.yml +++ b/Tests/fixtures/smartphone-20.yml @@ -7219,8 +7219,8 @@ engine_version: 80.0.3987.87 device: type: smartphone - brand: Gini - model: W7 + brand: Pelephone + model: Gini W7 os_family: Android browser_family: Chrome - @@ -7237,8 +7237,8 @@ engine_version: 76.0.3809.132 device: type: smartphone - brand: Gini - model: N8 + brand: Pelephone + model: Gini N8 os_family: Android browser_family: Opera - @@ -7255,8 +7255,8 @@ engine_version: 85.0.4183.81 device: type: smartphone - brand: Gini - model: S5 Pro + brand: Pelephone + model: Gini S5 Pro os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/smartphone-35.yml b/Tests/fixtures/smartphone-35.yml index 998eb8558f..406551e40b 100644 --- a/Tests/fixtures/smartphone-35.yml +++ b/Tests/fixtures/smartphone-35.yml @@ -9215,8 +9215,8 @@ engine_version: 78.0.3904.108 device: type: smartphone - brand: Gini - model: S5 Pro + brand: Pelephone + model: Gini S5 Pro os_family: Android browser_family: Chrome - @@ -9233,8 +9233,8 @@ engine_version: 77.0.3865.92 device: type: smartphone - brand: Gini - model: S5 + brand: Pelephone + model: Gini S5 os_family: Android browser_family: Chrome - diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index 75ce729500..b3847b523e 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -9377,8 +9377,8 @@ engine_version: 80.0.3987.149 device: type: tablet - brand: Gini - model: Tab V7 + brand: Pelephone + model: Gini Tab V7 os_family: Android browser_family: Chrome - @@ -9395,8 +9395,8 @@ engine_version: 83.0.4103.106 device: type: tablet - brand: Gini - model: Tab V8 + brand: Pelephone + model: Gini Tab V8 os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 4e488f8f18..cc90b90421 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -37027,22 +37027,22 @@ Bellphone: device: 'smartphone' model: 'BP 100 X-Plus' -# Gini -Gini: +# Pelephone (previously "Gini", but it seems to be a model line https://www.devicespecifications.com/en/model/41f13a05, although https://wiki.postmarketos.org/wiki/Category:Gini suggests it's a sub-brand, but it looks more like "Galaxy" for Samsung) +Pelephone: regex: 'Gini[ _]|(?:SW17W13|SW17W08)(?:[);/ ]|$)' device: 'smartphone' models: - regex: 'Gini[ _]W(7)' - model: 'W$1' + model: 'Gini W$1' - regex: 'Gini[ _]n(8)' - model: 'N$1' + model: 'Gini N$1' - regex: 'Gini[ _]s5Pro|SW17W13' - model: 'S5 Pro' + model: 'Gini S5 Pro' - regex: 'SW17W08' - model: 'S5' + model: 'vS5' - regex: 'Gini[ _]Tab[ _](V[78])' device: 'tablet' - model: 'Tab $1' + model: 'Gini Tab $1' # MIVO (mivo.com.my) MIVO: From 2c18a1d33b2cde2c5afac3ba555c53f00eb8edc8 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 12:00:01 +0300 Subject: [PATCH 37/44] H133 to Ceibal --- Tests/fixtures/smartphone-15.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Tests/fixtures/smartphone-15.yml b/Tests/fixtures/smartphone-15.yml index d335d615cb..d757f0676b 100644 --- a/Tests/fixtures/smartphone-15.yml +++ b/Tests/fixtures/smartphone-15.yml @@ -9532,8 +9532,9 @@ engine_version: 103.0.0.0 device: type: smartphone - brand: H133 - model: Betacrux + brand: Ceibal + #https://ceibal.edu.uy/institucional/articulos/hardware-beta-crux/ + model: H133 Beta Crux os_family: Android browser_family: Chrome - From 0841651bb672147fefbdbef8bd0bfc34865fa474 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 15:32:07 +0300 Subject: [PATCH 38/44] ROiK to KAP --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/car_browser.yml | 4 ++-- regexes/device/mobiles.yml | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 0dfa0b1fbe..4ed6760e7a 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -989,6 +989,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'K6' => 'Kanji', 'KA' => 'Karbonn', 'K5' => 'KATV1', + 'ROI' => 'KAP', 'KAP' => 'Kapsys', 'K0' => 'Kata', 'KZ' => 'Kazam', @@ -1567,7 +1568,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'ROC' => 'Roam Cat', 'ROT' => 'Rocket', 'R1' => 'Rokit', - 'ROI' => 'ROiK', 'RK' => 'Roku', 'R3' => 'Rombica', 'RUA' => 'Romsat', diff --git a/Tests/fixtures/car_browser.yml b/Tests/fixtures/car_browser.yml index 41921622a8..0276913838 100644 --- a/Tests/fixtures/car_browser.yml +++ b/Tests/fixtures/car_browser.yml @@ -625,8 +625,8 @@ engine_version: 110.0.0.0 device: type: car browser - brand: ROiK - model: "10" + brand: KAP + model: ROiK-10 os_family: Android browser_family: Chrome - diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index cc90b90421..121289237f 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -42479,11 +42479,11 @@ Webfleet: device: 'car browser' model: 'Pro 8475' -# ROiK -ROiK: +# KAP (previously ROiK, but that's a model according to this https://www.youtube.com/watch?v=g9TNZJFTTsE) +KAP: regex: 'ROiK ?(10)(?:[);/ ]|$)' device: 'car browser' - model: '$1' + model: 'ROiK-10' # Kinstone Kinstone: From 96d5bc1fbf720a49173aa0c926926d7762171121 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 15:37:27 +0300 Subject: [PATCH 39/44] RoverPad to Rover Computers --- Parser/Device/AbstractDeviceParser.php | 2 +- Tests/fixtures/smartphone-11.yml | 2 +- Tests/fixtures/tablet-10.yml | 4 ++-- Tests/fixtures/tablet-3.yml | 20 ++++++++++---------- Tests/fixtures/tablet-5.yml | 4 ++-- Tests/fixtures/tablet-7.yml | 4 ++-- regexes/device/mobiles.yml | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index 4ed6760e7a..a60524d228 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1573,7 +1573,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'RUA' => 'Romsat', 'R5' => 'Ross&Moor', 'RO' => 'Rover', - 'R6' => 'RoverPad', + 'R6' => 'Rover Computers', 'RQ' => 'RoyQueen', 'RJ' => 'Royole', 'RT' => 'RT Project', diff --git a/Tests/fixtures/smartphone-11.yml b/Tests/fixtures/smartphone-11.yml index d090e5e7e8..f8eecc9d13 100644 --- a/Tests/fixtures/smartphone-11.yml +++ b/Tests/fixtures/smartphone-11.yml @@ -6774,7 +6774,7 @@ engine_version: 78.0.3904.96 device: type: smartphone - brand: RoverPad + brand: Rover Computers model: "" os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-10.yml b/Tests/fixtures/tablet-10.yml index b3847b523e..179173d843 100644 --- a/Tests/fixtures/tablet-10.yml +++ b/Tests/fixtures/tablet-10.yml @@ -6407,7 +6407,7 @@ engine_version: 30.0.0.0 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Sky 7.85" 3G os_family: Android browser_family: Chrome @@ -6515,7 +6515,7 @@ engine_version: 66.0.3359.158 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Sky 7.85" 3G os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-3.yml b/Tests/fixtures/tablet-3.yml index 5191a914f7..f6065c0ba9 100644 --- a/Tests/fixtures/tablet-3.yml +++ b/Tests/fixtures/tablet-3.yml @@ -8693,7 +8693,7 @@ engine_version: 76.0.3809.132 device: type: tablet - brand: RoverPad + brand: Rover Computers model: "" os_family: Android browser_family: Unknown @@ -8711,7 +8711,7 @@ engine_version: 35.0.1916.122 device: type: tablet - brand: RoverPad + brand: Rover Computers model: "10.4" os_family: Android browser_family: Chrome @@ -8729,7 +8729,7 @@ engine_version: "533.1" device: type: tablet - brand: RoverPad + brand: Rover Computers model: 3W A73 os_family: Android browser_family: Android Browser @@ -8747,7 +8747,7 @@ engine_version: "534.30" device: type: tablet - brand: RoverPad + brand: Rover Computers model: 3W7 os_family: Android browser_family: Android Browser @@ -8765,7 +8765,7 @@ engine_version: "534.30" device: type: tablet - brand: RoverPad + brand: Rover Computers model: 3W9.4 os_family: Android browser_family: Android Browser @@ -8783,7 +8783,7 @@ engine_version: "530.17" device: type: tablet - brand: RoverPad + brand: Rover Computers model: 3WT70 os_family: Android browser_family: Android Browser @@ -8801,7 +8801,7 @@ engine_version: 71.0.3578.99 device: type: tablet - brand: RoverPad + brand: Rover Computers model: 9.7 3G os_family: Android browser_family: Opera @@ -8819,7 +8819,7 @@ engine_version: "537.31" device: type: tablet - brand: RoverPad + brand: Rover Computers model: Air S70 os_family: Android browser_family: Chrome @@ -8837,7 +8837,7 @@ engine_version: 30.0.0.0 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Sky 7.85" 3G os_family: Android browser_family: Chrome @@ -8855,7 +8855,7 @@ engine_version: 70.0.3538.110 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Sky 9.7 os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-5.yml b/Tests/fixtures/tablet-5.yml index 9aa653a516..c952759a86 100644 --- a/Tests/fixtures/tablet-5.yml +++ b/Tests/fixtures/tablet-5.yml @@ -5231,7 +5231,7 @@ engine_version: 80.0.3987.117 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Pro Q8 LTE os_family: Android browser_family: Chrome @@ -5249,7 +5249,7 @@ engine_version: 83.0.4103.83 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Pro Q10 LTE os_family: Android browser_family: Chrome diff --git a/Tests/fixtures/tablet-7.yml b/Tests/fixtures/tablet-7.yml index 9d7fdb3d07..9e28324734 100644 --- a/Tests/fixtures/tablet-7.yml +++ b/Tests/fixtures/tablet-7.yml @@ -4833,7 +4833,7 @@ engine_version: 42.0.2311.111 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Air 7.85" 3G os_family: Android browser_family: Chrome @@ -4851,7 +4851,7 @@ engine_version: 71.0.3578.99 device: type: tablet - brand: RoverPad + brand: Rover Computers model: Art 7.85" 3G os_family: Android browser_family: Chrome diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 121289237f..a46e19fd09 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -22539,8 +22539,8 @@ Rover: device: 'feature phone' model: '$1' -# RoverPad or Rover Pad -RoverPad: +# Rover Computers (previously "Rover Pad" and "RoverPad", but "Pad" and "Phone" are more like model lines, and logo on them matches one at https://www.dailycomm.ru/m/5445/) +Rover Computers: regex: '(?:Rover[ ]?Pad|RoverPhone|(?:Air|Art|Sky) 7\.85 3G|Pro_Q(?:8|10)_LTE)(?:[);/ ]|$)' device: 'tablet' models: From ceb310db34533625ac7999c14b4e383afba50c2e Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 14 Sep 2025 21:27:09 +0300 Subject: [PATCH 40/44] Correcting missed brand changes --- regexes/device/mobiles.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index a46e19fd09..618b85b4af 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34030,7 +34030,7 @@ SEMP TCL: # Newman Newman: - regex: '(?:(?:Newman[ _])(P308|K1|G5i|)|(UE Pad 1))(?:[);/ ]|$)' + regex: '(?:(?:(?:Newman[ _])(P308|K1|G5i|))|(UE Pad 1))(?:[);/ ]|$)' device: 'smartphone' model: '$1' models: @@ -34070,7 +34070,7 @@ Owwo: model: 'Carnival B5' # 360 or names Qihoo 360, +360, QiKU 360 -'360': +360: regex: '(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01|1505-A0[12]|1605-A01)(?:[);/ ]|$)' device: 'smartphone' models: @@ -34717,7 +34717,7 @@ Logic: model: '$1' # Cloud or Cloud TruConnect or Cloud_Mobile (www.cloudmobileusa.com) -Cloud: +Cloud Mobile: regex: '(?:Cirrus_C2|Cyclone_C4|Storm_C3|Stratus_C[57](?:_Elite)?|Stratus C8|Sunshine_T1|Typhoon_C6|Sunshine_T1_Elite)(?:[);/ ]|$)' device: 'smartphone' models: @@ -35399,7 +35399,7 @@ Transpeed: model: '$1' # 8848 (everest 8848, 8848 titanium) -'8848': +8848: regex: '8848 (M[3-6])(?:[);/ ]|$)' device: 'smartphone' model: '$1' From bb9051b99dc16ca3172a8571b59c83a5cb956322 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 21 Sep 2025 21:24:31 +0300 Subject: [PATCH 41/44] Correct device type --- regexes/device/mobiles.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 618b85b4af..f72f7da3ff 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34037,6 +34037,7 @@ Newman: - regex: 'Newman[ _](P308|K1|G5i)(?:[);/ ]|$)' model: '$1' - regex: 'UE Pad 1' + device: 'tablet' model: 'UE 1 PAD' # Swipe From 144434d5095a134eacc0ad1500f30c026d615a9f Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 21 Sep 2025 22:41:04 +0300 Subject: [PATCH 42/44] Fixing tests --- Parser/Device/AbstractDeviceParser.php | 16 ++++----- regexes/device/mobiles.yml | 46 +++++++++++--------------- 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/Parser/Device/AbstractDeviceParser.php b/Parser/Device/AbstractDeviceParser.php index a60524d228..9ff7220a78 100644 --- a/Parser/Device/AbstractDeviceParser.php +++ b/Parser/Device/AbstractDeviceParser.php @@ -1159,7 +1159,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'FK' => 'MBI', 'MBK' => 'MBK', '3D' => 'MDC Store', - '1Y' => 'MDTV', + '1Y' => 'OTT', '09' => 'meanIT', 'M3' => 'Mecer', 'M3M' => 'M3 Mobile', @@ -1204,7 +1204,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'MIW' => 'MIWANG', 'ML' => 'MLLED', 'LS' => 'MLS', - 'MLA' => 'MLAB', + 'MLA' => 'Microlab', '4M' => 'Mobicel', 'M6' => 'Mobiistar', 'MOK' => 'Mobile Kingdom', @@ -1507,10 +1507,11 @@ abstract class AbstractDeviceParser extends AbstractParser 'QM' => 'QMobile', 'QT' => 'Qtek', 'Q9' => 'QTECH', + '84' => 'Quanta Computer', 'QA' => 'Quantum', - 'QUE' => 'Quest', 'QUA' => 'Quatro', 'QU' => 'Quechua', + 'QUE' => 'Quest', 'QUI' => 'Quipus', 'QO' => 'Qumo', 'UQ' => 'Qubo', @@ -1704,14 +1705,13 @@ abstract class AbstractDeviceParser extends AbstractParser '68' => 'Soho Style', 'SOB' => 'SobieTech', 'SOW' => 'SOWLY', - 'PK' => 'Spark', + 'PK' => 'Spark NZ', 'SPX' => 'Sparx', 'FS' => 'SPC', '6S' => 'Spectrum', '43' => 'Spectralink', 'SP' => 'Spice', 'SPD' => 'Spider', - '84' => 'Sprint', 'SPU' => 'SPURT', 'QS' => 'SQOOL', 'OL' => 'Starlight', @@ -1724,7 +1724,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'GQ' => 'STG Telecom', 'S2' => 'Stonex', 'ST' => 'Storex', - 'STR' => 'Stream', + 'STR' => 'Stream System', '71' => 'StrawBerry', '96' => 'STRONG', '69' => 'Stylo', @@ -1762,6 +1762,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'SM' => 'Symphony', '4S' => 'Syrox', 'SYS' => 'System76', + 'TPS' => 'SZ TPS', 'TM' => 'T-Mobile', 'T96' => 'T96', 'TAD' => 'TADAAM', @@ -1786,7 +1787,6 @@ abstract class AbstractDeviceParser extends AbstractParser 'TTS' => 'TECHNOSAT', 'TM1' => 'Temigereev', 'TP' => 'TechPad', - 'TPS' => 'TPS', '9E' => 'Techwood', '7F' => 'Technopc', 'TCH' => 'Techstorm', @@ -2009,7 +2009,7 @@ abstract class AbstractDeviceParser extends AbstractParser 'VRX' => 'VORTEX (RO)', 'VOR' => 'Vormor', 'V1' => 'Voto', - 'Z7' => 'VOX', + 'Z7' => 'VOX Electronics', 'VO' => 'Voxtel', 'VY' => 'Voyo', 'VOL' => 'Völfen', diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index f72f7da3ff..1b6ce155ef 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -6822,7 +6822,7 @@ Coolpad: - regex: '(?:YL-)?Coolpad[ _-]?([a-z0-9-]+)' model: '$1' - regex: '6A' - model: '6A' + model: 'Dazen 6A' # Clarmin (clarmin.com) Clarmin: @@ -10368,14 +10368,6 @@ Gtel: - regex: 'Gtel[ _-]([^;/]+)(?: Build|[;)])' model: '$1' -# H133 -H133: - regex: 'Betacrux(?:[);/ ]|$)' - device: 'smartphone' - models: - - regex: 'Betacrux(?:[);/ ]|$)' - model: 'Betacrux' - # H96 (https://www.h96tvbox.com/) H96: regex: 'H96[ _]?(?:Max|mini H8|plus|PRO\+)' @@ -33288,7 +33280,7 @@ iGet: model: 'Smart $1' - regex: 'E8_Ultra' device: 'smartphone' - model: 'E8 Ultra' + model: 'EKINOX E8 Ultra' # Phicomm Phicomm: @@ -35231,10 +35223,15 @@ MDC Store: model: 'M5' # OTT (previously MDTV, but it looks to be a model line from OTT based on branding on the cardboard boxes, for example https://www.madridcenter.com/produto/tv-box-mdtv-pro-8k-32-256gb-android-11-1-5g-preto-749749.html) +# Also cover "LPX-G" which was previously treated as a separate brand, but is also a model of OTT based on listings like https://prom.ua/p705060188-boks-ott-box.html OTT: - regex: 'MDTV(?:[);/ ]|$)' + regex: 'MDTV|LPX-G BOX' device: 'tv' - model: '' + models: + - regex: 'MDTV' + model: 'MDTV' + - regex: 'LPX-G Box Max' + model: 'LPX-G Box Max' # meanIT (meanit.hr) meanIT: @@ -36729,7 +36726,7 @@ Electroneum: EPIK Learning: regex: '(ELT070[46]H|ELT0802H)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + model: 'HighQ $1' # Pluzz Pluzz: @@ -37040,7 +37037,7 @@ Pelephone: - regex: 'Gini[ _]s5Pro|SW17W13' model: 'Gini S5 Pro' - regex: 'SW17W08' - model: 'vS5' + model: 'Gini S5' - regex: 'Gini[ _]Tab[ _](V[78])' device: 'tablet' model: 'Gini Tab $1' @@ -37393,7 +37390,7 @@ Seatel: Idea GTO: regex: '(M1092R(?:-[12]|V[45])?)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + model: 'Ditecma $1' # Datamini (datamini.co.in) Datamini: @@ -39161,7 +39158,7 @@ Glory Star: # Polar (https://polartv.ru/). Previously Megamax and Polarline were separate, but it looks like they were never treated as sub-brands (registered as at least a trade-mark, have separate website, etc.), but rather as model-lines Polar: - regex: '(?:(?:Polar(?:_W?K?)?[_ ]P\d{2}|(?:P42L31T2CSM|P32L33T2CSM))|(?:PolarLine[_ ](?:W?K?[_ ])?(\d{2}P[LU]\d{2}S?TC-SM))|(?:MEGAMAX(?:_W_)?(\d{2}MG11FSM)))(?:[);/ ]|$)' + regex: '(?:(?:(?:Polar(?:_W?K?)?[_ ])?(P\d{2}[LU]\d{2}T2S?CSM))|(?:PolarLine[_ ](?:W?K?[_ ])?(\d{2}P[LU]\d{2}S?TC-SM))|(?:MEGAMAX(?:_W_)?(\d{2}MG11FSM)))(?:[);/ ]|$)' device: 'tv' models: - regex: '(?:Polar(?:_W?K?)?[_ ])?(P\d{2}[LU]\d{2}T2S?CSM)(?:[);/ ]|$)' @@ -40623,7 +40620,7 @@ Denali: Powerway: regex: '(DRN-[78]09)(?:[);/ ]|$)' device: 'tablet' - model: '$1' + model: 'Dreamtab $1' # DL DL: @@ -41056,7 +41053,7 @@ Topsion: # Ceibal (www.ceibal.edu.uy) Ceibal: - regex: '(?:ACRUX|BELLATRIX|BETELGEUSE|GACRUX|Kil-82WFDC|U800B)(?:[);/ ]|$)' + regex: '(?:ACRUX|BELLATRIX|BETELGEUSE|GACRUX|Betacrux|Kil-82WFDC|U800B)(?:[);/ ]|$)' device: 'tablet' models: - regex: 'ACRUX' @@ -41071,6 +41068,9 @@ Ceibal: model: 'Kiland T8' - regex: '(U800B)' model: '$1' + - regex: 'Betacrux(?:[);/ ]|$)' + device: 'smartphone' + model: 'H133 Beta Crux' # Wecool Wecool: @@ -42031,14 +42031,6 @@ Waltter: device: 'tablet' model: 'Neo 10.1"' -# LPX-G -LPX-G: - regex: 'LPX-G BOX' - device: 'tv' - models: - - regex: 'LPX-G Box Max' - model: 'Box Max' - # VALTECH VALTECH: regex: 'TAB7Q804VAL' @@ -43106,7 +43098,7 @@ A&K: Unikalne Smartphones: regex: 'BASE[_ ](Varia)' device: 'smartphone' - model: '$1' + model: 'BASE $1' # BAUHN (https://bauhn.com.au/) BAUHN: From a68083f8261a1f9324def2ec5e516b2e59960500 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 21 Sep 2025 22:45:19 +0300 Subject: [PATCH 43/44] Fixing tests --- regexes/device/mobiles.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 1b6ce155ef..800edada03 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -38858,7 +38858,7 @@ Kiowa: Quanta Computer: regex: 'AQT(100|8[02])(?:[);/ ]|$)' device: 'tablet' - model: 'AQT$1' + model: 'Slate AQT$1' # Bundy Mobile (bundy-mobile.fr) Bundy: From 19ff47bdbb7f7b9f0bd4040dbfd7c85f26ac94d7 Mon Sep 17 00:00:00 2001 From: Dmitrii Kustov Date: Sun, 21 Sep 2025 22:50:23 +0300 Subject: [PATCH 44/44] Fix regex --- regexes/device/mobiles.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 800edada03..8c3dc12197 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -34022,7 +34022,7 @@ SEMP TCL: # Newman Newman: - regex: '(?:(?:(?:Newman[ _])(P308|K1|G5i|))|(UE Pad 1))(?:[);/ ]|$)' + regex: '(?:(?:(?:Newman[ _])(P308|K1|G5i))|(UE Pad 1))(?:[);/ ]|$)' device: 'smartphone' model: '$1' models: