device_detector 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|