podcast_agent_parser 0.1.3 → 0.1.8

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 +1143 -131
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b17e692e81a51f6f45fe2c018821ef79db3ee894b06396d951de2d27fa1f256
4
- data.tar.gz: 94563f6e80cedc5807f6e5d0febe560fbf1a421d4995911eccbbfdd51db42bd4
3
+ metadata.gz: d96399255509f352a7ff8a5926207cf7948db054f946506f3f9bab459f91fc41
4
+ data.tar.gz: 76a0e109002166ca42d40581a7e02ddffc8f309f5d4af811ac64697a464fed8f
5
5
  SHA512:
6
- metadata.gz: c472822620f50aa3fbe27788dfbe1ea1880aa40e9f6bd9c9103dae95da6a9f8be8c2b837f93df4b498f6d42b5168a1159f5bd94d70f7d18a64a98fa78361d1a4
7
- data.tar.gz: 5f1a4126e2224db2b065d916b76c0fbced60d01b9b091c62a72be87fce4a26c3519dba25053eadfcc9155de64d385e6abec3721a1d5362a4b5dd1321995fdbf2
6
+ metadata.gz: 2da1416c7b8d9f055cf0cfaec290c4aae4397762beaafd19a4040e9d2c33be4dd122de37a3d73325c72f151986d3a2d97369c06f2bb6e5ff9394373844750f9d
7
+ data.tar.gz: 882a509ef28cd2ddaff4809af0b618f32fad2b1d9116a68a708a9be3fd0b6cf0540e7ad12a8757c3198406502fd38358c879ced1a52e4467027e24a9bc261446
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.3'
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,61 @@
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|Android)"
74
+ ],
75
+ "examples": [
76
+ "AmazonMusic"
77
+ ],
78
+ "app": "Amazon Music Podcasts",
79
+ "description": "A music and podcasts streaming app",
80
+ "svg": "amazon.svg"
81
+ },
82
+ {
83
+ "user_agents": [
84
+ "^AmazonMusic.*iPhone"
85
+ ],
86
+ "examples": [
87
+ "AmazonMusic/9.15.2 iPhone7,2 CFNetwork/978.0.7 Darwin/18.7.0",
88
+ "AmazonMusic/9.16.1 iPhone9,1 CFNetwork/1128.0.1 Darwin/19.6.0",
89
+ "AmazonMusic/9.16.0 iPhone12,1 CFNetwork/1128.0.1 Darwin/19.6.0"
90
+ ],
91
+ "app": "Amazon Music Podcasts",
92
+ "description": "A music and podcasts streaming app",
93
+ "os": "ios",
94
+ "device": "phone",
95
+ "developer_notes": "Examples are from an Amazon contact",
96
+ "svg": "amazon.svg"
97
+ },
98
+ {
99
+ "user_agents": [
100
+ "^AmazonMusic.*Android"
101
+ ],
102
+ "examples": [
103
+ "AmazonMusic/16.17.0 Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo 1610 Build/MMB29M)"
104
+ ],
105
+ "app": "Amazon Music Podcasts",
106
+ "description": "A music and podcasts streaming app",
107
+ "os": "android",
108
+ "developer_notes": "Examples are from an Amazon contact",
109
+ "svg": "amazon.svg"
110
+ },
111
+ {
112
+ "user_agents": [
113
+ "^Amazon Music Podcast"
114
+ ],
115
+ "app": "Amazon Music Podcasts",
116
+ "description": "A music and podcasts streaming app",
117
+ "developer_notes": "Backend ingestion service",
50
118
  "svg": "amazon.svg",
51
119
  "bot": true
52
120
  },
@@ -61,12 +129,19 @@
61
129
  },
62
130
  {
63
131
  "user_agents": [
64
- "Android 5.*ford/"
132
+ "^com.audible.playersdk.player",
133
+ "^Audible,"
65
134
  ],
66
- "app": "Amazon Kindle Fire",
67
- "device": "tablet",
135
+ "app": "Audible",
68
136
  "os": "android"
69
137
  },
138
+ {
139
+ "user_agents": [
140
+ "^Audible.*Darwin"
141
+ ],
142
+ "app": "Audible",
143
+ "os": "ios"
144
+ },
70
145
  {
71
146
  "user_agents": [
72
147
  "^AndroidDownloadManager"
@@ -83,6 +158,15 @@
83
158
  "de.danoeh.antennapod/1.7.3b (Linux;Android 8.0.0) ExoPlayerLib/2.9.3"
84
159
  ],
85
160
  "info_url": "https://github.com/AntennaPod/AntennaPod",
161
+ "os": "android",
162
+ "developer_notes": "The de.danoeh version was used when streaming only, and will been phased out as of v2"
163
+ },
164
+ {
165
+ "user_agents": [
166
+ "^Anytime.+[aA]ndroid"
167
+ ],
168
+ "app": "Anytime Podcast Player",
169
+ "device": "phone",
86
170
  "os": "android"
87
171
  },
88
172
  {
@@ -95,12 +179,13 @@
95
179
  "user_agents": [
96
180
  "^AppleCoreMedia/1\\..*iPod"
97
181
  ],
98
- "app": "Apple Podcasts",
99
182
  "device": "mp3_player",
100
183
  "examples": [
101
184
  "AppleCoreMedia/1.0.0.16G114 (iPod touch; U; CPU OS 12_4_2 like Mac OS X; en_us)"
102
185
  ],
103
- "os": "ios"
186
+ "os": "ios",
187
+ "description": "AppleCoreMedia library",
188
+ "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
189
  },
105
190
  {
106
191
  "user_agents": [
@@ -109,67 +194,91 @@
109
194
  "examples": [
110
195
  "AppleCoreMedia/1.0.0.19A583 (Macintosh; U; Intel Mac OS X 10_15; en_us)"
111
196
  ],
112
- "app": "Apple Podcasts",
113
197
  "device": "pc",
114
198
  "os": "macos",
115
- "description": "The Apple Podcasts app on MacOS Catalina and above",
116
- "developer_notes": "Used when progressively downloading podcasts"
199
+ "description": "AppleCoreMedia library",
200
+ "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
201
  },
118
202
  {
119
203
  "user_agents": [
120
204
  "^AppleCoreMedia/1\\..*iPhone"
121
205
  ],
122
- "app": "Apple Podcasts",
123
206
  "device": "phone",
124
207
  "examples": [
125
208
  "AppleCoreMedia/1.0.0.15G77 (iPhone; U; CPU OS 11_4_1 like Mac OS X; en_us)"
126
209
  ],
127
- "os": "ios"
210
+ "os": "ios",
211
+ "description": "AppleCoreMedia library",
212
+ "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
213
  },
129
214
  {
130
215
  "user_agents": [
131
216
  "^AppleCoreMedia/1\\..*iPad"
132
217
  ],
133
- "app": "Apple Podcasts",
134
218
  "device": "tablet",
135
219
  "examples": [
136
220
  "AppleCoreMedia/1.0.0.17A860 (iPad; U; CPU OS 13_1_2 like Mac OS X; en_us)"
137
221
  ],
138
- "os": "ios"
222
+ "os": "ios",
223
+ "description": "AppleCoreMedia library",
224
+ "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
225
  },
140
226
  {
141
227
  "user_agents": [
142
228
  "^AppleCoreMedia/1\\..*HomePod"
143
229
  ],
144
- "app": "Apple Podcasts",
145
230
  "device": "speaker",
146
231
  "examples": [
147
232
  "AppleCoreMedia/1.0.0.16G78 (HomePod; U; CPU OS 12_4 like Mac OS X; en_us)"
148
233
  ],
149
- "os": "homepod_os"
234
+ "os": "homepodos",
235
+ "description": "AppleCoreMedia library",
236
+ "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
237
  },
151
238
  {
152
239
  "user_agents": [
153
240
  "^AppleCoreMedia/1\\..*Apple TV"
154
241
  ],
155
- "app": "Apple Podcasts",
156
242
  "device": "tv",
157
243
  "examples": [
158
244
  "AppleCoreMedia/1.0.0.17J586 (Apple TV; U; CPU OS 13_0 like Mac OS X; en_us)"
159
245
  ],
160
- "os": "tvos"
246
+ "os": "tvos",
247
+ "description": "AppleCoreMedia library",
248
+ "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"
249
+ },
250
+ {
251
+ "user_agents": [
252
+ "^AppleCoreMedia/1\\..*Apple Watch"
253
+ ],
254
+ "device": "watch",
255
+ "os": "watchos",
256
+ "description": "AppleCoreMedia library",
257
+ "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
258
  },
162
259
  {
163
260
  "user_agents": [
164
- "^AppleCoreMedia/1\\..*Apple Watch",
165
- "watchOS/"
261
+ "^atc\/.* watchOS\/.* model\/Watch"
166
262
  ],
167
263
  "app": "Apple Podcasts",
168
264
  "device": "watch",
265
+ "os": "watchos",
266
+ "bot": true,
267
+ "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
268
  "examples": [
170
- "atc/1.0 watchOS/6.0.1 model/Watch4,1 hwp/t8006 build/17R605 (6; dt:190)"
171
- ],
172
- "os": "watchos"
269
+ "atc/1.0 watchOS/6.2 model/Watch3,3 hwp/t8004 build/17T529 (6; dt:155)",
270
+ "atc/1.0 watchOS/6.2.8 model/Watch2,3 hwp/t8002 build/17U63 (6; dt:133)",
271
+ "atc/1.0 watchOS/6.2.8 model/Watch3,3 hwp/t8004 build/17U63 (6; dt:155)",
272
+ "atc/1.0 watchOS/6.2.8 model/Watch4,2 hwp/t8006 build/17U63 (6; dt:191)",
273
+ "atc/1.0 watchOS/7.0.2 model/Watch5,10 hwp/t8006 build/18R402 (6; dt:233)",
274
+ "atc/1.0 watchOS/7.0.2 model/Watch5,11 hwp/t8006 build/18R402 (6; dt:234)",
275
+ "atc/1.0 watchOS/7.1 model/Watch4,2 hwp/t8006 build/18R590 (6; dt:191)",
276
+ "atc/1.0 watchOS/7.1 model/Watch4,3 hwp/t8006 build/18R590 (6; dt:192)",
277
+ "atc/1.0 watchOS/7.1 model/Watch4,4 hwp/t8006 build/18R590 (6; dt:193)",
278
+ "atc/1.0 watchOS/7.1 model/Watch5,1 hwp/t8006 build/18R590 (6; dt:201)",
279
+ "atc/1.0 watchOS/7.1 model/Watch5,3 hwp/t8006 build/18R590 (6; dt:202)",
280
+ "atc/1.0 watchOS/7.1 model/Watch5,4 hwp/t8006 build/18R590 (6; dt:202)"
281
+ ]
173
282
  },
174
283
  {
175
284
  "user_agents": [
@@ -182,7 +291,6 @@
182
291
  "^Podcast’ler/.*\\(.*\\)",
183
292
  "^Podkaster/.*\\(.*\\)",
184
293
  "^Podcaster/.*\\(.*\\)",
185
- "^Podcast/.*\\(.*\\)",
186
294
  "^Podcastok/.*\\(.*\\)",
187
295
  "^Подкасти/.*\\(.*\\)",
188
296
  "^Подкасты/.*\\(.*\\)",
@@ -214,7 +322,6 @@
214
322
  "^Podcast’ler/.*\\d$",
215
323
  "^Podkaster/.*\\d$",
216
324
  "^Podcaster/.*\\d$",
217
- "^Podcast/.*\\d$",
218
325
  "^Podcastok/.*\\d$",
219
326
  "^Подкасти/.*\\d$",
220
327
  "^Подкасты/.*\\d$",
@@ -222,16 +329,15 @@
222
329
  "^البودكاست/.*\\d$",
223
330
  "^पॉडकास्ट/.*\\d$",
224
331
  "^พ็อดคาสท์/.*\\d$",
332
+ "^%E6%92%AD%E5%AE%A2/.*\\d$",
225
333
  "^播客/.*\\d$",
226
334
  "^팟캐스트/.*\\d$"
227
335
  ],
228
336
  "app": "Apple Podcasts",
229
- "os": "ios",
230
- "description": "The Apple Podcasts app on devices other than MacOS Catalina and above",
231
- "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",
337
+ "description": "The Apple Podcasts app",
338
+ "developer_notes": "Used when downloading podcasts (not progressive downloads). This could be on iOS or iPadOS.",
232
339
  "examples": [
233
- "Podcasts/2.6",
234
- "Podcast/1150.47 CFNetwork/811.5.4 Darwin/16.6.0"
340
+ "Podcasts/1440.4 CFNetwork/1128.0.1 Darwin/19.6.0"
235
341
  ]
236
342
  },
237
343
  {
@@ -242,6 +348,14 @@
242
348
  "device": "pc",
243
349
  "info_url": "http://lincgeek.org/bashpodder/"
244
350
  },
351
+ {
352
+ "user_agents": [
353
+ "Barkrowler\/"
354
+ ],
355
+ "app": "Babbar",
356
+ "bot": true,
357
+ "info_url": "https://beta.babbar.tech/crawler"
358
+ },
245
359
  {
246
360
  "user_agents": [
247
361
  "BBC%20Sounds/"
@@ -276,6 +390,17 @@
276
390
  "os": "android"
277
391
  },
278
392
  {
393
+ "user_agents": [
394
+ "^Bitcast/"
395
+ ],
396
+ "app": "Bitcast",
397
+ "os": "ios",
398
+ "info_url": "https://bitcast.fm/",
399
+ "examples": [
400
+ "Bitcast/336 CFNetwork/1197 Darwin/20.0.0"
401
+ ]
402
+ },
403
+ {
279
404
  "user_agents": [
280
405
  "^Bose/"
281
406
  ],
@@ -284,10 +409,17 @@
284
409
  },
285
410
  {
286
411
  "user_agents": [
287
- "^Breaker/"
412
+ "^Breaker/Android"
288
413
  ],
289
414
  "app": "Breaker",
290
- "device": "phone"
415
+ "os": "android"
416
+ },
417
+ {
418
+ "user_agents": [
419
+ "^Breaker/iOS"
420
+ ],
421
+ "app": "Breaker",
422
+ "os": "ios"
291
423
  },
292
424
  {
293
425
  "user_agents": [
@@ -320,6 +452,18 @@
320
452
  "device": "pc",
321
453
  "os": "windows"
322
454
  },
455
+ {
456
+ "user_agents": [
457
+ "BroadwayPodcastNetwork/iOS"
458
+ ],
459
+ "app": "Broadway Podcast Network",
460
+ "description": "The Broadway Podcast Network iOS App",
461
+ "device": "phone",
462
+ "examples": [
463
+ "BroadwayPodcastNetwork/iOS"
464
+ ],
465
+ "os": "ios"
466
+ },
323
467
  {
324
468
  "user_agents": [
325
469
  "^Cast(?:b|B)ox/.+Android"
@@ -327,7 +471,9 @@
327
471
  "app": "CastBox",
328
472
  "device": "phone",
329
473
  "examples": [
330
- "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4"
474
+ "CastBox/8.2.6-191015245 (Linux;Android 10) ExoPlayerLib/2.10.4",
475
+ "CastBox/8.19.0-200927161 (Linux;Android 10) ExoPlayerLib/2.10.4",
476
+ "CastBox/8.18.1-200917153 (Linux;Android 8.0.0) ExoPlayerLib/2.10.4"
331
477
  ],
332
478
  "os": "android"
333
479
  },
@@ -344,7 +490,7 @@
344
490
  },
345
491
  {
346
492
  "user_agents": [
347
- "^Cast(?:b|B)ox"
493
+ "^Cast(?:b|B)ox(?!.*(Android|iOS))"
348
494
  ],
349
495
  "app": "CastBox",
350
496
  "developer_notes": "There are CastBox compatible User Agents that come without Android/iOS platform marker",
@@ -363,6 +509,16 @@
363
509
  "info_url": "https://castget.johndal.com/",
364
510
  "device": "pc"
365
511
  },
512
+ {
513
+ "user_agents": [
514
+ "Castopod/1.0"
515
+ ],
516
+ "app": "Castopod",
517
+ "examples": [
518
+ "Castopod/1.0"
519
+ ],
520
+ "bot": true
521
+ },
366
522
  {
367
523
  "user_agents": [
368
524
  "Castro "
@@ -370,7 +526,8 @@
370
526
  "app": "Castro",
371
527
  "device": "phone",
372
528
  "examples": [
373
- "Castro 2019.13/1167"
529
+ "Castro 2019.13/1167",
530
+ "Castro 2020.14/1287"
374
531
  ],
375
532
  "os": "ios"
376
533
  },
@@ -416,14 +573,45 @@
416
573
  "Deezer/.*Android;"
417
574
  ],
418
575
  "app": "Deezer",
419
- "device": "phone",
420
- "os": "android"
576
+ "os": "android",
577
+ "examples": [
578
+ "Deezer/6.2.2.80 (Android; 9; Mobile; fr) samsung SM-G950F",
579
+ "Deezer/6.2.3.96 (Android; 10; Mobile; fr) samsung SM-A405FN"
580
+ ],
581
+ "info_url": "https://play.google.com/store/apps/details?id=deezer.android.app"
582
+ },
583
+ {
584
+ "user_agents": [
585
+ "^Deezer/.*CFNetwork/"
586
+ ],
587
+ "app": "Deezer",
588
+ "os": "ios",
589
+ "examples": [
590
+ "Deezer/8.13.0.4 CFNetwork/1125.2 Darwin/19.4.0"
591
+ ],
592
+ "info_url": "https://apps.apple.com/us/app/deezer-music-podcast-player/id292738169"
593
+ },
594
+ {
595
+ "user_agents": [
596
+ "^Deezer.*Electron; windows"
597
+ ],
598
+ "app": "Deezer",
599
+ "examples": [
600
+ "Deezer/4.20.0 (Electron; windows/10.0.18362; Desktop; fr)"
601
+ ],
602
+ "device": "pc",
603
+ "os": "windows"
421
604
  },
422
605
  {
423
606
  "user_agents": [
424
- "^Deezer"
607
+ "^Deezer.*Electron; osx"
608
+ ],
609
+ "app": "Deezer",
610
+ "examples": [
611
+ "Deezer/4.20.0 (Electron; osx/10.14.6; Desktop; fr)"
425
612
  ],
426
- "app": "Deezer"
613
+ "device": "pc",
614
+ "os": "macos"
427
615
  },
428
616
  {
429
617
  "user_agents": [
@@ -440,6 +628,10 @@
440
628
  "user_agents": [
441
629
  "DotBot/1"
442
630
  ],
631
+ "app": "DotBot",
632
+ "examples": [
633
+ "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)"
634
+ ],
443
635
  "bot": true
444
636
  },
445
637
  {
@@ -456,7 +648,7 @@
456
648
  },
457
649
  {
458
650
  "user_agents": [
459
- "Downcast/"
651
+ "Downcast/.*iPhone"
460
652
  ],
461
653
  "app": "Downcast",
462
654
  "device": "phone",
@@ -466,6 +658,28 @@
466
658
  "os": "ios"
467
659
  },
468
660
  {
661
+ "user_agents": [
662
+ "Downcast/.*iPad"
663
+ ],
664
+ "app": "Downcast",
665
+ "device": "tablet",
666
+ "examples": [
667
+ "Downcast/2.9.57 (iPad; iOS 14.2; Scale/2.00)"
668
+ ],
669
+ "os": "ios"
670
+ },
671
+ {
672
+ "user_agents": [
673
+ "Downcast/.*Mac OS X"
674
+ ],
675
+ "app": "Downcast",
676
+ "examples": [
677
+ "Downcast/2.9.57 (Mac OS X Version 10.15.7 (Build 19H15))"
678
+ ],
679
+ "os": "macos",
680
+ "device": "pc"
681
+ },
682
+ {
469
683
  "user_agents": [
470
684
  "Xbox.+Edge/"
471
685
  ],
@@ -473,6 +687,14 @@
473
687
  "device": "games_console",
474
688
  "os": "windows"
475
689
  },
690
+ {
691
+ "user_agents": [
692
+ "Android.+EdgA/"
693
+ ],
694
+ "app": "Microsoft Edge",
695
+ "os": "android",
696
+ "info_url": "https://play.google.com/store/apps/details?id=com.microsoft.emmx&hl=en_AU&gl=US"
697
+ },
476
698
  {
477
699
  "user_agents": [
478
700
  "Windows Phone.+Edge/"
@@ -502,9 +724,25 @@
502
724
  },
503
725
  {
504
726
  "user_agents": [
505
- "FacebookBot"
727
+ "FacebookBot",
728
+ "facebookexternalhit/"
506
729
  ],
507
- "bot": true
730
+ "bot": true,
731
+ "app": "Facebook",
732
+ "info_url": "https://www.facebook.com/externalhit_uatext.php",
733
+ "examples": [
734
+ "facebookexternalhit/1.1 ( http://www.facebook.com/externalhit_uatext.php)"
735
+ ]
736
+ },
737
+ {
738
+ "user_agents": [
739
+ "^feedly/"
740
+ ],
741
+ "app": "Feedly",
742
+ "examples": [
743
+ "feedly/81.0.1 CFNetwork/1206 Darwin/20.1.0"
744
+ ],
745
+ "description": "An RSS reader"
508
746
  },
509
747
  {
510
748
  "user_agents": [
@@ -560,7 +798,7 @@
560
798
  "user_agents": [
561
799
  "^Lavf/"
562
800
  ],
563
- "app": "ffmpeg"
801
+ "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."
564
802
  },
565
803
  {
566
804
  "user_agents": [
@@ -592,34 +830,49 @@
592
830
  "user_agents": [
593
831
  "^fyyd-poll"
594
832
  ],
833
+ "app": "Fyyd",
595
834
  "bot": true
596
835
  },
597
836
  {
598
837
  "user_agents": [
599
838
  "^Go-http-client"
600
839
  ],
601
- "bot": true
840
+ "developer_notes": "This has been seen being used by a TuneIn client, and may be within WinAMP code.",
841
+ "examples": [
842
+ "Go-http-client/2.0"
843
+ ]
602
844
  },
603
845
  {
604
846
  "user_agents": [
605
- "^Googlebot"
847
+ "Googlebot/",
848
+ "Googlebot-Video/",
849
+ "Googlebot-Image/"
850
+ ],
851
+ "examples": [
852
+ "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)",
853
+ "Googlebot-Image/1.0"
606
854
  ],
855
+ "description": "Google's search bots",
856
+ "app": "Googlebot",
857
+ "info_url": "http://www.google.com/bot.html",
607
858
  "bot": true
608
859
  },
609
860
  {
610
861
  "user_agents": [
611
862
  "Google-Podcast"
612
863
  ],
613
- "bot": true
864
+ "bot": true,
865
+ "app": "Google Podcasts Manager"
614
866
  },
615
867
  {
616
868
  "user_agents": [
617
869
  "^Google-Speech-Actions"
618
870
  ],
619
- "app": "Google Home",
871
+ "app": "Google Assistant",
620
872
  "device": "speaker",
621
- "description": "Google Podcasts on smart speakers",
622
- "os": "google_assistant"
873
+ "developer_notes": "This is audio downloaded as a result of a Google Assistant voice action. It's unlikely to appear in podcast host logs, since voice actions can only use up to 120 seconds of audio.",
874
+ "os": "google_assistant",
875
+ "info_url": "https://cloud.google.com/text-to-speech/docs/ssml"
623
876
  },
624
877
  {
625
878
  "user_agents": [
@@ -632,24 +885,18 @@
632
885
  },
633
886
  {
634
887
  "user_agents": [
635
- "iPhone;.*GSA/",
636
- "^Podcasts$"
888
+ "(iPhone|iPad|iPod touch).*GSA/",
889
+ "^Podcasts$",
890
+ "^GooglePodcasts/"
637
891
  ],
638
892
  "app": "Google Podcasts",
639
- "device": "phone",
640
893
  "description": "Google Podcasts on iOS",
641
- "developer_notes": "'Podcasts' is the iOS app, while *GSA/ is used in the Google app when searching and playing podcasts",
642
- "os": "ios"
643
- },
644
- {
645
- "user_agents": [
646
- "iPad;.*GSA/",
647
- "^Podcasts$"
894
+ "examples": [
895
+ "GooglePodcasts/2.0.2%20iPod_touch/13.4.1%20hw/iPod9_1",
896
+ "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",
897
+ "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"
648
898
  ],
649
- "app": "Google Podcasts",
650
- "device": "tablet",
651
- "description": "Google Podcasts on iOS",
652
- "developer_notes": "'Podcasts' is the iOS app, while *GSA/ is used in the Google app when searching and playing podcasts",
899
+ "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'.",
653
900
  "os": "ios"
654
901
  },
655
902
  {
@@ -660,8 +907,9 @@
660
907
  "os": "android",
661
908
  "description": "Google Podcasts on Android (the app or player)",
662
909
  "examples": [
663
- "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"
664
- ],
910
+ "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",
911
+ "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"
912
+ ],
665
913
  "developer_notes": "*GSA/ is used in the Google app when searching and playing podcasts, and in the Google Podcasts app"
666
914
  },
667
915
  {
@@ -673,10 +921,11 @@
673
921
  },
674
922
  {
675
923
  "user_agents": [
676
- "Android.*Chrome/"
924
+ "Android.*Chrome/(?!.*(Googlebot|CrKey|GSA|EdgA/))"
677
925
  ],
678
926
  "app": "Google Chrome",
679
- "os": "android"
927
+ "os": "android",
928
+ "developer_notes": "This won't match Googlebot, a Chromecast device, Google speaker or Google app"
680
929
  },
681
930
  {
682
931
  "user_agents": [
@@ -688,26 +937,28 @@
688
937
  },
689
938
  {
690
939
  "user_agents": [
691
- "Linux.*Chrome/"
940
+ "Linux(?!.*(Android)).*Chrome/(?!.*(CrKey|GSA/))"
692
941
  ],
693
942
  "app": "Google Chrome",
694
943
  "device": "pc",
695
- "os": "linux"
944
+ "os": "linux",
945
+ "developer_notes": "This won't match an Android device, Chromecast device, Google speaker or Google app"
696
946
  },
697
947
  {
698
948
  "user_agents": [
699
- "Mac OS X.*Chrome/"
949
+ "Mac OS X.*Chrome/(?!.*(Spreaker\/|OPR\/))"
700
950
  ],
701
951
  "app": "Google Chrome",
702
952
  "device": "pc",
703
953
  "examples": [
704
954
  "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"
705
955
  ],
706
- "os": "macos"
956
+ "os": "macos",
957
+ "developer_notes": "This won't match the Spreaker app"
707
958
  },
708
959
  {
709
960
  "user_agents": [
710
- "Windows.*Chrome/"
961
+ "Windows.*Chrome/(?!.*(OPR/))"
711
962
  ],
712
963
  "app": "Google Chrome",
713
964
  "device": "pc",
@@ -734,10 +985,12 @@
734
985
  },
735
986
  {
736
987
  "user_agents": [
737
- "^gPodder/",
988
+ "^gPodder/.*Windows",
738
989
  "^gpodder\\.net"
739
990
  ],
740
991
  "app": "gPodder",
992
+ "os": "windows",
993
+ "device": "pc",
741
994
  "examples": [
742
995
  "gPodder/3.10.8 (+http://gpodder.org/) Windows/10"
743
996
  ]
@@ -748,6 +1001,17 @@
748
1001
  ],
749
1002
  "device": "radio"
750
1003
  },
1004
+ {
1005
+ "user_agents": [
1006
+ "^GaanaAndroid-"
1007
+ ],
1008
+ "app": "Gaana",
1009
+ "os": "android",
1010
+ "examples": [
1011
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 9; vivo 1906 Build/PKQ1.190616.001)",
1012
+ "GaanaAndroid-8.13.0/Dalvik/2.1.0 (Linux; U; Android 5.1; Micromax P701 Build/LMY47D)"
1013
+ ]
1014
+ },
751
1015
  {
752
1016
  "user_agents": [
753
1017
  "^Guardian-iOSLive/"
@@ -782,9 +1046,16 @@
782
1046
  },
783
1047
  {
784
1048
  "user_agents": [
785
- "^Himalaya/"
1049
+ "^Himalaya/.+iPhone"
1050
+ ],
1051
+ "app": "Himalaya",
1052
+ "device": "phone",
1053
+ "examples": [
1054
+ "Himalaya/2.4.41 (iPhone; iOS 14.0.1; Scale/3.00; CFNetwork; iPhone9,4)",
1055
+ "Himalaya/2.4.42 (iPhone; iOS 14.2; Scale/2.00; CFNetwork; iPhone8,1)"
786
1056
  ],
787
- "app": "Himalaya"
1057
+ "os": "ios",
1058
+ "description": "Himalaya is a podcast app"
788
1059
  },
789
1060
  {
790
1061
  "user_agents": [
@@ -796,9 +1067,30 @@
796
1067
  },
797
1068
  {
798
1069
  "user_agents": [
799
- "^iHeartRadio/"
1070
+ "^iHeartRadio/.*Android"
1071
+ ],
1072
+ "app": "iHeartRadio",
1073
+ "os": "android",
1074
+ "examples": [
1075
+ "iHeartRadio/9.19.0 (Android 10; SM-G960U Build/QP1A.190711.020)",
1076
+ "iHeartRadio/9.19.0 (Android 9; SM-G950U Build/PPR1.180610.011)"
1077
+ ],
1078
+ "info_url": "https://play.google.com/store/apps/details?id=com.clearchannel.iheartradio.controller"
1079
+ },
1080
+ {
1081
+ "user_agents": [
1082
+ "^iHeartRadio/.* CFNetwork/",
1083
+ "^iHeartRadio/.* iOS"
1084
+ ],
1085
+ "app": "iHeartRadio",
1086
+ "os": "ios",
1087
+ "examples": [
1088
+ "iHeartRadio/2020052002 CFNetwork/1125.2 Darwin/19.4.0",
1089
+ "iHeartRadio/9.20.0 (iPhone; iOS 13.4.1; iPhone11,8)",
1090
+ "iHeartRadio/9.20.0 (iPad; iOS 13.4.1; iPad6,12)",
1091
+ "iHeartRadio/9.7.0 (iPod touch; iOS 12.4.5; iPod7,1)"
800
1092
  ],
801
- "app": "iHeartRadio"
1093
+ "info_url": "https://apps.apple.com/us/app/iheart-radio-music-podcasts/id290638154"
802
1094
  },
803
1095
  {
804
1096
  "user_agents": [
@@ -811,6 +1103,13 @@
811
1103
  ],
812
1104
  "os": "windows"
813
1105
  },
1106
+ {
1107
+ "user_agents": [
1108
+ "iVoox"
1109
+ ],
1110
+ "app": "iVoox",
1111
+ "info_url": "https://www.ivoox.com/"
1112
+ },
814
1113
  {
815
1114
  "user_agents": [
816
1115
  "iTMS",
@@ -820,7 +1119,8 @@
820
1119
  },
821
1120
  {
822
1121
  "user_agents": [
823
- "^iTunes/.+Mac OS"
1122
+ "^iTunes/.+Mac OS",
1123
+ "^iTunes/.+OS X"
824
1124
  ],
825
1125
  "examples": [
826
1126
  "iTunes/10.6.3 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/534.50.2"
@@ -832,10 +1132,11 @@
832
1132
  },
833
1133
  {
834
1134
  "user_agents": [
835
- "^iTunes/1[12]\\."
1135
+ "^iTunes/.+Windows"
836
1136
  ],
837
1137
  "examples": [
838
- "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24"
1138
+ "iTunes/11.4 (Windows; Microsoft Windows 7 x64 Home Premium Edition (Build 7600)) AppleWebKit/7600.1017.0.24",
1139
+ "iTunes/12.10.9 (Windows; Microsoft Windows 10 x64 Home Premium Edition (Build 19041); x64) AppleWebKit/7609.3005.1003.3"
839
1140
  ],
840
1141
  "app": "iTunes",
841
1142
  "device": "pc",
@@ -859,6 +1160,33 @@
859
1160
  "info_url": "https://www.jriver.com/",
860
1161
  "os": "windows"
861
1162
  },
1163
+ {
1164
+ "user_agents": [
1165
+ ".*KAIOS/"
1166
+ ],
1167
+ "app": "KAIOS podcast app",
1168
+ "device": "phone",
1169
+ "os": "kaios",
1170
+ "info_url": "https://kaiostech.com",
1171
+ "examples": [
1172
+ "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"
1173
+ ],
1174
+ "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."
1175
+ },
1176
+ {
1177
+ "user_agents": [
1178
+ ".*PodLP/"
1179
+ ],
1180
+ "app": "PodLP podcast app for KaiOS",
1181
+ "device": "phone",
1182
+ "os": "kaios",
1183
+ "info_url": "https://podlp.com",
1184
+ "examples": [
1185
+ "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"
1186
+ ],
1187
+ "description": "PodLP is the first podcast app available for KaiOS smart feature phones on the KaiStore.",
1188
+ "developer_notes": "Introduced in version v1.2.0.0 for limited content (downloads); available for all content after v1.3.0.0"
1189
+ },
862
1190
  {
863
1191
  "user_agents": [
864
1192
  "^Laughable.+iOS"
@@ -869,24 +1197,43 @@
869
1197
  },
870
1198
  {
871
1199
  "user_agents": [
872
- "^lamarr-iOS"
1200
+ "^com.jio.media.jiobeats",
1201
+ "^com.saavn.android",
1202
+ "^saavn"
1203
+ ],
1204
+ "app": "JioSaavn",
1205
+ "os": "android",
1206
+ "info_url": "https://www.jiosaavn.com/",
1207
+ "description": "A music streaming and podcast app from India. Earn Your Happy!",
1208
+ "developer_notes": "The user-agent will start with one of the above strings followed by the app version and player version.",
1209
+ "examples": [
1210
+ "com.jio.media.jiobeats/7.3.1 (Linux;Android 8.1.0) ExoPlayerLib/2.11.4"
1211
+ ]
1212
+ },
1213
+ {
1214
+ "user_agents": [
1215
+ "^lamarr-iOS",
1216
+ "^TheEconomist-Lamarr-ios"
873
1217
  ],
874
1218
  "app": "The Economist",
875
1219
  "device": "phone",
876
1220
  "os": "ios",
877
1221
  "examples": [
878
- "lamarr-iOS-2.20.3-116"
1222
+ "lamarr-iOS-2.20.3-116",
1223
+ "TheEconomist-Lamarr-ios-2.22.2-12002"
879
1224
  ]
880
1225
  },
881
1226
  {
882
1227
  "user_agents": [
883
- "^lamarr-android"
1228
+ "^lamarr-android",
1229
+ "^TheEconomist-Lamarr-android"
884
1230
  ],
885
1231
  "app": "The Economist",
886
1232
  "device": "phone",
887
1233
  "os": "android",
888
1234
  "examples": [
889
- "lamarr-android-2.18.1-21810"
1235
+ "lamarr-android-2.18.1-21810",
1236
+ "TheEconomist-Lamarr-android-2.22.2-12002"
890
1237
  ]
891
1238
  },
892
1239
  {
@@ -966,7 +1313,11 @@
966
1313
  },
967
1314
  {
968
1315
  "user_agents": [
969
- "MJ12bot"
1316
+ ".*MJ12bot"
1317
+ ],
1318
+ "app": "MJ12bot",
1319
+ "examples": [
1320
+ "Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
970
1321
  ],
971
1322
  "bot": true
972
1323
  },
@@ -989,6 +1340,25 @@
989
1340
  "info_url": "https://getmusicbee.com/",
990
1341
  "os": "windows"
991
1342
  },
1343
+ {
1344
+ "user_agents": [
1345
+ "^NPR%20One/"
1346
+ ],
1347
+ "app": "NPR One",
1348
+ "examples": [
1349
+ "NPR%20One/234 CFNetwork/1197 Darwin/20.0.0"
1350
+ ]
1351
+ },
1352
+ {
1353
+ "user_agents": [
1354
+ "^NPROneAndroid"
1355
+ ],
1356
+ "app": "NPR One",
1357
+ "os": "android",
1358
+ "examples": [
1359
+ "NPROneAndroid"
1360
+ ]
1361
+ },
992
1362
  {
993
1363
  "user_agents": [
994
1364
  "^OkDownload/"
@@ -1027,12 +1397,34 @@
1027
1397
  },
1028
1398
  {
1029
1399
  "user_agents": [
1030
- "Opera/.*\\(Windows"
1400
+ "Opera/.*\\(Windows",
1401
+ "Windows.*OPR/"
1031
1402
  ],
1032
1403
  "app": "Opera",
1033
1404
  "device": "pc",
1034
1405
  "os": "windows"
1035
1406
  },
1407
+ {
1408
+ "user_agents": [
1409
+ "Macintosh.*OPR/"
1410
+ ],
1411
+ "app": "Opera",
1412
+ "os": "macos",
1413
+ "device": "pc",
1414
+ "examples": [
1415
+ "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"
1416
+ ]
1417
+ },
1418
+ {
1419
+ "user_agents": [
1420
+ "^MauiBot"
1421
+ ],
1422
+ "app": "MauiBot",
1423
+ "bot": true,
1424
+ "examples": [
1425
+ "MauiBot (crawler.feedback dc@gmail.com)"
1426
+ ]
1427
+ },
1036
1428
  {
1037
1429
  "user_agents": [
1038
1430
  "Opera[/ ]"
@@ -1041,7 +1433,8 @@
1041
1433
  },
1042
1434
  {
1043
1435
  "user_agents": [
1044
- "^Overcast/"
1436
+ "^Overcast/2",
1437
+ "^Overcast/3"
1045
1438
  ],
1046
1439
  "app": "Overcast",
1047
1440
  "examples": [
@@ -1051,17 +1444,63 @@
1051
1444
  },
1052
1445
  {
1053
1446
  "user_agents": [
1054
- "^PandoraRSSCrawler"
1447
+ "^Overcast.*Apple Watch"
1448
+ ],
1449
+ "app": "Overcast",
1450
+ "examples": [
1451
+ "Overcast ( http://overcast.fm/; Apple Watch podcast app)"
1452
+ ],
1453
+ "os": "watchos",
1454
+ "device": "watch"
1455
+ },
1456
+ {
1457
+ "user_agents": [
1458
+ "^Overcast/1.0 Podcast Sync"
1459
+ ],
1460
+ "app": "Overcast feed parser",
1461
+ "examples": [
1462
+ "Overcast/1.0 Podcast Sync"
1055
1463
  ],
1464
+ "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.",
1056
1465
  "bot": true
1057
1466
  },
1467
+ {
1468
+ "user_agents": [
1469
+ "^PandoraRSSCrawler"
1470
+ ],
1471
+ "bot": true,
1472
+ "app": "Pandora RSS crawler"
1473
+ },
1058
1474
  {
1059
1475
  "user_agents": [
1060
1476
  "^Pandora.+Android"
1061
1477
  ],
1062
1478
  "app": "Pandora",
1479
+ "os": "android",
1480
+ "examples": [
1481
+ "Pandora/2009.2 Android/7.1.1 gteslteatt (ExoPlayerLib1.5.14.1)"
1482
+ ]
1483
+ },
1484
+ {
1485
+ "user_agents": [
1486
+ "iPhone.+Pandora\/"
1487
+ ],
1488
+ "app": "Pandora",
1063
1489
  "device": "phone",
1064
- "os": "android"
1490
+ "os": "ios",
1491
+ "examples": [
1492
+ "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"
1493
+ ]
1494
+ },
1495
+ {
1496
+ "user_agents": [
1497
+ "PaperLiBot\/"
1498
+ ],
1499
+ "app": "PaperLi",
1500
+ "examples": [
1501
+ "Mozilla/5.0 (compatible; PaperLiBot/2.1; https://support.paper.li/entries/20023257-what-is-paper-li)"
1502
+ ],
1503
+ "bot": true
1065
1504
  },
1066
1505
  {
1067
1506
  "user_agents": [
@@ -1081,7 +1520,6 @@
1081
1520
  "^PocketCasts/"
1082
1521
  ],
1083
1522
  "app": "Pocket Casts",
1084
- "device": "phone",
1085
1523
  "examples": [
1086
1524
  "Pocket Casts"
1087
1525
  ],
@@ -1097,16 +1535,32 @@
1097
1535
  "app": "PodcastAddict",
1098
1536
  "device": "phone",
1099
1537
  "examples": [
1100
- "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)"
1538
+ "PodcastAddict/v2 - Dalvik/2.1.0 (Linux; U; Android 9; SM-N950U Build/PPR1.180610.011)",
1539
+ "PodcastAddict/v5 ( https://podcastaddict.com/; Android podcast app)"
1101
1540
  ],
1102
1541
  "os": "android"
1103
1542
  },
1104
1543
  {
1105
1544
  "user_agents": [
1106
- "iOS.*The Podcast App/"
1545
+ "iOS.*The Podcast App/",
1546
+ "com.evolve.podcast/"
1107
1547
  ],
1108
1548
  "app": "The Podcast App",
1109
- "os": "ios"
1549
+ "os": "ios",
1550
+ "examples": [
1551
+ "podcast/2358 iOS/Version 13.5.1 (Build 017F80) The Podcast App/3.22.1",
1552
+ "com.evolve.podcast/3.22.1 (iPhone; ) (build 2358, iOS 13.5.1)"
1553
+ ],
1554
+ "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."
1555
+ },
1556
+ {
1557
+ "user_agents": [
1558
+ "^PodcastGuru "
1559
+ ],
1560
+ "app": "Podcast Guru",
1561
+ "os": "android",
1562
+ "info_url": "https://podcastguru.io/",
1563
+ "description": "Podcast Guru is the simple and free podcast player"
1110
1564
  },
1111
1565
  {
1112
1566
  "user_agents": [
@@ -1137,15 +1591,64 @@
1137
1591
  },
1138
1592
  {
1139
1593
  "user_agents": [
1140
- "^PodCruncher/"
1594
+ "^PodCruncher/.* CFNetwork/"
1595
+ ],
1596
+ "app": "PodCruncher",
1597
+ "os": "ios",
1598
+ "examples": [
1599
+ "PodCruncher/3.7.1 CFNetwork/1125.2 Darwin/19.4.0",
1600
+ "PodCruncher/3.7.1 CFNetwork/978.0.7 Darwin/18.7.0"
1601
+ ],
1602
+ "info_url": "https://apps.apple.com/us/app/podcruncher-podcast-player/id421894356"
1603
+ },
1604
+ {
1605
+ "user_agents": [
1606
+ "^Podbean/Android App",
1607
+ "^Podbean/Android generic"
1608
+ ],
1609
+ "app": "Podbean",
1610
+ "os": "android",
1611
+ "examples": [
1612
+ "Podbean/Android App 7.6.4 (http://podbean.com),1927526fe23b5acf535b3e91b64cee95",
1613
+ "Podbean/Android App 8.1.5 (http://podbean.com),4f6852f59091d32475ef75a53325a4fe",
1614
+ "Podbean/Android generic 1.1.2 (http://podbean.com),9376c517335ded9a716022cc1f15c884"
1615
+ ],
1616
+ "info_url": "https://play.google.com/store/apps/details?id=com.podbean.app.podcast"
1617
+ },
1618
+ {
1619
+ "user_agents": [
1620
+ "^Podbean/iOS"
1621
+ ],
1622
+ "app": "Podbean",
1623
+ "os": "ios",
1624
+ "examples": [
1625
+ "Podbean/iOS (http://podbean.com) 5.2.0 - 19c4ff292bd09cd2ccbad22cc6755a45"
1626
+ ],
1627
+ "info_url": "https://apps.apple.com/us/app/podbean-podcast-app-player/id973361050"
1628
+ },
1629
+ {
1630
+ "user_agents": [
1631
+ "podfollowbot/"
1141
1632
  ],
1142
- "app": "PodCruncher"
1633
+ "app": "Podfollow",
1634
+ "examples": [
1635
+ "Mozilla/5.0 https://podfollow.com/crawling podfollowbot/1.0"
1636
+ ],
1637
+ "info_url": "https://podfollow.com",
1638
+ "description": "Podfollow, a service to help link to your podcast",
1639
+ "bot": true
1143
1640
  },
1144
1641
  {
1145
1642
  "user_agents": [
1146
- "^Podbean/"
1643
+ "^Podhero",
1644
+ "^Swoot/"
1147
1645
  ],
1148
- "app": "Podbean"
1646
+ "app": "Podhero",
1647
+ "examples": [
1648
+ "Podhero%20Alpha/4373 CFNetwork/1197 Darwin/20.0.0"
1649
+ ],
1650
+ "info_url": "https://podhero.com",
1651
+ "description": "Podhero app on iOS and Android."
1149
1652
  },
1150
1653
  {
1151
1654
  "user_agents": [
@@ -1154,6 +1657,41 @@
1154
1657
  "app": "Podkicker Pro",
1155
1658
  "os": "android"
1156
1659
  },
1660
+ {
1661
+ "user_agents": [
1662
+ "PodLink"
1663
+ ],
1664
+ "app": "PodLink",
1665
+ "info_url": "https://pod.link/faq/crawler"
1666
+ },
1667
+ {
1668
+ "user_agents": [
1669
+ "^PodMN/Android"
1670
+ ],
1671
+ "description": "Minnesota Podcasts Live Here",
1672
+ "examples": [
1673
+ "PodMN/Android 1.2.6 (Android 7.1.1; SM-J510FN Build/NMF26X)"
1674
+ ],
1675
+ "info_url": "https://play.google.com/store/apps/details?id=com.podmn.app",
1676
+ "app": "PodMN",
1677
+ "device": "phone",
1678
+ "os": "android",
1679
+ "svg": "podmn.svg"
1680
+ },
1681
+ {
1682
+ "user_agents": [
1683
+ "^PodMN/iOS"
1684
+ ],
1685
+ "description": "Minnesota Podcasts Live Here",
1686
+ "examples": [
1687
+ "PodMN/iOS 1.2.6 (iPhone XR/13.6.1)"
1688
+ ],
1689
+ "info_url": "https://apps.apple.com/us/app/podmn/id1464935818",
1690
+ "app": "PodMN",
1691
+ "device": "phone",
1692
+ "os": "ios",
1693
+ "svg": "podmn.svg"
1694
+ },
1157
1695
  {
1158
1696
  "user_agents": [
1159
1697
  "PodnewsBot"
@@ -1163,12 +1701,65 @@
1163
1701
  "description": "Podnews runs a number of bots to read and test RSS and audio files",
1164
1702
  "info_url": "http://podnews.net"
1165
1703
  },
1704
+ {
1705
+ "user_agents": [
1706
+ "podnods-crawler",
1707
+ "podnods"
1708
+ ],
1709
+ "app": "Podnods",
1710
+ "bot": true,
1711
+ "description": "Podnods is a podcast discovery site. This user agent is for crawling podcast data.",
1712
+ "info_url": "https://podnods.com/about"
1713
+ },
1714
+ {
1715
+ "user_agents": [
1716
+ "podnods-player"
1717
+ ],
1718
+ "app": "Podnods",
1719
+ "description": "Podnods is a podcast discovery site. This user agent is for users to sample and play podcasts.",
1720
+ "info_url": "https://podnods.com/about"
1721
+ },
1722
+ {
1723
+ "user_agents": [
1724
+ "Podyssey App"
1725
+ ],
1726
+ "app": "Podyssey",
1727
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1728
+ "info_url": "https://podyssey.fm"
1729
+ },
1730
+ {
1731
+ "user_agents": [
1732
+ "com.toysinboxes.Echo"
1733
+ ],
1734
+ "app": "Podyssey",
1735
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1736
+ "info_url": "https://podyssey.fm",
1737
+ "os": "ios"
1738
+ },
1739
+ {
1740
+ "user_agents": [
1741
+ "fm.podyssey.podcasts"
1742
+ ],
1743
+ "app": "Podyssey",
1744
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1745
+ "info_url": "https://podyssey.fm",
1746
+ "os": "android"
1747
+ },
1166
1748
  {
1167
1749
  "user_agents": [
1168
1750
  "python-requests"
1169
1751
  ],
1170
1752
  "bot": true
1171
1753
  },
1754
+ {
1755
+ "user_agents": [
1756
+ "^radio.de/app.+Android"
1757
+ ],
1758
+ "app": "radio.de",
1759
+ "os": "android",
1760
+ "description": "Radio.de is a radio and podcast app in Germany",
1761
+ "info_url": "https://www.radio.de/"
1762
+ },
1172
1763
  {
1173
1764
  "user_agents": [
1174
1765
  "^Radioplayer Android app"
@@ -1237,12 +1828,13 @@
1237
1828
  },
1238
1829
  {
1239
1830
  "user_agents": [
1240
- "^RSSRadio7?/"
1831
+ "^RSSRadio"
1241
1832
  ],
1242
1833
  "app": "RSS Radio",
1243
1834
  "device": "phone",
1244
1835
  "examples": [
1245
- "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0"
1836
+ "RSSRadio7/9252 CFNetwork/1107.1 Darwin/19.0.0",
1837
+ "RSSRadio/9710"
1246
1838
  ],
1247
1839
  "info_url": "http://rssrad.io",
1248
1840
  "os": "ios"
@@ -1251,14 +1843,29 @@
1251
1843
  "user_agents": [
1252
1844
  "^Ruby"
1253
1845
  ],
1254
- "bot": true
1846
+ "developer_notes": "The generic Ruby user-agent."
1255
1847
  },
1256
1848
  {
1257
1849
  "user_agents": [
1258
- "^SEMrushBot"
1850
+ "SemrushBot\/"
1851
+ ],
1852
+ "app": "SEMrushBot",
1853
+ "examples": [
1854
+ "Mozilla/5.0 (compatible; SemrushBot/6~bl; http://www.semrush.com/bot.html)"
1259
1855
  ],
1260
1856
  "bot": true
1261
1857
  },
1858
+ {
1859
+ "user_agents": [
1860
+ "SerendeputyBot\/"
1861
+ ],
1862
+ "app": "Serendeputy",
1863
+ "examples": [
1864
+ "SerendeputyBot/0.8.6 (http://serendeputy.com/about/serendeputy-bot)"
1865
+ ],
1866
+ "bot": true,
1867
+ "info_url": "https://serendeputy.com/about/serendeputy-bot"
1868
+ },
1262
1869
  {
1263
1870
  "user_agents": [
1264
1871
  "^Spotify/.+Linux"
@@ -1303,21 +1910,29 @@
1303
1910
  },
1304
1911
  {
1305
1912
  "user_agents": [
1306
- "^Spotify/\\d+"
1913
+ "^Spotify/1.0$"
1307
1914
  ],
1308
- "bot": true
1915
+ "app": "Spotify cache service",
1916
+ "bot": true,
1917
+ "examples": [
1918
+ "Spotify/1.0"
1919
+ ],
1920
+ "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."
1309
1921
  },
1310
1922
  {
1311
1923
  "user_agents": [
1312
- "Macintosh.*AppleWebKit.*Safari/"
1924
+ "Macintosh.*AppleWebKit(?!.*(Chrome\/)).*Safari/(?!.*(AdsBot/))"
1313
1925
  ],
1314
1926
  "app": "Safari",
1315
1927
  "device": "pc",
1316
- "os": "macos"
1928
+ "os": "macos",
1929
+ "examples": [
1930
+ "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"
1931
+ ]
1317
1932
  },
1318
1933
  {
1319
1934
  "user_agents": [
1320
- "Windows.*AppleWebKit.*Safari/"
1935
+ "Windows.*AppleWebKit(?!.*(Chrome\/)).*Safari/"
1321
1936
  ],
1322
1937
  "app": "Safari",
1323
1938
  "device": "pc",
@@ -1325,7 +1940,7 @@
1325
1940
  },
1326
1941
  {
1327
1942
  "user_agents": [
1328
- "iPhone.*AppleWebKit.*Safari/"
1943
+ "iPhone.*AppleWebKit(?!.*(AdsBot|bingbot|CriOS)).*Safari/"
1329
1944
  ],
1330
1945
  "app": "Safari",
1331
1946
  "device": "phone",
@@ -1339,12 +1954,28 @@
1339
1954
  "device": "tablet",
1340
1955
  "os": "ios"
1341
1956
  },
1957
+ {
1958
+ "user_agents": [
1959
+ "^Slack/"
1960
+ ],
1961
+ "app": "Slack"
1962
+ },
1342
1963
  {
1343
1964
  "user_agents": [
1344
1965
  "^Subcast"
1345
1966
  ],
1346
1967
  "app": "Subcast"
1347
1968
  },
1969
+ {
1970
+ "user_agents": [
1971
+ "Sonnet"
1972
+ ],
1973
+ "app": "Sonnet",
1974
+ "description": "Sonnet is a simple, easy to use podcast app aimed at new listeners",
1975
+ "os": "android",
1976
+ "info_url": "https://sonnet.fm",
1977
+ "svg": "sonnet.svg"
1978
+ },
1348
1979
  {
1349
1980
  "user_agents": [
1350
1981
  "Sonos"
@@ -1355,7 +1986,14 @@
1355
1986
  },
1356
1987
  {
1357
1988
  "user_agents": [
1358
- "^Spreaker"
1989
+ "^Spreaker for Android"
1990
+ ],
1991
+ "app": "Spreaker",
1992
+ "os": "android"
1993
+ },
1994
+ {
1995
+ "user_agents": [
1996
+ "Spreaker/"
1359
1997
  ],
1360
1998
  "app": "Spreaker"
1361
1999
  },
@@ -1367,7 +2005,12 @@
1367
2005
  },
1368
2006
  {
1369
2007
  "user_agents": [
1370
- "^Stitcher/Android"
2008
+ "^Stitcher\/Android",
2009
+ "^Stitcher Demo\/"
2010
+ ],
2011
+ "examples": [
2012
+ "Stitcher Demo/4.8.0 (Linux;Android 11) ExoPlayerLib/2.10.7",
2013
+ "Stitcher/Android"
1371
2014
  ],
1372
2015
  "app": "Stitcher",
1373
2016
  "os": "android"
@@ -1385,12 +2028,14 @@
1385
2028
  "^Stitcher/iOS"
1386
2029
  ],
1387
2030
  "app": "Stitcher",
1388
- "os": "ios"
2031
+ "os": "ios",
2032
+ "device": "phone"
1389
2033
  },
1390
2034
  {
1391
2035
  "user_agents": [
1392
- "StitcherBot"
2036
+ "^StitcherBot"
1393
2037
  ],
2038
+ "app": "Stitcher",
1394
2039
  "bot": true
1395
2040
  },
1396
2041
  {
@@ -1413,21 +2058,76 @@
1413
2058
  },
1414
2059
  {
1415
2060
  "user_agents": [
1416
- "^Swoot/"
2061
+ "TrendsmapResolver\/"
1417
2062
  ],
1418
- "app": "Swoot"
2063
+ "app": "Trendsmap Resolver",
2064
+ "bot": true
1419
2065
  },
1420
2066
  {
1421
2067
  "user_agents": [
1422
2068
  "^Trackable/"
1423
2069
  ],
2070
+ "app": "Chartable",
2071
+ "info_url": "https://chartable.com/",
1424
2072
  "bot": true
2073
+ },
2074
+ {
2075
+ "user_agents": [
2076
+ "^TuneIn Radio/.*;Android"
2077
+ ],
2078
+ "examples": [
2079
+ "TuneIn Radio/24.2 (Linux;Android 10) ExoPlayerLib/2.11.4"
2080
+ ],
2081
+ "app": "TuneIn",
2082
+ "os": "android",
2083
+ "info_url": "https://play.google.com/store/apps/details?id=tunein.player"
2084
+ },
2085
+ {
2086
+ "user_agents": [
2087
+ "^TuneIn Radio Pro/.*;Android"
2088
+ ],
2089
+ "examples": [
2090
+ "TuneIn Radio Pro/23.3.2 (Linux;Android 5.1.1) ExoPlayerLib/2.10.7"
2091
+ ],
2092
+ "app": "TuneIn",
2093
+ "os": "android",
2094
+ "info_url": "https://play.google.com/store/apps/details?id=radiotime.player"
2095
+ },
2096
+ {
2097
+ "user_agents": [
2098
+ "^TuneIn(%20| )Radio/.*(CFNetwork/|iPhone)"
2099
+ ],
2100
+ "examples": [
2101
+ "TuneIn Radio/1366 CFNetwork/1121.2.2 Darwin/19.3.0",
2102
+ "TuneIn Radio/18.1; iPhone12,8; iOS/13.4.1",
2103
+ "TuneIn%20Radio/1383 CFNetwork/1125.2 Darwin/19.4.0"
2104
+ ],
2105
+ "app": "TuneIn",
2106
+ "os": "ios",
2107
+ "info_url": "https://apps.apple.com/us/app/tunein-radio-live-news-music/id418987775"
2108
+ },
2109
+ {
2110
+ "user_agents": [
2111
+ "^TuneIn(%20| )Radio(%20| )Pro/.*CFNetwork/"
2112
+ ],
2113
+ "examples": [
2114
+ "TuneIn Radio Pro/1361 CFNetwork/1121.2.2 Darwin/19.3.0",
2115
+ "TuneIn%20Radio%20Pro/1383 CFNetwork/1125.2 Darwin/19.4.0"
2116
+ ],
2117
+ "app": "TuneIn",
2118
+ "os": "ios",
2119
+ "info_url": "https://apps.apple.com/us/app/tunein-pro-radio-sports/id319295332"
1425
2120
  },
1426
2121
  {
1427
2122
  "user_agents": [
1428
- "^TuneIn"
2123
+ "^TuneIn(?!.*(CFNetwork|Android))"
2124
+ ],
2125
+ "examples": [
2126
+ "TuneIn Radio"
1429
2127
  ],
1430
- "app": "TuneIn"
2128
+ "app": "TuneIn",
2129
+ "info_url": "https://tunein.com/",
2130
+ "developer_notes": "Other versions of this app use many other user agents."
1431
2131
  },
1432
2132
  {
1433
2133
  "user_agents": [
@@ -1464,6 +2164,7 @@
1464
2164
  "user_agents": [
1465
2165
  "Wget"
1466
2166
  ],
2167
+ "app": "Wget",
1467
2168
  "bot": true
1468
2169
  },
1469
2170
  {
@@ -1497,8 +2198,9 @@
1497
2198
  },
1498
2199
  {
1499
2200
  "user_agents": [
1500
- "YandexBot"
2201
+ "YandexBot\/"
1501
2202
  ],
2203
+ "app": "YandexBot",
1502
2204
  "bot": true
1503
2205
  },
1504
2206
  {
@@ -1513,17 +2215,6 @@
1513
2215
  ],
1514
2216
  "os": "android"
1515
2217
  },
1516
- {
1517
- "user_agents": [
1518
- "^^com\\.evolve\\.podcast/"
1519
- ],
1520
- "app": "The Podcast App",
1521
- "device": "phone",
1522
- "examples": [
1523
- "com.evolve.podcast/3.10.1 (iPhone; ) (build 951, iOS 13.3)"
1524
- ],
1525
- "os": "ios"
1526
- },
1527
2218
  {
1528
2219
  "user_agents": [
1529
2220
  "^Podimo/.*iOS"
@@ -1547,5 +2238,326 @@
1547
2238
  "Podimo/1.11.3 build 91/Android 28"
1548
2239
  ],
1549
2240
  "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US"
2241
+ },
2242
+ {
2243
+ "user_agents": [
2244
+ "BingPreview/",
2245
+ "adidxbot/",
2246
+ "bingbot/"
2247
+ ],
2248
+ "app": "Microsoft Bingbot",
2249
+ "bot": true,
2250
+ "info_url": "https://www.bing.com/webmaster/help/which-crawlers-does-bing-use-8c184ec0",
2251
+ "examples": [
2252
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534 (KHTML, like Gecko) BingPreview/1.0b"
2253
+ ]
2254
+ },
2255
+ {
2256
+ "user_agents": [
2257
+ "^msnbot/"
2258
+ ],
2259
+ "bot": true
2260
+ },
2261
+ {
2262
+ "user_agents": [
2263
+ "^Deezer Podcasters\/1\\.0"
2264
+ ],
2265
+ "bot": true,
2266
+ "app": "Deezer Podcasters"
2267
+ },
2268
+ {
2269
+ "user_agents": [
2270
+ "^devcasts\/.*CFNetwork"
2271
+ ],
2272
+ "app": "DevCasts",
2273
+ "os": "ios",
2274
+ "description": "Our Devcasts app is a new kind of podcast listening app. It is simply the best way for developers to enjoy all of the excellent podcast content created for developers.",
2275
+ "examples": [
2276
+ "devcasts/1.0.1.00 CFNetwork/1197 Darwin/20.0.0"
2277
+ ],
2278
+ "info_url": "http://devcasts.co/"
2279
+ },
2280
+ {
2281
+ "user_agents": [
2282
+ "^got/"
2283
+ ],
2284
+ "bot": true,
2285
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US",
2286
+ "developer_notes": "Got is a HTTP library for NodeJs"
2287
+ },
2288
+ {
2289
+ "user_agents": [
2290
+ "INA dlweb"
2291
+ ],
2292
+ "bot": true,
2293
+ "app": "l'Institut national de l'audiovisuel",
2294
+ "info_url": "https://institut.ina.fr/collecte-du-depot-legal-web",
2295
+ "developer_notes": "Institut National de l'Audiovisuel is a repository of all French radio and television audiovisual archives."
2296
+ },
2297
+ {
2298
+ "user_agents": [
2299
+ "^Instagram\/"
2300
+ ],
2301
+ "app": "Instagram",
2302
+ "examples": [
2303
+ "Instagram/252729634 CFNetwork/1126 Darwin/19.5.0"
2304
+ ]
2305
+ },
2306
+ {
2307
+ "user_agents": [
2308
+ "^SoundOn/[\\d\\.]+\\s+\\(Linux;Android",
2309
+ "^SoundOn\/[^12]\\.\\d+\\.\\d+$",
2310
+ "^SoundOn\/1\\.[^1][^0-2]?\\.\\d+$"
2311
+ ],
2312
+ "app": "SoundOn",
2313
+ "device": "phone",
2314
+ "examples": [
2315
+ "SoundOn/1.9.17 (Linux;Android 10) ExoPlayerLib/2.9.4"
2316
+ ],
2317
+ "os": "android"
2318
+ },
2319
+ {
2320
+ "user_agents": [
2321
+ "^SoundOn/1\\.1[0-2]\\.\\d+$",
2322
+ "^SoundOn/2\\.\\d+\\.\\d+$",
2323
+ "^SoundOn/[\\d\\.]+\\s+\\(iOS"
2324
+ ],
2325
+ "app": "SoundOn",
2326
+ "device": "phone",
2327
+ "examples": [
2328
+ "SoundOn/1.10.1",
2329
+ "SoundOn/2.2.0",
2330
+ "SoundOn/2.2.2 (iOS)"
2331
+ ],
2332
+ "os": "ios"
2333
+ },
2334
+ {
2335
+ "user_agents": [
2336
+ "^SoundOn/[\\d\\.]+\\s+\\(bot"
2337
+ ],
2338
+ "bot": true
2339
+ },
2340
+ {
2341
+ "user_agents": [
2342
+ "^Podverse/Android Mobile App/"
2343
+ ],
2344
+ "app": "Podverse Android Mobile App",
2345
+ "device": "phone",
2346
+ "os": "android",
2347
+ "info_url": "https://play.google.com/store/apps/details?id=com.podverse&hl=en_US",
2348
+ "description": "Open source podcast catcher for Android, with clip-sharing, playlists, device syncing and more.",
2349
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/Android Mobile App/ user agent."
2350
+ },
2351
+ {
2352
+ "user_agents": [
2353
+ "^Podverse/iOS Mobile App/"
2354
+ ],
2355
+ "app": "Podverse iOS Mobile App",
2356
+ "device": "phone",
2357
+ "os": "ios",
2358
+ "examples": [
2359
+ "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"
2360
+ ],
2361
+ "description": "Open source podcast catcher for iOS, with clip-sharing, playlists, device syncing and more.",
2362
+ "info_url": "https://apps.apple.com/us/app/podverse/id1390888454",
2363
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/iOS Mobile App/ user agent."
2364
+ },
2365
+ {
2366
+ "user_agents": [
2367
+ "^Podverse/Feed Parser"
2368
+ ],
2369
+ "bot": true,
2370
+ "app": "Podverse Server-Side Feed Parser",
2371
+ "info_url": "https://podverse.fm",
2372
+ "description": "The Podverse feed parser.",
2373
+ "developer_notes": "This service parses publicly-accessible RSS feeds on a timer, then stores parsed data in the Podverse database."
2374
+ },
2375
+ {
2376
+ "user_agents": [
2377
+ "^Podcast/1."
2378
+ ],
2379
+ "app": "小宇宙",
2380
+ "info_url": "https://www.coolapk.com/apk/app.podcast.cosmos",
2381
+ "description": "Cosmos, a chinese podcast app"
2382
+ },
2383
+ {
2384
+ "user_agents": [
2385
+ "^Xiaoyuzhou\/.*Android\/"
2386
+ ],
2387
+ "app": "Xiao Yu Zhou",
2388
+ "description": "Xiao Yu Zhou, a podcast app",
2389
+ "os": "android",
2390
+ "examples": [
2391
+ "Xiaoyuzhou/1.9.6 Android/10"
2392
+ ]
2393
+ },
2394
+ {
2395
+ "user_agents": [
2396
+ "^Xiaoyuzhou/(?!.*(Android\/))"
2397
+ ],
2398
+ "app": "Xiao Yu Zhou",
2399
+ "description": "Xiao Yu Zhou, a podcast app",
2400
+ "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",
2401
+ "os": "ios",
2402
+ "examples": [
2403
+ "Xiaoyuzhou/1.9.0",
2404
+ "Xiaoyuzhou/1.5.1"
2405
+ ]
2406
+ },
2407
+ {
2408
+ "user_agents": [
2409
+ "^yacybot"
2410
+ ],
2411
+ "app": "YaCy",
2412
+ "bot": true,
2413
+ "description": "Decentralized Web Search",
2414
+ "info_url": "http://yacy.net/bot.html",
2415
+ "examples": [
2416
+ "yacybot (/global; amd64 Linux 5.9.8-zen1-1-zen; java 1.8.0_265; Europe/de) http://yacy.net/bot.html"
2417
+ ]
2418
+ },
2419
+ {
2420
+ "user_agents": [
2421
+ "^Podcast-CriticalMention/"
2422
+ ],
2423
+ "app": "Critical Mention",
2424
+ "description": "Critical Mention is a business intelligence company, monitoring podcasts on the web for their clients",
2425
+ "bot": true,
2426
+ "examples": [
2427
+ "Podcast-CriticalMention/1.0"
2428
+ ]
2429
+ },
2430
+ {
2431
+ "user_agents": [
2432
+ "^RSSOwl.*Windows"
2433
+ ],
2434
+ "app": "RSSOwl",
2435
+ "description": "A Mac and Windows app, to help organize, search, and read feeds",
2436
+ "device": "pc",
2437
+ "os": "windows",
2438
+ "info_url": "http://www.rssowl.org/",
2439
+ "examples": [
2440
+ "RSSOwl/2.2.1.201312301314 (Windows; U; en)"
2441
+ ]
2442
+ },
2443
+ {
2444
+ "user_agents": [
2445
+ "^ltx71 "
2446
+ ],
2447
+ "app": "LTX71",
2448
+ "info_url": "http://ltx71.com/",
2449
+ "description": "We continuously scan the internet for security research purposes.",
2450
+ "bot": true,
2451
+ "examples": [
2452
+ "ltx71 - (http://ltx71.com/)"
2453
+ ]
2454
+ },
2455
+ {
2456
+ "user_agents": [
2457
+ "^bl.uk_ldfc_bot"
2458
+ ],
2459
+ "app": "British Library",
2460
+ "info_url": "http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html",
2461
+ "description": "British Library's legal deposit web crawler",
2462
+ "bot": true,
2463
+ "examples": [
2464
+ "bl.uk_ldfc_bot/3.4.0-20200518 ( http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html)"
2465
+ ]
2466
+ },
2467
+ {
2468
+ "user_agents": [
2469
+ "Archive-It;"
2470
+ ],
2471
+ "app": "Internet Archive",
2472
+ "info_url": "https://archive-it.org/files/site-owners-special.html",
2473
+ "description": "Archive-It is a web archiving service that allows institutions to build and preserve collections of born digital content saving this content for future generations.",
2474
+ "bot": true,
2475
+ "examples": [
2476
+ "Mozilla/5.0 (compatible; special_archiver; Archive-It; http://archive-it.org/files/site-owners-special.html)"
2477
+ ]
2478
+ },
2479
+ {
2480
+ "user_agents": [
2481
+ "VurblBot"
2482
+ ],
2483
+ "app": "Vurbl",
2484
+ "info_url": "https://vurbl.com/about-us/",
2485
+ "description": "An audio streaming destination",
2486
+ "bot": true,
2487
+ "examples": [
2488
+ "Mozilla/5.0 https://vurbl.com VurblBot/1.0"
2489
+ ]
2490
+ },
2491
+ {
2492
+ "user_agents": [
2493
+ "PetalBot"
2494
+ ],
2495
+ "app": "PetalBot",
2496
+ "info_url": "https://aspiegel.com/petalbot",
2497
+ "description": "PetalBot is an automatic program of the Petal search engine.",
2498
+ "bot": true,
2499
+ "examples": [
2500
+ "Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; PetalBot; https://aspiegel.com/petalbot)"
2501
+ ]
2502
+ },
2503
+ {
2504
+ "user_agents": [
2505
+ "PodhoundBeta"
2506
+ ],
2507
+ "app": "Podhound",
2508
+ "info_url": "http://podhound.co",
2509
+ "description": "AI-powered podcast discovery",
2510
+ "bot": true,
2511
+ "examples": [
2512
+ "PodhoundBeta"
2513
+ ],
2514
+ "developer_notes": "'It grabs it once to get the audio file length.', says the developer."
2515
+ },
2516
+ {
2517
+ "user_agents": [
2518
+ "hermespod.com/"
2519
+ ],
2520
+ "app": "HermesPod",
2521
+ "info_url": "http://hermespod.com/",
2522
+ "description": "HermesPod is the easiest way to subscribe, download and listen to podcasts. It's a Windows app.",
2523
+ "examples": [
2524
+ "hermespod.com/v1.5.x"
2525
+ ],
2526
+ "developer_notes": "HermesPod is no longer supported by its author."
2527
+ },
2528
+ {
2529
+ "user_agents": [
2530
+ "^gvfs/",
2531
+ "^rhythmbox/"
2532
+ ],
2533
+ "app": "Rhythmbox",
2534
+ "info_url": "https://gitlab.gnome.org/GNOME/rhythmbox",
2535
+ "description": "Rhythmbox is your one-stop multimedia application, supporting a music library, multiple playlists, internet radio, and more.",
2536
+ "examples": [
2537
+ "gvfs/1.46.1"
2538
+ ],
2539
+ "developer_notes": "The new UA is Rhythmbox: https://gitlab.gnome.org/GNOME/rhythmbox/-/issues/1855"
2540
+ },
2541
+ {
2542
+ "user_agents": [
2543
+ "archive.org_bot"
2544
+ ],
2545
+ "app": "Archive.org",
2546
+ "info_url": "https://archive.org/details/archive.org_bot",
2547
+ "description": "The Internet Archive is a nonprofit digital library that preserves web data and makes it available for research purposes through the Wayback Machine.",
2548
+ "bot": true,
2549
+ "examples": [
2550
+ "Mozilla/5.0 (compatible; archive.org_bot http://archive.org/details/archive.org_bot)"
2551
+ ]
2552
+ },
2553
+ {
2554
+ "user_agents": [
2555
+ "AAABot"
2556
+ ],
2557
+ "app": "AAABot - unknown bot",
2558
+ "bot": true,
2559
+ "examples": [
2560
+ "AAABot"
2561
+ ]
1550
2562
  }
1551
2563
  ]