device_detector 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
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'