podcast_agent_parser 0.1.2 → 0.1.7

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/vendor/opawg/user-agents.json +1054 -116
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b28003b8fc629eea208af74eee3378564f8699c9afc5dcc8fb51b884308632c
4
- data.tar.gz: f3563d885d6f48685264ec742856d5732f2185a46c424c85d8a0ab4f86ba63a5
3
+ metadata.gz: 5cea872ce4cd7567e234e9fca16c2a6222e689357c5f493392c9ba7f9356ffe6
4
+ data.tar.gz: 53ef3ea8a8cf277b3046e8e7480981a4d0171149597d660a4560ad7ea4452363
5
5
  SHA512:
6
- metadata.gz: c121985b06f2366fe6d9cb4d789052ab3dd1b621f5f3628ee6d0f14b433b5de6a6da20cfe948d0cbc9920c7b465f0ce686a1c20d9fb3ffe9a1634f1ffff51a2e
7
- data.tar.gz: 82c38ab8f39d8c4b24b9d7304972ee933b8476fb50c0228d2900fac3e1b3b0096cb17522afec8afe8583ef1d7ee7b521dac0bc8cb7bf3c7215c098240ca5e4d8
6
+ metadata.gz: a381e3a072e21d0eb43b40a9b1d2eab84c35927d207fc004bc444ddf63295cf5dbb95f900899c650cf31b1e66f17b9d8cd0229b5ca165d7293ce6043bcc0b6ac
7
+ data.tar.gz: 9646030599c8aab63bd7846015b9a4bba19db61cb115154a32301252a5d93a0f10266724a10970d4b3e9fc49c83c42734700f89b9b041e2f80c4c8d842c65518
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2019 Dan Benjamin
1
+ Copyright 2020 Dan Benjamin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -5,7 +5,7 @@ The Podcast Agent Parser is a user agent parser written in Ruby, using [regex pa
5
5
  Installation:
6
6
 
7
7
  ```
8
- gem 'podcast_agent_parser', '~> 0.1.1'
8
+ gem 'podcast_agent_parser', '~> 0.1.7'
9
9
  ```
10
10
 
11
11
  Then, look up your user agents like so:
@@ -17,15 +17,33 @@
17
17
  },
18
18
  {
19
19
  "user_agents": [
20
- "^AdsBot-Google"
20
+ "AdsBot-Google"
21
21
  ],
22
- "bot": true
22
+ "app": "Google AdsBot",
23
+ "bot": true,
24
+ "info_url": "http://www.google.com/adsbot.html"
23
25
  },
24
26
  {
25
27
  "user_agents": [
26
- "AhrefsBot"
28
+ "AhrefsBot\/"
27
29
  ],
28
- "bot": true
30
+ "app": "AhrefsBot",
31
+ "bot": true,
32
+ "info_url": "http://ahrefs.com/robot/",
33
+ "examples": [
34
+ "Mozilla/5.0 (compatible; AhrefsBot/7.0; http://ahrefs.com/robot/)"
35
+ ]
36
+ },
37
+ {
38
+ "user_agents": [
39
+ "^Airr/"
40
+ ],
41
+ "app": "Airr",
42
+ "info_url": "https://www.airr.io/",
43
+ "examples": [
44
+ "Airr/3787 CFNetwork/1128.0.1 Darwin/19.6.0",
45
+ "Airr/4070 CFNetwork/1206 Darwin/20.1.0"
46
+ ]
29
47
  },
30
48
  {
31
49
  "user_agents": [
@@ -42,11 +60,50 @@
42
60
  "user_agents": [
43
61
  "^AmazonNewsContentService"
44
62
  ],
45
- "app": "Amazon Alexa Flash Briefing caching service",
63
+ "app": "Alexa Flash Briefing cache",
46
64
  "description": "A service which downloads, caches and normalises audio for the Flash Briefing service on Alexa-enabled devices",
47
65
  "os": "alexa",
48
66
  "info_url": "https://developer.amazon.com/docs/flashbriefing/flash-briefing-skill-api-feed-reference.html#performance-requirements",
49
- "developer_notes": "Stats are available within the Alexa skills dashboard",
67
+ "developer_notes": "Stats are available within the Alexa skills dashboard.",
68
+ "svg": "amazon.svg",
69
+ "bot": true
70
+ },
71
+ {
72
+ "user_agents": [
73
+ "^AmazonMusic.*iPhone"
74
+ ],
75
+ "examples": [
76
+ "AmazonMusic/9.15.2 iPhone7,2 CFNetwork/978.0.7 Darwin/18.7.0",
77
+ "AmazonMusic/9.16.1 iPhone9,1 CFNetwork/1128.0.1 Darwin/19.6.0",
78
+ "AmazonMusic/9.16.0 iPhone12,1 CFNetwork/1128.0.1 Darwin/19.6.0"
79
+ ],
80
+ "app": "Amazon Music Podcasts",
81
+ "description": "A music and podcasts streaming app",
82
+ "os": "ios",
83
+ "device": "phone",
84
+ "developer_notes": "Examples are from an Amazon contact",
85
+ "svg": "amazon.svg"
86
+ },
87
+ {
88
+ "user_agents": [
89
+ "^AmazonMusic.*Android"
90
+ ],
91
+ "examples": [
92
+ "AmazonMusic/16.17.0 Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo 1610 Build/MMB29M)"
93
+ ],
94
+ "app": "Amazon Music Podcasts",
95
+ "description": "A music and podcasts streaming app",
96
+ "os": "android",
97
+ "developer_notes": "Examples are from an Amazon contact",
98
+ "svg": "amazon.svg"
99
+ },
100
+ {
101
+ "user_agents": [
102
+ "^Amazon Music Podcast"
103
+ ],
104
+ "app": "Amazon Music Podcasts",
105
+ "description": "A music and podcasts streaming app",
106
+ "developer_notes": "Backend ingestion service",
50
107
  "svg": "amazon.svg",
51
108
  "bot": true
52
109
  },
@@ -61,12 +118,19 @@
61
118
  },
62
119
  {
63
120
  "user_agents": [
64
- "Android 5.*ford/"
121
+ "^com.audible.playersdk.player",
122
+ "^Audible,"
65
123
  ],
66
- "app": "Amazon Kindle Fire",
67
- "device": "tablet",
124
+ "app": "Audible",
68
125
  "os": "android"
69
126
  },
127
+ {
128
+ "user_agents": [
129
+ "^Audible.*Darwin"
130
+ ],
131
+ "app": "Audible",
132
+ "os": "ios"
133
+ },
70
134
  {
71
135
  "user_agents": [
72
136
  "^AndroidDownloadManager"
@@ -83,7 +147,8 @@
83
147
  "de.danoeh.antennapod/1.7.3b (Linux;Android 8.0.0) ExoPlayerLib/2.9.3"
84
148
  ],
85
149
  "info_url": "https://github.com/AntennaPod/AntennaPod",
86
- "os": "android"
150
+ "os": "android",
151
+ "developer_notes": "The de.danoeh version was used when streaming only, and will been phased out as of v2"
87
152
  },
88
153
  {
89
154
  "user_agents": [
@@ -95,12 +160,13 @@
95
160
  "user_agents": [
96
161
  "^AppleCoreMedia/1\\..*iPod"
97
162
  ],
98
- "app": "Apple Podcasts",
99
163
  "device": "mp3_player",
100
164
  "examples": [
101
165
  "AppleCoreMedia/1.0.0.16G114 (iPod touch; U; CPU OS 12_4_2 like Mac OS X; en_us)"
102
166
  ],
103
- "os": "ios"
167
+ "os": "ios",
168
+ "description": "AppleCoreMedia library",
169
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
104
170
  },
105
171
  {
106
172
  "user_agents": [
@@ -109,72 +175,95 @@
109
175
  "examples": [
110
176
  "AppleCoreMedia/1.0.0.19A583 (Macintosh; U; Intel Mac OS X 10_15; en_us)"
111
177
  ],
112
- "app": "Apple Podcasts",
113
178
  "device": "pc",
114
179
  "os": "macos",
115
- "description": "The Apple Podcasts app on MacOS Catalina and above",
116
- "developer_notes": "Used when progressively downloading podcasts"
180
+ "description": "AppleCoreMedia library",
181
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
117
182
  },
118
183
  {
119
184
  "user_agents": [
120
185
  "^AppleCoreMedia/1\\..*iPhone"
121
186
  ],
122
- "app": "Apple Podcasts",
123
187
  "device": "phone",
124
188
  "examples": [
125
189
  "AppleCoreMedia/1.0.0.15G77 (iPhone; U; CPU OS 11_4_1 like Mac OS X; en_us)"
126
190
  ],
127
- "os": "ios"
191
+ "os": "ios",
192
+ "description": "AppleCoreMedia library",
193
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
128
194
  },
129
195
  {
130
196
  "user_agents": [
131
197
  "^AppleCoreMedia/1\\..*iPad"
132
198
  ],
133
- "app": "Apple Podcasts",
134
199
  "device": "tablet",
135
200
  "examples": [
136
201
  "AppleCoreMedia/1.0.0.17A860 (iPad; U; CPU OS 13_1_2 like Mac OS X; en_us)"
137
202
  ],
138
- "os": "ios"
203
+ "os": "ios",
204
+ "description": "AppleCoreMedia library",
205
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
139
206
  },
140
207
  {
141
208
  "user_agents": [
142
209
  "^AppleCoreMedia/1\\..*HomePod"
143
210
  ],
144
- "app": "Apple Podcasts",
145
211
  "device": "speaker",
146
212
  "examples": [
147
213
  "AppleCoreMedia/1.0.0.16G78 (HomePod; U; CPU OS 12_4 like Mac OS X; en_us)"
148
214
  ],
149
- "os": "homepod_os"
215
+ "os": "homepodos",
216
+ "description": "AppleCoreMedia library",
217
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
150
218
  },
151
219
  {
152
220
  "user_agents": [
153
221
  "^AppleCoreMedia/1\\..*Apple TV"
154
222
  ],
155
- "app": "Apple Podcasts",
156
223
  "device": "tv",
157
224
  "examples": [
158
225
  "AppleCoreMedia/1.0.0.17J586 (Apple TV; U; CPU OS 13_0 like Mac OS X; en_us)"
159
226
  ],
160
- "os": "tvos"
227
+ "os": "tvos",
228
+ "description": "AppleCoreMedia library",
229
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
161
230
  },
162
231
  {
163
232
  "user_agents": [
164
- "^AppleCoreMedia/1\\..*Apple Watch",
165
- "watchOS/"
233
+ "^AppleCoreMedia/1\\..*Apple Watch"
234
+ ],
235
+ "device": "watch",
236
+ "os": "watchos",
237
+ "description": "AppleCoreMedia library",
238
+ "developer_notes": "This is a library used by a number of apps when progressively downloading podcasts. It is not (just) Apple Podcasts, and should not be treated as an Apple Podcasts useragent"
239
+ },
240
+ {
241
+ "user_agents": [
242
+ "^atc\/.* watchOS\/.* model\/Watch"
166
243
  ],
167
244
  "app": "Apple Podcasts",
168
245
  "device": "watch",
246
+ "os": "watchos",
247
+ "bot": true,
248
+ "developer_notes": "All of these examples given are verified (via stamping the audio URL with the RSS useragent) as being sourced from Apple Podcasts; and accordingly this is marked as a bot since these downloads are duplicated with the phone.",
169
249
  "examples": [
170
- "atc/1.0 watchOS/6.0.1 model/Watch4,1 hwp/t8006 build/17R605 (6; dt:190)"
171
- ],
172
- "os": "watchos"
250
+ "atc/1.0 watchOS/6.2 model/Watch3,3 hwp/t8004 build/17T529 (6; dt:155)",
251
+ "atc/1.0 watchOS/6.2.8 model/Watch2,3 hwp/t8002 build/17U63 (6; dt:133)",
252
+ "atc/1.0 watchOS/6.2.8 model/Watch3,3 hwp/t8004 build/17U63 (6; dt:155)",
253
+ "atc/1.0 watchOS/6.2.8 model/Watch4,2 hwp/t8006 build/17U63 (6; dt:191)",
254
+ "atc/1.0 watchOS/7.0.2 model/Watch5,10 hwp/t8006 build/18R402 (6; dt:233)",
255
+ "atc/1.0 watchOS/7.0.2 model/Watch5,11 hwp/t8006 build/18R402 (6; dt:234)",
256
+ "atc/1.0 watchOS/7.1 model/Watch4,2 hwp/t8006 build/18R590 (6; dt:191)",
257
+ "atc/1.0 watchOS/7.1 model/Watch4,3 hwp/t8006 build/18R590 (6; dt:192)",
258
+ "atc/1.0 watchOS/7.1 model/Watch4,4 hwp/t8006 build/18R590 (6; dt:193)",
259
+ "atc/1.0 watchOS/7.1 model/Watch5,1 hwp/t8006 build/18R590 (6; dt:201)",
260
+ "atc/1.0 watchOS/7.1 model/Watch5,3 hwp/t8006 build/18R590 (6; dt:202)",
261
+ "atc/1.0 watchOS/7.1 model/Watch5,4 hwp/t8006 build/18R590 (6; dt:202)"
262
+ ]
173
263
  },
174
264
  {
175
265
  "user_agents": [
176
266
  "^Podcasts/.*\\(.*\\)",
177
-
178
267
  "^Balados/.*\\(.*\\)",
179
268
  "^Podcasti/.*\\(.*\\)",
180
269
  "^Podcastit/.*\\(.*\\)",
@@ -183,7 +272,6 @@
183
272
  "^Podcast’ler/.*\\(.*\\)",
184
273
  "^Podkaster/.*\\(.*\\)",
185
274
  "^Podcaster/.*\\(.*\\)",
186
- "^Podcast/.*\\(.*\\)",
187
275
  "^Podcastok/.*\\(.*\\)",
188
276
  "^Подкасти/.*\\(.*\\)",
189
277
  "^Подкасты/.*\\(.*\\)",
@@ -207,7 +295,6 @@
207
295
  {
208
296
  "user_agents": [
209
297
  "^Podcasts/.*\\d$",
210
-
211
298
  "^Balados/.*\\d$",
212
299
  "^Podcasti/.*\\d$",
213
300
  "^Podcastit/.*\\d$",
@@ -216,7 +303,6 @@
216
303
  "^Podcast’ler/.*\\d$",
217
304
  "^Podkaster/.*\\d$",
218
305
  "^Podcaster/.*\\d$",
219
- "^Podcast/.*\\d$",
220
306
  "^Podcastok/.*\\d$",
221
307
  "^Подкасти/.*\\d$",
222
308
  "^Подкасты/.*\\d$",
@@ -224,16 +310,15 @@
224
310
  "^البودكاست/.*\\d$",
225
311
  "^पॉडकास्ट/.*\\d$",
226
312
  "^พ็อดคาสท์/.*\\d$",
313
+ "^%E6%92%AD%E5%AE%A2/.*\\d$",
227
314
  "^播客/.*\\d$",
228
315
  "^팟캐스트/.*\\d$"
229
316
  ],
230
317
  "app": "Apple Podcasts",
231
- "os": "ios",
232
- "description": "The Apple Podcasts app on devices other than MacOS Catalina and above",
233
- "developer_notes": "Used when downloading podcasts (not progressive downloads), with support for the following languages: Arabic, Chinese, Finnish, French, English, Hebrew, Hindi, Hungarian, Korean, Polish, Romanian, Russian, Serbian, Slovenian, Swedish, Thai, Turkish",
318
+ "description": "The Apple Podcasts app",
319
+ "developer_notes": "Used when downloading podcasts (not progressive downloads). This could be on iOS or iPadOS.",
234
320
  "examples": [
235
- "Podcasts/2.6",
236
- "Podcast/1150.47 CFNetwork/811.5.4 Darwin/16.6.0"
321
+ "Podcasts/1440.4 CFNetwork/1128.0.1 Darwin/19.6.0"
237
322
  ]
238
323
  },
239
324
  {
@@ -244,6 +329,14 @@
244
329
  "device": "pc",
245
330
  "info_url": "http://lincgeek.org/bashpodder/"
246
331
  },
332
+ {
333
+ "user_agents": [
334
+ "Barkrowler\/"
335
+ ],
336
+ "app": "Babbar",
337
+ "bot": true,
338
+ "info_url": "https://beta.babbar.tech/crawler"
339
+ },
247
340
  {
248
341
  "user_agents": [
249
342
  "BBC%20Sounds/"
@@ -278,6 +371,17 @@
278
371
  "os": "android"
279
372
  },
280
373
  {
374
+ "user_agents": [
375
+ "^Bitcast/"
376
+ ],
377
+ "app": "Bitcast",
378
+ "os": "ios",
379
+ "info_url": "https://bitcast.fm/",
380
+ "examples": [
381
+ "Bitcast/336 CFNetwork/1197 Darwin/20.0.0"
382
+ ]
383
+ },
384
+ {
281
385
  "user_agents": [
282
386
  "^Bose/"
283
387
  ],
@@ -286,10 +390,10 @@
286
390
  },
287
391
  {
288
392
  "user_agents": [
289
- "^Breaker/"
393
+ "^Breaker/iOS"
290
394
  ],
291
395
  "app": "Breaker",
292
- "device": "phone"
396
+ "os": "ios"
293
397
  },
294
398
  {
295
399
  "user_agents": [
@@ -322,6 +426,18 @@
322
426
  "device": "pc",
323
427
  "os": "windows"
324
428
  },
429
+ {
430
+ "user_agents": [
431
+ "BroadwayPodcastNetwork/iOS"
432
+ ],
433
+ "app": "Broadway Podcast Network",
434
+ "description": "The Broadway Podcast Network iOS App",
435
+ "device": "phone",
436
+ "examples": [
437
+ "BroadwayPodcastNetwork/iOS"
438
+ ],
439
+ "os": "ios"
440
+ },
325
441
  {
326
442
  "user_agents": [
327
443
  "^Cast(?:b|B)ox/.+Android"
@@ -329,7 +445,9 @@
329
445
  "app": "CastBox",
330
446
  "device": "phone",
331
447
  "examples": [
332
- "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4"
448
+ "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4",
449
+ "CastBox/8.19.0-200927161 (Linux;Android 10) ExoPlayerLib/2.10.4",
450
+ "CastBox/8.18.1-200917153 (Linux;Android 8.0.0) ExoPlayerLib/2.10.4"
333
451
  ],
334
452
  "os": "android"
335
453
  },
@@ -346,7 +464,7 @@
346
464
  },
347
465
  {
348
466
  "user_agents": [
349
- "^Cast(?:b|B)ox"
467
+ "^Cast(?:b|B)ox(?!.*(Android|iOS))"
350
468
  ],
351
469
  "app": "CastBox",
352
470
  "developer_notes": "There are CastBox compatible User Agents that come without Android/iOS platform marker",
@@ -365,6 +483,16 @@
365
483
  "info_url": "https://castget.johndal.com/",
366
484
  "device": "pc"
367
485
  },
486
+ {
487
+ "user_agents": [
488
+ "Castopod/1.0"
489
+ ],
490
+ "app": "Castopod",
491
+ "examples": [
492
+ "Castopod/1.0"
493
+ ],
494
+ "bot": true
495
+ },
368
496
  {
369
497
  "user_agents": [
370
498
  "Castro "
@@ -372,7 +500,8 @@
372
500
  "app": "Castro",
373
501
  "device": "phone",
374
502
  "examples": [
375
- "Castro 2019.13/1167"
503
+ "Castro 2019.13/1167",
504
+ "Castro 2020.14/1287"
376
505
  ],
377
506
  "os": "ios"
378
507
  },
@@ -418,14 +547,45 @@
418
547
  "Deezer/.*Android;"
419
548
  ],
420
549
  "app": "Deezer",
421
- "device": "phone",
422
- "os": "android"
550
+ "os": "android",
551
+ "examples": [
552
+ "Deezer/6.2.2.80 (Android; 9; Mobile; fr) samsung SM-G950F",
553
+ "Deezer/6.2.3.96 (Android; 10; Mobile; fr) samsung SM-A405FN"
554
+ ],
555
+ "info_url": "https://play.google.com/store/apps/details?id=deezer.android.app"
556
+ },
557
+ {
558
+ "user_agents": [
559
+ "^Deezer/.*CFNetwork/"
560
+ ],
561
+ "app": "Deezer",
562
+ "os": "ios",
563
+ "examples": [
564
+ "Deezer/8.13.0.4 CFNetwork/1125.2 Darwin/19.4.0"
565
+ ],
566
+ "info_url": "https://apps.apple.com/us/app/deezer-music-podcast-player/id292738169"
567
+ },
568
+ {
569
+ "user_agents": [
570
+ "^Deezer.*Electron; windows"
571
+ ],
572
+ "app": "Deezer",
573
+ "examples": [
574
+ "Deezer/4.20.0 (Electron; windows/10.0.18362; Desktop; fr)"
575
+ ],
576
+ "device": "pc",
577
+ "os": "windows"
423
578
  },
424
579
  {
425
580
  "user_agents": [
426
- "^Deezer"
581
+ "^Deezer.*Electron; osx"
582
+ ],
583
+ "app": "Deezer",
584
+ "examples": [
585
+ "Deezer/4.20.0 (Electron; osx/10.14.6; Desktop; fr)"
427
586
  ],
428
- "app": "Deezer"
587
+ "device": "pc",
588
+ "os": "macos"
429
589
  },
430
590
  {
431
591
  "user_agents": [
@@ -442,6 +602,10 @@
442
602
  "user_agents": [
443
603
  "DotBot/1"
444
604
  ],
605
+ "app": "DotBot",
606
+ "examples": [
607
+ "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)"
608
+ ],
445
609
  "bot": true
446
610
  },
447
611
  {
@@ -458,7 +622,7 @@
458
622
  },
459
623
  {
460
624
  "user_agents": [
461
- "Downcast/"
625
+ "Downcast/.*iPhone"
462
626
  ],
463
627
  "app": "Downcast",
464
628
  "device": "phone",
@@ -468,6 +632,28 @@
468
632
  "os": "ios"
469
633
  },
470
634
  {
635
+ "user_agents": [
636
+ "Downcast/.*iPad"
637
+ ],
638
+ "app": "Downcast",
639
+ "device": "tablet",
640
+ "examples": [
641
+ "Downcast/2.9.57 (iPad; iOS 14.2; Scale/2.00)"
642
+ ],
643
+ "os": "ios"
644
+ },
645
+ {
646
+ "user_agents": [
647
+ "Downcast/.*Mac OS X"
648
+ ],
649
+ "app": "Downcast",
650
+ "examples": [
651
+ "Downcast/2.9.57 (Mac OS X Version 10.15.7 (Build 19H15))"
652
+ ],
653
+ "os": "macos",
654
+ "device": "pc"
655
+ },
656
+ {
471
657
  "user_agents": [
472
658
  "Xbox.+Edge/"
473
659
  ],
@@ -504,9 +690,25 @@
504
690
  },
505
691
  {
506
692
  "user_agents": [
507
- "FacebookBot"
693
+ "FacebookBot",
694
+ "facebookexternalhit/"
508
695
  ],
509
- "bot": true
696
+ "bot": true,
697
+ "app": "Facebook",
698
+ "info_url": "https://www.facebook.com/externalhit_uatext.php",
699
+ "examples": [
700
+ "facebookexternalhit/1.1 ( http://www.facebook.com/externalhit_uatext.php)"
701
+ ]
702
+ },
703
+ {
704
+ "user_agents": [
705
+ "^feedly/"
706
+ ],
707
+ "app": "Feedly",
708
+ "examples": [
709
+ "feedly/81.0.1 CFNetwork/1206 Darwin/20.1.0"
710
+ ],
711
+ "description": "An RSS reader"
510
712
  },
511
713
  {
512
714
  "user_agents": [
@@ -562,7 +764,7 @@
562
764
  "user_agents": [
563
765
  "^Lavf/"
564
766
  ],
565
- "app": "ffmpeg"
767
+ "developer_notes": "ffmpeg is a library used within TuneIn, VLC, ffmpeg and other programs. This is the default useragent for the ffmpeg library. Since it's a library, not an app by itself, we don't add its name here."
566
768
  },
567
769
  {
568
770
  "user_agents": [
@@ -594,25 +796,37 @@
594
796
  "user_agents": [
595
797
  "^fyyd-poll"
596
798
  ],
799
+ "app": "Fyyd",
597
800
  "bot": true
598
801
  },
599
802
  {
600
803
  "user_agents": [
601
804
  "^Go-http-client"
602
805
  ],
603
- "bot": true
806
+ "developer_notes": "This has been seen being used by a TuneIn client, and may be within WinAMP code.",
807
+ "examples": [
808
+ "Go-http-client/2.0"
809
+ ]
604
810
  },
605
811
  {
606
812
  "user_agents": [
607
- "^Googlebot"
813
+ "Googlebot/",
814
+ "Googlebot-Video/"
608
815
  ],
816
+ "examples": [
817
+ "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; http://www.google.com/bot.html)"
818
+ ],
819
+ "description": "Google's search bot",
820
+ "app": "Googlebot",
821
+ "info_url": "http://www.google.com/bot.html",
609
822
  "bot": true
610
823
  },
611
824
  {
612
825
  "user_agents": [
613
826
  "Google-Podcast"
614
827
  ],
615
- "bot": true
828
+ "bot": true,
829
+ "app": "Google Podcasts Manager"
616
830
  },
617
831
  {
618
832
  "user_agents": [
@@ -620,6 +834,7 @@
620
834
  ],
621
835
  "app": "Google Home",
622
836
  "device": "speaker",
837
+ "description": "Google Podcasts on smart speakers",
623
838
  "os": "google_assistant"
624
839
  },
625
840
  {
@@ -628,22 +843,23 @@
628
843
  ],
629
844
  "app": "Google Podcasts",
630
845
  "device": "speaker",
846
+ "description": "Google Podcasts on smart speakers",
631
847
  "os": "google_assistant"
632
848
  },
633
849
  {
634
850
  "user_agents": [
635
- "iPhone;.*GSA/"
851
+ "(iPhone|iPad|iPod touch).*GSA/",
852
+ "^Podcasts$",
853
+ "^GooglePodcasts/"
636
854
  ],
637
855
  "app": "Google Podcasts",
638
- "device": "phone",
639
- "os": "ios"
640
- },
641
- {
642
- "user_agents": [
643
- "iPad;.*GSA/"
856
+ "description": "Google Podcasts on iOS",
857
+ "examples": [
858
+ "GooglePodcasts/2.0.2%20iPod_touch/13.4.1%20hw/iPod9_1",
859
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/107.0.310639584 Mobile/15E148 Safari/604.1",
860
+ "Mozilla/5.0 (iPod touch; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/107.0.310639584 Mobile/15E148 Safari/601.1"
644
861
  ],
645
- "app": "Google Podcasts",
646
- "device": "tablet",
862
+ "developer_notes": "'GooglePodcasts' is the iOS app, while (?:(?:iPhone|iPad|iPod touch);.+)?GSA/ is used in the Google app when searching and playing podcasts. The first useragent was simply 'Podcasts'.",
647
863
  "os": "ios"
648
864
  },
649
865
  {
@@ -651,7 +867,13 @@
651
867
  "(?:Android;.+)?GSA/"
652
868
  ],
653
869
  "app": "Google Podcasts",
654
- "os": "android"
870
+ "os": "android",
871
+ "description": "Google Podcasts on Android (the app or player)",
872
+ "examples": [
873
+ "Mozilla/5.0 (Linux; Android 10; Pixel 3a Build/QQ2A.200305.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.149 Mobile Safari/537.36 GSA/11.2.7.21.arm64",
874
+ "Mozilla/5.0 (Linux; Android 10; SM-G986U Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.75 Mobile Safari/537.36 GSA/11.31.12.21.arm64"
875
+ ],
876
+ "developer_notes": "*GSA/ is used in the Google app when searching and playing podcasts, and in the Google Podcasts app"
655
877
  },
656
878
  {
657
879
  "user_agents": [
@@ -662,10 +884,11 @@
662
884
  },
663
885
  {
664
886
  "user_agents": [
665
- "Android.*Chrome/"
887
+ "Android.*Chrome/(?!.*(Googlebot|CrKey|GSA/))"
666
888
  ],
667
889
  "app": "Google Chrome",
668
- "os": "android"
890
+ "os": "android",
891
+ "developer_notes": "This won't match Googlebot, a Chromecast device, Google speaker or Google app"
669
892
  },
670
893
  {
671
894
  "user_agents": [
@@ -677,26 +900,28 @@
677
900
  },
678
901
  {
679
902
  "user_agents": [
680
- "Linux.*Chrome/"
903
+ "Linux(?!.*(Android)).*Chrome/(?!.*(CrKey|GSA/))"
681
904
  ],
682
905
  "app": "Google Chrome",
683
906
  "device": "pc",
684
- "os": "linux"
907
+ "os": "linux",
908
+ "developer_notes": "This won't match an Android device, Chromecast device, Google speaker or Google app"
685
909
  },
686
910
  {
687
911
  "user_agents": [
688
- "Mac OS X.*Chrome/"
912
+ "Mac OS X.*Chrome/(?!.*(Spreaker\/|OPR\/))"
689
913
  ],
690
914
  "app": "Google Chrome",
691
915
  "device": "pc",
692
916
  "examples": [
693
917
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
694
918
  ],
695
- "os": "macos"
919
+ "os": "macos",
920
+ "developer_notes": "This won't match the Spreaker app"
696
921
  },
697
922
  {
698
923
  "user_agents": [
699
- "Windows.*Chrome/"
924
+ "Windows.*Chrome/(?!.*(OPR/))"
700
925
  ],
701
926
  "app": "Google Chrome",
702
927
  "device": "pc",
@@ -723,10 +948,12 @@
723
948
  },
724
949
  {
725
950
  "user_agents": [
726
- "^gPodder/",
951
+ "^gPodder/.*Windows",
727
952
  "^gpodder\\.net"
728
953
  ],
729
954
  "app": "gPodder",
955
+ "os": "windows",
956
+ "device": "pc",
730
957
  "examples": [
731
958
  "gPodder/3.10.8 (+http://gpodder.org/) Windows/10"
732
959
  ]
@@ -737,6 +964,17 @@
737
964
  ],
738
965
  "device": "radio"
739
966
  },
967
+ {
968
+ "user_agents": [
969
+ "^GaanaAndroid-"
970
+ ],
971
+ "app": "Gaana",
972
+ "os": "android",
973
+ "examples": [
974
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 9; vivo 1906 Build/PKQ1.190616.001)",
975
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 5.1; Micromax P701 Build/LMY47D)"
976
+ ]
977
+ },
740
978
  {
741
979
  "user_agents": [
742
980
  "^Guardian-iOSLive/"
@@ -771,9 +1009,16 @@
771
1009
  },
772
1010
  {
773
1011
  "user_agents": [
774
- "^Himalaya/"
1012
+ "^Himalaya/.+iPhone"
1013
+ ],
1014
+ "app": "Himalaya",
1015
+ "device": "phone",
1016
+ "examples": [
1017
+ "Himalaya/2.4.41 (iPhone; iOS 14.0.1; Scale/3.00; CFNetwork; iPhone9,4)",
1018
+ "Himalaya/2.4.42 (iPhone; iOS 14.2; Scale/2.00; CFNetwork; iPhone8,1)"
775
1019
  ],
776
- "app": "Himalaya"
1020
+ "os": "ios",
1021
+ "description": "Himalaya is a podcast app"
777
1022
  },
778
1023
  {
779
1024
  "user_agents": [
@@ -785,9 +1030,30 @@
785
1030
  },
786
1031
  {
787
1032
  "user_agents": [
788
- "^iHeartRadio/"
1033
+ "^iHeartRadio/.*Android"
1034
+ ],
1035
+ "app": "iHeartRadio",
1036
+ "os": "android",
1037
+ "examples": [
1038
+ "iHeartRadio/9.19.0 (Android 10; SM-G960U Build/QP1A.190711.020)",
1039
+ "iHeartRadio/9.19.0 (Android 9; SM-G950U Build/PPR1.180610.011)"
1040
+ ],
1041
+ "info_url": "https://play.google.com/store/apps/details?id=com.clearchannel.iheartradio.controller"
1042
+ },
1043
+ {
1044
+ "user_agents": [
1045
+ "^iHeartRadio/.* CFNetwork/",
1046
+ "^iHeartRadio/.* iOS"
789
1047
  ],
790
- "app": "iHeartRadio"
1048
+ "app": "iHeartRadio",
1049
+ "os": "ios",
1050
+ "examples": [
1051
+ "iHeartRadio/2020052002 CFNetwork/1125.2 Darwin/19.4.0",
1052
+ "iHeartRadio/9.20.0 (iPhone; iOS 13.4.1; iPhone11,8)",
1053
+ "iHeartRadio/9.20.0 (iPad; iOS 13.4.1; iPad6,12)",
1054
+ "iHeartRadio/9.7.0 (iPod touch; iOS 12.4.5; iPod7,1)"
1055
+ ],
1056
+ "info_url": "https://apps.apple.com/us/app/iheart-radio-music-podcasts/id290638154"
791
1057
  },
792
1058
  {
793
1059
  "user_agents": [
@@ -800,6 +1066,13 @@
800
1066
  ],
801
1067
  "os": "windows"
802
1068
  },
1069
+ {
1070
+ "user_agents": [
1071
+ "iVoox"
1072
+ ],
1073
+ "app": "iVoox",
1074
+ "info_url": "https://www.ivoox.com/"
1075
+ },
803
1076
  {
804
1077
  "user_agents": [
805
1078
  "iTMS",
@@ -809,7 +1082,8 @@
809
1082
  },
810
1083
  {
811
1084
  "user_agents": [
812
- "^iTunes/.+Mac OS"
1085
+ "^iTunes/.+Mac OS",
1086
+ "^iTunes/.+OS X"
813
1087
  ],
814
1088
  "examples": [
815
1089
  "iTunes/10.6.3 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/534.50.2"
@@ -821,10 +1095,11 @@
821
1095
  },
822
1096
  {
823
1097
  "user_agents": [
824
- "^iTunes/1[12]\\."
1098
+ "^iTunes/.+Windows"
825
1099
  ],
826
1100
  "examples": [
827
- "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24"
1101
+ "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24",
1102
+ "iTunes/12.10.9 (Windows; Microsoft Windows 10 x64 Home Premium Edition (Build 19041); x64) AppleWebKit/7609.3005.1003.3"
828
1103
  ],
829
1104
  "app": "iTunes",
830
1105
  "device": "pc",
@@ -848,6 +1123,33 @@
848
1123
  "info_url": "https://www.jriver.com/",
849
1124
  "os": "windows"
850
1125
  },
1126
+ {
1127
+ "user_agents": [
1128
+ ".*KAIOS/"
1129
+ ],
1130
+ "app": "KAIOS podcast app",
1131
+ "device": "phone",
1132
+ "os": "kaios",
1133
+ "info_url": "https://kaiostech.com",
1134
+ "examples": [
1135
+ "Mozilla/5.0 (Mobile; LYF/F271i/LYF_F271i-000-01-20-101019; Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5"
1136
+ ],
1137
+ "developer_notes": "This is a standard useragent for KaiOS, the cut-down operating system for mobile phones in developing countries. Watch out - it may also contain Android."
1138
+ },
1139
+ {
1140
+ "user_agents": [
1141
+ ".*PodLP/"
1142
+ ],
1143
+ "app": "PodLP podcast app for KaiOS",
1144
+ "device": "phone",
1145
+ "os": "kaios",
1146
+ "info_url": "https://podlp.com",
1147
+ "examples": [
1148
+ "Mozilla/5.0 (Mobile; LYF/F271i/LYF_F271i-000-01-20-101019; Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5 PodLP/1.3.2.0"
1149
+ ],
1150
+ "description": "PodLP is the first podcast app available for KaiOS smart feature phones on the KaiStore.",
1151
+ "developer_notes": "Introduced in version v1.2.0.0 for limited content (downloads); available for all content after v1.3.0.0"
1152
+ },
851
1153
  {
852
1154
  "user_agents": [
853
1155
  "^Laughable.+iOS"
@@ -856,6 +1158,47 @@
856
1158
  "device": "phone",
857
1159
  "os": "ios"
858
1160
  },
1161
+ {
1162
+ "user_agents": [
1163
+ "^com.jio.media.jiobeats",
1164
+ "^com.saavn.android",
1165
+ "^saavn"
1166
+ ],
1167
+ "app": "JioSaavn",
1168
+ "os": "android",
1169
+ "info_url": "https://www.jiosaavn.com/",
1170
+ "description": "A music streaming and podcast app from India. Earn Your Happy!",
1171
+ "developer_notes": "The user-agent will start with one of the above strings followed by the app version and player version.",
1172
+ "examples": [
1173
+ "com.jio.media.jiobeats/7.3.1 (Linux;Android 8.1.0) ExoPlayerLib/2.11.4"
1174
+ ]
1175
+ },
1176
+ {
1177
+ "user_agents": [
1178
+ "^lamarr-iOS",
1179
+ "^TheEconomist-Lamarr-ios"
1180
+ ],
1181
+ "app": "The Economist",
1182
+ "device": "phone",
1183
+ "os": "ios",
1184
+ "examples": [
1185
+ "lamarr-iOS-2.20.3-116",
1186
+ "TheEconomist-Lamarr-ios-2.22.2-12002"
1187
+ ]
1188
+ },
1189
+ {
1190
+ "user_agents": [
1191
+ "^lamarr-android",
1192
+ "^TheEconomist-Lamarr-android"
1193
+ ],
1194
+ "app": "The Economist",
1195
+ "device": "phone",
1196
+ "os": "android",
1197
+ "examples": [
1198
+ "lamarr-android-2.18.1-21810",
1199
+ "TheEconomist-Lamarr-android-2.22.2-12002"
1200
+ ]
1201
+ },
859
1202
  {
860
1203
  "user_agents": [
861
1204
  "LG Player"
@@ -933,7 +1276,11 @@
933
1276
  },
934
1277
  {
935
1278
  "user_agents": [
936
- "MJ12bot"
1279
+ ".*MJ12bot"
1280
+ ],
1281
+ "app": "MJ12bot",
1282
+ "examples": [
1283
+ "Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
937
1284
  ],
938
1285
  "bot": true
939
1286
  },
@@ -956,6 +1303,25 @@
956
1303
  "info_url": "https://getmusicbee.com/",
957
1304
  "os": "windows"
958
1305
  },
1306
+ {
1307
+ "user_agents": [
1308
+ "^NPR%20One/"
1309
+ ],
1310
+ "app": "NPR One",
1311
+ "examples": [
1312
+ "NPR%20One/234 CFNetwork/1197 Darwin/20.0.0"
1313
+ ]
1314
+ },
1315
+ {
1316
+ "user_agents": [
1317
+ "^NPROneAndroid"
1318
+ ],
1319
+ "app": "NPR One",
1320
+ "os": "android",
1321
+ "examples": [
1322
+ "NPROneAndroid"
1323
+ ]
1324
+ },
959
1325
  {
960
1326
  "user_agents": [
961
1327
  "^OkDownload/"
@@ -994,7 +1360,8 @@
994
1360
  },
995
1361
  {
996
1362
  "user_agents": [
997
- "Opera/.*\\(Windows"
1363
+ "Opera/.*\\(Windows",
1364
+ "Windows.*OPR/"
998
1365
  ],
999
1366
  "app": "Opera",
1000
1367
  "device": "pc",
@@ -1002,13 +1369,35 @@
1002
1369
  },
1003
1370
  {
1004
1371
  "user_agents": [
1005
- "Opera[/ ]"
1372
+ "Macintosh.*OPR/"
1006
1373
  ],
1007
- "app": "Opera"
1008
- },
1009
- {
1010
- "user_agents": [
1011
- "^Overcast/"
1374
+ "app": "Opera",
1375
+ "os": "macos",
1376
+ "device": "pc",
1377
+ "examples": [
1378
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 OPR/72.0.3815.186"
1379
+ ]
1380
+ },
1381
+ {
1382
+ "user_agents": [
1383
+ "^MauiBot"
1384
+ ],
1385
+ "app": "MauiBot",
1386
+ "bot": true,
1387
+ "examples": [
1388
+ "MauiBot (crawler.feedback dc@gmail.com)"
1389
+ ]
1390
+ },
1391
+ {
1392
+ "user_agents": [
1393
+ "Opera[/ ]"
1394
+ ],
1395
+ "app": "Opera"
1396
+ },
1397
+ {
1398
+ "user_agents": [
1399
+ "^Overcast/2",
1400
+ "^Overcast/3"
1012
1401
  ],
1013
1402
  "app": "Overcast",
1014
1403
  "examples": [
@@ -1018,17 +1407,63 @@
1018
1407
  },
1019
1408
  {
1020
1409
  "user_agents": [
1021
- "^PandoraRSSCrawler"
1410
+ "^Overcast.*Apple Watch"
1022
1411
  ],
1412
+ "app": "Overcast",
1413
+ "examples": [
1414
+ "Overcast ( http://overcast.fm/; Apple Watch podcast app)"
1415
+ ],
1416
+ "os": "watchos",
1417
+ "device": "watch"
1418
+ },
1419
+ {
1420
+ "user_agents": [
1421
+ "^Overcast/1.0 Podcast Sync"
1422
+ ],
1423
+ "app": "Overcast feed parser",
1424
+ "examples": [
1425
+ "Overcast/1.0 Podcast Sync"
1426
+ ],
1427
+ "developer_notes": "Marco Arment says: when a new episode is detected, the servers fetch a copy of it to seed these values with an initial set of data to make the privacy screen more accurate.",
1023
1428
  "bot": true
1024
1429
  },
1430
+ {
1431
+ "user_agents": [
1432
+ "^PandoraRSSCrawler"
1433
+ ],
1434
+ "bot": true,
1435
+ "app": "Pandora RSS crawler"
1436
+ },
1025
1437
  {
1026
1438
  "user_agents": [
1027
1439
  "^Pandora.+Android"
1028
1440
  ],
1029
1441
  "app": "Pandora",
1442
+ "os": "android",
1443
+ "examples": [
1444
+ "Pandora/2009.2 Android/7.1.1 gteslteatt (ExoPlayerLib1.5.14.1)"
1445
+ ]
1446
+ },
1447
+ {
1448
+ "user_agents": [
1449
+ "iPhone.+Pandora\/"
1450
+ ],
1451
+ "app": "Pandora",
1030
1452
  "device": "phone",
1031
- "os": "android"
1453
+ "os": "ios",
1454
+ "examples": [
1455
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Pandora/2009.2"
1456
+ ]
1457
+ },
1458
+ {
1459
+ "user_agents": [
1460
+ "PaperLiBot\/"
1461
+ ],
1462
+ "app": "PaperLi",
1463
+ "examples": [
1464
+ "Mozilla/5.0 (compatible; PaperLiBot/2.1; https://support.paper.li/entries/20023257-what-is-paper-li)"
1465
+ ],
1466
+ "bot": true
1032
1467
  },
1033
1468
  {
1034
1469
  "user_agents": [
@@ -1048,7 +1483,6 @@
1048
1483
  "^PocketCasts/"
1049
1484
  ],
1050
1485
  "app": "Pocket Casts",
1051
- "device": "phone",
1052
1486
  "examples": [
1053
1487
  "Pocket Casts"
1054
1488
  ],
@@ -1064,16 +1498,32 @@
1064
1498
  "app": "PodcastAddict",
1065
1499
  "device": "phone",
1066
1500
  "examples": [
1067
- "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)"
1501
+ "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)",
1502
+ "PodcastAddict/v5 ( https://podcastaddict.com/; Android podcast app)"
1068
1503
  ],
1069
1504
  "os": "android"
1070
1505
  },
1071
1506
  {
1072
1507
  "user_agents": [
1073
- "iOS.*The Podcast App/"
1508
+ "iOS.*The Podcast App/",
1509
+ "com.evolve.podcast/"
1074
1510
  ],
1075
1511
  "app": "The Podcast App",
1076
- "os": "ios"
1512
+ "os": "ios",
1513
+ "examples": [
1514
+ "podcast/2358 iOS/Version 13.5.1 (Build 017F80) The Podcast App/3.22.1",
1515
+ "com.evolve.podcast/3.22.1 (iPhone; ) (build 2358, iOS 13.5.1)"
1516
+ ],
1517
+ "developer_notes": "The com.evolve version of the useragent is an error, and has been reported to the developers as a bug. Caution: the beginning of their main useragent is similar to Google Podcasts."
1518
+ },
1519
+ {
1520
+ "user_agents": [
1521
+ "^PodcastGuru "
1522
+ ],
1523
+ "app": "Podcast Guru",
1524
+ "os": "android",
1525
+ "info_url": "https://podcastguru.io/",
1526
+ "description": "Podcast Guru is the simple and free podcast player"
1077
1527
  },
1078
1528
  {
1079
1529
  "user_agents": [
@@ -1104,15 +1554,64 @@
1104
1554
  },
1105
1555
  {
1106
1556
  "user_agents": [
1107
- "^PodCruncher/"
1557
+ "^PodCruncher/.* CFNetwork/"
1558
+ ],
1559
+ "app": "PodCruncher",
1560
+ "os": "ios",
1561
+ "examples": [
1562
+ "PodCruncher/3.7.1 CFNetwork/1125.2 Darwin/19.4.0",
1563
+ "PodCruncher/3.7.1 CFNetwork/978.0.7 Darwin/18.7.0"
1564
+ ],
1565
+ "info_url": "https://apps.apple.com/us/app/podcruncher-podcast-player/id421894356"
1566
+ },
1567
+ {
1568
+ "user_agents": [
1569
+ "^Podbean/Android App",
1570
+ "^Podbean/Android generic"
1571
+ ],
1572
+ "app": "Podbean",
1573
+ "os": "android",
1574
+ "examples": [
1575
+ "Podbean/Android App 7.6.4 (http://podbean.com),1927526fe23b5acf535b3e91b64cee95",
1576
+ "Podbean/Android App 8.1.5 (http://podbean.com),4f6852f59091d32475ef75a53325a4fe",
1577
+ "Podbean/Android generic 1.1.2 (http://podbean.com),9376c517335ded9a716022cc1f15c884"
1578
+ ],
1579
+ "info_url": "https://play.google.com/store/apps/details?id=com.podbean.app.podcast"
1580
+ },
1581
+ {
1582
+ "user_agents": [
1583
+ "^Podbean/iOS"
1584
+ ],
1585
+ "app": "Podbean",
1586
+ "os": "ios",
1587
+ "examples": [
1588
+ "Podbean/iOS (http://podbean.com) 5.2.0 - 19c4ff292bd09cd2ccbad22cc6755a45"
1108
1589
  ],
1109
- "app": "PodCruncher"
1590
+ "info_url": "https://apps.apple.com/us/app/podbean-podcast-app-player/id973361050"
1110
1591
  },
1111
1592
  {
1112
1593
  "user_agents": [
1113
- "^Podbean/"
1594
+ "podfollowbot/"
1114
1595
  ],
1115
- "app": "Podbean"
1596
+ "app": "Podfollow",
1597
+ "examples": [
1598
+ "Mozilla/5.0 https://podfollow.com/crawling podfollowbot/1.0"
1599
+ ],
1600
+ "info_url": "https://podfollow.com",
1601
+ "description": "Podfollow, a service to help link to your podcast",
1602
+ "bot": true
1603
+ },
1604
+ {
1605
+ "user_agents": [
1606
+ "^Podhero",
1607
+ "^Swoot/"
1608
+ ],
1609
+ "app": "Podhero",
1610
+ "examples": [
1611
+ "Podhero%20Alpha/4373 CFNetwork/1197 Darwin/20.0.0"
1612
+ ],
1613
+ "info_url": "https://podhero.com",
1614
+ "description": "Podhero app on iOS and Android."
1116
1615
  },
1117
1616
  {
1118
1617
  "user_agents": [
@@ -1121,6 +1620,41 @@
1121
1620
  "app": "Podkicker Pro",
1122
1621
  "os": "android"
1123
1622
  },
1623
+ {
1624
+ "user_agents": [
1625
+ "PodLink"
1626
+ ],
1627
+ "app": "PodLink",
1628
+ "info_url": "https://pod.link/faq/crawler"
1629
+ },
1630
+ {
1631
+ "user_agents": [
1632
+ "^PodMN/Android"
1633
+ ],
1634
+ "description": "Minnesota Podcasts Live Here",
1635
+ "examples": [
1636
+ "PodMN/Android 1.2.6 (Android 7.1.1; SM-J510FN Build/NMF26X)"
1637
+ ],
1638
+ "info_url": "https://play.google.com/store/apps/details?id=com.podmn.app",
1639
+ "app": "PodMN",
1640
+ "device": "phone",
1641
+ "os": "android",
1642
+ "svg": "podmn.svg"
1643
+ },
1644
+ {
1645
+ "user_agents": [
1646
+ "^PodMN/iOS"
1647
+ ],
1648
+ "description": "Minnesota Podcasts Live Here",
1649
+ "examples": [
1650
+ "PodMN/iOS 1.2.6 (iPhone XR/13.6.1)"
1651
+ ],
1652
+ "info_url": "https://apps.apple.com/us/app/podmn/id1464935818",
1653
+ "app": "PodMN",
1654
+ "device": "phone",
1655
+ "os": "ios",
1656
+ "svg": "podmn.svg"
1657
+ },
1124
1658
  {
1125
1659
  "user_agents": [
1126
1660
  "PodnewsBot"
@@ -1130,12 +1664,65 @@
1130
1664
  "description": "Podnews runs a number of bots to read and test RSS and audio files",
1131
1665
  "info_url": "http://podnews.net"
1132
1666
  },
1667
+ {
1668
+ "user_agents": [
1669
+ "podnods-crawler",
1670
+ "podnods"
1671
+ ],
1672
+ "app": "Podnods",
1673
+ "bot": true,
1674
+ "description": "Podnods is a podcast discovery site. This user agent is for crawling podcast data.",
1675
+ "info_url": "https://podnods.com/about"
1676
+ },
1677
+ {
1678
+ "user_agents": [
1679
+ "podnods-player"
1680
+ ],
1681
+ "app": "Podnods",
1682
+ "description": "Podnods is a podcast discovery site. This user agent is for users to sample and play podcasts.",
1683
+ "info_url": "https://podnods.com/about"
1684
+ },
1685
+ {
1686
+ "user_agents": [
1687
+ "Podyssey App"
1688
+ ],
1689
+ "app": "Podyssey",
1690
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1691
+ "info_url": "https://podyssey.fm"
1692
+ },
1693
+ {
1694
+ "user_agents": [
1695
+ "com.toysinboxes.Echo"
1696
+ ],
1697
+ "app": "Podyssey",
1698
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1699
+ "info_url": "https://podyssey.fm",
1700
+ "os": "ios"
1701
+ },
1702
+ {
1703
+ "user_agents": [
1704
+ "fm.podyssey.podcasts"
1705
+ ],
1706
+ "app": "Podyssey",
1707
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1708
+ "info_url": "https://podyssey.fm",
1709
+ "os": "android"
1710
+ },
1133
1711
  {
1134
1712
  "user_agents": [
1135
1713
  "python-requests"
1136
1714
  ],
1137
1715
  "bot": true
1138
1716
  },
1717
+ {
1718
+ "user_agents": [
1719
+ "^radio.de/app.+Android"
1720
+ ],
1721
+ "app": "radio.de",
1722
+ "os": "android",
1723
+ "description": "Radio.de is a radio and podcast app in Germany",
1724
+ "info_url": "https://www.radio.de/"
1725
+ },
1139
1726
  {
1140
1727
  "user_agents": [
1141
1728
  "^Radioplayer Android app"
@@ -1171,10 +1758,14 @@
1171
1758
  {
1172
1759
  "user_agents": [
1173
1760
  "RadioPublic iOS",
1174
- "RadioPublic.+CFNetwork"
1761
+ "RadioPublic.+CFNetwork",
1762
+ "^RadioPublic/iOS"
1175
1763
  ],
1176
1764
  "app": "RadioPublic",
1177
1765
  "description": "RadioPublic’s free, easy to use podcast player makes listening to podcasts simple, enjoyable, and fun.",
1766
+ "examples": [
1767
+ "RadioPublic/iOS-2.0"
1768
+ ],
1178
1769
  "info_url": "https://radiopublic.com/",
1179
1770
  "svg": "radiopublic.svg",
1180
1771
  "os": "ios"
@@ -1200,12 +1791,13 @@
1200
1791
  },
1201
1792
  {
1202
1793
  "user_agents": [
1203
- "^RSSRadio7?/"
1794
+ "^RSSRadio"
1204
1795
  ],
1205
1796
  "app": "RSS Radio",
1206
1797
  "device": "phone",
1207
1798
  "examples": [
1208
- "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0"
1799
+ "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0",
1800
+ "RSSRadio/9710"
1209
1801
  ],
1210
1802
  "info_url": "http://rssrad.io",
1211
1803
  "os": "ios"
@@ -1214,14 +1806,29 @@
1214
1806
  "user_agents": [
1215
1807
  "^Ruby"
1216
1808
  ],
1217
- "bot": true
1809
+ "developer_notes": "The generic Ruby user-agent."
1218
1810
  },
1219
1811
  {
1220
1812
  "user_agents": [
1221
- "^SEMrushBot"
1813
+ "SemrushBot\/"
1814
+ ],
1815
+ "app": "SEMrushBot",
1816
+ "examples": [
1817
+ "Mozilla/5.0 (compatible; SemrushBot/6~bl; http://www.semrush.com/bot.html)"
1222
1818
  ],
1223
1819
  "bot": true
1224
1820
  },
1821
+ {
1822
+ "user_agents": [
1823
+ "SerendeputyBot\/"
1824
+ ],
1825
+ "app": "Serendeputy",
1826
+ "examples": [
1827
+ "SerendeputyBot/0.8.6 (http://serendeputy.com/about/serendeputy-bot)"
1828
+ ],
1829
+ "bot": true,
1830
+ "info_url": "https://serendeputy.com/about/serendeputy-bot"
1831
+ },
1225
1832
  {
1226
1833
  "user_agents": [
1227
1834
  "^Spotify/.+Linux"
@@ -1266,21 +1873,29 @@
1266
1873
  },
1267
1874
  {
1268
1875
  "user_agents": [
1269
- "^Spotify/\\d+"
1876
+ "^Spotify/1.0$"
1270
1877
  ],
1271
- "bot": true
1878
+ "app": "Spotify cache service",
1879
+ "bot": true,
1880
+ "examples": [
1881
+ "Spotify/1.0"
1882
+ ],
1883
+ "developer_notes": "This useragent, currently simply Spotify/1.0, is used when retrieving the RSS and audio for Spotify's catalogue. It isn't used for passthru."
1272
1884
  },
1273
1885
  {
1274
1886
  "user_agents": [
1275
- "Macintosh.*AppleWebKit.*Safari/"
1887
+ "Macintosh.*AppleWebKit(?!.*(Chrome\/)).*Safari/(?!.*(AdsBot/))"
1276
1888
  ],
1277
1889
  "app": "Safari",
1278
1890
  "device": "pc",
1279
- "os": "macos"
1891
+ "os": "macos",
1892
+ "examples": [
1893
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15"
1894
+ ]
1280
1895
  },
1281
1896
  {
1282
1897
  "user_agents": [
1283
- "Windows.*AppleWebKit.*Safari/"
1898
+ "Windows.*AppleWebKit(?!.*(Chrome\/)).*Safari/"
1284
1899
  ],
1285
1900
  "app": "Safari",
1286
1901
  "device": "pc",
@@ -1288,7 +1903,7 @@
1288
1903
  },
1289
1904
  {
1290
1905
  "user_agents": [
1291
- "iPhone.*AppleWebKit.*Safari/"
1906
+ "iPhone.*AppleWebKit(?!.*(AdsBot|CriOS)).*Safari/"
1292
1907
  ],
1293
1908
  "app": "Safari",
1294
1909
  "device": "phone",
@@ -1302,12 +1917,28 @@
1302
1917
  "device": "tablet",
1303
1918
  "os": "ios"
1304
1919
  },
1920
+ {
1921
+ "user_agents": [
1922
+ "^Slack/"
1923
+ ],
1924
+ "app": "Slack"
1925
+ },
1305
1926
  {
1306
1927
  "user_agents": [
1307
1928
  "^Subcast"
1308
1929
  ],
1309
1930
  "app": "Subcast"
1310
1931
  },
1932
+ {
1933
+ "user_agents": [
1934
+ "Sonnet"
1935
+ ],
1936
+ "app": "Sonnet",
1937
+ "description": "Sonnet is a simple, easy to use podcast app aimed at new listeners",
1938
+ "os": "android",
1939
+ "info_url": "https://sonnet.fm",
1940
+ "svg": "sonnet.svg"
1941
+ },
1311
1942
  {
1312
1943
  "user_agents": [
1313
1944
  "Sonos"
@@ -1318,7 +1949,14 @@
1318
1949
  },
1319
1950
  {
1320
1951
  "user_agents": [
1321
- "^Spreaker"
1952
+ "^Spreaker for Android"
1953
+ ],
1954
+ "app": "Spreaker",
1955
+ "os": "Android"
1956
+ },
1957
+ {
1958
+ "user_agents": [
1959
+ "Spreaker/"
1322
1960
  ],
1323
1961
  "app": "Spreaker"
1324
1962
  },
@@ -1330,7 +1968,12 @@
1330
1968
  },
1331
1969
  {
1332
1970
  "user_agents": [
1333
- "^Stitcher/Android"
1971
+ "^Stitcher\/Android",
1972
+ "^Stitcher Demo\/"
1973
+ ],
1974
+ "examples": [
1975
+ "Stitcher Demo/4.8.0 (Linux;Android 11) ExoPlayerLib/2.10.7",
1976
+ "Stitcher/Android"
1334
1977
  ],
1335
1978
  "app": "Stitcher",
1336
1979
  "os": "android"
@@ -1348,12 +1991,14 @@
1348
1991
  "^Stitcher/iOS"
1349
1992
  ],
1350
1993
  "app": "Stitcher",
1351
- "os": "ios"
1994
+ "os": "ios",
1995
+ "device": "phone"
1352
1996
  },
1353
1997
  {
1354
1998
  "user_agents": [
1355
- "StitcherBot"
1999
+ "^StitcherBot"
1356
2000
  ],
2001
+ "app": "Stitcher",
1357
2002
  "bot": true
1358
2003
  },
1359
2004
  {
@@ -1376,21 +2021,76 @@
1376
2021
  },
1377
2022
  {
1378
2023
  "user_agents": [
1379
- "^Swoot/"
2024
+ "TrendsmapResolver\/"
1380
2025
  ],
1381
- "app": "Swoot"
2026
+ "app": "Trendsmap Resolver",
2027
+ "bot": true
1382
2028
  },
1383
2029
  {
1384
2030
  "user_agents": [
1385
2031
  "^Trackable/"
1386
2032
  ],
2033
+ "app": "Chartable",
2034
+ "info_url": "https://chartable.com/",
1387
2035
  "bot": true
2036
+ },
2037
+ {
2038
+ "user_agents": [
2039
+ "^TuneIn Radio/.*;Android"
2040
+ ],
2041
+ "examples": [
2042
+ "TuneIn Radio/24.2 (Linux;Android 10) ExoPlayerLib/2.11.4"
2043
+ ],
2044
+ "app": "TuneIn Radio",
2045
+ "os": "android",
2046
+ "info_url": "https://play.google.com/store/apps/details?id=tunein.player"
1388
2047
  },
1389
2048
  {
1390
2049
  "user_agents": [
1391
- "^TuneIn"
2050
+ "^TuneIn Radio Pro/.*;Android"
1392
2051
  ],
1393
- "app": "TuneIn"
2052
+ "examples": [
2053
+ "TuneIn Radio Pro/23.3.2 (Linux;Android 5.1.1) ExoPlayerLib/2.10.7"
2054
+ ],
2055
+ "app": "TuneIn Pro",
2056
+ "os": "android",
2057
+ "info_url": "https://play.google.com/store/apps/details?id=radiotime.player"
2058
+ },
2059
+ {
2060
+ "user_agents": [
2061
+ "^TuneIn(%20| )Radio/.*(CFNetwork/|iPhone)"
2062
+ ],
2063
+ "examples": [
2064
+ "TuneIn Radio/1366 CFNetwork/1121.2.2 Darwin/19.3.0",
2065
+ "TuneIn Radio/18.1; iPhone12,8; iOS/13.4.1",
2066
+ "TuneIn%20Radio/1383 CFNetwork/1125.2 Darwin/19.4.0"
2067
+ ],
2068
+ "app": "TuneIn Radio",
2069
+ "os": "ios",
2070
+ "info_url": "https://apps.apple.com/us/app/tunein-radio-live-news-music/id418987775"
2071
+ },
2072
+ {
2073
+ "user_agents": [
2074
+ "^TuneIn(%20| )Radio(%20| )Pro/.*CFNetwork/"
2075
+ ],
2076
+ "examples": [
2077
+ "TuneIn Radio Pro/1361 CFNetwork/1121.2.2 Darwin/19.3.0",
2078
+ "TuneIn%20Radio%20Pro/1383 CFNetwork/1125.2 Darwin/19.4.0"
2079
+ ],
2080
+ "app": "TuneIn Pro",
2081
+ "os": "ios",
2082
+ "info_url": "https://apps.apple.com/us/app/tunein-pro-radio-sports/id319295332"
2083
+ },
2084
+ {
2085
+ "user_agents": [
2086
+ "^TuneIn(?!.*(CFNetwork|Android))"
2087
+ ],
2088
+ "examples": [
2089
+ "TuneIn Radio"
2090
+ ],
2091
+ "app": "TuneIn Radio",
2092
+ "info_url": "https://tunein.com/",
2093
+ "developer_notes": "Other versions of this app use many other user agents."
1394
2094
  },
1395
2095
  {
1396
2096
  "user_agents": [
@@ -1427,6 +2127,7 @@
1427
2127
  "user_agents": [
1428
2128
  "Wget"
1429
2129
  ],
2130
+ "app": "Wget",
1430
2131
  "bot": true
1431
2132
  },
1432
2133
  {
@@ -1460,8 +2161,9 @@
1460
2161
  },
1461
2162
  {
1462
2163
  "user_agents": [
1463
- "YandexBot"
2164
+ "YandexBot\/"
1464
2165
  ],
2166
+ "app": "YandexBot",
1465
2167
  "bot": true
1466
2168
  },
1467
2169
  {
@@ -1475,5 +2177,241 @@
1475
2177
  "stagefright/"
1476
2178
  ],
1477
2179
  "os": "android"
2180
+ },
2181
+ {
2182
+ "user_agents": [
2183
+ "^^com\\.evolve\\.podcast/"
2184
+ ],
2185
+ "app": "The Podcast App",
2186
+ "device": "phone",
2187
+ "examples": [
2188
+ "com.evolve.podcast/3.10.1 (iPhone; ) (build 951, iOS 13.3)"
2189
+ ],
2190
+ "os": "ios"
2191
+ },
2192
+ {
2193
+ "user_agents": [
2194
+ "^Podimo/.*iOS"
2195
+ ],
2196
+ "app": "Podimo",
2197
+ "device": "phone",
2198
+ "os": "ios",
2199
+ "examples": [
2200
+ "Podimo/1.11.3 build 121/iOS 13.3"
2201
+ ],
2202
+ "info_url": "https://apps.apple.com/dk/app/podimo-a-world-of-podcasts/id1476538730"
2203
+ },
2204
+ {
2205
+ "user_agents": [
2206
+ "^Podimo/.*Android"
2207
+ ],
2208
+ "app": "Podimo",
2209
+ "device": "phone",
2210
+ "os": "android",
2211
+ "examples": [
2212
+ "Podimo/1.11.3 build 91/Android 28"
2213
+ ],
2214
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US"
2215
+ },
2216
+ {
2217
+ "user_agents": [
2218
+ "BingPreview/",
2219
+ "adidxbot/",
2220
+ "bingbot/"
2221
+ ],
2222
+ "app": "Microsoft Bing",
2223
+ "bot": true,
2224
+ "info_url": "https://www.bing.com/webmaster/help/which-crawlers-does-bing-use-8c184ec0",
2225
+ "examples": [
2226
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534 (KHTML, like Gecko) BingPreview/1.0b"
2227
+ ]
2228
+ },
2229
+ {
2230
+ "user_agents": [
2231
+ "^msnbot/"
2232
+ ],
2233
+ "bot": true
2234
+ },
2235
+ {
2236
+ "user_agents": [
2237
+ "^Deezer Podcasters\/1\\.0"
2238
+ ],
2239
+ "bot": true,
2240
+ "app": "Deezer Podcasters"
2241
+ },
2242
+ {
2243
+ "user_agents": [
2244
+ "^got/"
2245
+ ],
2246
+ "bot": true,
2247
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US",
2248
+ "developer_notes": "Got is a HTTP library for NodeJs"
2249
+ },
2250
+ {
2251
+ "user_agents": [
2252
+ "INA dlweb"
2253
+ ],
2254
+ "bot": true,
2255
+ "app": "l'Institut national de l'audiovisuel",
2256
+ "info_url": "https://institut.ina.fr/collecte-du-depot-legal-web",
2257
+ "developer_notes": "Institut National de l'Audiovisuel is a repository of all French radio and television audiovisual archives."
2258
+ },
2259
+ {
2260
+ "user_agents": [
2261
+ "^Instagram\/"
2262
+ ],
2263
+ "app": "Instagram",
2264
+ "examples": [
2265
+ "Instagram/252729634 CFNetwork/1126 Darwin/19.5.0"
2266
+ ]
2267
+ },
2268
+ {
2269
+ "user_agents": [
2270
+ "^SoundOn/[\\d\\.]+\\s+\\(Linux;Android",
2271
+ "^SoundOn\/[^12]\\.\\d+\\.\\d+$",
2272
+ "^SoundOn\/1\\.[^1][^0-2]?\\.\\d+$"
2273
+ ],
2274
+ "app": "SoundOn",
2275
+ "device": "phone",
2276
+ "examples": [
2277
+ "SoundOn/1.9.17 (Linux;Android 10) ExoPlayerLib/2.9.4"
2278
+ ],
2279
+ "os": "android"
2280
+ },
2281
+ {
2282
+ "user_agents": [
2283
+ "^SoundOn/1\\.1[0-2]\\.\\d+$",
2284
+ "^SoundOn/2\\.\\d+\\.\\d+$",
2285
+ "^SoundOn/[\\d\\.]+\\s+\\(iOS"
2286
+ ],
2287
+ "app": "SoundOn",
2288
+ "device": "phone",
2289
+ "examples": [
2290
+ "SoundOn/1.10.1",
2291
+ "SoundOn/2.2.0",
2292
+ "SoundOn/2.2.2 (iOS)"
2293
+ ],
2294
+ "os": "ios"
2295
+ },
2296
+ {
2297
+ "user_agents": [
2298
+ "^SoundOn/[\\d\\.]+\\s+\\(bot"
2299
+ ],
2300
+ "bot": true
2301
+ },
2302
+ {
2303
+ "user_agents": [
2304
+ "^Podverse/Android Mobile App/"
2305
+ ],
2306
+ "app": "Podverse Android Mobile App",
2307
+ "device": "phone",
2308
+ "os": "android",
2309
+ "info_url": "https://play.google.com/store/apps/details?id=com.podverse&hl=en_US",
2310
+ "description": "Open source podcast catcher for Android, with clip-sharing, playlists, device syncing and more.",
2311
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/Android Mobile App/ user agent."
2312
+ },
2313
+ {
2314
+ "user_agents": [
2315
+ "^Podverse/iOS Mobile App/"
2316
+ ],
2317
+ "app": "Podverse iOS Mobile App",
2318
+ "device": "phone",
2319
+ "os": "ios",
2320
+ "examples": [
2321
+ "Podverse/iOS Mobile App/Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/1234"
2322
+ ],
2323
+ "description": "Open source podcast catcher for iOS, with clip-sharing, playlists, device syncing and more.",
2324
+ "info_url": "https://apps.apple.com/us/app/podverse/id1390888454",
2325
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/iOS Mobile App/ user agent."
2326
+ },
2327
+ {
2328
+ "user_agents": [
2329
+ "^Podverse/Feed Parser"
2330
+ ],
2331
+ "bot": true,
2332
+ "app": "Podverse Server-Side Feed Parser",
2333
+ "info_url": "https://podverse.fm",
2334
+ "description": "The Podverse feed parser.",
2335
+ "developer_notes": "This service parses publicly-accessible RSS feeds on a timer, then stores parsed data in the Podverse database."
2336
+ },
2337
+ {
2338
+ "user_agents": [
2339
+ "^Podcast/1."
2340
+ ],
2341
+ "app": "小宇宙",
2342
+ "info_url": "https://www.coolapk.com/apk/app.podcast.cosmos",
2343
+ "description": "Cosmos, a chinese podcast app"
2344
+ },
2345
+ {
2346
+ "user_agents": [
2347
+ "^Xiaoyuzhou\/.*Android\/"
2348
+ ],
2349
+ "app": "Xiao Yu Zhou",
2350
+ "description": "Xiao Yu Zhou, a podcast app",
2351
+ "os": "android",
2352
+ "examples": [
2353
+ "Xiaoyuzhou/1.9.6 Android/10"
2354
+ ]
2355
+ },
2356
+ {
2357
+ "user_agents": [
2358
+ "^Xiaoyuzhou/(?!.*(Android\/))"
2359
+ ],
2360
+ "app": "Xiao Yu Zhou",
2361
+ "description": "Xiao Yu Zhou, a podcast app",
2362
+ "info_url": "https://apps.apple.com/cn/app/%E5%B0%8F%E5%AE%87%E5%AE%99-%E4%B8%80%E8%B5%B7%E5%90%AC%E6%92%AD%E5%AE%A2/id1488894313",
2363
+ "os": "ios",
2364
+ "examples": [
2365
+ "Xiaoyuzhou/1.9.0",
2366
+ "Xiaoyuzhou/1.5.1"
2367
+ ]
2368
+ },
2369
+ {
2370
+ "user_agents": [
2371
+ "^yacybot"
2372
+ ],
2373
+ "app": "YaCy",
2374
+ "bot": true,
2375
+ "description": "Decentralized Web Search",
2376
+ "info_url": "http://yacy.net/bot.html",
2377
+ "examples": [
2378
+ "yacybot (/global; amd64 Linux 5.9.8-zen1-1-zen; java 1.8.0_265; Europe/de) http://yacy.net/bot.html"
2379
+ ]
2380
+ },
2381
+ {
2382
+ "user_agents": [
2383
+ "^Podcast-CriticalMention/"
2384
+ ],
2385
+ "app": "Critical Mention",
2386
+ "description": "Critical Mention is a business intelligence company, monitoring podcasts on the web for their clients",
2387
+ "bot": true,
2388
+ "examples": [
2389
+ "Podcast-CriticalMention/1.0"
2390
+ ]
2391
+ },
2392
+ {
2393
+ "user_agents": [
2394
+ "^RSSOwl.*Windows"
2395
+ ],
2396
+ "app": "RSSOwl",
2397
+ "description": "A Mac and Windows app, to help organize, search, and read feeds",
2398
+ "device": "pc",
2399
+ "os": "windows",
2400
+ "info_url": "http://www.rssowl.org/",
2401
+ "examples": [
2402
+ "RSSOwl/2.2.1.201312301314 (Windows; U; en)"
2403
+ ]
2404
+ },
2405
+ {
2406
+ "user_agents": [
2407
+ "^ltx71 "
2408
+ ],
2409
+ "app": "LTX71",
2410
+ "info_url": "http://ltx71.com/",
2411
+ "description": "We continuously scan the internet for security research purposes.",
2412
+ "bot": true,
2413
+ "examples": [
2414
+ "ltx71 - (http://ltx71.com/)"
2415
+ ]
1478
2416
  }
1479
2417
  ]