device_detector 1.0.5 → 1.0.6

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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -6
  3. data/lib/device_detector/browser.rb +364 -0
  4. data/lib/device_detector/client.rb +8 -0
  5. data/lib/device_detector/device.rb +1124 -4
  6. data/lib/device_detector/os.rb +36 -11
  7. data/lib/device_detector/version.rb +1 -1
  8. data/lib/device_detector/version_extractor.rb +9 -0
  9. data/lib/device_detector.rb +57 -13
  10. data/regexes/bots.yml +551 -58
  11. data/regexes/client/browser_engine.yml +7 -1
  12. data/regexes/client/browsers.yml +594 -71
  13. data/regexes/client/feed_readers.yml +4 -10
  14. data/regexes/client/libraries.yml +47 -2
  15. data/regexes/client/mediaplayers.yml +25 -1
  16. data/regexes/client/mobile_apps.yml +447 -77
  17. data/regexes/client/pim.yml +49 -1
  18. data/regexes/device/cameras.yml +5 -5
  19. data/regexes/device/car_browsers.yml +16 -0
  20. data/regexes/device/consoles.yml +6 -0
  21. data/regexes/device/mobiles.yml +12905 -4561
  22. data/regexes/device/portable_media_player.yml +20 -3
  23. data/regexes/device/shell_tv.yml +117 -0
  24. data/regexes/device/televisions.yml +426 -35
  25. data/regexes/oss.yml +567 -139
  26. data/spec/device_detector/concrete_user_agent_spec.rb +30 -42
  27. data/spec/device_detector/detector_fixtures_spec.rb +9 -5
  28. data/spec/device_detector/device_spec.rb +26 -10
  29. data/spec/fixtures/client/browser.yml +1463 -391
  30. data/spec/fixtures/client/feed_reader.yml +0 -12
  31. data/spec/fixtures/client/library.yml +91 -37
  32. data/spec/fixtures/client/mediaplayer.yml +30 -0
  33. data/spec/fixtures/client/mobile_app.yml +498 -45
  34. data/spec/fixtures/client/pim.yml +60 -0
  35. data/spec/fixtures/detector/bots.yml +1189 -568
  36. data/spec/fixtures/detector/camera.yml +12 -26
  37. data/spec/fixtures/detector/car_browser.yml +151 -15
  38. data/spec/fixtures/detector/console.yml +70 -48
  39. data/spec/fixtures/detector/desktop.yml +2041 -916
  40. data/spec/fixtures/detector/feature_phone.yml +895 -189
  41. data/spec/fixtures/detector/feed_reader.yml +50 -77
  42. data/spec/fixtures/detector/mediaplayer.yml +79 -26
  43. data/spec/fixtures/detector/mobile_apps.yml +726 -72
  44. data/spec/fixtures/detector/peripheral.yml +271 -0
  45. data/spec/fixtures/detector/phablet.yml +3635 -1596
  46. data/spec/fixtures/detector/portable_media_player.yml +355 -46
  47. data/spec/fixtures/detector/smart_display.yml +183 -9
  48. data/spec/fixtures/detector/smart_speaker.yml +13 -8
  49. data/spec/fixtures/detector/smartphone-1.yml +4002 -4286
  50. data/spec/fixtures/detector/smartphone-10.yml +3771 -4763
  51. data/spec/fixtures/detector/smartphone-11.yml +3615 -4692
  52. data/spec/fixtures/detector/smartphone-12.yml +3856 -4764
  53. data/spec/fixtures/detector/smartphone-13.yml +4213 -4713
  54. data/spec/fixtures/detector/smartphone-14.yml +4039 -4497
  55. data/spec/fixtures/detector/smartphone-15.yml +5642 -2956
  56. data/spec/fixtures/detector/smartphone-16.yml +4739 -5082
  57. data/spec/fixtures/detector/smartphone-17.yml +4832 -4275
  58. data/spec/fixtures/detector/smartphone-18.yml +9806 -0
  59. data/spec/fixtures/detector/smartphone-19.yml +9965 -0
  60. data/spec/fixtures/detector/smartphone-2.yml +4842 -2589
  61. data/spec/fixtures/detector/smartphone-20.yml +9710 -0
  62. data/spec/fixtures/detector/smartphone-21.yml +8693 -0
  63. data/spec/fixtures/detector/smartphone-22.yml +10178 -0
  64. data/spec/fixtures/detector/smartphone-23.yml +9453 -0
  65. data/spec/fixtures/detector/smartphone-24.yml +9843 -0
  66. data/spec/fixtures/detector/smartphone-25.yml +9703 -0
  67. data/spec/fixtures/detector/smartphone-26.yml +10007 -0
  68. data/spec/fixtures/detector/smartphone-27.yml +4927 -0
  69. data/spec/fixtures/detector/smartphone-3.yml +4387 -4427
  70. data/spec/fixtures/detector/smartphone-4.yml +3597 -4582
  71. data/spec/fixtures/detector/smartphone-5.yml +4066 -5022
  72. data/spec/fixtures/detector/smartphone-6.yml +3455 -4621
  73. data/spec/fixtures/detector/smartphone-7.yml +3574 -4574
  74. data/spec/fixtures/detector/smartphone-8.yml +4617 -4704
  75. data/spec/fixtures/detector/smartphone-9.yml +4080 -5035
  76. data/spec/fixtures/detector/smartphone.yml +3244 -4234
  77. data/spec/fixtures/detector/tablet-1.yml +4652 -4492
  78. data/spec/fixtures/detector/tablet-2.yml +3515 -4434
  79. data/spec/fixtures/detector/tablet-3.yml +3418 -4351
  80. data/spec/fixtures/detector/tablet-4.yml +5149 -3200
  81. data/spec/fixtures/detector/tablet-5.yml +9273 -0
  82. data/spec/fixtures/detector/tablet-6.yml +4588 -0
  83. data/spec/fixtures/detector/tablet.yml +1621 -2613
  84. data/spec/fixtures/detector/tv-1.yml +2501 -0
  85. data/spec/fixtures/detector/tv.yml +7826 -3114
  86. data/spec/fixtures/detector/unknown.yml +370 -531
  87. data/spec/fixtures/detector/wearable.yml +863 -9
  88. data/spec/fixtures/parser/oss.yml +1350 -21
  89. data/spec/fixtures/parser/vendorfragments.yml +53 -53
  90. metadata +35 -5
@@ -19,6 +19,11 @@
19
19
  name: 'bPod'
20
20
  version: ''
21
21
 
22
+ # Facebook Messenger Lite
23
+ - regex: 'MessengerLiteForiOS.(?:FBAV)(?:[ /]([\d\.]+))?'
24
+ name: 'Facebook Messenger Lite'
25
+ version: '$1'
26
+
22
27
  # Facebook Messenger
23
28
  - regex: '(?:MessengerForiOS|MESSENGER).(?:FBAV)(?:[ /]([\d\.]+))?'
24
29
  name: 'Facebook Messenger'
@@ -53,9 +58,12 @@
53
58
  version: ''
54
59
 
55
60
  # WeChat
56
- - regex: 'MicroMessenger/([^ ]+)'
61
+ - regex: 'MicroMessenger/([^; ]+)'
57
62
  name: 'WeChat'
58
63
  version: '$1'
64
+ - regex: 'WeChatShareExtensionNew/([\d\.]+)'
65
+ name: 'WeChat Share Extension'
66
+ version: '$1'
59
67
 
60
68
  # DingTalk
61
69
  - regex: 'DingTalk/([0-9\.]+)'
@@ -68,7 +76,7 @@
68
76
  version: '$1'
69
77
 
70
78
  # Pinterest
71
- - regex: 'Pinterest(?:/([\d\.]+))?'
79
+ - regex: 'Pinterest(?: for (?:Android|iOS))?(?:/([\d\.]+))?'
72
80
  name: 'Pinterest'
73
81
  version: '$1'
74
82
 
@@ -82,6 +90,16 @@
82
90
  name: 'YouTube'
83
91
  version: '$1'
84
92
 
93
+ # Netflix (https://play.google.com/store/apps/details?id=com.netflix.mediaclient)
94
+ - regex: 'com.netflix.mediaclient(?:/(\d+\.[\d\.]+))?'
95
+ name: 'Netflix'
96
+ version: '$1'
97
+
98
+ # Downcast (www.downcastapp.com | https://apps.apple.com/us/app/downcast/id393858566)
99
+ - regex: 'Downcast/(\d+\.[\d\.]+)?(?:.+(?:!Mac)|$)'
100
+ name: 'Downcast'
101
+ version: '$1'
102
+
85
103
  # AFNetworking generic
86
104
  - regex: '([^/]+)/(\d+(?:\.\d+)+) \((?:iPhone|iPad); iOS [0-9\.]+; Scale/[0-9\.]+\)'
87
105
  name: '$1'
@@ -101,148 +119,131 @@
101
119
  - regex: 'Instacast(?:HD)?/(\d\.[\d\.abc]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
102
120
  name: 'Instacast'
103
121
  version: '$1'
104
- -
105
- regex: 'Podcasts/([\d\.]+)'
122
+ - regex: 'Podcasts/([\d\.]+)'
106
123
  name: 'Podcasts'
107
124
  version: '$1'
108
- -
109
- regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
125
+ - regex: 'Pocket Casts(?:, (?:Android|iOS) v([\d\.]+))?'
110
126
  name: 'Pocket Casts'
111
127
  version: '$1'
112
- -
113
- regex: 'Podcat/([\d\.]+)'
128
+ - regex: 'Podcat/([\d\.]+)'
114
129
  name: 'Podcat'
115
130
  version: '$1'
116
-
117
- -
118
- regex: 'BeyondPod'
131
+ - regex: 'BeyondPod'
119
132
  name: 'BeyondPod'
120
133
  version:
121
- -
122
- regex: 'AntennaPod/?([\d\.]+)?'
134
+ - regex: 'AntennaPod/?([\d\.]+)?'
123
135
  name: 'AntennaPod'
124
136
  version: '$1'
125
- -
126
- regex: 'Overcast/([\d\.]+)'
137
+ - regex: 'Overcast/([\d\.]+)'
127
138
  name: 'Overcast'
128
139
  version: '$1'
129
- -
130
- regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?'
140
+ - regex: '(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\d\.]+)?'
131
141
  name: 'CastBox'
132
142
  version: '$1'
133
- -
134
- regex: 'Player FM'
143
+ - regex: 'Player FM'
135
144
  name: 'Player FM'
136
145
  version: ''
137
- -
138
- regex: 'Podkicker(?: Pro)?/([\d\.]+)'
139
- name: 'Podkicker'
140
- version: '$1'
141
- -
142
- regex: 'PodcastRepublic/([\d\.]+)'
146
+ - regex: 'Podkicker( (?:Pro|Classic))?/([\d\.]+)'
147
+ name: 'Podkicker$1'
148
+ version: '$2'
149
+ - regex: 'PodcastRepublic/([\d\.]+)'
143
150
  name: 'Podcast Republic'
144
151
  version: '$1'
145
- -
146
- regex: 'Castro/(\d+)'
152
+ - regex: 'Castro/(\d+)'
147
153
  name: 'Castro'
148
154
  version: '$1'
149
- -
150
- regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
155
+ - regex: 'Castro 2 ([\d\.]+)/[\d]+ Like iTunes'
151
156
  name: 'Castro 2'
152
157
  version: '$1'
153
- -
154
- regex: 'Castro 2'
158
+ - regex: 'Castro 2'
155
159
  name: 'Castro 2'
156
160
  version: ''
157
- -
158
- regex: 'DoggCatcher'
161
+ - regex: 'DoggCatcher'
159
162
  name: 'DoggCatcher'
160
163
  version:
161
- -
162
- regex: 'PodcastAddict/v([\d]+)'
164
+ - regex: 'PodcastAddict/v([\d]+)'
163
165
  name: 'Podcast & Radio Addict'
164
166
  version: '$1'
165
- -
166
- regex: 'Podcat/([\d]+) CFNetwork/([\d\.]+) Darwin/([\d\.]+)'
167
+ - regex: 'Podcat(?:%202)?/([\d]+) CFNetwork'
167
168
  name: 'Podcat'
168
169
  version: '$1'
169
- -
170
- regex: 'i[cC]atcher[^\d]+([\d\.]+)'
170
+ - regex: 'iCatcher[^\d]+([\d\.]+)'
171
171
  name: 'iCatcher'
172
172
  version: '$1'
173
- -
174
- regex: 'YelpApp/([\d\.]+)'
173
+ - regex: 'YelpApp/([\d\.]+)'
175
174
  name: 'Yelp Mobile'
176
175
  version: '$1'
177
- -
178
- regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)'
176
+ - regex: 'jp.co.yahoo.android.yjtop/([\d\.]+)'
179
177
  name: 'Yahoo! Japan'
180
178
  version: '$1'
181
- -
182
- regex: 'RSSRadio/([\d]+)?'
179
+ - regex: 'RSSRadio/([\d]+)?'
183
180
  name: 'RSSRadio'
184
181
  version: '$1'
185
- -
186
- regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
182
+ - regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
187
183
  name: 'SogouSearch App'
188
184
  version: '$1'
189
- -
190
- regex: 'NewsArticle/([\d\.]+)?'
185
+ - regex: 'NewsArticle/([\d\.]+)?'
191
186
  name: 'NewsArticle App'
192
187
  version: '$1'
193
- -
194
- regex: 'tieba/([\d\.]+)?'
188
+ - regex: 'tieba/([\d\.]+)?'
195
189
  name: 'tieba'
196
190
  version: '$1'
197
- -
198
- regex: 'com\.douban\.group/([\d\.]+)?'
191
+ - regex: 'com\.douban\.group/([\d\.]+)?'
199
192
  name: 'douban App'
200
193
  version: '$1'
201
- -
202
- regex: 'BingWeb/([\d\.]+)?'
194
+ - regex: 'BingWeb/([\d\.]+)?'
203
195
  name: 'BingWebApp'
204
196
  version: '$1'
205
- -
206
- regex: 'GSA/([\d\.]+)?'
197
+ - regex: '(?:com.google.GoogleMobile|GSA)/([\d\.]+)?'
207
198
  name: 'Google Search App'
208
199
  version: '$1'
209
- -
210
- regex: 'Flipboard/([\d\.]+)?'
200
+ - regex: 'Flipboard/([\d\.]+)?'
211
201
  name: 'Flipboard App'
212
202
  version: '$1'
213
- -
214
- regex: 'Instagram[ /]([\d\.]+)?'
203
+ - regex: 'Instagram[ /]([\d\.]+)?'
215
204
  name: 'Instagram App'
216
205
  version: '$1'
217
- -
218
- regex: 'baiduboxapp/([\d\.]+)?'
206
+ - regex: 'baiduboxapp/([\d\.]+)?'
219
207
  name: 'Baidu Box App'
220
208
  version: '$1'
221
- -
222
- regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?'
209
+ - regex: 'Crosswalk(?!.*(?:Streamy|QwantMobile))/([\d\.]+)?'
223
210
  name: 'CrosswalkApp'
224
211
  version: '$1'
225
- -
226
- regex: 'Twitter for iPhone[/]?([\d\.]+)?'
212
+ - regex: 'Twitter for iPhone[/]?([\d\.]+)?'
227
213
  name: 'Twitter'
228
214
  version: '$1'
229
- -
230
- regex: 'Twitter/([\d\.]+)'
215
+ - regex: 'Twitter/([\d\.]+)'
231
216
  name: 'Twitter'
232
217
  version: '$1'
233
- -
234
- regex: 'TwitterAndroid[/]?([\d\.]+)?'
218
+ - regex: 'TwitterAndroid[/]?([\d\.]+)?'
235
219
  name: 'Twitter'
236
220
  version: '$1'
237
-
238
- -
239
- regex: 'TopBuzz/([\d\.]+)'
221
+ # Pocket Casts (https://pocketcasts.com)
222
+ - regex: '^Pocket Casts'
223
+ name: 'Pocket Casts'
224
+ version: ''
225
+ # Gaana (https://gaana.com)
226
+ - regex: '^GaanaAndroid-([\d\.]+)'
227
+ name: 'Gaana'
228
+ version: '$1'
229
+ - regex: 'TopBuzz/([\d\.]+)'
240
230
  name: 'TopBuzz'
241
231
  version: '$1'
242
- -
243
- regex: 'Snapchat/([\d\.]+)'
232
+ - regex: 'Snapchat/([\d\.]+)'
244
233
  name: 'Snapchat'
245
234
  version: '$1'
235
+ - regex: 'AhaRadio2/([\d\.]+)'
236
+ name: 'Aha Radio 2'
237
+ version: '$1'
238
+ # Unibox (https://apps.apple.com/app/id933879046)
239
+ - regex: 'Unibox/([\d\.]+)'
240
+ name: 'Unibox'
241
+ version: ''
242
+
243
+ # Strimio (https://www.strimio.com/)
244
+ - regex: 'strimio(?:-desktop)/(\d+\.(?:[\.\d]+))?'
245
+ name: 'Strimio'
246
+ version: '$1'
246
247
 
247
248
  # UnityPlayer
248
249
  - regex: 'UnityPlayer/([\d\.]+)'
@@ -272,6 +273,375 @@
272
273
  name: 'Siri'
273
274
  version: '1.0'
274
275
 
275
- - regex: 'LinkedIn/([\d\.]+)'
276
+ - regex: 'LinkedIn(?:App)?(?:/([\d\.]+))?'
276
277
  name: 'LinkedIn'
277
278
  version: '$1'
279
+
280
+ # https://apps.apple.com/ru/app/instapaper/id288545208
281
+ - regex: 'Instapaper/([\d\.]+)'
282
+ name: 'Instapaper'
283
+ version: '$1'
284
+
285
+ # https://apps.apple.com/us/app/keeper-password-manager/id287170072
286
+ - regex: 'Keeper/([\d\.]+)'
287
+ name: 'Keeper Password Manager'
288
+ version: '$1'
289
+
290
+ # https://apps.apple.com/us/app/skyeng-teachers/id1483049537
291
+ - regex: 'Skyeng Teachers/([\d\.]+)'
292
+ name: 'Skyeng Teachers'
293
+ version: '$1'
294
+
295
+ - regex: 'Kik/([\d\.]+) \(Android'
296
+ name: 'Kik'
297
+ version: '$1'
298
+
299
+ - regex: 'Procast/?([\d\.]+)?'
300
+ name: 'Procast'
301
+ version: '$1'
302
+
303
+ # DeviantArt (https://apps.apple.com/us/app/deviantart/id925219396)
304
+ - regex: 'DeviantArt/([\d\.]+)'
305
+ name: 'DeviantArt'
306
+ version: ''
307
+
308
+ # Discord (https://apps.apple.com/us/app/discord-talk-chat-hang-out/id985746746)
309
+ - regex: 'Discord/([\d\.]+)'
310
+ name: 'Discord'
311
+ version: ''
312
+
313
+ # Covenant Eyes (https://apps.apple.com/us/app/covenant-eyes/id335318146)
314
+ - regex: 'Covenant%20Eyes/([\d\.]+)'
315
+ name: 'Covenant Eyes'
316
+ version: '$1'
317
+
318
+ # HP Smart (https://apps.apple.com/us/app/hp-smart/id469284907)
319
+ - regex: 'HP%20Smart/([\d\.]+)'
320
+ name: 'HP Smart'
321
+ version: ''
322
+
323
+ # Bitsboard (https://apps.apple.com/us/app/bitsboard-flashcards-games/id516842210)
324
+ - regex: 'Bitsboard/([\d\.]+)'
325
+ name: 'Bitsboard'
326
+ version: '$1'
327
+
328
+ # BetBull (https://apps.apple.com/us/app/betbull-sport-tips-casino/id1032680895)
329
+ - regex: 'Betbull/([\d\.]+)'
330
+ name: 'BetBull'
331
+ version: ''
332
+
333
+ # U-Cursos (https://apps.apple.com/us/app/u-cursos/id834515435)
334
+ - regex: 'U-Cursos/([\d\.]+)'
335
+ name: 'U-Cursos'
336
+ version: ''
337
+
338
+ # https://apps.apple.com/mt/app/1password-password-manager/id568903335
339
+ - regex: '1PasswordThumbs/([\d\.]+)'
340
+ name: '1Password'
341
+ version: '$1'
342
+
343
+ - regex: '(?:Microsoft Office )?(Access|Excel|OneDrive for Business|OneNote|PowerPoint|Project|Publisher|Visio|Word)[ /]([\d\.]+)'
344
+ name: 'Microsoft Office $1'
345
+ version: '$2'
346
+
347
+ # https://apps.apple.com/us/app/microsoft-onedrive/id477537958
348
+ - regex: 'OneDriveiOSApp/([\d\.]+)'
349
+ name: 'Microsoft OneDrive'
350
+ version: '$1'
351
+
352
+ - regex: 'Microsoft Office Mobile/([\d\.]+)'
353
+ name: 'Microsoft Office Mobile'
354
+ version: '$1'
355
+
356
+ - regex: 'OC/([\d\.]+) \(Skype for Business\)'
357
+ name: 'Skype for Business'
358
+ version: '$1'
359
+
360
+ # TikTok (https://apps.apple.com/app/id835599320 | https://play.google.com/store/apps/details?id=com.zhiliaoapp.musically)
361
+ - regex: '(?:TikTok[/ ]|musical_ly_|AppName/musical_ly app_version/)(\d+\.(?:[\.\d]+))?'
362
+ name: 'TikTok'
363
+ version: '$1'
364
+
365
+ # https://apps.apple.com/app/id393499958
366
+ - regex: 'NAVER/(\d+[\.\d]+) CFNetwork'
367
+ name: 'Naver'
368
+ version: '$1'
369
+
370
+ # https://apps.apple.com/app/id1026349850
371
+ - regex: 'Copied/(\d+[\.\d]+) CFNetwork'
372
+ name: 'Copied'
373
+ version: ''
374
+
375
+ # https://apps.apple.com/app/id448639966
376
+ - regex: 'Pic%20Collage/(\d+[\.\d]+) CFNetwork'
377
+ name: 'Pic Collage'
378
+ version: '$1'
379
+
380
+ # https://apps.apple.com/app/id506003812
381
+ - regex: 'Papers/(\d+[\.\d]+) CFNetwork'
382
+ name: 'Papers'
383
+ version: '$1'
384
+
385
+ # https://apps.apple.com/app/id331787573
386
+ - regex: 'RoboForm/(\d+[\.\d]+) CFNetwork'
387
+ name: 'RoboForm'
388
+ version: ''
389
+
390
+ # https://apps.apple.com/app/id618783545
391
+ - regex: 'Slack/(\d+[\.\d]+) CFNetwork'
392
+ name: 'Slack'
393
+ version: ''
394
+
395
+ # https://apps.apple.com/us/app/id362057947
396
+ - regex: 'KAKAOTALK (\d+\.(?:[\.\d]+))?'
397
+ name: 'KakaoTalk'
398
+ version: '$1'
399
+
400
+ # https://apps.apple.com/us/app/shopee-t%E1%BA%BFt-sale-27-01/id959841449
401
+ - regex: 'ShopeeVN/([\d\.]+)'
402
+ name: 'Shopee'
403
+ version: '$1'
404
+
405
+ # https://apps.apple.com/us/app/sport1/id1185932089
406
+ - regex: 'SPORT1/([\d\.]+)'
407
+ name: 'SPORT1'
408
+ version: ''
409
+
410
+ # https://apps.apple.com/us/app/clovia-lingerie-shopping-app/id1243996857
411
+ - regex: 'Clovia/([\d\.]+)'
412
+ name: 'Clovia'
413
+ version: '$1'
414
+
415
+ # https://apps.apple.com/us/app/showme-interactive-whiteboard/id445066279
416
+ - regex: 'ShowMe/([\d\.]+)'
417
+ name: 'ShowMe'
418
+ version: '$1'
419
+
420
+ # https://apps.apple.com/us/app/wattpad-read-write-stories/id306310789
421
+ - regex: 'Wattpad/([\d\.]+)'
422
+ name: 'Wattpad'
423
+ version: '$1'
424
+
425
+ # https://apps.apple.com/us/app/the-wall-street-journal/id364387007
426
+ - regex: 'WSJ/([\d\.]+)'
427
+ name: 'The Wall Street Journal'
428
+ version: ''
429
+
430
+ # https://apps.apple.com/us/app/wh-question-cards-pro-who-what-when-where-why/id544870563
431
+ - regex: 'WH%20Questions/([\d\.]+)'
432
+ name: 'WH Questions'
433
+ version: '$1'
434
+
435
+ # https://apps.apple.com/us/app/whisper-share-express-meet/id506141837
436
+ - regex: 'whisper/([\d\.]+)'
437
+ name: 'Whisper'
438
+ version: ''
439
+
440
+ # https://apps.apple.com/us/app/opal-travel/id941006607
441
+ - regex: 'Opal/([\d\.]+)'
442
+ name: 'Opal Travel'
443
+ version: '$1'
444
+
445
+ # https://apps.apple.com/us/app/zalo/id579523206
446
+ - regex: 'Zalo/([\d\.]+)'
447
+ name: 'Zalo'
448
+ version: '$1'
449
+
450
+ # https://apps.apple.com/us/app/%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81/id1050704155
451
+ - regex: 'Yandex/([\d\.]+)'
452
+ name: 'Yandex'
453
+ version: ''
454
+
455
+ - regex: 'Zoho%20Chat/([\d\.]+)'
456
+ name: 'Zoho Chat'
457
+ version: '$1'
458
+
459
+ # Thunder (https://xl11.xunlei.com/)
460
+ - regex: 'Thunder/(\d+[\.\d]+)'
461
+ name: 'Thunder'
462
+ version: '$1'
463
+
464
+ # CGN (https://www.cgn.it/)
465
+ - regex: 'CGNBrowser/(\d+[\.\d]+)'
466
+ name: 'CGN'
467
+ version: '$1'
468
+
469
+ # Podbean (http://podbean.com | https://play.google.com/store/apps/details?id=com.podbean.app.podcast)
470
+ - regex: 'Podbean/.+App (\d+[\.\d]+)'
471
+ name: 'Podbean'
472
+ version: '$1'
473
+
474
+ # Alexa Media Player
475
+ - regex: 'AlexaMediaPlayer/(\d+[\.\d]+)'
476
+ name: 'Alexa Media Player'
477
+ version: '$1'
478
+
479
+ # TuneIn Radio Pro
480
+ - regex: 'TuneIn Radio Pro(?:[^/]+)?/(\d+[\.\d]+)'
481
+ name: 'TuneIn Radio Pro'
482
+ version: '$1'
483
+ - regex: 'TuneIn(?: Radio(?:[^/]+)?)?/(\d+[\.\d]+)'
484
+ name: 'TuneIn Radio'
485
+ version: '$1'
486
+
487
+ # Podcaster
488
+ - regex: 'Podcaster/(\d+[\.\d]+)'
489
+ name: 'Podcaster'
490
+ version: '$1'
491
+
492
+ # DevCasts (https://apps.apple.com/app/id1481596184)
493
+ - regex: 'devcasts/(\d+[\.\d]+)'
494
+ name: 'DevCasts'
495
+ version: '$1'
496
+
497
+ # Swoot
498
+ - regex: 'Swoot/(\d+[\.\d]+)'
499
+ name: 'Swoot'
500
+ version: '$1'
501
+
502
+ # RadioPublic (https://play.google.com/store/apps/details?id=com.radiopublic.android)
503
+ - regex: 'RadioPublic/android-(\d+[\.\d]+)'
504
+ name: 'RadioPublic'
505
+ version: '$1'
506
+
507
+ # Podimo (https://play.google.com/store/apps/details?id=com.podimo)
508
+ - regex: 'Podimo/(\d+[\.\d]+)'
509
+ name: 'Podimo'
510
+ version: '$1'
511
+
512
+ # Evolve Podcast (https://apps.apple.com/us/app/id1199070742)
513
+ - regex: 'com.evolve.podcast/(\d+[\.\d]+)'
514
+ name: 'Evolve Podcast'
515
+ version: '$1'
516
+
517
+ - regex: ' Rocket.Chat\+?/(\d+[\.\d]+)'
518
+ name: 'Rocket Chat'
519
+ version: '$1'
520
+
521
+ # Pandora
522
+ - regex: '^Pandora Audio.+Android'
523
+ name: 'Pandora'
524
+ version: ''
525
+
526
+ # NPR One https://play.google.com/store/apps/details?id=org.npr.one
527
+ - regex: '^NPROneAndroid'
528
+ name: 'NPR One'
529
+ version: ''
530
+
531
+ # Wirtschafts Woche Nachrichte https://apps.apple.com/de/app/wirtschaftswoche-nachrichten/id1339187646
532
+ - regex: '^WirtschaftsWoche-iOS-(\d+[\.\d]+)'
533
+ name: 'Wirtschafts Woche'
534
+ version: '$1'
535
+
536
+ # Outlook https://apps.apple.com/ru/app/microsoft-outlook/id951937596
537
+ - regex: '^Outlook-iOS/.+\((\d+[\.\d]+)\)$'
538
+ name: 'Microsoft Outlook'
539
+ version: '$1'
540
+
541
+ - regex: '^TVirl/(\d+[\.\d]+)'
542
+ name: 'TVirl'
543
+ version: '$1'
544
+
545
+ # ChMate https://play.google.com/store/apps/details?id=jp.co.airfront.android.a2chMate
546
+ - regex: '2?chMate/(\d+[\.\d]+)'
547
+ name: 'ChMate'
548
+ version: '$1'
549
+
550
+ # 2tch https://apps.apple.com/jp/app/2tch/id305982914
551
+ - regex: '2tch/(\d+[\.\d]+)'
552
+ name: '2tch'
553
+ version: '$1'
554
+
555
+ # Ciisaa https://play.google.com/store/apps/details?id=com.gmail.aosoan.ciisaa
556
+ - regex: 'Ciisaa/(\d+[\.\d]+)'
557
+ name: 'Ciisaa'
558
+ version: '$1'
559
+
560
+ # BB2C https://itunes.apple.com/us/app/bb2c/id298820042?mt=8
561
+ - regex: 'BB2C (\d+[\.\d]+)'
562
+ name: 'BB2C'
563
+ version: '$1'
564
+
565
+ # twinkle https://itunes.apple.com/app/twinkle/id463142843
566
+ - regex: 'twinkle/(\d+[\.\d]+)'
567
+ name: 'twinkle'
568
+ version: '$1'
569
+
570
+ # JaneStyle https://apps.apple.com/app/id1157926535
571
+ - regex: 'JaneStyle_iOS/(\d+[\.\d]+)'
572
+ name: 'JaneStyle'
573
+ version: '$1'
574
+
575
+ # Binance https://play.google.com/store/apps/details?id=com.binance.dev
576
+ - regex: 'BNC/.+\(Android (\d+[\.\d]+)\)'
577
+ name: 'Binance'
578
+ version: '$1'
579
+
580
+ # My World https://apps.apple.com/app/id598556821
581
+ - regex: 'ru\.mail\.my/(\d+[\.\d]+)'
582
+ name: 'My World'
583
+ version: '$1'
584
+
585
+ # Odnoklassniki https://play.google.com/store/apps/details?id=ru.ok.android https://apps.apple.com/app/id398465290
586
+ - regex: 'OK(?:Android|iOS)/([\d\.]+)'
587
+ name: 'Odnoklassniki'
588
+ version: '$1'
589
+
590
+ # YakYak https://github.com/yakyak/yakyak
591
+ - regex: 'yakyak/(\d+[\.\d]+)'
592
+ name: 'YakYak'
593
+ version: '$1'
594
+
595
+ # Microsoft Teams (https://www.microsoft.com/en/microsoft-teams/group-chat-software)
596
+ - regex: 'Teams/(\d+[\.\d]+)'
597
+ name: 'Teams'
598
+ version: '$1'
599
+
600
+ # Streamlabs OBS (https://streamlabs.com/)
601
+ - regex: 'StreamlabsOBS/(\d+[\.\d]+)'
602
+ name: 'Streamlabs OBS'
603
+ version: '$1'
604
+
605
+ # Blitz (https://blitz.gg/)
606
+ - regex: 'Blitz/([\d\.]+)'
607
+ name: 'Blitz'
608
+ version: '$1'
609
+
610
+ # OfferUp (https://play.google.com/store/apps/details?id=com.offerup)
611
+ - regex: 'OfferUp/([\d\.]+)'
612
+ name: 'OfferUp'
613
+ version: '$1'
614
+
615
+ # Vuhuv (https://play.google.com/store/apps/details?id=com.vuhuv)
616
+ - regex: 'Vuhuv/([\d\.]+)'
617
+ name: 'Vuhuv'
618
+ version: '$1'
619
+
620
+ - regex: '.+/(?:gfibertv|gftv200)-([\d]+)-'
621
+ name: 'Google Fiber TV'
622
+ version: '$1'
623
+
624
+ # QuickCast (https://play.google.com/store/apps/details?id=com.wukongtv.wkcast.intl)
625
+ - regex: 'QuickCast$'
626
+ name: 'QuickCast'
627
+ version: ''
628
+
629
+ # AliExpress (https://play.google.com/store/apps/details?id=com.alibaba.aliexpresshd)
630
+ - regex: 'Aliexpress(?:Android)?/([\d\.]+)'
631
+ name: 'AliExpress'
632
+ version: '$1'
633
+
634
+ # Blue Proxy (https://play.google.com/store/apps/details?id=com.udicorn.proxy)
635
+ - regex: 'Blue Proxy/([\d\.]+)'
636
+ name: 'Blue Proxy'
637
+ version: '$1'
638
+
639
+ # https://www.n-tv.de/
640
+ - regex: 'ntvmobil/'
641
+ name: 'NTV Mobil'
642
+ version: ''
643
+
644
+ # COAF SMART Citizen (https://apps.apple.com/app/id1478339047)
645
+ - regex: 'COAF%20SMART%20Citizen/'
646
+ name: 'COAF SMART Citizen'
647
+ version: ''
@@ -48,4 +48,52 @@
48
48
  # SeaMonkey
49
49
  - regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
50
50
  name: 'SeaMonkey'
51
- version: '$1'
51
+ version: '$1'
52
+
53
+ # Live5ch
54
+ - regex: 'Live5ch/(\d+[\.\d]+)'
55
+ name: 'Live5ch'
56
+ version: '$1'
57
+
58
+ - regex: 'JaneView/'
59
+ name: 'JaneView'
60
+ version: ''
61
+
62
+ - regex: 'BathyScaphe/'
63
+ name: 'BathyScaphe'
64
+ version: ''
65
+
66
+ # Raindrop.io (https://raindrop.io/)
67
+ - regex: 'Raindrop.io/(\d+[\.\d]+)'
68
+ name: 'Raindrop.io'
69
+ version: '$1'
70
+
71
+ # Franz (https://meetfranz.com/)
72
+ - regex: 'Franz/(\d+[\.\d]+)'
73
+ name: 'Franz'
74
+ version: '$1'
75
+
76
+ # Mailspring (https://www.electronjs.org/apps/mailspring)
77
+ - regex: 'Mailspring/(\d+[\.\d]+)'
78
+ name: 'Mailspring'
79
+ version: '$1'
80
+
81
+ # Notion (https://www.notion.so/)
82
+ - regex: 'Notion/(\d+[\.\d]+)'
83
+ name: 'Notion'
84
+ version: '$1'
85
+
86
+ # Basecamp (https://basecamp.com/)
87
+ - regex: 'Basecamp[0-9]/?(\d+[\.\d]+)'
88
+ name: 'Basecamp'
89
+ version: '$1'
90
+
91
+ # Evernote (https://evernote.com/)
92
+ - regex: 'Evernote/?(\d+[\.\d]+)'
93
+ name: 'Evernote'
94
+ version: '$1'
95
+
96
+ # Rambox Pro (https://rambox.app/)
97
+ - regex: 'ramboxpro/(\d+\.[\.\d]+)?'
98
+ name: 'Rambox Pro'
99
+ version: '$1'
@@ -17,12 +17,12 @@ Samsung:
17
17
  device: 'camera'
18
18
  models:
19
19
  - regex: 'EK-GN120'
20
- model: 'GALAXY NX'
20
+ model: 'Galaxy NX'
21
21
  - regex: 'EK-GC100'
22
- model: 'GALAXY Camera'
22
+ model: 'Galaxy Camera'
23
23
  - regex: 'EK-GC110'
24
- model: 'GALAXY Camera WiFi only'
24
+ model: 'Galaxy Camera WiFi only'
25
25
  - regex: 'EK-GC200'
26
- model: 'GALAXY Camera 2'
26
+ model: 'Galaxy Camera 2'
27
27
  - regex: 'EK-GC([0-9]{3})'
28
- model: 'GALAXY Camera $1'
28
+ model: 'Galaxy Camera $1'