device_detector 1.0.1 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +49 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -10
  5. data/CHANGELOG.md +14 -1
  6. data/README.md +6 -6
  7. data/Rakefile +20 -13
  8. data/device_detector.gemspec +1 -0
  9. data/lib/device_detector.rb +30 -26
  10. data/lib/device_detector/bot.rb +2 -2
  11. data/lib/device_detector/client.rb +3 -2
  12. data/lib/device_detector/device.rb +46 -20
  13. data/lib/device_detector/memory_cache.rb +26 -19
  14. data/lib/device_detector/metadata_extractor.rb +7 -8
  15. data/lib/device_detector/model_extractor.rb +3 -3
  16. data/lib/device_detector/name_extractor.rb +2 -2
  17. data/lib/device_detector/os.rb +121 -111
  18. data/lib/device_detector/parser.rb +22 -9
  19. data/lib/device_detector/version.rb +3 -1
  20. data/lib/device_detector/version_extractor.rb +2 -3
  21. data/regexes/bots.yml +442 -19
  22. data/regexes/client/browser_engine.yml +7 -1
  23. data/regexes/client/browsers.yml +773 -103
  24. data/regexes/client/feed_readers.yml +14 -8
  25. data/regexes/client/libraries.yml +43 -2
  26. data/regexes/client/mediaplayers.yml +21 -5
  27. data/regexes/client/mobile_apps.yml +131 -1
  28. data/regexes/client/pim.yml +6 -1
  29. data/regexes/device/cameras.yml +1 -1
  30. data/regexes/device/car_browsers.yml +7 -3
  31. data/regexes/device/consoles.yml +3 -3
  32. data/regexes/device/mobiles.yml +11365 -791
  33. data/regexes/device/notebooks.yml +114 -0
  34. data/regexes/device/portable_media_player.yml +2 -2
  35. data/regexes/device/televisions.yml +17 -3
  36. data/regexes/oss.yml +115 -47
  37. data/regexes/vendorfragments.yml +6 -2
  38. data/spec/device_detector/concrete_user_agent_spec.rb +16 -17
  39. data/spec/device_detector/detector_fixtures_spec.rb +30 -35
  40. data/spec/device_detector/device_spec.rb +28 -48
  41. data/spec/device_detector/memory_cache_spec.rb +60 -28
  42. data/spec/device_detector/model_extractor_spec.rb +3 -3
  43. data/spec/device_detector/version_extractor_spec.rb +5 -6
  44. data/spec/device_detector_spec.rb +49 -78
  45. data/spec/fixtures/client/browser.yml +1521 -406
  46. data/spec/fixtures/client/feed_reader.yml +39 -51
  47. data/spec/fixtures/client/library.yml +72 -11
  48. data/spec/fixtures/client/mediaplayer.yml +29 -40
  49. data/spec/fixtures/client/mobile_app.yml +172 -32
  50. data/spec/fixtures/client/pim.yml +32 -19
  51. data/spec/fixtures/detector/bots.yml +854 -19
  52. data/spec/fixtures/detector/camera.yml +22 -2
  53. data/spec/fixtures/detector/car_browser.yml +60 -0
  54. data/spec/fixtures/detector/console.yml +43 -3
  55. data/spec/fixtures/detector/desktop.yml +2860 -1527
  56. data/spec/fixtures/detector/feature_phone.yml +69 -1
  57. data/spec/fixtures/detector/feed_reader.yml +158 -130
  58. data/spec/fixtures/detector/mediaplayer.yml +113 -39
  59. data/spec/fixtures/detector/mobile_apps.yml +262 -89
  60. data/spec/fixtures/detector/phablet.yml +3444 -663
  61. data/spec/fixtures/detector/portable_media_player.yml +57 -0
  62. data/spec/fixtures/detector/smart_speaker.yml +55 -0
  63. data/spec/fixtures/detector/smartphone-1.yml +4739 -4765
  64. data/spec/fixtures/detector/smartphone-10.yml +9973 -0
  65. data/spec/fixtures/detector/smartphone-11.yml +10015 -0
  66. data/spec/fixtures/detector/smartphone-12.yml +9897 -0
  67. data/spec/fixtures/detector/smartphone-13.yml +9912 -0
  68. data/spec/fixtures/detector/smartphone-14.yml +9935 -0
  69. data/spec/fixtures/detector/smartphone-15.yml +6595 -0
  70. data/spec/fixtures/detector/smartphone-16.yml +10021 -0
  71. data/spec/fixtures/detector/smartphone-17.yml +9408 -0
  72. data/spec/fixtures/detector/smartphone-2.yml +4265 -4238
  73. data/spec/fixtures/detector/smartphone-3.yml +4487 -4391
  74. data/spec/fixtures/detector/smartphone-4.yml +4210 -4179
  75. data/spec/fixtures/detector/smartphone-5.yml +5794 -2901
  76. data/spec/fixtures/detector/smartphone-6.yml +10114 -0
  77. data/spec/fixtures/detector/smartphone-7.yml +9975 -0
  78. data/spec/fixtures/detector/smartphone-8.yml +9897 -0
  79. data/spec/fixtures/detector/smartphone-9.yml +9880 -0
  80. data/spec/fixtures/detector/smartphone.yml +4152 -4048
  81. data/spec/fixtures/detector/tablet-1.yml +3997 -3991
  82. data/spec/fixtures/detector/tablet-2.yml +6820 -1935
  83. data/spec/fixtures/detector/tablet-3.yml +9968 -0
  84. data/spec/fixtures/detector/tablet-4.yml +7113 -0
  85. data/spec/fixtures/detector/tablet.yml +3789 -3804
  86. data/spec/fixtures/detector/tv.yml +3889 -1495
  87. data/spec/fixtures/detector/unknown.yml +45 -179
  88. data/spec/fixtures/detector/wearable.yml +61 -0
  89. data/spec/fixtures/device/camera.yml +4 -3
  90. data/spec/fixtures/device/car_browser.yml +9 -2
  91. data/spec/fixtures/device/console.yml +15 -14
  92. data/spec/fixtures/device/notebook.yml +7 -0
  93. data/spec/fixtures/parser/oss.yml +177 -0
  94. data/spec/fixtures/parser/vendorfragments.yml +6 -0
  95. metadata +57 -7
@@ -0,0 +1,114 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link https://matomo.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ Acer:
9
+ regex: 'FBMD/(?:Aspire E5-421G|Z5WAL|One S1003);'
10
+ device: 'desktop'
11
+ models:
12
+ - regex: 'FBMD/Aspire E5-421G;'
13
+ model: 'Aspire E5-421G'
14
+ - regex: 'FBMD/Z5WAL;'
15
+ model: 'Aspire E5-511'
16
+ - regex: 'FBMD/One S1003;'
17
+ model: 'One 10'
18
+
19
+ Asus:
20
+ regex: 'FBMD/(?:K50IN|K54L|T100HAN|T103HAF|UX360CAK|X550LB|X553MA|X555LN|X556UQK);'
21
+ device: 'desktop'
22
+ models:
23
+ - regex: 'FBMD/K50IN;'
24
+ model: 'K50IN'
25
+ - regex: 'FBMD/K54L;'
26
+ model: 'K54L'
27
+ - regex: 'FBMD/T100HAN;'
28
+ model: 'Transformer Book'
29
+ - regex: 'FBMD/T103HAF;'
30
+ model: 'Transformer Mini'
31
+ - regex: 'FBMD/UX360CAK;'
32
+ model: 'ZenBook Flip'
33
+ - regex: 'FBMD/X550LB;'
34
+ model: 'X550LB'
35
+ - regex: 'FBMD/X553MA;'
36
+ model: 'X553MA'
37
+ - regex: 'FBMD/X555LN;'
38
+ model: 'X555LN'
39
+ - regex: 'FBMD/X556UQK;'
40
+ model: 'X556UQK'
41
+
42
+ Dell:
43
+ regex: 'FBMD/(?:Latitude E4300|Inspiron 3541|XPS 15 95[35]0);'
44
+ device: 'desktop'
45
+ models:
46
+ - regex: 'Latitude E4300'
47
+ model: 'Latitude E4300'
48
+ - regex: 'Inspiron 3541'
49
+ model: 'Inspiron 3541'
50
+ - regex: 'XPS 15 9530'
51
+ model: 'XPS 15 9530'
52
+ - regex: 'XPS 15 9550'
53
+ model: 'XPS 15 9550'
54
+
55
+ HP:
56
+ regex: 'FBMD/((?:Compaq|HP) |23-f364)'
57
+ device: 'desktop'
58
+ models:
59
+ - regex: 'Compaq Presario CQ61 Notebook PC'
60
+ model: 'Compaq Presario CQ61'
61
+ - regex: 'HP Pavilion x2 Detachable'
62
+ model: 'Pavilion x2'
63
+ - regex: 'HP Laptop 15-bs0xx'
64
+ model: '15 Laptop PC'
65
+ - regex: 'HP ENVY x360 Convertible 15-bp0xx'
66
+ model: 'ENVY x360 Convertible PC'
67
+ - regex: 'HP EliteBook (25[67]0p)'
68
+ model: 'EliteBook $1'
69
+ - regex: 'HP ProBook (440 G5|6[35]60b)'
70
+ model: 'ProBook $1'
71
+ - regex: 'HP Pavilion dv6 Notebook PC'
72
+ model: 'Pavilion dv6'
73
+ - regex: 'HP Pavilion Notebook'
74
+ model: 'Pavilion'
75
+ - regex: 'HP Spectre x360 Convertible'
76
+ model: 'Spectre x360'
77
+ - regex: 'HP Pavilion All-in-One 24-r0xx'
78
+ model: 'Pavilion 24-r0xx All-in-One Desktop PC'
79
+ device: 'desktop'
80
+ - regex: '23-f364'
81
+ model: 'Pavilion TouchSmart 23-f364 All-in-One Desktop PC'
82
+ device: 'desktop'
83
+
84
+ Lenovo:
85
+ regex: 'FBMD/(?:37021C5|80E5|80SM|80VR);'
86
+ device: 'desktop'
87
+ models:
88
+ - regex: 'FBMD/37021C5;'
89
+ model: 'ThinkPad Helix 3702'
90
+ - regex: 'FBMD/80E5;'
91
+ model: 'G50-80'
92
+ - regex: 'FBMD/80SM;'
93
+ model: 'Ideapad 310-15ISK'
94
+ - regex: 'FBMD/80VR;'
95
+ model: 'Legion Y720'
96
+
97
+ Schneider:
98
+ regex: 'FBMD/SCL141CTP;'
99
+ device: 'desktop'
100
+ model: 'Notebook 14" Cherry Trail'
101
+
102
+ Thomson:
103
+ regex: 'FBMD/TH360R12.32CTW;'
104
+ device: 'desktop'
105
+ model: 'Prestige TH-360R12.32CTW'
106
+
107
+ Toshiba:
108
+ regex: 'FBMD/Satellite '
109
+ device: 'desktop'
110
+ models:
111
+ - regex: 'Satellite (A[25]00|C650|C855|L650|S855)'
112
+ model: 'Satellite $1'
113
+ - regex: 'Satellite ([^;\)]+);'
114
+ model: 'Satellite $1'
@@ -1,7 +1,7 @@
1
1
  ###############
2
2
  # Device Detector - The Universal Device Detection library for parsing User Agents
3
3
  #
4
- # @link http://piwik.org
4
+ # @link https://matomo.org
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
@@ -56,4 +56,4 @@ Samsung:
56
56
  - regex: 'YP-G50'
57
57
  model: 'Galaxy Player 50'
58
58
  - regex: 'YP-GB70D'
59
- model: 'Galaxy Player 70 Plus'
59
+ model: 'Galaxy Player 70 Plus'
@@ -1,7 +1,7 @@
1
1
  ###############
2
2
  # Device Detector - The Universal Device Detection library for parsing User Agents
3
3
  #
4
- # @link http://piwik.org
4
+ # @link https://matomo.org
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  #
7
7
  # ATTENTION: This file may only include tv user agents that contain 'HbbTV/([1-9]{1}(\.[0-9]{1}){1,2})'
@@ -258,14 +258,28 @@ TCL:
258
258
  regex: 'TCL'
259
259
  device: 'tv'
260
260
  models:
261
+ - regex: '(32D1820)'
262
+ model: '$1'
261
263
  - regex: '(LF1V[0-9]{3})'
262
264
  model: '$1'
263
265
 
264
266
  # Thomson
265
267
  Thomson:
266
- regex: 'THOMSON|THOM'
268
+ regex: 'THOMSON[,]?|THOM'
267
269
  device: 'tv'
268
270
  models:
271
+ - regex: '(TB28D19DHS-01|T28D18SFS-01B)'
272
+ model: '$1 28.0"'
273
+ - regex: '(T32RTM5040|T32D18SFS-01B)'
274
+ model: '$1 32.0"'
275
+ - regex: '(T43FSL5031|T43D18SFS-01B)'
276
+ model: '$1 43.0"'
277
+ - regex: '(T40D18SFS-01B)'
278
+ model: '$1 40.0"'
279
+ - regex: '(T49D18SFS-01B)'
280
+ model: '$1 49.0"'
281
+ - regex: '(T55D18[SD]FS-01B)'
282
+ model: '$1 55.0"'
269
283
  - regex: '(LF1V[0-9]{3})'
270
284
  model: '$1'
271
285
 
@@ -293,4 +307,4 @@ Videoweb:
293
307
  - regex: '(tv2n)'
294
308
  model: '$1'
295
309
  - regex: '(videowebtv)'
296
- model: 'VideoWeb TV'
310
+ model: 'VideoWeb TV'
@@ -1,7 +1,7 @@
1
1
  ###############
2
2
  # Device Detector - The Universal Device Detection library for parsing User Agents
3
3
  #
4
- # @link http://piwik.org
4
+ # @link https://matomo.org
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
@@ -31,7 +31,7 @@
31
31
  ##########
32
32
  # Windows Mobile
33
33
  ##########
34
- - regex: 'Windows Phone (?:OS)?[ ]?(\d+[\.\d]+)'
34
+ - regex: '(?:Windows Phone (?:OS)?|wds)[ ]?(\d+[\.\d]+)'
35
35
  name: 'Windows Phone'
36
36
  version: '$1'
37
37
 
@@ -65,6 +65,13 @@
65
65
  name: 'Windows IoT'
66
66
  version: '10'
67
67
 
68
+ ##########
69
+ # KaiOS
70
+ ##########
71
+ - regex: 'KAIOS(?:/(\d+[\.\d]+))?'
72
+ name: 'KaiOS'
73
+ version: '$1'
74
+
68
75
  ##########
69
76
  # Custom Android Roms
70
77
  ##########
@@ -84,18 +91,33 @@
84
91
  name: 'MocorDroid'
85
92
  version: '$1'
86
93
 
94
+ - regex: 'Fire OS(?:/(\d+[\.\d]*))?'
95
+ name: 'Fire OS'
96
+ version: '$1'
97
+
87
98
  ##########
88
99
  # Android
89
100
  ##########
90
- - regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]+)'
101
+ - regex: '[ ]([\d\.]+)\) AppleWebKit.*ROBLOX Android App'
102
+ name: 'Android'
103
+ version: '$1'
104
+
105
+ - regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)'
91
106
  name: 'Android'
92
107
  version: '$1'
93
-
94
108
 
95
109
  - regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
96
110
  name: 'Android'
97
111
  version: ''
98
112
 
113
+ - regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[\.\d]*)'
114
+ name: 'Android'
115
+ version: '$1'
116
+
117
+ - regex: 'FB4A.*FBSV/(\d+[\.\d]*);'
118
+ name: 'Android'
119
+ version: '$1'
120
+
99
121
  - regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe'
100
122
  name: 'Android'
101
123
  version: ''
@@ -132,6 +154,14 @@
132
154
  ##########
133
155
  # Linux
134
156
  ##########
157
+ - regex: '(Ordissimo|webissimo3)'
158
+ name: 'Ordissimo'
159
+ version: ''
160
+
161
+ - regex: 'TOS; Linux'
162
+ name: 'TmaxOS'
163
+ version: ''
164
+
135
165
  - regex: 'Maemo'
136
166
  name: 'Maemo'
137
167
  version: ''
@@ -157,7 +187,7 @@
157
187
  ##########
158
188
  # webOS
159
189
  ##########
160
- - regex: '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?'
190
+ - regex: '(?:webOS|web0S|Palm webOS)(?:/(\d+[\.\d]+))?'
161
191
  name: 'webOS'
162
192
  version: '$1'
163
193
 
@@ -182,79 +212,118 @@
182
212
  name: 'Windows'
183
213
  version: '10'
184
214
 
185
- - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
215
+ - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
186
216
  name: 'Windows'
187
217
  version: '10'
188
-
218
+
189
219
  - regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
190
220
  name: 'Windows'
191
221
  version: '8.1'
192
222
 
193
-
194
223
  - regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
195
224
  name: 'Windows'
196
225
  version: '8'
197
-
198
-
199
- - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
226
+
227
+ - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7'
200
228
  name: 'Windows'
201
229
  version: '7'
202
-
203
-
230
+
204
231
  - regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
205
232
  name: 'Windows'
206
233
  version: 'Vista'
207
-
208
-
234
+
209
235
  - regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
210
236
  name: 'Windows'
211
237
  version: 'Server 2003'
212
-
213
-
238
+
214
239
  - regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
215
240
  name: 'Windows'
216
241
  version: 'XP'
217
-
218
-
242
+
219
243
  - regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
220
244
  name: 'Windows'
221
245
  version: '2000'
222
-
223
-
246
+
224
247
  - regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
225
248
  name: 'Windows'
226
249
  version: 'NT'
227
-
228
-
250
+
229
251
  - regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
230
252
  name: 'Windows'
231
253
  version: 'ME'
232
-
233
-
254
+
234
255
  - regex: 'CYGWIN_98-4.10|Win98|Windows 98'
235
256
  name: 'Windows'
236
257
  version: '98'
237
-
238
-
258
+
239
259
  - regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
240
260
  name: 'Windows'
241
261
  version: '95'
242
-
243
-
262
+
244
263
  - regex: 'Windows 3.1'
245
264
  name: 'Windows'
246
265
  version: '3.1'
247
-
248
-
266
+
267
+ - regex: 'FBW.*FBSV/(\d+[\.\d]*);'
268
+ name: 'Windows'
269
+ version: '$1'
270
+
249
271
  - regex: 'Windows'
250
272
  name: 'Windows'
251
273
  version: ''
252
-
253
-
274
+
275
+
276
+ ##########
277
+ # Haiku OS
278
+ ##########
279
+ - regex: 'Haiku'
280
+ name: 'Haiku OS'
281
+ version: ''
282
+
254
283
 
255
284
  ##########
256
285
  # iOS
257
286
  ##########
287
+ - regex: 'CFNetwork/889'
288
+ name: 'iOS'
289
+ version: '11.1'
290
+
291
+ - regex: 'CFNetwork/887.*(x86_64)'
292
+ name: 'Mac'
293
+ version: '10.13'
294
+
295
+ - regex: 'CFNetwork/887'
296
+ name: 'iOS'
297
+ version: '11.0'
298
+
299
+ - regex: 'CFNetwork/811.*(x86_64)'
300
+ name: 'Mac'
301
+ version: '10.12'
302
+
303
+ - regex: 'CFNetwork/811'
304
+ name: 'iOS'
305
+ version: '10.3'
306
+
307
+ - regex: 'CFNetwork/808\.3'
308
+ name: 'iOS'
309
+ version: '10.3'
310
+
311
+ - regex: 'CFNetwork/808\.2'
312
+ name: 'iOS'
313
+ version: '10.2'
314
+
315
+ - regex: 'CFNetwork/808\.1'
316
+ name: 'iOS'
317
+ version: '10.1'
318
+
319
+ - regex: 'CFNetwork/808\.0'
320
+ name: 'iOS'
321
+ version: '10.0'
322
+
323
+ - regex: 'CFNetwork/808'
324
+ name: 'iOS'
325
+ version: '10'
326
+
258
327
  - regex: 'CFNetwork/758\.4\.3'
259
328
  name: 'iOS'
260
329
  version: '9.3.2'
@@ -351,11 +420,15 @@
351
420
  name: 'iOS'
352
421
  version: '$1'
353
422
 
423
+ - regex: 'FBIOS.*FBSV/(\d+[\.\d]*);'
424
+ name: 'iOS'
425
+ version: '$1'
426
+
354
427
  - regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
355
428
  name: 'iOS'
356
429
  version: '$1'
357
430
 
358
- - regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher'
431
+ - regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher|RSSRadio/'
359
432
  name: 'iOS'
360
433
  version: ''
361
434
 
@@ -368,6 +441,10 @@
368
441
  # Mac
369
442
  ##########
370
443
 
444
+ - regex: 'CFNetwork/807'
445
+ name: 'Mac'
446
+ version: '10.12'
447
+
371
448
  - regex: 'CFNetwork/760'
372
449
  name: 'Mac'
373
450
  version: '10.11'
@@ -408,7 +485,7 @@
408
485
  name: 'Mac'
409
486
  version: '10.2'
410
487
 
411
- - regex: 'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?'
488
+ - regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
412
489
  name: 'Mac'
413
490
  version: '$1'
414
491
 
@@ -458,14 +535,6 @@
458
535
  version: ''
459
536
 
460
537
 
461
- ##########
462
- # Haiku OS
463
- ##########
464
- - regex: 'Haiku'
465
- name: 'Haiku OS'
466
- version: ''
467
-
468
-
469
538
  ##########
470
539
  # BeOS
471
540
  ##########
@@ -666,11 +735,10 @@
666
735
  ##########
667
736
  # Gaming Console
668
737
  ##########
669
- - regex: 'Nintendo Wii'
738
+ - regex: 'Nintendo (Wii|Switch)'
670
739
  name: 'Nintendo'
671
- version: 'Wii'
672
-
673
-
740
+ version: '$1'
741
+
674
742
  - regex: 'PlayStation ?([3|4])'
675
743
  name: 'PlayStation'
676
744
  version: '$1'