device_detector 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +29 -1
- data/lib/device_detector/version.rb +1 -1
- data/regexes/bots.yml +18 -2
- data/regexes/client/browsers.yml +13 -2
- data/regexes/client/mediaplayers.yml +9 -1
- data/regexes/device/cameras.yml +3 -1
- data/regexes/device/mobiles.yml +374 -44
- data/spec/device_detector/detector_fixtures_spec.rb +7 -1
- data/spec/fixtures/client/browser.yml +17 -1
- data/spec/fixtures/client/mediaplayer.yml +20 -1
- data/spec/fixtures/detector/bots.yml +7 -0
- data/spec/fixtures/detector/camera.yml +18 -0
- data/spec/fixtures/detector/desktop.yml +6 -6
- data/spec/fixtures/detector/mediaplayer.yml +17 -1
- data/spec/fixtures/detector/phablet.yml +163 -1
- data/spec/fixtures/detector/smartphone.yml +2159 -1187
- data/spec/fixtures/detector/tablet.yml +6029 -4571
- data/spec/fixtures/detector/tv.yml +36 -0
- data/spec/fixtures/detector/unknown.yml +0 -36
- data/spec/fixtures/parser/oss.yml +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dafeb69d5740bff28a730522bfcb0487ed419b8
|
4
|
+
data.tar.gz: e82f903f97d49b743d6572bd6a5f4c50b6ab5c61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ee6f2f50425f367ca9a1823d3f133d410d77d854fe9b88d991a1f07f2fd2c9ea35799c530ace6220d87b74b839b581b48bc6d9d186f9bff9da618439fe498f8
|
7
|
+
data.tar.gz: e047fd31175b2c09e17ac6fa0d7bdee576c579f675059c0cf3144e257c4d3e1c524d18aa286cfe1610d63611b3d7449fc5465685797b686d1a287a6a7d394d5c
|
data/Rakefile
CHANGED
@@ -39,8 +39,36 @@ task :detectable_names do
|
|
39
39
|
puts
|
40
40
|
end
|
41
41
|
|
42
|
+
PIWIK_TARBALL_LOCATION = '/tmp/piwik_device_detector.tar.gz'.freeze
|
43
|
+
|
44
|
+
def get_latest_piwik_tarball
|
45
|
+
system "curl -s -L https://api.github.com/repos/piwik/device-detector/tarball/master -o #{PIWIK_TARBALL_LOCATION}"
|
46
|
+
end
|
47
|
+
|
42
48
|
desc 'update regex database from piwik project'
|
43
49
|
task :update_regexes do
|
44
50
|
top = File.expand_path('..', __FILE__)
|
45
|
-
|
51
|
+
get_latest_piwik_tarball
|
52
|
+
system "tar xzvf #{PIWIK_TARBALL_LOCATION} --strip-components 1 --include */regexes/*.yml -C #{top}"
|
53
|
+
end
|
54
|
+
|
55
|
+
desc 'update fixtures from piwik project'
|
56
|
+
task :update_fixtures do
|
57
|
+
top = File.expand_path('..', __FILE__)
|
58
|
+
get_latest_piwik_tarball
|
59
|
+
|
60
|
+
fixture_mappings = [
|
61
|
+
# tablet.yml from the detector fixtures is broken: https://github.com/piwik/device-detector/issues/5355
|
62
|
+
#{ local_path: "#{top}/spec/fixtures/detector", archive_path: '*/Tests/fixtures/*.yml', strip_components: 3 },
|
63
|
+
{ local_path: "#{top}/spec/fixtures/client", archive_path: '*/Tests/Parser/Client/fixtures/*.yml', strip_components: 5 },
|
64
|
+
{ local_path: "#{top}/spec/fixtures/parser", archive_path: '*/Tests/Parser/fixtures/*.yml', strip_components: 4 },
|
65
|
+
{ local_path: "#{top}/spec/fixtures/device", archive_path: '*/Tests/Parser/Devices/fixtures/*.yml', strip_components: 5 },
|
66
|
+
]
|
67
|
+
|
68
|
+
fixture_mappings.each do |mapping|
|
69
|
+
strip_components = mapping.fetch(:strip_components)
|
70
|
+
archive_path = mapping.fetch(:archive_path)
|
71
|
+
local_path = mapping.fetch(:local_path)
|
72
|
+
system "tar xzvf #{PIWIK_TARBALL_LOCATION} --strip-components #{strip_components} --include #{archive_path} -C #{local_path}"
|
73
|
+
end
|
46
74
|
end
|
data/regexes/bots.yml
CHANGED
@@ -965,6 +965,23 @@
|
|
965
965
|
name: 'Pinterest'
|
966
966
|
url: 'http://www.pinterest.com/'
|
967
967
|
|
968
|
+
- regex: 'Site24x7'
|
969
|
+
name: 'Site24x7 Website Monitoring'
|
970
|
+
category: 'Site Monitor'
|
971
|
+
url: 'https://www.site24x7.com/site24x7-faq.html'
|
972
|
+
producer:
|
973
|
+
name: 'Site24x7'
|
974
|
+
url: 'https://www.site24x7.com'
|
975
|
+
|
976
|
+
- regex: 'www.monitor.us'
|
977
|
+
name: 'Monitor.Us'
|
978
|
+
category: 'Site Monitor'
|
979
|
+
url: 'http://www.monitor.us'
|
980
|
+
producer:
|
981
|
+
name: 'Monitor.Us'
|
982
|
+
url: 'http://www.monitor.us'
|
983
|
+
|
984
|
+
|
968
985
|
- regex: 'lycos'
|
969
986
|
name: 'Lycos'
|
970
987
|
|
@@ -1019,7 +1036,6 @@
|
|
1019
1036
|
- regex: '(nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex|zao|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Catchpoint bot|Google SketchUp|Read%20Later|Minimo|RackspaceBot)'
|
1020
1037
|
name: 'Bot'
|
1021
1038
|
|
1022
|
-
|
1023
1039
|
# Generic detections
|
1024
1040
|
|
1025
1041
|
- regex: 'Nutch'
|
@@ -1031,4 +1047,4 @@
|
|
1031
1047
|
url: 'http://www.apache.org/foundation/'
|
1032
1048
|
|
1033
1049
|
- regex: '[a-z0-9\-_]*(bot|crawler|archiver|transcoder|spider)'
|
1034
|
-
name: 'Generic Bot'
|
1050
|
+
name: 'Generic Bot'
|
data/regexes/client/browsers.yml
CHANGED
@@ -5,13 +5,19 @@
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
-
#
|
8
|
+
# Microsoft Edge (newer versions of IE)
|
9
9
|
- regex: 'Edge[ /](\d+[\.\d]+)'
|
10
|
-
name: '
|
10
|
+
name: 'Microsoft Edge'
|
11
11
|
version: '$1'
|
12
12
|
engine:
|
13
13
|
default: 'Edge'
|
14
14
|
|
15
|
+
# 360 Phone Browser
|
16
|
+
- regex: '360 Aphone Browser(?: \((\d+[\.\d]+)(?:beta)?\))?'
|
17
|
+
name: '360 Phone Browser'
|
18
|
+
version: '$1'
|
19
|
+
engine:
|
20
|
+
default: 'WebKit'
|
15
21
|
|
16
22
|
#SailfishBrowser
|
17
23
|
- regex: 'SailfishBrowser(?:/(\d+[\.\d]+))?'
|
@@ -139,6 +145,11 @@
|
|
139
145
|
version: '$1 ($2)'
|
140
146
|
engine:
|
141
147
|
default: 'Gecko'
|
148
|
+
- regex: 'FxiOS/(\d+[\.\d]+)'
|
149
|
+
name: 'Firefox'
|
150
|
+
version: 'iOS $1'
|
151
|
+
engine:
|
152
|
+
default: 'WebKit'
|
142
153
|
|
143
154
|
#ANTGalio
|
144
155
|
- regex: 'ANTGalio(?:/(\d+[\.\d]+))?'
|
@@ -65,6 +65,14 @@
|
|
65
65
|
name: 'XBMC'
|
66
66
|
version: '$1'
|
67
67
|
|
68
|
+
- regex: 'Kodi(?:/([\d\.]+))?'
|
69
|
+
name: 'Kodi'
|
70
|
+
version: '$1'
|
71
|
+
|
68
72
|
- regex: 'stagefright(?:/([\d\.]+))?'
|
69
73
|
name: 'Stagefright'
|
70
|
-
version: '$1'
|
74
|
+
version: '$1'
|
75
|
+
|
76
|
+
- regex: 'Instacast\/([\d\.]+) CFNetwork\/([\d\.]+)'
|
77
|
+
name: 'Instacast'
|
78
|
+
version: '$1'
|
data/regexes/device/cameras.yml
CHANGED
data/regexes/device/mobiles.yml
CHANGED
@@ -269,7 +269,7 @@ Apple:
|
|
269
269
|
device: 'tablet'
|
270
270
|
- regex: '(?:Apple-)?iPad5[C,][34]'
|
271
271
|
model: 'iPad Air 2'
|
272
|
-
|
272
|
+
device: 'tablet'
|
273
273
|
|
274
274
|
- regex: 'AppleTV'
|
275
275
|
model: 'Apple TV'
|
@@ -300,7 +300,7 @@ MicroMax:
|
|
300
300
|
|
301
301
|
# Acer
|
302
302
|
Acer:
|
303
|
-
regex: 'acer|a(?:101|110|200|210|211|500|501|510|511|700|701) Build|Android.*
|
303
|
+
regex: 'acer|a(?:101|110|200|210|211|500|501|510|511|700|701) Build|Android.*V3[67]0 Build|Android.*Z1[23456]0 Build|Android.*Z500 Build|A1-830|A1-81[01]|A3-A[12][01]|B1-7[1235][01]|B1-810|B1-A71|E39 Build|S5[12]0 Build'
|
304
304
|
device: 'smartphone'
|
305
305
|
models:
|
306
306
|
# explicit tablet models
|
@@ -310,21 +310,30 @@ Acer:
|
|
310
310
|
- regex: 'A1-830'
|
311
311
|
model: 'Iconia A1'
|
312
312
|
device: 'tablet'
|
313
|
-
- regex: 'A3-
|
313
|
+
- regex: 'A3-A[12][01]'
|
314
314
|
model: 'Iconia A3'
|
315
315
|
device: 'tablet'
|
316
|
-
- regex: 'B1-7[
|
316
|
+
- regex: 'B1-7[1235][01]|B1-810|B1-A71'
|
317
317
|
model: 'Iconia B1'
|
318
318
|
device: 'tablet'
|
319
319
|
|
320
320
|
# explicit smartphone models
|
321
|
+
- regex: 'E39 Build'
|
322
|
+
model: 'Liquid E700'
|
321
323
|
- regex: 'Android.*V360 Build'
|
322
324
|
model: 'Liquid E1'
|
325
|
+
- regex: 'Android.*V370 Build'
|
326
|
+
model: 'Liquid E2'
|
323
327
|
- regex: 'S510 Build'
|
324
328
|
model: 'Liquid S1'
|
325
329
|
- regex: 'S520 Build'
|
326
330
|
model: 'Liquid S2'
|
327
|
-
|
331
|
+
- regex: 'Android.*Z1([2345])0 Build'
|
332
|
+
model: 'Liquid Z$1'
|
333
|
+
- regex: 'Android.*Z160 Build'
|
334
|
+
model: 'Liquid Z4'
|
335
|
+
- regex: 'Android.*Z500 Build'
|
336
|
+
model: 'Liquid Z500'
|
328
337
|
- regex: 'Acer; ?([^;\)]+)'
|
329
338
|
model: '$1'
|
330
339
|
- regex: 'Acer[ _\-]?([^;\)]+) Build'
|
@@ -364,9 +373,13 @@ Alcatel:
|
|
364
373
|
|
365
374
|
# Amoi
|
366
375
|
Amoi:
|
367
|
-
regex: 'Amoi'
|
376
|
+
regex: 'Amoi|A862W'
|
368
377
|
device: 'smartphone'
|
369
378
|
models:
|
379
|
+
# explicit smartphone models
|
380
|
+
- regex: 'A862W'
|
381
|
+
model: 'A862W'
|
382
|
+
|
370
383
|
- regex: 'Amoi[\- /]([a-z0-9]+)'
|
371
384
|
model: '$1'
|
372
385
|
- regex: 'Amoisonic-([a-z0-9]+)'
|
@@ -407,12 +420,78 @@ MEU:
|
|
407
420
|
|
408
421
|
# Arnova
|
409
422
|
Arnova:
|
410
|
-
regex: 'arnova|
|
423
|
+
regex: 'arnova|ARCHM901|AN7CG2|AN7G2(DTE|I)?|AN7[BCDFH]?G3|A80KSC|AN8G2|AN8[BC]?G3|AN9G2I?|AN9G3|A101[BC]|AN10G2|AN10BG2(DT|I)?|AN10BG3(DT)?|AN10[CD]G3'
|
411
424
|
device: 'tablet'
|
412
425
|
models:
|
426
|
+
# explicit tablet models
|
427
|
+
- regex: 'ARCHM901'
|
428
|
+
model: 'M901'
|
429
|
+
- regex: 'AN7CG2'
|
430
|
+
model: '7c G2'
|
431
|
+
- regex: 'AN7G2I|AN7G2|AN7G2DTE'
|
432
|
+
model: '7 G2'
|
433
|
+
- regex: 'AN7G3'
|
434
|
+
model: '7 G3'
|
435
|
+
- regex: 'AN7BG3'
|
436
|
+
model: '7b G3'
|
437
|
+
- regex: 'AN7CG3'
|
438
|
+
model: '7c G3'
|
439
|
+
- regex: 'AN7DG3-CP'
|
440
|
+
model: 'Childpad'
|
441
|
+
- regex: 'AN7DG3'
|
442
|
+
model: '7d G3'
|
443
|
+
- regex: 'AN7FG3'
|
444
|
+
model: '7f G3'
|
445
|
+
- regex: 'AN7HG3'
|
446
|
+
model: '7h G3'
|
447
|
+
- regex: 'A80KSC'
|
448
|
+
model: '8'
|
449
|
+
- regex: 'AN8G2'
|
450
|
+
model: '8 G2'
|
451
|
+
- regex: 'AN8G3'
|
452
|
+
model: '8 G3'
|
453
|
+
- regex: 'AN8BG3'
|
454
|
+
model: '8b G3'
|
455
|
+
- regex: 'AN8CG3'
|
456
|
+
model: '8c G3'
|
457
|
+
- regex: 'AN9G2I'
|
458
|
+
model: '9i G2'
|
459
|
+
- regex: 'AN9G2'
|
460
|
+
model: '9 G2'
|
461
|
+
- regex: 'AN9G3'
|
462
|
+
model: '9 G3'
|
463
|
+
- regex: 'A101B2|A101C|AN10G2'
|
464
|
+
model: '10 G2'
|
465
|
+
- regex: 'A101B'
|
466
|
+
model: '10'
|
467
|
+
- regex: 'AN10BG2|AN10BG2DT|AN10BG2I'
|
468
|
+
model: '10b G2'
|
469
|
+
- regex: 'AN10BG3|AN10BG3DT|AN10BG3-LZ'
|
470
|
+
model: '10b G3'
|
471
|
+
- regex: 'AN10CG3'
|
472
|
+
model: '10c G3'
|
473
|
+
- regex: 'AN10DG3'
|
474
|
+
model: '10d G3'
|
475
|
+
- regex: 'ARNOVA 90G3'
|
476
|
+
model: '90 G3'
|
477
|
+
- regex: 'ARNOVA 90 G4'
|
478
|
+
model: '90 G4'
|
479
|
+
- regex: 'ARNOVA 97G4'
|
480
|
+
model: '97 G4'
|
481
|
+
- regex: 'ARNOVA 101 G4'
|
482
|
+
model: '101 G4'
|
483
|
+
|
413
484
|
- regex: 'Arnova ([^/;]*) Build'
|
414
485
|
model: '$1'
|
415
|
-
|
486
|
+
|
487
|
+
# Garmin-Asus
|
488
|
+
Garmin-Asus:
|
489
|
+
regex: 'Garmin-Asus'
|
490
|
+
device: 'smartphone'
|
491
|
+
models:
|
492
|
+
- regex: 'Garmin-Asus[ \-_]([^;/]+)Build'
|
493
|
+
model: '$1'
|
494
|
+
- regex: 'Garmin-Asus[ \-_]([^;/]+)[\)/]'
|
416
495
|
model: '$1'
|
417
496
|
|
418
497
|
# Asus
|
@@ -439,6 +518,9 @@ Asus:
|
|
439
518
|
- regex: 'K01[3A] Build'
|
440
519
|
model: 'MeMO Pad 7'
|
441
520
|
device: 'tablet'
|
521
|
+
- regex: 'K01E Build'
|
522
|
+
model: 'MeMO Pad 10 ME103K'
|
523
|
+
device: 'tablet'
|
442
524
|
- regex: 'K00U|ME173X Build'
|
443
525
|
model: 'MeMO Pad HD 7'
|
444
526
|
device: 'tablet'
|
@@ -546,8 +628,8 @@ Blu:
|
|
546
628
|
device: 'smartphone'
|
547
629
|
model: '$1'
|
548
630
|
|
549
|
-
#
|
550
|
-
|
631
|
+
# Vivo
|
632
|
+
Vivo:
|
551
633
|
regex: 'vivo'
|
552
634
|
device: 'smartphone'
|
553
635
|
models:
|
@@ -818,6 +900,12 @@ ECS:
|
|
818
900
|
- regex: 'TM105 Build'
|
819
901
|
model: 'TM105'
|
820
902
|
|
903
|
+
# Elephone
|
904
|
+
Elephone:
|
905
|
+
regex: 'Elephone[ _\-]([^/;]+) Build'
|
906
|
+
device: 'smartphone'
|
907
|
+
model: '$1'
|
908
|
+
|
821
909
|
# Ericy
|
822
910
|
Ericy:
|
823
911
|
regex: 'Ericy-([a-z0-9]+)'
|
@@ -1122,9 +1210,14 @@ eTouch:
|
|
1122
1210
|
|
1123
1211
|
# Storex
|
1124
1212
|
Storex:
|
1125
|
-
regex: "eZee[^a-z]*Tab ?([^;/]*) Build"
|
1213
|
+
regex: "eZee[^a-z]*Tab ?([^;/]*) Build|STOREX LinkBox"
|
1126
1214
|
device: 'tablet'
|
1127
|
-
|
1215
|
+
models:
|
1216
|
+
- regex: "eZee[^a-z]*Tab ?([^;/]*) Build"
|
1217
|
+
model: "eZee'Tab$1"
|
1218
|
+
- regex: 'STOREX LinkBox'
|
1219
|
+
model: 'LinkBox'
|
1220
|
+
device: 'tv'
|
1128
1221
|
|
1129
1222
|
# Evertek
|
1130
1223
|
Evertek:
|
@@ -1271,7 +1364,7 @@ Haier:
|
|
1271
1364
|
|
1272
1365
|
# Hisense
|
1273
1366
|
Hisense:
|
1274
|
-
regex: 'HS-(?:U|EG?)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281'
|
1367
|
+
regex: '(?:HS-)?Hisense ([^;/]+) Build|HS-(?:U|EG?)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281'
|
1275
1368
|
device: 'smartphone'
|
1276
1369
|
models:
|
1277
1370
|
# explicit tablet models
|
@@ -1287,6 +1380,14 @@ Hisense:
|
|
1287
1380
|
|
1288
1381
|
- regex: '(HS-(?:U|EG?)[0-9]+[a-z0-9\-]*)'
|
1289
1382
|
model: '$1'
|
1383
|
+
- regex: '(?:HS-)?Hisense ([^;/]+) Build'
|
1384
|
+
model: '$1'
|
1385
|
+
|
1386
|
+
# Hi-Level
|
1387
|
+
Hi-Level:
|
1388
|
+
regex: 'HLV-T([a-z0-9]+)'
|
1389
|
+
device: 'tablet'
|
1390
|
+
model: 'HLV-T$1'
|
1290
1391
|
|
1291
1392
|
# Huawei
|
1292
1393
|
Huawei:
|
@@ -1539,12 +1640,21 @@ Lenco:
|
|
1539
1640
|
|
1540
1641
|
# lenovo
|
1541
1642
|
Lenovo:
|
1542
|
-
regex: '(?:LNV-)?Lenovo|IdeaTab'
|
1643
|
+
regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet'
|
1543
1644
|
device: 'smartphone'
|
1544
1645
|
models:
|
1545
1646
|
- regex: 'Lenovo (B[0-9]+[^/;]*) Build'
|
1546
1647
|
model: 'IdeaTab $1'
|
1547
1648
|
device: 'tablet'
|
1649
|
+
- regex: 'ThinkPadTablet_(A[0-9]{3})_'
|
1650
|
+
model: 'ThinkPad Tablet $1'
|
1651
|
+
device: 'tablet'
|
1652
|
+
- regex: 'ThinkPad ?Tablet([^;/]*) Build'
|
1653
|
+
model: 'ThinkPad Tablet$1'
|
1654
|
+
device: 'tablet'
|
1655
|
+
- regex: 'IdeaPad ?([^;/]*) Build'
|
1656
|
+
model: 'IdeaPad $1'
|
1657
|
+
device: 'tablet'
|
1548
1658
|
- regex: 'Lenovo ([^/;]*) Build'
|
1549
1659
|
model: '$1'
|
1550
1660
|
- regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]([a-z0-9_+\-]+)'
|
@@ -1552,6 +1662,9 @@ Lenovo:
|
|
1552
1662
|
- regex: 'IdeaTab[ \-_]?([a-z0-9]+)'
|
1553
1663
|
model: 'IdeaTab $1'
|
1554
1664
|
device: 'tablet'
|
1665
|
+
- regex: 'Yoga Tablet([^;/]+) Build'
|
1666
|
+
model: 'Yoga Tablet$1'
|
1667
|
+
device: 'tablet'
|
1555
1668
|
|
1556
1669
|
# lexibook
|
1557
1670
|
Lexibook:
|
@@ -1739,6 +1852,23 @@ Medion:
|
|
1739
1852
|
- regex: 'Medion(?: Smartphone)? ([^/;]+) Build'
|
1740
1853
|
model: '$1'
|
1741
1854
|
|
1855
|
+
# Meizu
|
1856
|
+
Meizu:
|
1857
|
+
regex: '(M04[05]|M35[1356]|MX[ -]?[234](?: Pro)?|m1 note) Build'
|
1858
|
+
device: 'smartphone'
|
1859
|
+
models:
|
1860
|
+
- regex: 'm1 note Build'
|
1861
|
+
device: 'phablet'
|
1862
|
+
model: 'M1 Note'
|
1863
|
+
- regex: '(M04[05]|MX[ -]?2) Build'
|
1864
|
+
model: 'MX2'
|
1865
|
+
- regex: '(M35[1356]|MX[ -]?3) Build'
|
1866
|
+
model: 'MX3'
|
1867
|
+
- regex: 'MX[ -]?4 Build'
|
1868
|
+
model: 'MX4'
|
1869
|
+
- regex: 'MX[ -]?4 Pro Build'
|
1870
|
+
model: 'MX4 Pro'
|
1871
|
+
|
1742
1872
|
# Memup
|
1743
1873
|
Memup:
|
1744
1874
|
regex: 'SlidePad ?([^;/]*) Build'
|
@@ -1889,12 +2019,23 @@ MyPhone:
|
|
1889
2019
|
- regex: 'MyPhone (.+) Build'
|
1890
2020
|
model: '$1'
|
1891
2021
|
|
2022
|
+
# M.T.T.
|
2023
|
+
M.T.T.:
|
2024
|
+
regex: 'M.T.T.'
|
2025
|
+
device: 'smartphone'
|
2026
|
+
models:
|
2027
|
+
- regex: 'M.T.T. ?Tablet([^;/]+)? Build'
|
2028
|
+
device: 'tablet'
|
2029
|
+
model: 'Tablet$1'
|
2030
|
+
- regex: 'M.T.T. ?([^;/]+) Build'
|
2031
|
+
model: '$1'
|
2032
|
+
|
1892
2033
|
# nec
|
1893
2034
|
NEC:
|
1894
|
-
regex: 'NEC|KGT/2\.0|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N'
|
2035
|
+
regex: 'NEC[ _\-]|KGT/2\.0|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N'
|
1895
2036
|
device: 'smartphone'
|
1896
2037
|
models:
|
1897
|
-
- regex: '(?:NEC
|
2038
|
+
- regex: '(?:NEC[ _\-]|KGT/2\.0 )([a-z0-9]+)'
|
1898
2039
|
model: '$1'
|
1899
2040
|
- regex: 'portalmmm/1\.0 ((?:DB|N)[a-z0-9]+)'
|
1900
2041
|
model: '$1'
|
@@ -1909,13 +2050,15 @@ Newgen:
|
|
1909
2050
|
|
1910
2051
|
# ngm
|
1911
2052
|
NGM:
|
1912
|
-
regex: '
|
2053
|
+
regex: 'NGM[_ ][a-z0-9]+|(Forward|Dynamic)[ _][^/;]+(?:Build|/)'
|
1913
2054
|
device: 'smartphone'
|
1914
2055
|
models:
|
1915
2056
|
- regex: '((?:Forward|Dynamic)[ _][^/;]+) Build'
|
1916
2057
|
model: '$1'
|
1917
2058
|
- regex: '((?:Forward|Dynamic)[ _][^/;]+)/'
|
1918
2059
|
model: '$1'
|
2060
|
+
- regex: 'NGM ([^;/]+) Build'
|
2061
|
+
model: '$1'
|
1919
2062
|
- regex: 'NGM_([a-z0-9]+)'
|
1920
2063
|
model: '$1'
|
1921
2064
|
|
@@ -2051,6 +2194,11 @@ Samsung:
|
|
2051
2194
|
regex: 'SAMSUNG|SC-(?:02C|04E|01F)|N7100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]'
|
2052
2195
|
device: 'smartphone'
|
2053
2196
|
models:
|
2197
|
+
# explicit tv models
|
2198
|
+
- regex: 'GT-B9150'
|
2199
|
+
device: 'tv'
|
2200
|
+
model: 'Home Sync'
|
2201
|
+
|
2054
2202
|
# explicit tablet models
|
2055
2203
|
- regex: '(?:SAMSUNG-)?GT-N5100'
|
2056
2204
|
device: 'tablet'
|
@@ -2192,11 +2340,59 @@ Samsung:
|
|
2192
2340
|
model: 'GALAXY TabPRO 12.2" WiFi'
|
2193
2341
|
|
2194
2342
|
# explicit smartphone models
|
2343
|
+
- regex: '(?:SAMSUNG-)?GT-B5330'
|
2344
|
+
model: 'GALAXY Chat'
|
2345
|
+
- regex: '(?:SAMSUNG-)?GT-B5510'
|
2346
|
+
model: 'GALAXY Y Pro'
|
2347
|
+
- regex: '(?:SAMSUNG-)?GT-B5512'
|
2348
|
+
model: 'GALAXY Y Pro Duos'
|
2349
|
+
- regex: '(?:SAMSUNG-)?GT-B7510'
|
2350
|
+
model: 'GALAXY Pro'
|
2351
|
+
- regex: '(?:SAMSUNG-)?GT-I5700'
|
2352
|
+
model: 'GALAXY Spica'
|
2353
|
+
- regex: '(?:SAMSUNG-)?GT-I5801'
|
2354
|
+
model: 'GALAXY Apollo'
|
2355
|
+
- regex: '(?:SAMSUNG-)?GT-I5800'
|
2356
|
+
model: 'GALAXY 3'
|
2357
|
+
- regex: '(?:SAMSUNG-)?GT-I8000'
|
2358
|
+
model: 'Omnia II'
|
2359
|
+
- regex: '(?:SAMSUNG-)?GT-I8150'
|
2360
|
+
model: 'GALAXY W'
|
2361
|
+
- regex: '(?:SAMSUNG-)?GT-I8160'
|
2362
|
+
model: 'GALAXY Ace 2'
|
2195
2363
|
- regex: '(?:SAMSUNG-)?GT-I8190'
|
2196
2364
|
model: 'GALAXY S III mini'
|
2365
|
+
- regex: '(?:SAMSUNG-)?GT-I8200'
|
2366
|
+
model: 'GALAXY S III mini Value Edition'
|
2367
|
+
- regex: '(?:SAMSUNG-)?GT-I826[02]'
|
2368
|
+
model: 'GALAXY Core'
|
2369
|
+
- regex: '(?:SAMSUNG-)?GT-I8320'
|
2370
|
+
model: 'H1'
|
2371
|
+
- regex: '(?:SAMSUNG-)?GT-I85[23]0'
|
2372
|
+
model: 'GALAXY Beam'
|
2373
|
+
- regex: '(?:SAMSUNG-)?GT-I855[028]'
|
2374
|
+
model: 'GALAXY Win'
|
2375
|
+
- regex: '(?:SAMSUNG-)?GT-I8580'
|
2376
|
+
model: 'GALAXY Core Advance'
|
2377
|
+
- regex: '(?:SAMSUNG-)?GT-I8730'
|
2378
|
+
model: 'GALAXY Express'
|
2379
|
+
- regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)'
|
2380
|
+
model: 'GALAXY S'
|
2381
|
+
- regex: '(?:SAMSUNG-)?GT-I9001'
|
2382
|
+
model: 'GALAXY S Plus'
|
2383
|
+
- regex: '(?:SAMSUNG-)?GT-I9003'
|
2384
|
+
model: 'GALAXY SL'
|
2385
|
+
- regex: '(?:SAMSUNG-)?GT-I9010'
|
2386
|
+
model: 'GALAXY S Giorgio Armani'
|
2387
|
+
- regex: '(?:SAMSUNG-)?GT-I9070'
|
2388
|
+
model: 'GALAXY S Advance'
|
2389
|
+
- regex: '(?:SAMSUNG-)?GT-I910[08]'
|
2390
|
+
model: 'GALAXY S II'
|
2391
|
+
- regex: '(?:SAMSUNG-)?GT-I9103'
|
2392
|
+
model: 'GALAXY R'
|
2197
2393
|
- regex: '(?:SAMSUNG-)?GT-I9105'
|
2198
2394
|
model: 'GALAXY S II Plus'
|
2199
|
-
- regex: '(?:SAMSUNG-)?(?:GT-
|
2395
|
+
- regex: '(?:SAMSUNG-)?(?:GT-I919[05]|SCH-I435)'
|
2200
2396
|
model: 'GALAXY S4 mini'
|
2201
2397
|
- regex: '(?:SAMSUNG-)?GT-I9295'
|
2202
2398
|
model: 'GALAXY S4 ACTIVE'
|
@@ -2250,8 +2446,6 @@ Samsung:
|
|
2250
2446
|
model: 'GALAXY CORE LTE'
|
2251
2447
|
- regex: '(?:SAMSUNG-)?SM-G3815'
|
2252
2448
|
model: 'GALAXY EXPRESS II'
|
2253
|
-
- regex: '(?:SAMSUNG-)?SM-G7105'
|
2254
|
-
model: 'GALAXY Grand 2'
|
2255
2449
|
- regex: '(?:SAMSUNG-)?SM-G800'
|
2256
2450
|
model: 'GALAXY S5 mini'
|
2257
2451
|
- regex: '(?:SAMSUNG-)?SM-G9009D'
|
@@ -2268,12 +2462,30 @@ Samsung:
|
|
2268
2462
|
model: 'GALAXY Centura'
|
2269
2463
|
|
2270
2464
|
# explicit phablet models
|
2465
|
+
- regex: '(?:SAMSUNG-)?GT-I9060'
|
2466
|
+
model: 'GALAXY Grand Neo'
|
2467
|
+
device: 'phablet'
|
2468
|
+
- regex: '(?:SAMSUNG-)?GT-I9063'
|
2469
|
+
model: 'GALAXY Grand Neo Duos'
|
2470
|
+
device: 'phablet'
|
2471
|
+
- regex: '(?:SAMSUNG-)?GT-I9(?:080|128)'
|
2472
|
+
model: 'GALAXY Grand'
|
2473
|
+
device: 'phablet'
|
2474
|
+
- regex: '(?:SAMSUNG-)?GT-I9168'
|
2475
|
+
model: 'GALAXY Grand Neo+'
|
2476
|
+
device: 'phablet'
|
2477
|
+
- regex: '(?:SAMSUNG-)?GT-I9082'
|
2478
|
+
model: 'GALAXY Grand Duos'
|
2479
|
+
device: 'phablet'
|
2271
2480
|
- regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-I605|SCH-N719|SCH-R950|SPH-L900)'
|
2272
2481
|
model: 'GALAXY Note II'
|
2273
2482
|
device: 'phablet'
|
2274
2483
|
- regex: '(?:SAMSUNG-)?GT-N7105'
|
2275
2484
|
model: 'GALAXY Note II LTE'
|
2276
2485
|
device: 'phablet'
|
2486
|
+
- regex: '(?:SAMSUNG-)?SM-G7105'
|
2487
|
+
model: 'GALAXY Grand 2'
|
2488
|
+
device: 'phablet'
|
2277
2489
|
- regex: '(?:SAMSUNG-)?SM-N7502'
|
2278
2490
|
model: 'GALAXY Note 3 Neo Duos'
|
2279
2491
|
device: 'phablet'
|
@@ -2523,6 +2735,20 @@ Sendo:
|
|
2523
2735
|
device: 'feature phone'
|
2524
2736
|
model: '$1'
|
2525
2737
|
|
2738
|
+
# Turbo-X
|
2739
|
+
Turbo-X:
|
2740
|
+
regex: 'Turbo-X'
|
2741
|
+
device: 'smartphone'
|
2742
|
+
models:
|
2743
|
+
- regex: 'Turbo-X Ice Build'
|
2744
|
+
device: 'tablet'
|
2745
|
+
model: 'Ice'
|
2746
|
+
- regex: 'Turbo-X Tablet([^;/]+) Build'
|
2747
|
+
device: 'tablet'
|
2748
|
+
model: 'Tablet$1'
|
2749
|
+
- regex: 'Turbo-X ([^;/]+) Build'
|
2750
|
+
model: '$1'
|
2751
|
+
|
2526
2752
|
# Spice
|
2527
2753
|
Spice:
|
2528
2754
|
regex: 'Spice'
|
@@ -2685,6 +2911,13 @@ TVC:
|
|
2685
2911
|
device: 'smartphone'
|
2686
2912
|
model: 'Nuclear SX-SP5'
|
2687
2913
|
|
2914
|
+
# Unowhy
|
2915
|
+
Unowhy:
|
2916
|
+
regex: 'QOOQ '
|
2917
|
+
device: 'tablet'
|
2918
|
+
model: 'QOOQ'
|
2919
|
+
|
2920
|
+
|
2688
2921
|
# UTStarcom
|
2689
2922
|
UTStarcom:
|
2690
2923
|
regex: 'utstar[ _-]?([a-z0-9]+)'
|
@@ -2693,10 +2926,10 @@ UTStarcom:
|
|
2693
2926
|
|
2694
2927
|
# ViewSonic
|
2695
2928
|
ViewSonic:
|
2696
|
-
regex: 'ViewSonic|VSD[0-9]+ Build'
|
2929
|
+
regex: 'ViewSonic|VSD[0-9]+ Build|ViewPad'
|
2697
2930
|
device: 'smart display'
|
2698
2931
|
models:
|
2699
|
-
- regex: 'ViewSonic-ViewPad([
|
2932
|
+
- regex: '(?:ViewSonic-)?ViewPad ?([^;/]+) Build'
|
2700
2933
|
model: 'ViewPad $1'
|
2701
2934
|
device: 'tablet'
|
2702
2935
|
- regex: '(VSD[0-9]+) Build'
|
@@ -2746,37 +2979,55 @@ WellcoM:
|
|
2746
2979
|
|
2747
2980
|
# Wiko
|
2748
2981
|
Wiko:
|
2749
|
-
regex: '(?:
|
2982
|
+
regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink.*|Highway.*|Iggy|Stairway|Rainbow|Darkside|Darkmoon|Darkfull|Darknight|Sublim|Ozzy|Barry|Birdy|Bloom|Getaway|Goa|Kite|Lenny|Slide|Sunset|Wax) Build'
|
2750
2983
|
device: 'smartphone'
|
2751
2984
|
models:
|
2752
|
-
- regex: '(?:
|
2753
|
-
model: 'Cink$1'
|
2754
|
-
- regex: '(?:Wiko-)?CINK[ _\-]([a-z0-9]+)'
|
2985
|
+
- regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
|
2755
2986
|
model: 'Cink $1'
|
2756
|
-
- regex: '(?:Wiko-)?
|
2757
|
-
model: '
|
2758
|
-
- regex: '(?:
|
2759
|
-
model: '
|
2760
|
-
- regex: '
|
2987
|
+
- regex: '(?:Wiko-)?Cink(.*) Build'
|
2988
|
+
model: 'Cink$1'
|
2989
|
+
- regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
|
2990
|
+
model: 'Highway $1'
|
2991
|
+
- regex: '(?:Wiko-)?Highway(.*) Build'
|
2992
|
+
model: 'Highway$1'
|
2993
|
+
- regex: '(?:WIKO-)?Iggy Build'
|
2994
|
+
model: 'Iggy'
|
2995
|
+
- regex: '(?:WIKO-)?Stairway Build'
|
2761
2996
|
model: 'Stairway'
|
2762
|
-
- regex: '
|
2763
|
-
model: 'Highway'
|
2764
|
-
- regex: 'Rainbow'
|
2997
|
+
- regex: '(?:WIKO-)?Rainbow Build'
|
2765
2998
|
model: 'Rainbow'
|
2766
|
-
- regex: 'Darkside'
|
2999
|
+
- regex: '(?:WIKO-)?Darkside Build'
|
2767
3000
|
model: 'Darkside'
|
2768
|
-
- regex: 'Darkmoon'
|
3001
|
+
- regex: '(?:WIKO-)?Darkmoon Build'
|
2769
3002
|
model: 'Darkmoon'
|
2770
|
-
- regex: 'Darkfull'
|
3003
|
+
- regex: '(?:WIKO-)?Darkfull Build'
|
2771
3004
|
model: 'Darkfull'
|
2772
|
-
- regex: 'Darknight'
|
3005
|
+
- regex: '(?:WIKO-)?Darknight Build'
|
2773
3006
|
model: 'Darknight'
|
2774
|
-
- regex: 'Sublim'
|
3007
|
+
- regex: '(?:WIKO-)?Sublim Build'
|
2775
3008
|
model: 'Sublim'
|
2776
|
-
- regex: 'Ozzy'
|
3009
|
+
- regex: '(?:WIKO-)?Ozzy Build'
|
2777
3010
|
model: 'Ozzy'
|
2778
|
-
- regex: 'Barry'
|
3011
|
+
- regex: '(?:WIKO-)?Barry Build'
|
2779
3012
|
model: 'Barry'
|
3013
|
+
- regex: '(?:WIKO-)?Birdy Build'
|
3014
|
+
model: 'Birdy'
|
3015
|
+
- regex: '(?:WIKO-)?Bloom Build'
|
3016
|
+
model: 'Bloom'
|
3017
|
+
- regex: '(?:WIKO-)?Getaway Build'
|
3018
|
+
model: 'Getaway'
|
3019
|
+
- regex: '(?:WIKO-)?Goa Build'
|
3020
|
+
model: 'Goa'
|
3021
|
+
- regex: '(?:WIKO-)?Kite Build'
|
3022
|
+
model: 'Kite'
|
3023
|
+
- regex: '(?:WIKO-)?Lenny Build'
|
3024
|
+
model: 'Lenny'
|
3025
|
+
- regex: '(?:WIKO-)?Slide Build'
|
3026
|
+
model: 'Slide'
|
3027
|
+
- regex: '(?:WIKO-)?Sunset Build'
|
3028
|
+
model: 'Sunset'
|
3029
|
+
- regex: '(?:WIKO-)?Wax Build'
|
3030
|
+
model: 'Wax'
|
2780
3031
|
|
2781
3032
|
# Wolder
|
2782
3033
|
Wolder:
|
@@ -2814,12 +3065,65 @@ Xiaomi:
|
|
2814
3065
|
- regex: 'HM ([^/;]+) Build'
|
2815
3066
|
model: 'HM $1'
|
2816
3067
|
|
2817
|
-
#
|
3068
|
+
# Yarvik
|
3069
|
+
Yarvik:
|
3070
|
+
regex: 'Xenta[ \-]Tab|Luna TAB|TAB09-410|TAB10-410|TAB07-485|TAB0[78]-200|TAB08-201-3G|TAB9-200|TAB09-211|TAB10-2[01]1|TAB13-201'
|
3071
|
+
device: 'tablet'
|
3072
|
+
models:
|
3073
|
+
# explicit tablet models
|
3074
|
+
- regex: 'Luna TAB07-920N'
|
3075
|
+
model: 'Luna 7'
|
3076
|
+
- regex: 'Luna TAB07-10[01]'
|
3077
|
+
model: 'Luna 7c'
|
3078
|
+
- regex: 'Luna TAB274'
|
3079
|
+
model: 'Luna 7c'
|
3080
|
+
- regex: 'Luna TAB474'
|
3081
|
+
model: 'Luna 10'
|
3082
|
+
- regex: 'Luna TAB10-150'
|
3083
|
+
model: 'Luna 10c'
|
3084
|
+
- regex: 'TAB09-410'
|
3085
|
+
model: 'Noble 9.7'
|
3086
|
+
- regex: 'TAB10-410'
|
3087
|
+
model: 'Noble 10.1'
|
3088
|
+
- regex: 'TAB07-485'
|
3089
|
+
model: 'Noble Mini'
|
3090
|
+
- regex: 'Xenta-TAB07-21[01]'
|
3091
|
+
model: 'Xenta 7c'
|
3092
|
+
- regex: 'TAB07-200'
|
3093
|
+
model: 'Xenta 7ic'
|
3094
|
+
- regex: 'TAB08-200'
|
3095
|
+
model: 'Xenta 8ic'
|
3096
|
+
- regex: 'TAB08-201-3G'
|
3097
|
+
model: 'Xenta 8c'
|
3098
|
+
- regex: 'TAB9-200'
|
3099
|
+
model: 'Xenta 9.7ic'
|
3100
|
+
- regex: 'TAB09-211'
|
3101
|
+
model: 'Xenta 9.7ic+'
|
3102
|
+
- regex: 'TAB10-2[01]1'
|
3103
|
+
model: 'Xenta 10ic'
|
3104
|
+
- regex: 'TAB13-201'
|
3105
|
+
model: 'Xenta 13c'
|
3106
|
+
|
3107
|
+
# Yuandao
|
2818
3108
|
Yuandao:
|
2819
3109
|
regex: 'N101[ _]DUAL(?:[ _]CORE)?(?:[ _]?2|\|\|)?(?:[ _]V11)? Build'
|
2820
3110
|
device: 'tablet'
|
2821
3111
|
model: 'N101'
|
2822
3112
|
|
3113
|
+
# Yusun
|
3114
|
+
Yusun:
|
3115
|
+
regex: 'Yusun|LA2-T'
|
3116
|
+
device: 'smartphone'
|
3117
|
+
models:
|
3118
|
+
# explicit smartphone models
|
3119
|
+
- regex: 'LA2-T'
|
3120
|
+
model: 'LA2-T'
|
3121
|
+
|
3122
|
+
- regex: 'Yusun ([^;/]+) Build'
|
3123
|
+
model: '$1'
|
3124
|
+
- regex: 'Yusun ([a-z0-9_\-\+]+)'
|
3125
|
+
model: '$1'
|
3126
|
+
|
2823
3127
|
# Zonda
|
2824
3128
|
Zonda:
|
2825
3129
|
regex: '(ZM(?:CK|EM|TFTV|TN)[a-z0-9]+)'
|
@@ -2828,9 +3132,35 @@ Zonda:
|
|
2828
3132
|
|
2829
3133
|
# Toshiba
|
2830
3134
|
Toshiba:
|
2831
|
-
regex: 'Toshiba|portalmmm/[12].0 TS'
|
3135
|
+
regex: 'Toshiba|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
|
2832
3136
|
device: 'smartphone'
|
2833
3137
|
models:
|
3138
|
+
# explicit smartphone models
|
3139
|
+
- regex: 'T-01C'
|
3140
|
+
model: 'Regza T-01C'
|
3141
|
+
- regex: 'T-01D'
|
3142
|
+
model: 'Regza T-01D'
|
3143
|
+
- regex: 'T-02D'
|
3144
|
+
model: 'Regza T-02D'
|
3145
|
+
- regex: 'IS04'
|
3146
|
+
model: 'Regza IS04'
|
3147
|
+
- regex: 'IS11T'
|
3148
|
+
model: 'Regza IS11T'
|
3149
|
+
|
3150
|
+
# explicit tablet models
|
3151
|
+
- regex: 'AT1S0'
|
3152
|
+
model: 'Regza AT1S0'
|
3153
|
+
device: 'tablet'
|
3154
|
+
- regex: 'AT300SE'
|
3155
|
+
model: 'Regza AT300SE'
|
3156
|
+
device: 'tablet'
|
3157
|
+
- regex: 'AT500a'
|
3158
|
+
model: 'Regza AT500a'
|
3159
|
+
device: 'tablet'
|
3160
|
+
- regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
|
3161
|
+
model: 'Regza AT$1'
|
3162
|
+
device: 'tablet'
|
3163
|
+
|
2834
3164
|
- regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
|
2835
3165
|
model: '$1'
|
2836
3166
|
- regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
|
@@ -2871,7 +3201,7 @@ ZTE:
|
|
2871
3201
|
regex: 'ZTE|Z331|N799D|([a-z0-9]+)_USA_Cricket'
|
2872
3202
|
device: 'smartphone'
|
2873
3203
|
models:
|
2874
|
-
#
|
3204
|
+
# explicit smartphone models
|
2875
3205
|
- regex: 'N799D'
|
2876
3206
|
model: 'MTS Blaze 4'
|
2877
3207
|
|