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 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