device_detector 1.0.3 → 1.0.7

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.
Files changed (94) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +15 -0
  3. data/README.md +8 -7
  4. data/lib/device_detector/bot.rb +2 -2
  5. data/lib/device_detector/browser.rb +364 -0
  6. data/lib/device_detector/client.rb +11 -2
  7. data/lib/device_detector/device.rb +1247 -22
  8. data/lib/device_detector/memory_cache.rb +5 -5
  9. data/lib/device_detector/metadata_extractor.rb +7 -8
  10. data/lib/device_detector/model_extractor.rb +3 -3
  11. data/lib/device_detector/name_extractor.rb +2 -2
  12. data/lib/device_detector/os.rb +150 -116
  13. data/lib/device_detector/parser.rb +23 -10
  14. data/lib/device_detector/version.rb +1 -1
  15. data/lib/device_detector/version_extractor.rb +29 -2
  16. data/lib/device_detector.rb +73 -40
  17. data/regexes/bots.yml +868 -62
  18. data/regexes/client/browser_engine.yml +11 -2
  19. data/regexes/client/browsers.yml +1132 -112
  20. data/regexes/client/feed_readers.yml +5 -11
  21. data/regexes/client/libraries.yml +86 -2
  22. data/regexes/client/mediaplayers.yml +39 -3
  23. data/regexes/client/mobile_apps.yml +940 -66
  24. data/regexes/client/pim.yml +66 -3
  25. data/regexes/device/cameras.yml +6 -6
  26. data/regexes/device/car_browsers.yml +23 -3
  27. data/regexes/device/consoles.yml +15 -3
  28. data/regexes/device/mobiles.yml +18351 -3566
  29. data/regexes/device/notebooks.yml +114 -0
  30. data/regexes/device/portable_media_player.yml +36 -9
  31. data/regexes/device/shell_tv.yml +117 -0
  32. data/regexes/device/televisions.yml +440 -35
  33. data/regexes/oss.yml +635 -284
  34. data/regexes/vendorfragments.yml +5 -1
  35. metadata +21 -118
  36. data/.gitignore +0 -14
  37. data/.travis.yml +0 -14
  38. data/Gemfile +0 -8
  39. data/Rakefile +0 -96
  40. data/device_detector.gemspec +0 -26
  41. data/spec/device_detector/bot_fixtures_spec.rb +0 -30
  42. data/spec/device_detector/client_fixtures_spec.rb +0 -31
  43. data/spec/device_detector/concrete_user_agent_spec.rb +0 -135
  44. data/spec/device_detector/detector_fixtures_spec.rb +0 -100
  45. data/spec/device_detector/device_fixtures_spec.rb +0 -36
  46. data/spec/device_detector/device_spec.rb +0 -151
  47. data/spec/device_detector/memory_cache_spec.rb +0 -148
  48. data/spec/device_detector/model_extractor_spec.rb +0 -63
  49. data/spec/device_detector/os_fixtures_spec.rb +0 -26
  50. data/spec/device_detector/version_extractor_spec.rb +0 -79
  51. data/spec/device_detector_spec.rb +0 -189
  52. data/spec/fixtures/client/browser.yml +0 -2206
  53. data/spec/fixtures/client/feed_reader.yml +0 -199
  54. data/spec/fixtures/client/library.yml +0 -175
  55. data/spec/fixtures/client/mediaplayer.yml +0 -163
  56. data/spec/fixtures/client/mobile_app.yml +0 -193
  57. data/spec/fixtures/client/pim.yml +0 -115
  58. data/spec/fixtures/detector/bots.yml +0 -3260
  59. data/spec/fixtures/detector/camera.yml +0 -121
  60. data/spec/fixtures/detector/car_browser.yml +0 -21
  61. data/spec/fixtures/detector/console.yml +0 -281
  62. data/spec/fixtures/detector/desktop.yml +0 -5361
  63. data/spec/fixtures/detector/feature_phone.yml +0 -891
  64. data/spec/fixtures/detector/feed_reader.yml +0 -551
  65. data/spec/fixtures/detector/mediaplayer.yml +0 -210
  66. data/spec/fixtures/detector/mobile_apps.yml +0 -456
  67. data/spec/fixtures/detector/phablet.yml +0 -3785
  68. data/spec/fixtures/detector/portable_media_player.yml +0 -178
  69. data/spec/fixtures/detector/smart_display.yml +0 -61
  70. data/spec/fixtures/detector/smartphone-1.yml +0 -9953
  71. data/spec/fixtures/detector/smartphone-10.yml +0 -9924
  72. data/spec/fixtures/detector/smartphone-11.yml +0 -9889
  73. data/spec/fixtures/detector/smartphone-12.yml +0 -8655
  74. data/spec/fixtures/detector/smartphone-2.yml +0 -9967
  75. data/spec/fixtures/detector/smartphone-3.yml +0 -9887
  76. data/spec/fixtures/detector/smartphone-4.yml +0 -9911
  77. data/spec/fixtures/detector/smartphone-5.yml +0 -9933
  78. data/spec/fixtures/detector/smartphone-6.yml +0 -9923
  79. data/spec/fixtures/detector/smartphone-7.yml +0 -9892
  80. data/spec/fixtures/detector/smartphone-8.yml +0 -9896
  81. data/spec/fixtures/detector/smartphone-9.yml +0 -9928
  82. data/spec/fixtures/detector/smartphone.yml +0 -9984
  83. data/spec/fixtures/detector/tablet-1.yml +0 -10023
  84. data/spec/fixtures/detector/tablet-2.yml +0 -9968
  85. data/spec/fixtures/detector/tablet-3.yml +0 -7787
  86. data/spec/fixtures/detector/tablet.yml +0 -9951
  87. data/spec/fixtures/detector/tv.yml +0 -3333
  88. data/spec/fixtures/detector/unknown.yml +0 -3283
  89. data/spec/fixtures/device/camera.yml +0 -19
  90. data/spec/fixtures/device/car_browser.yml +0 -7
  91. data/spec/fixtures/device/console.yml +0 -79
  92. data/spec/fixtures/parser/oss.yml +0 -1047
  93. data/spec/fixtures/parser/vendorfragments.yml +0 -162
  94. data/spec/spec_helper.rb +0 -9
@@ -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})'
@@ -16,6 +16,18 @@ Airties:
16
16
  - regex: 'Airties; ?([^);/]+)'
17
17
  model: '$1'
18
18
 
19
+ # ALDI NORD
20
+ 'ALDI NORD':
21
+ regex: 'ALDINORD[;,]'
22
+ device: 'tv'
23
+ model: ''
24
+
25
+ # ALDI SÜD
26
+ 'ALDI SÜD':
27
+ regex: 'ALDISUED[;,]'
28
+ device: 'tv'
29
+ model: ''
30
+
19
31
  # Altech UEC
20
32
  'Altech UEC':
21
33
  regex: 'Altech UEC'
@@ -24,12 +36,56 @@ Airties:
24
36
  - regex: 'Altech UEC; ?([^);/]+)'
25
37
  model: '$1'
26
38
 
39
+ # AOC
40
+ AOC:
41
+ regex: 'AOC'
42
+ device: 'tv'
43
+ models:
44
+ - regex: '(LE43S5970-20|S50856)'
45
+ model: '$1'
46
+
47
+ # ARRIS
48
+ ARRIS:
49
+ regex: 'ARRIS[;,]'
50
+ device: 'tv'
51
+ models:
52
+ - regex: 'FS-ARS-01B'
53
+ model: 'FS-ARS-01B'
54
+
55
+ # Atvio
56
+ Atvio:
57
+ regex: 'ATVIO'
58
+ device: 'tv'
59
+ models:
60
+ - regex: '55D1620'
61
+ model: '55D1620'
62
+
27
63
  # BangOlufsen
28
64
  BangOlufsen:
29
65
  regex: 'Bangolufsen'
30
66
  device: 'tv'
31
67
  model: 'BeoVision'
32
68
 
69
+ # Blaupunkt
70
+ Blaupunkt:
71
+ regex: 'Blaupunkt_UMC[;,]'
72
+ device: 'tv'
73
+ models:
74
+ - regex: 'LC-65CUG8052E'
75
+ model: 'LC-65CUG8052E'
76
+
77
+ # Bush
78
+ Bush:
79
+ regex: 'BUSH[;,]'
80
+ device: 'tv'
81
+ model: ''
82
+
83
+ # Celcus
84
+ Celcus:
85
+ regex: 'CELCUS[;,]'
86
+ device: 'tv'
87
+ model: ''
88
+
33
89
  # Changhong
34
90
  Changhong:
35
91
  regex: 'Changhong'
@@ -44,28 +100,116 @@ CreNova:
44
100
  device: 'tv'
45
101
  model: 'CNV001'
46
102
 
103
+ # Digihome
104
+ Digihome:
105
+ regex: 'DIGIHOME[;,]'
106
+ device: 'tv'
107
+ model: ''
108
+
47
109
  # DMM
48
110
  DMM:
49
111
  regex: 'DMM'
50
112
  device: 'tv'
51
113
  model: 'Dreambox'
52
114
 
115
+ # ELECTRONIA
116
+ ELECTRONIA:
117
+ regex: 'ELECTRONIA[;,]'
118
+ device: 'tv'
119
+ model: ''
120
+
121
+ # Essentielb
122
+ Essentielb:
123
+ regex: 'ESSENTIELB[;,]'
124
+ device: 'tv'
125
+ model: ''
126
+
127
+ # Finlux
128
+ Finlux:
129
+ regex: 'FINLUX[;,]'
130
+ device: 'tv'
131
+ model: ''
132
+
133
+ # F&U (https://www.fandu.gr/)
134
+ 'F&U':
135
+ regex: 'FU[;,]'
136
+ device: 'tv'
137
+ model: ''
138
+
139
+ # Fuego
140
+ Fuego:
141
+ regex: 'FUEGO[;,]'
142
+ device: 'tv'
143
+ model: ''
144
+
145
+ # GoGEN (https://www.gogen.cz/)
146
+ GoGEN:
147
+ regex: 'GOGEN[;,]'
148
+ device: 'tv'
149
+ model: ''
150
+
53
151
  # Grundig
54
152
  Grundig:
55
153
  regex: '(OWB|Grundig|Arcelik)'
56
154
  device: 'tv'
57
155
  model: ''
58
156
 
157
+ # Haier
158
+ Haier:
159
+ regex: '(?:HHW_)?HAIER'
160
+ device: 'tv'
161
+ models:
162
+ - regex: 'LE55X7000U'
163
+ model: 'LE55X7000U'
164
+
165
+ # Hi-Level
166
+ Hi-Level:
167
+ regex: 'HI-LEVEL[;,]'
168
+ device: 'tv'
169
+ model: ''
170
+
59
171
  # Hisense
60
172
  Hisense:
61
- regex: 'Hisense'
173
+ regex: 'Hisense|Eurofins_Digital_Testing'
62
174
  device: 'tv'
63
175
  models:
176
+ - regex: '50ADEVTOOL'
177
+ model: '50ADEVTOOL'
178
+ - regex: '50A683FEVS'
179
+ model: '50A683FEVS'
180
+ - regex: '55A6100EE'
181
+ model: '55A6100EE'
182
+ - regex: '55U62QGAVT'
183
+ model: '55U62QGAVT'
184
+ - regex: '50A6502EA'
185
+ model: '50A6502EA'
186
+ - regex: 'MICALIDVB6886'
187
+ model: 'MICALIDVB6886'
64
188
  - regex: '(L[A-Z]{2,3}[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,6}[0-9]?[A-Z]?)'
65
189
  model: '$1'
66
190
  - regex: '(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})'
67
191
  model: '$1'
68
192
 
193
+ # Hitachi
194
+ Hitachi:
195
+ regex: 'Hitachi[;,]'
196
+ device: 'tv'
197
+ models:
198
+ - regex: '49D2900'
199
+ model: '49D2900'
200
+
201
+ # Horizon
202
+ Horizon:
203
+ regex: 'HORIZON[;,]'
204
+ device: 'tv'
205
+ model: ''
206
+
207
+ # Hotel
208
+ Hotel:
209
+ regex: 'HOTEL[;,]'
210
+ device: 'tv'
211
+ model: ''
212
+
69
213
  # Humax
70
214
  Humax:
71
215
  regex: 'Humax'
@@ -78,13 +222,17 @@ Humax:
78
222
  - regex: 'Humax; ([^);/]+)'
79
223
  model: '$1'
80
224
 
225
+ # Hyundai
226
+ Hyundai:
227
+ regex: 'HYUNDAI[;,]'
228
+ device: 'tv'
229
+ model: ''
230
+
81
231
  # IKEA
82
232
  Ikea:
83
233
  regex: 'Ikea'
84
234
  device: 'tv'
85
- models:
86
- - regex: '(LF1V[0-9]{3})'
87
- model: '$1'
235
+ model: ''
88
236
 
89
237
  # Intek
90
238
  Intek:
@@ -104,17 +252,83 @@ Inverto:
104
252
  - regex: '(Volksbox Web Edition|Volksbox Essential|Volksbox II|Volksbox)'
105
253
  model: '$1'
106
254
 
255
+ # JVC
256
+ JVC:
257
+ regex: 'AFTSO001|JVC[;,]'
258
+ device: 'tv'
259
+ models:
260
+ - regex: 'AFTSO001'
261
+ model: '4K (2019)'
262
+
263
+ # Kalley
264
+ Kalley:
265
+ regex: 'KALLEY[;,]'
266
+ device: 'tv'
267
+ models:
268
+ - regex: '32D1620'
269
+ model: '32D1620'
270
+
271
+ # KUBO
272
+ KUBO:
273
+ regex: 'KUBO[;,]'
274
+ device: 'tv'
275
+ model: ''
276
+
277
+ # Laurus
278
+ Laurus:
279
+ regex: 'LAURUS[;,]'
280
+ device: 'tv'
281
+ model: ''
282
+
107
283
  # LG
108
284
  LG:
109
285
  regex: 'LGE'
110
286
  device: 'tv'
111
287
  models:
288
+ - regex: 'XU43WT180N'
289
+ model: 'XU43WT180N'
290
+ - regex: '43LJ614V-ZA'
291
+ model: '43LJ614V-ZA'
292
+ - regex: '55SK850V-ZA'
293
+ model: '55SK850V-ZA'
294
+ - regex: 'KEY0000213F1z'
295
+ model: 'KEY0000213F1z'
296
+ - regex: 'KEY0000213F'
297
+ model: 'KEY0000213F'
298
+ - regex: 'KEY000000(2E|2F|3B|3F)'
299
+ model: 'KEY000000$1'
112
300
  - regex: '(NetCast [0-9]{1}.[0-9]{1}|GLOBAL_PLAT3)'
113
301
  model: '$1'
302
+ - regex: '(OLED[0-9]{2}[A-Z0-9]{3}[A-Z]{2})'
303
+ model: '$1'
114
304
  - regex: '(OLED[0-9]{2}[A-Z][0-9][A-Z])'
115
305
  model: '$1'
306
+ - regex: '(OLED[0-9]{2}[A-Z0-9]{2})'
307
+ model: '$1'
308
+ - regex: '([0-9]{2}[A-Z]{2}[0-9]{4}[A-Z0-9]{1}[A-Z]{2})'
309
+ model: '$1'
310
+ - regex: '([0-9]{2}NANO[0-9]{3}[A-Z]{2})'
311
+ model: '$1'
312
+ - regex: '([0-9]{2}NANO[0-9]{2})'
313
+ model: '$1'
116
314
  - regex: 'LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)'
117
315
  model: '$1'
316
+ - regex: 'LM21U'
317
+ model: 'LM21U'
318
+ - regex: '32LM'
319
+ model: '32LM'
320
+
321
+ # Lifemaxx
322
+ Lifemaxx:
323
+ regex: 'Lifemaxx[;,]'
324
+ device: 'tv'
325
+ model: ''
326
+
327
+ # Linsar
328
+ Linsar:
329
+ regex: 'LINSAR[;,]'
330
+ device: 'tv'
331
+ model: ''
118
332
 
119
333
  # Loewe
120
334
  Loewe:
@@ -124,9 +338,23 @@ Loewe:
124
338
  - regex: '([A-Z]{2}[0-9]{3})'
125
339
  model: '$1'
126
340
 
341
+ # Luxor
342
+ Luxor:
343
+ regex: 'LUXOR[;,]'
344
+ device: 'tv'
345
+ model: ''
346
+
347
+ # Manhattan (https://manhattan-tv.com/)
348
+ Manhattan:
349
+ regex: 'Manhattan'
350
+ device: 'tv'
351
+ models:
352
+ - regex: 'T3'
353
+ model: 'T3'
354
+
127
355
  # MediaTek
128
356
  MediaTek:
129
- regex: 'MTK'
357
+ regex: 'MTK|MediaTek;'
130
358
  device: 'tv'
131
359
  models:
132
360
  - regex: '(MT[0-9]{4})'
@@ -136,9 +364,37 @@ MediaTek:
136
364
  Medion:
137
365
  regex: 'Medion'
138
366
  device: 'tv'
367
+ model: ''
368
+
369
+ # Miray
370
+ Miray:
371
+ regex: 'MIRAY'
372
+ device: 'tv'
139
373
  models:
140
- - regex: '(MB[0-9]{2})'
141
- model: '$1'
374
+ - regex: 'LEDM-322NIP'
375
+ model: 'LEDM-322NIP'
376
+
377
+ # MStar
378
+ MStar:
379
+ regex: 'MStar[;,]'
380
+ device: 'tv'
381
+ models:
382
+ - regex: '([24])KTV18'
383
+ model: '$1KTV18'
384
+
385
+ # MTC
386
+ MTC:
387
+ regex: 'MTC[;,]'
388
+ device: 'tv'
389
+ models:
390
+ - regex: '([24])K_Android_TV_V01'
391
+ model: '$1K Android TV'
392
+
393
+ # Nordmende
394
+ Nordmende:
395
+ regex: 'NORDMENDE[;,]'
396
+ device: 'tv'
397
+ model: ''
142
398
 
143
399
  # Metz
144
400
  Metz:
@@ -146,23 +402,31 @@ Metz:
146
402
  device: 'tv'
147
403
  model: ''
148
404
 
405
+ # Ok
406
+ Ok:
407
+ regex: 'OK[;,]'
408
+ device: 'tv'
409
+ model: ''
410
+
149
411
  # Panasonic
150
412
  Panasonic:
151
413
  regex: 'Panasonic'
152
414
  device: 'tv'
153
415
  models:
154
- - regex: '(VIERA [0-9]{1,4})|(DIGA [A-Z]{1}[0-9]{4})'
416
+ - regex: 'VIERA (201[1-9])'
417
+ model: 'VIERA ($1)'
418
+ - regex: '(DIGA [A-Z]{1}[0-9]{4})'
155
419
  model: '$1'
156
420
  - regex: 'DIGA Webkit ([A-Z]{1}[0-9]{4})'
157
421
  model: 'DIGA $1'
422
+ - regex: 'SmartTV(201[89]|202[0-1])'
423
+ model: 'Smart TV ($1)'
158
424
 
159
425
  # PEAQ
160
426
  PEAQ:
161
427
  regex: 'PEAQ'
162
428
  device: 'tv'
163
- models:
164
- - regex: '(LF1V[0-9]{3})'
165
- model: '$1'
429
+ model: ''
166
430
 
167
431
  # Philips
168
432
  Philips:
@@ -174,15 +438,69 @@ Philips:
174
438
  - regex: 'NETTV/[0-9\.]{5}'
175
439
  model: 'NetTV Series'
176
440
 
441
+ # Polaroid
442
+ Polaroid:
443
+ regex: 'POLAROID[;,]'
444
+ device: 'tv'
445
+ model: ''
446
+
447
+ # PROFiLO
448
+ PROFiLO:
449
+ regex: 'PROFILO[;,]'
450
+ device: 'tv'
451
+ model: ''
452
+
453
+ # Qilive
454
+ Qilive:
455
+ regex: 'QILIVE[;,]'
456
+ device: 'tv'
457
+ model: ''
458
+
459
+ # REGAL
460
+ REGAL:
461
+ regex: 'REGAL[;,]'
462
+ device: 'tv'
463
+ model: ''
464
+
465
+ # Saba
466
+ Saba:
467
+ regex: 'Saba[;,]'
468
+ device: 'tv'
469
+ model: ''
470
+
471
+ # Salora
472
+ Salora:
473
+ regex: 'Salora[;,]'
474
+ device: 'tv'
475
+ model: ''
476
+
177
477
  # Samsung
178
478
  Samsung:
179
479
  regex: 'Samsung|Maple_2011'
180
480
  device: 'tv'
181
481
  models:
182
- - regex: 'SmartTV(201[2-9])'
183
- model: 'Smart TV $1'
482
+ - regex: 'SmartTV(201[2-9]|202[0-1]):([^);/]+)'
483
+ model: '$2'
484
+ - regex: 'SmartTV(201[2-9]|202[0-1])'
485
+ model: 'Smart TV ($1)'
184
486
  - regex: 'Maple_2011'
185
- model: 'Smart TV 2011'
487
+ model: 'Smart TV (2011)'
488
+
489
+ # SCBC
490
+ SCBC:
491
+ regex: 'SCBC[;,]'
492
+ device: 'tv'
493
+ models:
494
+ - regex: 'SCBC586'
495
+ model: 'SCBC586'
496
+ - regex: '43D1850'
497
+ model: '43D1850'
498
+
499
+ # SEG
500
+ SEG:
501
+ regex: 'SEG[;,]'
502
+ device: 'tv'
503
+ model: ''
186
504
 
187
505
  # Selevision
188
506
  Selevision:
@@ -196,13 +514,17 @@ Selevision:
196
514
 
197
515
  # Sharp
198
516
  Sharp:
199
- regex: 'Sharp'
517
+ regex: '(?:UMC-)?Sharp'
200
518
  device: 'tv'
201
519
  models:
202
520
  - regex: 'Sharp[,;] ?((?! |HbbTV)[^),;/]+)'
203
521
  model: '$1'
204
522
  - regex: '(LE[0-9]{3}[A-Z]{0,3})'
205
523
  model: '$1'
524
+ - regex: 'LC-([^);/]+)'
525
+ model: 'LC-$1'
526
+ - regex: 'BLA-43'
527
+ model: 'BLA-43'
206
528
 
207
529
  # Skyworth
208
530
  Skyworth:
@@ -212,9 +534,9 @@ Skyworth:
212
534
  - regex: 'Sky_worth;([^);/]+)'
213
535
  model: '$1'
214
536
 
215
- # Smart
216
- Smart:
217
- regex: 'Smart[^a-z]'
537
+ # Smart Electronic
538
+ Smart Electronic:
539
+ regex: 'Smart[;,]'
218
540
  device: 'tv'
219
541
  models:
220
542
  - regex: 'Smart; ([^);/]+)'
@@ -227,9 +549,49 @@ Sony:
227
549
  regex: 'Sony'
228
550
  device: 'tv'
229
551
  models:
552
+ - regex: 'KDL-GR1'
553
+ model: 'KDL-GR1'
554
+ - regex: 'KDL-GN([56])'
555
+ model: 'KDL-GN$1'
556
+ - regex: 'BRAVIA (VH1|4K VH2)'
557
+ model: 'BRAVIA $1'
558
+ - regex: '(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{4}[A-Z]{1})'
559
+ model: '$1'
560
+ - regex: '(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1})'
561
+ model: '$1'
230
562
  - regex: '(KDL?-?[0-9]{2}[A-Z]{1,2}[0-9]{1,5})'
231
563
  model: '$1'
232
564
 
565
+ # SWTV
566
+ SWTV:
567
+ regex: 'SWTV[;,]'
568
+ device: 'tv'
569
+ models:
570
+ - regex: 'SKWE20E21'
571
+ model: 'SKWE20E21'
572
+
573
+ # TD Systems
574
+ 'TD Systems':
575
+ regex: 'TDSystems[;,]'
576
+ device: 'tv'
577
+ models:
578
+ - regex: 'SmartTV(2019|2020)'
579
+ model: 'Smart TV ($1)'
580
+
581
+ # Technicolor
582
+ Technicolor:
583
+ regex: 'Technicolor'
584
+ device: 'tv'
585
+ models:
586
+ - regex: 'uzw4054ttg'
587
+ model: 'UZW4054TTG'
588
+
589
+ # Technika
590
+ Technika:
591
+ regex: 'TECHNIKA[;,]'
592
+ device: 'tv'
593
+ model: ''
594
+
233
595
  # TechniSat
234
596
  TechniSat:
235
597
  regex: 'TechniSat'
@@ -246,45 +608,64 @@ TechnoTrend:
246
608
  - regex: '([A-Z]{1}-[0-9]{3})'
247
609
  model: '$1'
248
610
 
611
+ # Techwood
612
+ Techwood:
613
+ regex: 'Techwood[;,]'
614
+ device: 'tv'
615
+ model: ''
616
+
249
617
  # Telefunken
250
618
  Telefunken:
251
619
  regex: 'Telefunken'
252
620
  device: 'tv'
253
- models:
254
- - regex: '(MB[0-9]{2})'
255
- model: '$1'
621
+ model: ''
622
+
256
623
  # TCL
257
624
  TCL:
258
625
  regex: 'TCL'
259
626
  device: 'tv'
260
627
  models:
261
- - regex: '(LF1V[0-9]{3})'
628
+ - regex: '(32D1820|(?:39|55)D2900|32D2930|(?:32|43)S4900)'
262
629
  model: '$1'
263
630
 
264
631
  # Thomson
265
632
  Thomson:
266
- regex: 'THOMSON|THOM'
633
+ regex: 'THOMSON[,]?|THOM'
267
634
  device: 'tv'
268
635
  models:
269
- - regex: '(LF1V[0-9]{3})'
270
- model: '$1'
636
+ - regex: '(TB28D19DHS-01|T28D18SFS-01B)'
637
+ model: '$1 28.0"'
638
+ - regex: '(T32RTM5040|T32D18SFS-01B)'
639
+ model: '$1 32.0"'
640
+ - regex: '(T43FSL5031|T43D18SFS-01B)'
641
+ model: '$1 43.0"'
642
+ - regex: '(T40D18SFS-01B)'
643
+ model: '$1 40.0"'
644
+ - regex: '(T49D18SFS-01B)'
645
+ model: '$1 49.0"'
646
+ - regex: '(T55D18[SD]FS-01B)'
647
+ model: '$1 55.0"'
648
+ - regex: '40FB5426'
649
+ model: '40FB5426'
650
+
651
+ # TOKYO
652
+ TOKYO:
653
+ regex: 'TOKYO[;,]'
654
+ device: 'tv'
655
+ models:
656
+ - regex: 'TOKTCLED32S'
657
+ model: 'TOKTCLED32S'
271
658
 
272
659
  # Toshiba
273
660
  Toshiba:
274
661
  regex: 'Toshiba'
275
662
  device: 'tv'
276
663
  models:
664
+ - regex: '40L2600'
665
+ model: '40L2600'
277
666
  - regex: '(([0-9]{2}|DTV_)[A-Z]{2}[0-9]{1,3})'
278
667
  model: '$1'
279
668
 
280
- # Vestel
281
- Vestel:
282
- regex: 'Vestel'
283
- device: 'tv'
284
- models:
285
- - regex: '(MB[0-9]{2})'
286
- model: '$1'
287
-
288
669
  # Videoweb
289
670
  Videoweb:
290
671
  regex: 'videoweb|tv2n'
@@ -293,4 +674,28 @@ Videoweb:
293
674
  - regex: '(tv2n)'
294
675
  model: '$1'
295
676
  - regex: '(videowebtv)'
296
- model: 'VideoWeb TV'
677
+ model: 'VideoWeb TV'
678
+
679
+ # VOX (https://www.voxelectronics.com/)
680
+ VOX:
681
+ regex: 'VOX[;,]'
682
+ device: 'tv'
683
+ model: ''
684
+
685
+ # WELLINGTON
686
+ WELLINGTON:
687
+ regex: 'WELLINGTON[;,]'
688
+ device: 'tv'
689
+ model: ''
690
+
691
+ # X.Vision
692
+ X.Vision:
693
+ regex: 'X-VISION[;,]'
694
+ device: 'tv'
695
+ model: ''
696
+
697
+ # Vestel
698
+ Vestel:
699
+ regex: '(?:Vestel.+VESTEL|VESTEL;)'
700
+ device: 'tv'
701
+ model: ''