From bf5155ec8a0d5d231b975bb04b05cfdd130877c6 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 9 Aug 2025 23:01:29 +0700 Subject: [PATCH] Add new vendor: Philips --- src/enums/ua-parser-enums.d.ts | 1 + src/enums/ua-parser-enums.js | 1 + src/main/ua-parser.js | 13 ++--- test/data/ua/device/_others.json | 36 -------------- test/data/ua/device/philips.json | 83 ++++++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+), 42 deletions(-) create mode 100644 test/data/ua/device/philips.json diff --git a/src/enums/ua-parser-enums.d.ts b/src/enums/ua-parser-enums.d.ts index 933bccb..aa40b50 100644 --- a/src/enums/ua-parser-enums.d.ts +++ b/src/enums/ua-parser-enums.d.ts @@ -243,6 +243,7 @@ export const Vendor: Readonly<{ PALM: "Palm"; PANASONIC: "Panasonic"; PEBBLE: "Pebble"; + PHILIPS: "Philips"; PICO: "Pico"; POLYTRON: "Polytron"; REALME: "Realme"; diff --git a/src/enums/ua-parser-enums.js b/src/enums/ua-parser-enums.js index 828e9e8..9aa28e6 100644 --- a/src/enums/ua-parser-enums.js +++ b/src/enums/ua-parser-enums.js @@ -254,6 +254,7 @@ const Vendor = Object.freeze({ PALM: 'Palm', PANASONIC: 'Panasonic', PEBBLE: 'Pebble', + PHILIPS: 'Philips', PICO: 'Pico', POLYTRON: 'Polytron', REALME: 'Realme', diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index b7edcf1..5f2d042 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -772,7 +772,8 @@ /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL /(hp) ([\w ]+\w)/i, // HP iPAQ /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia - /(oppo) ?([\w ]+) bui/i // OPPO + /(oppo) ?([\w ]+) bui/i, // OPPO + /droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i // Philips ], [VENDOR, MODEL, [TYPE, MOBILE]], [ /(kobo)\s(ereader|touch)/i, // Kobo @@ -799,6 +800,7 @@ // SMARTTVS /////////////////// + /(philips)[\w ]+tv/i, // Philips /smart-tv.+(samsung)/i // Samsung ], [VENDOR, [TYPE, SMARTTV]], [ /hbbtv.+maple;(\d+)/i @@ -836,11 +838,6 @@ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices ], [[VENDOR, /.+\/(\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [ - // SmartTV from Unidentified Vendors - /droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i - ], [MODEL, [TYPE, SMARTTV]], [ - /\b(android tv|smart[- ]?tv|opera tv|tv; rv:|large screen[\w ]+safari)\b/i - ], [[TYPE, SMARTTV]], [ /////////////////// // CONSOLES @@ -911,6 +908,10 @@ // MIXED (GENERIC) /////////////////// + /droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i // Unidentifiable SmartTV + ], [MODEL, [TYPE, SMARTTV]], [ + /\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i + ], [[TYPE, SMARTTV]], [ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet diff --git a/test/data/ua/device/_others.json b/test/data/ua/device/_others.json index 55329b3..06a70fe 100644 --- a/test/data/ua/device/_others.json +++ b/test/data/ua/device/_others.json @@ -122,42 +122,6 @@ "type": "undefined" } }, - { - "desc": "Philips SmartTV", - "ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60", - "expect": { - "vendor": "Philips", - "model": "", - "type": "smarttv" - } - }, - { - "desc": "Philips 32PFL6606K/02 SmartTV (2011)", - "ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70", - "expect": { - "vendor": "Philips", - "model": "", - "type": "smarttv" - } - }, - { - "desc": "Philips 32PFL6606K/02 SmartTV (2013)", - "ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70", - "expect": { - "vendor": "Philips", - "model": "", - "type": "smarttv" - } - }, - { - "desc": "Philips 32PHS5301/12 SmartTV (2016)", - "ua": "Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36 OPR/29.0.1803.0 OMI/4.5.23.37.MOT2.13 HbbTV/1.2.1 (;Philips;32PHS5301/12;;_TV_MT5800;) Firmware/TPM161E_012.002.045.001 en", - "expect": { - "vendor": "Philips", - "model": "32PHS5301/12", - "type": "smarttv" - } - }, { "desc": "Samsung SmartTV", "ua": "Mozilla/5.0 (SMART-TV; X11; Linux armv7l) AppleWebkit/537.42 (KHTML, like Gecko) Safari/537.42", diff --git a/test/data/ua/device/philips.json b/test/data/ua/device/philips.json new file mode 100644 index 0000000..ebc5af0 --- /dev/null +++ b/test/data/ua/device/philips.json @@ -0,0 +1,83 @@ +[ + { + "desc": "Philips S616", + "ua": "Mozilla/5.0 (Linux; Android 5.1; Philips S616 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36", + "expect": { + "vendor": "Philips", + "model": "S616", + "type": "mobile" + } + }, + { + "desc": "Philips W8510", + "ua": "Mozilla/5.0 (Linux; Android 4.2.2; Philips W8510 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.68 Mobile Safari/537.36", + "expect": { + "vendor": "Philips", + "model": "W8510", + "type": "mobile" + } + }, + { + "desc": "Philips SmartTV", + "ua": "Mozilla/5.0 (Linux; Android 11; PHILIPS 4k TV Build/RTXC.231010.082.A1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.71 Mobile Safari/537.36", + "expect": { + "vendor": "PHILIPS", + "model": "undefined", + "type": "smarttv" + } + }, + { + "desc": "Philips SmartTV", + "ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60", + "expect": { + "vendor": "Philips", + "model": "", + "type": "smarttv" + } + }, + { + "desc": "Philips 32PFL6606K/02 SmartTV (2011)", + "ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70", + "expect": { + "vendor": "Philips", + "model": "", + "type": "smarttv" + } + }, + { + "desc": "Philips 32PFL6606K/02 SmartTV (2013)", + "ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70", + "expect": { + "vendor": "Philips", + "model": "", + "type": "smarttv" + } + }, + { + "desc": "Philips 32PHS5301/12 SmartTV (2016)", + "ua": "Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36 OPR/29.0.1803.0 OMI/4.5.23.37.MOT2.13 HbbTV/1.2.1 (;Philips;32PHS5301/12;;_TV_MT5800;) Firmware/TPM161E_012.002.045.001 en", + "expect": { + "vendor": "Philips", + "model": "32PHS5301/12", + "type": "smarttv" + } + }, + { + "desc": "Philips PH0M_EA_T32", + "ua": "Mozilla/5.0 (Linux; Android 10; Philips FHD Android TV Build/QTG3.201102.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/125.0.6422.186 Mobile Safari/537.36", + "expect": { + "vendor": "Philips", + "model": "undefined", + "type": "smarttv" + } + }, + { + "desc": "Philips PH3M_AL_T32", + "ua": "Mozilla/5.0 (Linux; Android 11; Philips Google TV TA7 Build/RTM5.220609.199; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.58 Mobile Safari/537.36", + "expect": { + "vendor": "Philips", + "model": "undefined", + "type": "smarttv" + } + } +] \ No newline at end of file