device_detector 0.9.1 → 1.0.4
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 +5 -5
- data/.rubocop.yml +49 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -9
- data/CHANGELOG.md +16 -3
- data/README.md +7 -9
- data/Rakefile +19 -13
- data/device_detector.gemspec +1 -0
- data/lib/device_detector.rb +32 -28
- data/lib/device_detector/bot.rb +2 -2
- data/lib/device_detector/client.rb +3 -2
- data/lib/device_detector/device.rb +44 -21
- data/lib/device_detector/memory_cache.rb +26 -19
- data/lib/device_detector/metadata_extractor.rb +7 -8
- data/lib/device_detector/model_extractor.rb +3 -3
- data/lib/device_detector/name_extractor.rb +2 -2
- data/lib/device_detector/os.rb +121 -111
- data/lib/device_detector/parser.rb +22 -9
- data/lib/device_detector/version.rb +3 -1
- data/lib/device_detector/version_extractor.rb +2 -3
- data/regexes/bots.yml +840 -20
- data/regexes/client/browser_engine.yml +11 -2
- data/regexes/client/browsers.yml +909 -108
- data/regexes/client/feed_readers.yml +38 -2
- data/regexes/client/libraries.yml +76 -2
- data/regexes/client/mediaplayers.yml +25 -5
- data/regexes/client/mobile_apps.yml +167 -2
- data/regexes/client/pim.yml +10 -1
- data/regexes/device/cameras.yml +1 -1
- data/regexes/device/car_browsers.yml +7 -3
- data/regexes/device/consoles.yml +3 -3
- data/regexes/device/mobiles.yml +10123 -465
- data/regexes/device/portable_media_player.yml +4 -6
- data/regexes/device/televisions.yml +18 -4
- data/regexes/oss.yml +115 -21
- data/regexes/vendorfragments.yml +6 -2
- data/spec/device_detector/concrete_user_agent_spec.rb +16 -17
- data/spec/device_detector/detector_fixtures_spec.rb +51 -11
- data/spec/device_detector/device_spec.rb +28 -48
- data/spec/device_detector/memory_cache_spec.rb +60 -28
- data/spec/device_detector/model_extractor_spec.rb +3 -3
- data/spec/device_detector/version_extractor_spec.rb +5 -6
- data/spec/device_detector_spec.rb +60 -69
- data/spec/fixtures/client/browser.yml +1785 -262
- data/spec/fixtures/client/feed_reader.yml +47 -35
- data/spec/fixtures/client/library.yml +112 -3
- data/spec/fixtures/client/mediaplayer.yml +32 -37
- data/spec/fixtures/client/mobile_app.yml +193 -6
- data/spec/fixtures/client/pim.yml +37 -18
- data/spec/fixtures/detector/bots.yml +1426 -118
- data/spec/fixtures/detector/camera.yml +36 -10
- data/spec/fixtures/detector/car_browser.yml +64 -3
- data/spec/fixtures/detector/console.yml +80 -26
- data/spec/fixtures/detector/desktop.yml +2222 -1589
- data/spec/fixtures/detector/feature_phone.yml +151 -42
- data/spec/fixtures/detector/feed_reader.yml +186 -121
- data/spec/fixtures/detector/mediaplayer.yml +113 -39
- data/spec/fixtures/detector/mobile_apps.yml +366 -21
- data/spec/fixtures/detector/phablet.yml +2597 -570
- data/spec/fixtures/detector/portable_media_player.yml +41 -16
- data/spec/fixtures/detector/smart_display.yml +8 -5
- data/spec/fixtures/detector/smart_speaker.yml +55 -0
- data/spec/fixtures/detector/smartphone-1.yml +5468 -5010
- data/spec/fixtures/detector/smartphone-10.yml +9977 -0
- data/spec/fixtures/detector/smartphone-11.yml +9891 -0
- data/spec/fixtures/detector/smartphone-12.yml +9906 -0
- data/spec/fixtures/detector/smartphone-13.yml +9920 -0
- data/spec/fixtures/detector/smartphone-14.yml +2662 -0
- data/spec/fixtures/detector/smartphone-2.yml +5213 -4635
- data/spec/fixtures/detector/smartphone-3.yml +5082 -4533
- data/spec/fixtures/detector/smartphone-4.yml +6806 -2625
- data/spec/fixtures/detector/smartphone-5.yml +9914 -0
- data/spec/fixtures/detector/smartphone-6.yml +9962 -0
- data/spec/fixtures/detector/smartphone-7.yml +9899 -0
- data/spec/fixtures/detector/smartphone-8.yml +9931 -0
- data/spec/fixtures/detector/smartphone-9.yml +9899 -0
- data/spec/fixtures/detector/smartphone.yml +5225 -4652
- data/spec/fixtures/detector/tablet-1.yml +4691 -4191
- data/spec/fixtures/detector/tablet-2.yml +9800 -71
- data/spec/fixtures/detector/tablet-3.yml +9959 -0
- data/spec/fixtures/detector/tablet-4.yml +4528 -0
- data/spec/fixtures/detector/tablet.yml +4664 -4177
- data/spec/fixtures/detector/tv.yml +3399 -1048
- data/spec/fixtures/detector/unknown.yml +1017 -977
- data/spec/fixtures/detector/wearable.yml +61 -0
- data/spec/fixtures/device/camera.yml +4 -3
- data/spec/fixtures/device/car_browser.yml +9 -2
- data/spec/fixtures/device/console.yml +15 -14
- data/spec/fixtures/parser/oss.yml +284 -2
- data/spec/fixtures/parser/vendorfragments.yml +8 -2
- metadata +50 -7
@@ -1,7 +1,7 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
@@ -17,6 +17,24 @@
|
|
17
17
|
url: 'https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html'
|
18
18
|
type: 'Feed Reader'
|
19
19
|
|
20
|
+
- regex: 'BashPodder'
|
21
|
+
name: 'BashPodder'
|
22
|
+
version: ''
|
23
|
+
url: 'http://lincgeek.org/bashpodder/'
|
24
|
+
type: 'Feed Reader'
|
25
|
+
|
26
|
+
- regex: 'Breaker/v([\d\.]+)'
|
27
|
+
name: 'Breaker'
|
28
|
+
version: '$1'
|
29
|
+
url: 'https://www.breaker.audio/'
|
30
|
+
type: 'Feed Reader App'
|
31
|
+
|
32
|
+
- regex: 'Downcast/([\d\.]+)'
|
33
|
+
name: 'Downcast'
|
34
|
+
version: '$1'
|
35
|
+
url: 'http://downcastapp.com/'
|
36
|
+
type: 'Feed Reader App'
|
37
|
+
|
20
38
|
- regex: 'FeedDemon(?:/(\d+[\.\d]+))?'
|
21
39
|
name: 'FeedDemon'
|
22
40
|
version: '$1'
|
@@ -29,6 +47,18 @@
|
|
29
47
|
url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
|
30
48
|
type: 'Feed Reader App'
|
31
49
|
|
50
|
+
- regex: 'QuiteRSS(?:[/ ](\d+[\.\d]+))?'
|
51
|
+
name: 'QuiteRSS'
|
52
|
+
version: '$1'
|
53
|
+
url: https://quiterss.org
|
54
|
+
type: 'Feed Reader App'
|
55
|
+
|
56
|
+
- regex: 'gPodder/([\d\.]+)'
|
57
|
+
name: 'gPodder'
|
58
|
+
version: '$1'
|
59
|
+
url: 'http://gpodder.org/'
|
60
|
+
type: 'Feed Reader App'
|
61
|
+
|
32
62
|
- regex: 'JetBrains Omea Reader(?:[/ ](\d+[\.\d]+))?'
|
33
63
|
name: 'JetBrains Omea Reader'
|
34
64
|
version: '$1'
|
@@ -65,7 +95,13 @@
|
|
65
95
|
url: 'http://www.newsbeuter.org/'
|
66
96
|
type: 'Feed Reader'
|
67
97
|
|
68
|
-
- regex: '
|
98
|
+
- regex: 'PritTorrent/([\d\.]+)'
|
99
|
+
name: 'PritTorrent'
|
100
|
+
version: '$1'
|
101
|
+
url: 'http://bitlove.org'
|
102
|
+
type: 'Feed Reader'
|
103
|
+
|
104
|
+
- regex: 'Pulp[/ ](\d+[\.\d]+)'
|
69
105
|
name: 'Pulp'
|
70
106
|
version: '$1'
|
71
107
|
url: 'http://www.acrylicapps.com/pulp/'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
@@ -31,4 +31,78 @@
|
|
31
31
|
|
32
32
|
- regex: '(?:perlclient|libwww-perl)(?:/?(\d+[\.\d]+))?'
|
33
33
|
name: 'Perl'
|
34
|
-
version: '$1'
|
34
|
+
version: '$1'
|
35
|
+
|
36
|
+
- regex: 'okhttp/([\d\.]+)'
|
37
|
+
name: 'OkHttp'
|
38
|
+
version: '$1'
|
39
|
+
|
40
|
+
- regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
|
41
|
+
name: 'HTTP_Request2'
|
42
|
+
version: '$1'
|
43
|
+
|
44
|
+
- regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
|
45
|
+
name: 'HTTP_Request2'
|
46
|
+
version: '$1'
|
47
|
+
url: 'http://pear.php.net/package/http_request2'
|
48
|
+
|
49
|
+
- regex: 'Mechanize(?:/(\d+[\.\d]+))?'
|
50
|
+
name: 'Mechanize'
|
51
|
+
version: '$1'
|
52
|
+
url: 'http://github.com/sparklemotion/mechanize/'
|
53
|
+
|
54
|
+
- regex: 'aiohttp(?:/(\d+[\.\d]+))?'
|
55
|
+
name: 'aiohttp'
|
56
|
+
version: '$1'
|
57
|
+
|
58
|
+
- regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\d\w-]+))?'
|
59
|
+
name: 'Google HTTP Java Client'
|
60
|
+
version: '$1'
|
61
|
+
|
62
|
+
- regex: 'WWW-Mechanize(?:/(\d+[\.\d]+))?'
|
63
|
+
name: 'WWW-Mechanize'
|
64
|
+
version: '$1'
|
65
|
+
|
66
|
+
- regex: 'Faraday(?: v(\d+[\.\d]+))?'
|
67
|
+
name: 'Faraday'
|
68
|
+
version: '$1'
|
69
|
+
|
70
|
+
- regex: '(?:Go-http-client|Go )/?(?:(\d+[\.\d]+))?(?: package http)?'
|
71
|
+
name: 'Go-http-client'
|
72
|
+
version: '$1'
|
73
|
+
|
74
|
+
- regex: 'urlgrabber(?:/(\d+[\.\d]+))?'
|
75
|
+
name: 'urlgrabber (yum)'
|
76
|
+
version: '$1'
|
77
|
+
|
78
|
+
- regex: 'libdnf(?:/(\d+[\.\d]+))?'
|
79
|
+
name: 'libdnf'
|
80
|
+
version: '$1'
|
81
|
+
|
82
|
+
- regex: 'HTTPie(?:/(\d+[\.\d]+))?'
|
83
|
+
name: 'HTTPie'
|
84
|
+
version: '$1'
|
85
|
+
|
86
|
+
- regex: 'rest-client/(\d+[\.\d]+).*ruby'
|
87
|
+
name: 'REST Client for Ruby'
|
88
|
+
version: '$1'
|
89
|
+
|
90
|
+
- regex: 'RestSharp/(\d+[\.\d]+)'
|
91
|
+
name: 'RestSharp'
|
92
|
+
version: '$1'
|
93
|
+
url: 'http://restsharp.org/'
|
94
|
+
|
95
|
+
- regex: 'scalaj-http/(\d+[\.\d]+)'
|
96
|
+
name: 'ScalaJ HTTP'
|
97
|
+
version: '$1'
|
98
|
+
url: 'https://github.com/scalaj/scalaj-http'
|
99
|
+
|
100
|
+
- regex: 'REST::Client/(\d+)'
|
101
|
+
name: 'Perl REST::Client'
|
102
|
+
version: '$1'
|
103
|
+
url: 'https://metacpan.org/pod/REST::Client'
|
104
|
+
|
105
|
+
- regex: 'node-fetch/(\d+[\.\d]+)'
|
106
|
+
name: 'Node Fetch'
|
107
|
+
version: $1
|
108
|
+
url: 'https://github.com/node-fetch/node-fetch'
|
@@ -1,10 +1,14 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
+
- regex: 'Audacious(?:[ /]([\d\.]+))?'
|
9
|
+
name: 'Audacious'
|
10
|
+
version: '$1'
|
11
|
+
|
8
12
|
- regex: 'Banshee(?:[ /]([\d\.]+))?'
|
9
13
|
name: 'Banshee'
|
10
14
|
version: '$1'
|
@@ -17,13 +21,21 @@
|
|
17
21
|
name: 'Clementine'
|
18
22
|
version: '$1'
|
19
23
|
|
20
|
-
- regex: '
|
24
|
+
- regex: 'Deezer(?:/([\d\.]+))?'
|
25
|
+
name: 'Deezer'
|
26
|
+
version: '$1'
|
27
|
+
|
28
|
+
- regex: 'iTunes(?:-iPhone|-iPad)?(?:/([\d\.]+))?'
|
21
29
|
name: 'iTunes'
|
22
30
|
version: '$1'
|
23
31
|
|
24
32
|
- regex: 'FlyCast(?:/([\d\.]+))?'
|
25
33
|
name: 'FlyCast'
|
26
34
|
version: '$1'
|
35
|
+
|
36
|
+
- regex: 'foobar2000(?:/([\d\.]+))?'
|
37
|
+
name: 'Foobar2000'
|
38
|
+
version: '$1'
|
27
39
|
|
28
40
|
- regex: 'MediaMonkey(?:[ /](\d+[\.\d]+))?'
|
29
41
|
name: 'MediaMonkey'
|
@@ -77,6 +89,14 @@
|
|
77
89
|
name: 'Stagefright'
|
78
90
|
version: '$1'
|
79
91
|
|
80
|
-
- regex: '
|
81
|
-
name: '
|
82
|
-
version: '$1'
|
92
|
+
- regex: 'GoogleChirp(?:/(\d+[\.\d]+))?'
|
93
|
+
name: 'Google Podcasts'
|
94
|
+
version: '$1'
|
95
|
+
|
96
|
+
- regex: 'Music Player Daemon (?:(\d+[\.\d]+))?'
|
97
|
+
name: 'Music Player Daemon'
|
98
|
+
version: '$1'
|
99
|
+
|
100
|
+
- regex: 'mpv (?:(\d+[\.\d]+))?'
|
101
|
+
name: 'mpv'
|
102
|
+
version: '$1'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
@@ -10,16 +10,38 @@
|
|
10
10
|
name: 'AndroidDownloadManager'
|
11
11
|
version: '$1'
|
12
12
|
|
13
|
+
# Apple News
|
14
|
+
- regex: '(?:Apple)?News(?:[ /][\d\.]+)? Version(?:[ /]([\d\.]+))?'
|
15
|
+
name: 'Apple News'
|
16
|
+
version: '$1'
|
17
|
+
|
18
|
+
- regex: 'bPod'
|
19
|
+
name: 'bPod'
|
20
|
+
version: ''
|
21
|
+
|
22
|
+
# Facebook Messenger
|
23
|
+
- regex: '(?:MessengerForiOS|MESSENGER).(?:FBAV)(?:[ /]([\d\.]+))?'
|
24
|
+
name: 'Facebook Messenger'
|
25
|
+
version: '$1'
|
26
|
+
|
13
27
|
# Facebook
|
14
28
|
- regex: '(?:FBAV|com.facebook.katana)(?:[ /]([\d\.]+))?'
|
15
29
|
name: 'Facebook'
|
16
30
|
version: '$1'
|
31
|
+
- regex: '(?:FBAN|FBSV|FBID|FBBV)/'
|
32
|
+
name: 'Facebook'
|
33
|
+
version: ''
|
17
34
|
|
18
35
|
# FeedR
|
19
36
|
- regex: 'FeedR(?:/([\d\.]+))?'
|
20
37
|
name: 'FeedR'
|
21
38
|
version: '$1'
|
22
39
|
|
40
|
+
# Google Go
|
41
|
+
- regex: 'com.google.android.apps.searchlite'
|
42
|
+
name: 'Google Go'
|
43
|
+
version: ''
|
44
|
+
|
23
45
|
# Google Play Kiosk
|
24
46
|
- regex: 'com.google.android.apps.magazines'
|
25
47
|
name: 'Google Play Newsstand'
|
@@ -45,6 +67,11 @@
|
|
45
67
|
name: 'Pinterest'
|
46
68
|
version: '$1'
|
47
69
|
|
70
|
+
# Podcatcher Deluxe
|
71
|
+
- regex: 'Podcatcher Deluxe'
|
72
|
+
name: 'Podcatcher Deluxe'
|
73
|
+
version: ''
|
74
|
+
|
48
75
|
# YouTube
|
49
76
|
- regex: 'com.google.android.youtube(?:/([\d\.]+))?'
|
50
77
|
name: 'YouTube'
|
@@ -63,4 +90,142 @@
|
|
63
90
|
# Line
|
64
91
|
- regex: 'Line(?:[ /]([\d\.]+))'
|
65
92
|
name: 'Line'
|
66
|
-
version: '$1'
|
93
|
+
version: '$1'
|
94
|
+
|
95
|
+
# Instacast
|
96
|
+
- regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
97
|
+
name: 'Instacast'
|
98
|
+
version: '$1'
|
99
|
+
-
|
100
|
+
regex: 'Podcasts/([\d\.]+)'
|
101
|
+
name: 'Podcasts'
|
102
|
+
version: '$1'
|
103
|
+
-
|
104
|
+
regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
|
105
|
+
name: 'Pocket Casts'
|
106
|
+
version: '$1'
|
107
|
+
-
|
108
|
+
regex: 'Podcat/([\d\.]+)'
|
109
|
+
name: 'Podcat'
|
110
|
+
version: '$1'
|
111
|
+
|
112
|
+
-
|
113
|
+
regex: 'BeyondPod'
|
114
|
+
name: 'BeyondPod'
|
115
|
+
version:
|
116
|
+
-
|
117
|
+
regex: 'AntennaPod/?([\d\.]+)?'
|
118
|
+
name: 'AntennaPod'
|
119
|
+
version: '$1'
|
120
|
+
-
|
121
|
+
regex: 'Overcast/([\d\.]+)'
|
122
|
+
name: 'Overcast'
|
123
|
+
version: '$1'
|
124
|
+
-
|
125
|
+
regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?'
|
126
|
+
name: 'CastBox'
|
127
|
+
version: '$1'
|
128
|
+
-
|
129
|
+
regex: 'Player FM'
|
130
|
+
name: 'Player FM'
|
131
|
+
version: ''
|
132
|
+
-
|
133
|
+
regex: 'Podkicker(?: Pro)?/([\d\.]+)'
|
134
|
+
name: 'Podkicker'
|
135
|
+
version: '$1'
|
136
|
+
-
|
137
|
+
regex: 'PodcastRepublic/([\d\.]+)'
|
138
|
+
name: 'Podcast Republic'
|
139
|
+
version: '$1'
|
140
|
+
-
|
141
|
+
regex: 'Castro/(\d+)'
|
142
|
+
name: 'Castro'
|
143
|
+
version: '$1'
|
144
|
+
-
|
145
|
+
regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
|
146
|
+
name: 'Castro 2'
|
147
|
+
version: '$1'
|
148
|
+
-
|
149
|
+
regex: 'Castro 2'
|
150
|
+
name: 'Castro 2'
|
151
|
+
version: ''
|
152
|
+
-
|
153
|
+
regex: 'DoggCatcher'
|
154
|
+
name: 'DoggCatcher'
|
155
|
+
version:
|
156
|
+
-
|
157
|
+
regex: 'PodcastAddict/v([\d]+)'
|
158
|
+
name: 'Podcast & Radio Addict'
|
159
|
+
version: '$1'
|
160
|
+
-
|
161
|
+
regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
|
162
|
+
name: 'Podcat'
|
163
|
+
version: '$1'
|
164
|
+
-
|
165
|
+
regex: 'i[cC]atcher[^\d]+([\d\.]+)'
|
166
|
+
name: 'iCatcher'
|
167
|
+
version: '$1'
|
168
|
+
-
|
169
|
+
regex: 'YelpApp/([\d\.]+)'
|
170
|
+
name: 'Yelp Mobile'
|
171
|
+
version: '$1'
|
172
|
+
-
|
173
|
+
regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)'
|
174
|
+
name: 'Yahoo! Japan'
|
175
|
+
version: '$1'
|
176
|
+
-
|
177
|
+
regex: 'RSSRadio/([\d]+)?'
|
178
|
+
name: 'RSSRadio'
|
179
|
+
version: '$1'
|
180
|
+
-
|
181
|
+
regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
|
182
|
+
name: 'SogouSearch App'
|
183
|
+
version: '$1'
|
184
|
+
-
|
185
|
+
regex: 'NewsArticle/([\d\.]+)?'
|
186
|
+
name: 'NewsArticle App'
|
187
|
+
version: '$1'
|
188
|
+
-
|
189
|
+
regex: 'tieba/([\d\.]+)?'
|
190
|
+
name: 'tieba'
|
191
|
+
version: '$1'
|
192
|
+
-
|
193
|
+
regex: 'com\.douban\.group/([\d\.]+)?'
|
194
|
+
name: 'douban App'
|
195
|
+
version: '$1'
|
196
|
+
-
|
197
|
+
regex: 'BingWeb/([\d\.]+)?'
|
198
|
+
name: 'BingWebApp'
|
199
|
+
version: '$1'
|
200
|
+
-
|
201
|
+
regex: 'GSA/([\d\.]+)?'
|
202
|
+
name: 'Google Search App'
|
203
|
+
version: '$1'
|
204
|
+
-
|
205
|
+
regex: 'Flipboard/([\d\.]+)?'
|
206
|
+
name: 'Flipboard App'
|
207
|
+
version: '$1'
|
208
|
+
-
|
209
|
+
regex: 'Instagram[ /]([\d\.]+)?'
|
210
|
+
name: 'Instagram App'
|
211
|
+
version: '$1'
|
212
|
+
-
|
213
|
+
regex: 'baiduboxapp/([\d\.]+)?'
|
214
|
+
name: 'Baidu Box App'
|
215
|
+
version: '$1'
|
216
|
+
-
|
217
|
+
regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?'
|
218
|
+
name: 'CrosswalkApp'
|
219
|
+
version: '$1'
|
220
|
+
-
|
221
|
+
regex: 'Twitter for iPhone[/]?([\d\.]+)?'
|
222
|
+
name: 'Twitter'
|
223
|
+
version: '$1'
|
224
|
+
-
|
225
|
+
regex: 'TopBuzz/([\d\.]+)'
|
226
|
+
name: 'TopBuzz'
|
227
|
+
version: '$1'
|
228
|
+
-
|
229
|
+
regex: 'Snapchat/([\d\.]+)'
|
230
|
+
name: 'Snapchat'
|
231
|
+
version: '$1'
|
data/regexes/client/pim.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
@@ -39,4 +39,13 @@
|
|
39
39
|
|
40
40
|
- regex: 'The Bat!(?: Voyager)?(?:[/ ](\d+[\.\d]+))?'
|
41
41
|
name: 'The Bat!'
|
42
|
+
version: '$1'
|
43
|
+
|
44
|
+
- regex: 'DAVdroid(?:/(\d+[\.\d]+))?'
|
45
|
+
name: 'DAVdroid'
|
46
|
+
version: '$1'
|
47
|
+
|
48
|
+
# SeaMonkey
|
49
|
+
- regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
|
50
|
+
name: 'SeaMonkey'
|
42
51
|
version: '$1'
|
data/regexes/device/cameras.yml
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
8
|
# Tesla Model S
|
9
9
|
Tesla:
|
10
|
-
regex: 'QtCarBrowser'
|
10
|
+
regex: '(?:Tesla/[0-9.]+|QtCarBrowser)'
|
11
11
|
device: 'car browser'
|
12
|
-
|
12
|
+
models:
|
13
|
+
- regex: 'QtCarBrowser'
|
14
|
+
model: 'Model S'
|
15
|
+
- regex: 'Tesla/[0-9.]+'
|
16
|
+
model: ''
|