Skip to content

Commit 0cbeb7a

Browse files
committed
Rearrange the recently added smarttv detection
1 parent bf4fb91 commit 0cbeb7a

File tree

5 files changed

+68
-68
lines changed

5 files changed

+68
-68
lines changed

readme.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,19 @@ The methods are self explanatory, here's a small overview on all the available m
8080
# Possible 'browser.name':
8181
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
8282
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
83-
Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo,
83+
Chrome Headless, Chrome WebView, Chrome, Chromium, Cobalt, Comodo Dragon, Dillo,
8484
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
8585
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Huawei Browser,
8686
ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel, Instagram,
87-
Iridium, Iron, Jasmine, K-Meleon, Kindle, Klar, Konqueror, LBBROWSER, Line,
88-
LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser, Maemo, Maxthon,
89-
MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront, NetSurf, Netfront,
90-
Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb, Opera Coast,
91-
Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris, Puffin, QQ,
92-
QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari, Sailfish Browser,
93-
Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim, SlimBrowser, Swiftfox,
94-
Tesla, Tizen Browser, UCBrowser, UP.Browser, Vivaldi, Waterfox, WeChat, Weibo,
95-
Yandex, baidu, iCab, w3m, Whale Browser...
87+
Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon, Kindle, Klar, Konqueror,
88+
LBBROWSER, Line, LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser,
89+
Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront,
90+
NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb,
91+
Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris,
92+
Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari,
93+
Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim,
94+
SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, UP.Browser, Viera,
95+
Vivaldi, Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser...
9696

9797
# 'browser.version' determined dynamically
9898
```
@@ -113,10 +113,10 @@ console, mobile, tablet, smarttv, wearable, embedded
113113

114114
# Possible 'device.vendor':
115115
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
116-
Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG,
117-
Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya,
118-
Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
119-
Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
116+
Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla,
117+
Lenovo, LG, Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus,
118+
OPPO, Ouya, Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp,
119+
Siemens, Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
120120

121121
# 'device.model' determined dynamically
122122
```
@@ -141,10 +141,10 @@ AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
141141
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
142142
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
143143
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
144-
Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, PCLinuxOS,
145-
Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS, Sabayon,
146-
Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix,
147-
VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...
144+
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenVMS, OS/2, Palm,
145+
PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS,
146+
RISC OS, Sabayon, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen,
147+
Ubuntu, Unix, VectorLinux, Viera, WebOS, Windows [Phone/Mobile], Zenwalk, ...
148148

149149
# 'os.version' determined dynamically
150150
```

src/ua-parser.js

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,7 @@
5252
LG = 'LG',
5353
MICROSOFT = 'Microsoft',
5454
MOTOROLA = 'Motorola',
55-
NETRANGE= 'Netrange',
56-
NETTV = 'NetTV',
5755
OPERA = 'Opera',
58-
PANASONIC = 'Panasonic',
5956
SAMSUNG = 'Samsung',
6057
SHARP = 'Sharp',
6158
SONY = 'Sony',
@@ -302,8 +299,6 @@
302299

303300
/ wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
304301
], [[NAME, CHROME+' WebView'], VERSION], [
305-
/Panasonic;(VIERA)/i // Panasonic Viera
306-
], [[NAME, VIERA]], [
307302

308303
/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
309304
], [VERSION, [NAME, 'Android '+BROWSER]], [
@@ -338,7 +333,8 @@
338333
// Other
339334
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
340335
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
341-
/(links) \(([\w\.]+)/i // Links
336+
/(links) \(([\w\.]+)/i, // Links
337+
/panasonic;(viera)/i // Panasonic Viera
342338
], [NAME, VERSION], [
343339

344340
/(cobalt)\/([\w\.]+)/i // Cobalt
@@ -379,37 +375,6 @@
379375

380376
device : [[
381377

382-
///////////////////
383-
// SMARTTVS
384-
///////////////////
385-
386-
/smart-tv.+(samsung)/i // Samsung
387-
], [VENDOR, [TYPE, SMARTTV]], [
388-
/hbbtv.+maple;(\d+)/i
389-
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
390-
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
391-
], [[VENDOR, LG], [TYPE, SMARTTV]], [
392-
/(apple) ?tv/i // Apple TV
393-
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
394-
/crkey/i // Google Chromecast
395-
], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
396-
/droid.+aft(\w)( bui|\))/i // Fire TV
397-
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
398-
/\(dtv[\);].+(aquos)/i,
399-
/(aquos-tv[\w ]+)\)/i // Sharp
400-
], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
401-
/(bravia[\w ]+)( bui|\))/i // Sony
402-
], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
403-
/(mitv-\w{5}) bui/i // Xiaomi
404-
], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
405-
/Hbbtv.*(technisat) (.*);/i // TechniSAT
406-
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
407-
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
408-
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
409-
], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
410-
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
411-
], [[TYPE, SMARTTV]], [
412-
413378
//////////////////////////
414379
// MOBILES & TABLETS
415380
/////////////////////////
@@ -539,7 +504,7 @@
539504

540505
// ZTE
541506
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
542-
/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
507+
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
543508
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
544509

545510
// Acer
@@ -631,6 +596,37 @@
631596
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
632597
], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
633598

599+
///////////////////
600+
// SMARTTVS
601+
///////////////////
602+
603+
/smart-tv.+(samsung)/i // Samsung
604+
], [VENDOR, [TYPE, SMARTTV]], [
605+
/hbbtv.+maple;(\d+)/i
606+
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
607+
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
608+
], [[VENDOR, LG], [TYPE, SMARTTV]], [
609+
/(apple) ?tv/i // Apple TV
610+
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
611+
/crkey/i // Google Chromecast
612+
], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
613+
/droid.+aft(\w)( bui|\))/i // Fire TV
614+
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
615+
/\(dtv[\);].+(aquos)/i,
616+
/(aquos-tv[\w ]+)\)/i // Sharp
617+
], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
618+
/(bravia[\w ]+)( bui|\))/i // Sony
619+
], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
620+
/(mitv-\w{5}) bui/i // Xiaomi
621+
], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
622+
/Hbbtv.*(technisat) (.*);/i // TechniSAT
623+
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
624+
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
625+
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
626+
], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
627+
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
628+
], [[TYPE, SMARTTV]], [
629+
634630
///////////////////
635631
// CONSOLES
636632
///////////////////
@@ -745,19 +741,14 @@
745741
], [[NAME, 'Chromium OS'], VERSION],[
746742

747743
// Smart TVs
748-
/Panasonic;VIERA/i // Panasonic Viera
749-
], [[NAME, VIERA]], [
750-
/NETRANGEMMH/i // Netrange
751-
], [[NAME, NETRANGE]], [
752-
/nettv\/(\d\.\d.\d)/i // NetTV
753-
], [VERSION, [NAME, NETTV]], [
754-
744+
/panasonic;(viera)/i, // Panasonic Viera
745+
/(netrange)mmh/i, // Netrange
746+
/(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
755747

756748
// Console
757749
/(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
758750
/(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
759751

760-
761752
// Other
762753
/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
763754
/(mint)[\/\(\) ]?(\w*)/i, // Mint

test/browser-test.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,7 @@
12831283
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
12841284
"expect" :
12851285
{
1286-
"name" : "Viera",
1286+
"name" : "VIERA",
12871287
"version" : "undefined",
12881288
"major" : "undefined"
12891289
}

test/device-test.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,6 +1476,15 @@
14761476
"type": "mobile"
14771477
}
14781478
},
1479+
{
1480+
"desc": "Panasonic T31",
1481+
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; Panasonic T31 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36 ",
1482+
"expect": {
1483+
"vendor": "Panasonic",
1484+
"model": "T31",
1485+
"type": "mobile"
1486+
}
1487+
},
14791488
{
14801489
"desc": "Panasonic TX-32CSW514 SmartTV",
14811490
"ua": "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",

test/os-test.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,7 +1057,7 @@
10571057
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
10581058
"expect" :
10591059
{
1060-
"name" : "Viera",
1060+
"name" : "VIERA",
10611061
"version" : "undefined"
10621062
}
10631063
},
@@ -1066,7 +1066,7 @@
10661066
"ua" : "Mozilla/5.0 (Linux; U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 OPR/46.0.2207.0 LOEWE-SL410/5.2.0.0 HbbTV/1.4.1 (; LOEWE; SL410; LOH/5.2.0.0;;) FVC/3.0 (LOEWE; SL410;) CE-HTML/1.0 Config (L:deu,CC:DEU) NETRANGEMMH",
10671067
"expect" :
10681068
{
1069-
"name" : "Netrange",
1069+
"name" : "NETRANGE",
10701070
"version" : "undefined"
10711071
}
10721072
},
@@ -1075,7 +1075,7 @@
10751075
"ua" : "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70",
10761076
"expect" :
10771077
{
1078-
"name" : "NetTV",
1078+
"name" : "NETTV",
10791079
"version" : "3.2.1"
10801080
}
10811081
},

0 commit comments

Comments
 (0)