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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98cdaab8265efd95799dcb71e4588cef6c300528
4
- data.tar.gz: f43a7ef253ca782d672d8856d1b1214c6b300cfb
3
+ metadata.gz: 9dafeb69d5740bff28a730522bfcb0487ed419b8
4
+ data.tar.gz: e82f903f97d49b743d6572bd6a5f4c50b6ab5c61
5
5
  SHA512:
6
- metadata.gz: 579c755cd334bb9dbb4f23402de2f7982d7b62f1d6a852524834ddc28f09a099e849d8a7c3111e89dfbed39ece1eb2467a07cb333dc8b7f1b458cc209eda1bc1
7
- data.tar.gz: 84c58c57130167b1eab5162aaf4aa000e62ec1f38fd3e550f802602f483e85c1a4ff969fe31d7bc30fff2cfc14e3c8243a90dfde32495257cb4bb0070bc509b5
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
- system "curl -s -L https://api.github.com/repos/piwik/device-detector/tarball/master | tar xzvf - --strip-components 1 --include */regexes/*.yml -C #{top}"
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
@@ -1,3 +1,3 @@
1
1
  class DeviceDetector
2
- VERSION = '0.8.0'
2
+ VERSION = '0.8.1'
3
3
  end
@@ -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'
@@ -5,13 +5,19 @@
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
8
- # Spartan (newer versions of IE)
8
+ # Microsoft Edge (newer versions of IE)
9
9
  - regex: 'Edge[ /](\d+[\.\d]+)'
10
- name: 'Project Spartan'
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'
@@ -13,9 +13,11 @@ Nikon:
13
13
 
14
14
  # Samsung
15
15
  Samsung:
16
- regex: 'EK-GC[0-9]{3}'
16
+ regex: 'EK-G[CN][0-9]{3}'
17
17
  device: 'camera'
18
18
  models:
19
+ - regex: 'EK-GN120'
20
+ model: 'GALAXY NX'
19
21
  - regex: 'EK-GC100'
20
22
  model: 'GALAXY Camera'
21
23
  - regex: 'EK-GC110'
@@ -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.*V360 Build|A1-830|A1-81[01]|A3-A1[01]|B1-7[12][01]|B1-A71|S5[12]0'
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-A1[01]'
313
+ - regex: 'A3-A[12][01]'
314
314
  model: 'Iconia A3'
315
315
  device: 'tablet'
316
- - regex: 'B1-7[12][01]|B1-A71'
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|AN[0-9]'
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
- - regex: 'AN([0-9][a-z0-9]+)'
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
- #BBK
550
- BBK:
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
- model: "eZee'Tab$1"
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-|KGT/2\.0 )([a-z0-9]+)'
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: 'NGM_[a-z0-9]+|(Forward|Dynamic)[ _][^/;]+(?:Build|/)'
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-I9195|SCH-I435)'
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([a-z0-9]+) Build'
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: '(?:Wiko-)?(?:CINK|IGGY|Stairway|Rainbow|Highway|Darkside|Darkmoon|Darkfull|Darknight|Sublim|Ozzy|Barry)'
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: '(?:Wiko-)?CINK(.*) Build'
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-)?IGGY(.*) Build'
2757
- model: 'Iggy$1'
2758
- - regex: '(?:Wiko-)?IGGY[ _\-]([a-z0-9]+)'
2759
- model: 'Iggy $1'
2760
- - regex: 'Stairway'
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: 'Highway'
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
- #Yuandao
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
- # Explicit smartphone models
3204
+ # explicit smartphone models
2875
3205
  - regex: 'N799D'
2876
3206
  model: 'MTS Blaze 4'
2877
3207