podcast_agent_parser 0.1.1 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c554518b264fea34da4f2e1dc8d74223ed5f0033d675dcfe0a353a5471e0ba6f
4
- data.tar.gz: 84dd8038b82a9fe23cf39860b71bec6368a8111b604e7709212cebe89f6e41d6
3
+ metadata.gz: a8557fa6d96b90032b03b66ef85005998c92481433a4c1f05967effe15af75d8
4
+ data.tar.gz: 3cca25ecfa9a63c0062b608db6feddd416fbfada88e378b6b14a958fe8c54391
5
5
  SHA512:
6
- metadata.gz: dd5e3623f90ba2b3eb71b6e171a38b4c72197a3fc3fdd65c4d05cfa310239d5917f0a0aef0f909426bb9b8b07e7e163b5b66c40eaaf6fa81a534a57a7f7529a9
7
- data.tar.gz: 0c832eb21c52fd37e3b7a8943debfff1e3395a04d57d18502edabb45fc229779fdd0aa6d719a5a79b9d28b421c757429770452d5a1c5333731f731f4cd578e2e
6
+ metadata.gz: 31cc2ff22a235e577c4f59c5a919e242380842eec7ae75732481ad167ab17e4e69338602f1faf225bb0d0698c1630902cb5b04ba3a6945ebc15dbe66e53c2beb
7
+ data.tar.gz: 8c52efe43aaaef2bc042a03036d9392b33041666390ff8374213294d032508bec40159b4545322017b7d3d2d4167ab0d4db10f48590d284c19f479b142da8e5c
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.6'
9
9
  ```
10
10
 
11
11
  Then, look up your user agents like so:
@@ -50,6 +50,41 @@
50
50
  "svg": "amazon.svg",
51
51
  "bot": true
52
52
  },
53
+ {
54
+ "user_agents": [
55
+ "^AmazonMusic/\\..*iPhone"
56
+ ],
57
+ "examples": [
58
+ "AmazonMusic/9.15.2 iPhone7,2 CFNetwork/978.0.7 Darwin/18.7.0"
59
+ ],
60
+ "app": "Amazon Music Podcasts",
61
+ "description": "A music and podcasts streaming app",
62
+ "os": "ios",
63
+ "device": "phone",
64
+ "svg": "amazon.svg"
65
+ },
66
+ {
67
+ "user_agents": [
68
+ "^AmazonMusic$"
69
+ ],
70
+ "examples": [
71
+ "AmazonMusic"
72
+ ],
73
+ "app": "Amazon Music Podcasts",
74
+ "description": "A music and podcasts streaming app",
75
+ "os": "android",
76
+ "developer_notes": "This appears to be the Android UA, by testing",
77
+ "svg": "amazon.svg"
78
+ },
79
+ {
80
+ "user_agents": [
81
+ "^Amazon Music Podcast"
82
+ ],
83
+ "app": "Amazon Music Podcasts",
84
+ "description": "A music and podcasts streaming app",
85
+ "developer_notes": "Seeing these once per episode, from an Oregon-based IP. Could be a bot or caching service?",
86
+ "svg": "amazon.svg"
87
+ },
53
88
  {
54
89
  "user_agents": [
55
90
  "^AlexaMediaPlayer/5\\."
@@ -83,7 +118,8 @@
83
118
  "de.danoeh.antennapod/1.7.3b (Linux;Android 8.0.0) ExoPlayerLib/2.9.3"
84
119
  ],
85
120
  "info_url": "https://github.com/AntennaPod/AntennaPod",
86
- "os": "android"
121
+ "os": "android",
122
+ "developer_notes": "The de.danoeh version was used when streaming only, and will been phased out as of v2"
87
123
  },
88
124
  {
89
125
  "user_agents": [
@@ -95,12 +131,13 @@
95
131
  "user_agents": [
96
132
  "^AppleCoreMedia/1\\..*iPod"
97
133
  ],
98
- "app": "Apple Podcasts",
99
134
  "device": "mp3_player",
100
135
  "examples": [
101
136
  "AppleCoreMedia/1.0.0.16G114 (iPod touch; U; CPU OS 12_4_2 like Mac OS X; en_us)"
102
137
  ],
103
- "os": "ios"
138
+ "os": "ios",
139
+ "description": "AppleCoreMedia library",
140
+ "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
141
  },
105
142
  {
106
143
  "user_agents": [
@@ -109,72 +146,71 @@
109
146
  "examples": [
110
147
  "AppleCoreMedia/1.0.0.19A583 (Macintosh; U; Intel Mac OS X 10_15; en_us)"
111
148
  ],
112
- "app": "Apple Podcasts",
113
149
  "device": "pc",
114
150
  "os": "macos",
115
- "description": "The Apple Podcasts app on MacOS Catalina and above",
116
- "developer_notes": "Used when progressively downloading podcasts"
151
+ "description": "AppleCoreMedia library",
152
+ "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
153
  },
118
154
  {
119
155
  "user_agents": [
120
156
  "^AppleCoreMedia/1\\..*iPhone"
121
157
  ],
122
- "app": "Apple Podcasts",
123
158
  "device": "phone",
124
159
  "examples": [
125
160
  "AppleCoreMedia/1.0.0.15G77 (iPhone; U; CPU OS 11_4_1 like Mac OS X; en_us)"
126
161
  ],
127
- "os": "ios"
162
+ "os": "ios",
163
+ "description": "AppleCoreMedia library",
164
+ "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
165
  },
129
166
  {
130
167
  "user_agents": [
131
168
  "^AppleCoreMedia/1\\..*iPad"
132
169
  ],
133
- "app": "Apple Podcasts",
134
170
  "device": "tablet",
135
171
  "examples": [
136
172
  "AppleCoreMedia/1.0.0.17A860 (iPad; U; CPU OS 13_1_2 like Mac OS X; en_us)"
137
173
  ],
138
- "os": "ios"
174
+ "os": "ios",
175
+ "description": "AppleCoreMedia library",
176
+ "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
177
  },
140
178
  {
141
179
  "user_agents": [
142
180
  "^AppleCoreMedia/1\\..*HomePod"
143
181
  ],
144
- "app": "Apple Podcasts",
145
182
  "device": "speaker",
146
183
  "examples": [
147
184
  "AppleCoreMedia/1.0.0.16G78 (HomePod; U; CPU OS 12_4 like Mac OS X; en_us)"
148
185
  ],
149
- "os": "homepod_os"
186
+ "os": "homepod_os",
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"
150
189
  },
151
190
  {
152
191
  "user_agents": [
153
192
  "^AppleCoreMedia/1\\..*Apple TV"
154
193
  ],
155
- "app": "Apple Podcasts",
156
194
  "device": "tv",
157
195
  "examples": [
158
196
  "AppleCoreMedia/1.0.0.17J586 (Apple TV; U; CPU OS 13_0 like Mac OS X; en_us)"
159
197
  ],
160
- "os": "tvos"
198
+ "os": "tvos",
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"
161
201
  },
162
202
  {
163
203
  "user_agents": [
164
- "^AppleCoreMedia/1\\..*Apple Watch",
165
- "watchOS/"
204
+ "^AppleCoreMedia/1\\..*Apple Watch"
166
205
  ],
167
- "app": "Apple Podcasts",
168
206
  "device": "watch",
169
- "examples": [
170
- "atc/1.0 watchOS/6.0.1 model/Watch4,1 hwp/t8006 build/17R605 (6; dt:190)"
171
- ],
172
- "os": "watchos"
207
+ "os": "watchos",
208
+ "description": "AppleCoreMedia library",
209
+ "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"
173
210
  },
174
211
  {
175
212
  "user_agents": [
176
213
  "^Podcasts/.*\\(.*\\)",
177
-
178
214
  "^Balados/.*\\(.*\\)",
179
215
  "^Podcasti/.*\\(.*\\)",
180
216
  "^Podcastit/.*\\(.*\\)",
@@ -183,6 +219,7 @@
183
219
  "^Podcast’ler/.*\\(.*\\)",
184
220
  "^Podkaster/.*\\(.*\\)",
185
221
  "^Podcaster/.*\\(.*\\)",
222
+ "^Podcastok/.*\\(.*\\)",
186
223
  "^Подкасти/.*\\(.*\\)",
187
224
  "^Подкасты/.*\\(.*\\)",
188
225
  "^פודקאסטים/.*\\(.*\\)",
@@ -200,12 +237,11 @@
200
237
  "device": "pc",
201
238
  "os": "macos",
202
239
  "description": "The Apple Podcasts app on MacOS Catalina and above",
203
- "developer_notes": "Used when downloading podcasts (not progressive downloads), with support for the following languages: Arabic, Chinese, Finnish, French, English, Hebrew, Hindi, Korean, Polish, Romanian, Russian, Serbian, Slovenian, Swedish, Thai, Turkish."
240
+ "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."
204
241
  },
205
242
  {
206
243
  "user_agents": [
207
244
  "^Podcasts/.*\\d$",
208
-
209
245
  "^Balados/.*\\d$",
210
246
  "^Podcasti/.*\\d$",
211
247
  "^Podcastit/.*\\d$",
@@ -214,7 +250,7 @@
214
250
  "^Podcast’ler/.*\\d$",
215
251
  "^Podkaster/.*\\d$",
216
252
  "^Podcaster/.*\\d$",
217
- "^Podcast/.*\\d$",
253
+ "^Podcastok/.*\\d$",
218
254
  "^Подкасти/.*\\d$",
219
255
  "^Подкасты/.*\\d$",
220
256
  "^פודקאסטים/.*\\d$",
@@ -227,10 +263,9 @@
227
263
  "app": "Apple Podcasts",
228
264
  "os": "ios",
229
265
  "description": "The Apple Podcasts app on devices other than MacOS Catalina and above",
230
- "developer_notes": "Used when downloading podcasts (not progressive downloads), with support for the following languages: Arabic, Chinese, Finnish, French, English, Hebrew, Hindi, Korean, Polish, Romanian, Russian, Serbian, Slovenian, Swedish, Thai, Turkish",
266
+ "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",
231
267
  "examples": [
232
- "Podcasts/2.6",
233
- "Podcast/1150.47 CFNetwork/811.5.4 Darwin/16.6.0"
268
+ "Podcasts/2.6"
234
269
  ]
235
270
  },
236
271
  {
@@ -319,6 +354,18 @@
319
354
  "device": "pc",
320
355
  "os": "windows"
321
356
  },
357
+ {
358
+ "user_agents": [
359
+ "BroadwayPodcastNetwork/iOS"
360
+ ],
361
+ "app": "Broadway Podcast Network",
362
+ "description": "The Broadway Podcast Network iOS App",
363
+ "device": "phone",
364
+ "examples": [
365
+ "BroadwayPodcastNetwork/iOS"
366
+ ],
367
+ "os": "ios"
368
+ },
322
369
  {
323
370
  "user_agents": [
324
371
  "^Cast(?:b|B)ox/.+Android"
@@ -416,13 +463,33 @@
416
463
  ],
417
464
  "app": "Deezer",
418
465
  "device": "phone",
419
- "os": "android"
466
+ "os": "android",
467
+ "examples": [
468
+ "Deezer/6.2.2.80 (Android; 9; Mobile; fr) samsung SM-G950F",
469
+ "Deezer/6.2.3.96 (Android; 10; Mobile; fr) samsung SM-A405FN"
470
+ ],
471
+ "info_url": "https://play.google.com/store/apps/details?id=deezer.android.app"
472
+ },
473
+ {
474
+ "user_agents": [
475
+ "^Deezer/.*CFNetwork/"
476
+ ],
477
+ "app": "Deezer",
478
+ "os": "ios",
479
+ "examples": [
480
+ "Deezer/8.13.0.4 CFNetwork/1125.2 Darwin/19.4.0"
481
+ ],
482
+ "info_url": "https://apps.apple.com/us/app/deezer-music-podcast-player/id292738169"
420
483
  },
421
484
  {
422
485
  "user_agents": [
423
486
  "^Deezer"
424
487
  ],
425
- "app": "Deezer"
488
+ "app": "Deezer",
489
+ "examples": [
490
+ "Deezer/4.20.0 (Electron; windows/10.0.18362; Desktop; fr)",
491
+ "Deezer/4.20.0 (Electron; osx/10.14.6; Desktop; fr)"
492
+ ]
426
493
  },
427
494
  {
428
495
  "user_agents": [
@@ -559,7 +626,8 @@
559
626
  "user_agents": [
560
627
  "^Lavf/"
561
628
  ],
562
- "app": "ffmpeg"
629
+ "app": "ffmpeg",
630
+ "developer_notes": "This is a library used within TuneIn, VLC, ffmpeg and other programs. This is the default useragent for the ffmpeg library."
563
631
  },
564
632
  {
565
633
  "user_agents": [
@@ -617,6 +685,7 @@
617
685
  ],
618
686
  "app": "Google Home",
619
687
  "device": "speaker",
688
+ "description": "Google Podcasts on smart speakers",
620
689
  "os": "google_assistant"
621
690
  },
622
691
  {
@@ -625,22 +694,23 @@
625
694
  ],
626
695
  "app": "Google Podcasts",
627
696
  "device": "speaker",
697
+ "description": "Google Podcasts on smart speakers",
628
698
  "os": "google_assistant"
629
699
  },
630
700
  {
631
701
  "user_agents": [
632
- "iPhone;.*GSA/"
633
- ],
634
- "app": "Google Podcasts",
635
- "device": "phone",
636
- "os": "ios"
637
- },
638
- {
639
- "user_agents": [
640
- "iPad;.*GSA/"
702
+ "(?:(?:iPhone|iPad|iPod touch);.+)?GSA/",
703
+ "^Podcasts$",
704
+ "^GooglePodcasts/"
641
705
  ],
642
706
  "app": "Google Podcasts",
643
- "device": "tablet",
707
+ "description": "Google Podcasts on iOS",
708
+ "examples": [
709
+ "GooglePodcasts/2.0.2%20iPod_touch/13.4.1%20hw/iPod9_1",
710
+ "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",
711
+ "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"
712
+ ],
713
+ "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'.",
644
714
  "os": "ios"
645
715
  },
646
716
  {
@@ -648,7 +718,12 @@
648
718
  "(?:Android;.+)?GSA/"
649
719
  ],
650
720
  "app": "Google Podcasts",
651
- "os": "android"
721
+ "os": "android",
722
+ "description": "Google Podcasts on Android (the app or player)",
723
+ "examples": [
724
+ "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"
725
+ ],
726
+ "developer_notes": "*GSA/ is used in the Google app when searching and playing podcasts, and in the Google Podcasts app"
652
727
  },
653
728
  {
654
729
  "user_agents": [
@@ -782,9 +857,30 @@
782
857
  },
783
858
  {
784
859
  "user_agents": [
785
- "^iHeartRadio/"
860
+ "^iHeartRadio/.*Android"
861
+ ],
862
+ "app": "iHeartRadio",
863
+ "os": "android",
864
+ "examples": [
865
+ "iHeartRadio/9.19.0 (Android 10; SM-G960U Build/QP1A.190711.020)",
866
+ "iHeartRadio/9.19.0 (Android 9; SM-G950U Build/PPR1.180610.011)"
867
+ ],
868
+ "info_url": "https://play.google.com/store/apps/details?id=com.clearchannel.iheartradio.controller"
869
+ },
870
+ {
871
+ "user_agents": [
872
+ "^iHeartRadio/.* CFNetwork/",
873
+ "^iHeartRadio/.* iOS"
786
874
  ],
787
- "app": "iHeartRadio"
875
+ "app": "iHeartRadio",
876
+ "os": "ios",
877
+ "examples": [
878
+ "iHeartRadio/2020052002 CFNetwork/1125.2 Darwin/19.4.0",
879
+ "iHeartRadio/9.20.0 (iPhone; iOS 13.4.1; iPhone11,8)",
880
+ "iHeartRadio/9.20.0 (iPad; iOS 13.4.1; iPad6,12)",
881
+ "iHeartRadio/9.7.0 (iPod touch; iOS 12.4.5; iPod7,1)"
882
+ ],
883
+ "info_url": "https://apps.apple.com/us/app/iheart-radio-music-podcasts/id290638154"
788
884
  },
789
885
  {
790
886
  "user_agents": [
@@ -845,6 +941,33 @@
845
941
  "info_url": "https://www.jriver.com/",
846
942
  "os": "windows"
847
943
  },
944
+ {
945
+ "user_agents": [
946
+ ".*KAIOS/"
947
+ ],
948
+ "app": "KAIOS podcast app",
949
+ "device": "phone",
950
+ "os": "kaios",
951
+ "info_url": "https://kaiostech.com",
952
+ "examples": [
953
+ "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"
954
+ ],
955
+ "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."
956
+ },
957
+ {
958
+ "user_agents": [
959
+ ".*PodLP/"
960
+ ],
961
+ "app": "PodLP podcast app for KaiOS",
962
+ "device": "phone",
963
+ "os": "kaios",
964
+ "info_url": "https://podlp.com",
965
+ "examples": [
966
+ "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"
967
+ ],
968
+ "description": "PodLP is the first podcast app available for KaiOS smart feature phones on the KaiStore.",
969
+ "developer_notes": "Introduced in version v1.2.0.0 for limited content (downloads); available for all content after v1.3.0.0"
970
+ },
848
971
  {
849
972
  "user_agents": [
850
973
  "^Laughable.+iOS"
@@ -853,6 +976,45 @@
853
976
  "device": "phone",
854
977
  "os": "ios"
855
978
  },
979
+ {
980
+ "user_agents": [
981
+ "^com.jio.media.jiobeats.jiosaavn",
982
+ "^com.jio.media.jiobeats",
983
+ "^com.saavn.android",
984
+ "^saavn"
985
+ ],
986
+ "app": "JioSaavn",
987
+ "device": "phone",
988
+ "info_url": "https://www.jiosaavn.com/",
989
+ "description": "A music streaming and podcast app from India. Earn Your Happy!",
990
+ "developer_notes": "The user-agent will start with one of the above strings followed by the app version and player version."
991
+ },
992
+ {
993
+ "user_agents": [
994
+ "^lamarr-iOS",
995
+ "^TheEconomist-Lamarr-ios"
996
+ ],
997
+ "app": "The Economist",
998
+ "device": "phone",
999
+ "os": "ios",
1000
+ "examples": [
1001
+ "lamarr-iOS-2.20.3-116",
1002
+ "TheEconomist-Lamarr-ios-2.22.2-12002"
1003
+ ]
1004
+ },
1005
+ {
1006
+ "user_agents": [
1007
+ "^lamarr-android",
1008
+ "^TheEconomist-Lamarr-android"
1009
+ ],
1010
+ "app": "The Economist",
1011
+ "device": "phone",
1012
+ "os": "android",
1013
+ "examples": [
1014
+ "lamarr-android-2.18.1-21810",
1015
+ "TheEconomist-Lamarr-android-2.22.2-12002"
1016
+ ]
1017
+ },
856
1018
  {
857
1019
  "user_agents": [
858
1020
  "LG Player"
@@ -1067,10 +1229,16 @@
1067
1229
  },
1068
1230
  {
1069
1231
  "user_agents": [
1070
- "iOS.*The Podcast App/"
1232
+ "iOS.*The Podcast App/",
1233
+ "com.evolve.podcast/"
1071
1234
  ],
1072
1235
  "app": "The Podcast App",
1073
- "os": "ios"
1236
+ "os": "ios",
1237
+ "examples": [
1238
+ "podcast/2358 iOS/Version 13.5.1 (Build 017F80) The Podcast App/3.22.1",
1239
+ "com.evolve.podcast/3.22.1 (iPhone; ) (build 2358, iOS 13.5.1)"
1240
+ ],
1241
+ "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."
1074
1242
  },
1075
1243
  {
1076
1244
  "user_agents": [
@@ -1101,15 +1269,56 @@
1101
1269
  },
1102
1270
  {
1103
1271
  "user_agents": [
1104
- "^PodCruncher/"
1272
+ "^PodCruncher/.* CFNetwork/"
1273
+ ],
1274
+ "app": "PodCruncher",
1275
+ "os": "ios",
1276
+ "examples": [
1277
+ "PodCruncher/3.7.1 CFNetwork/1125.2 Darwin/19.4.0",
1278
+ "PodCruncher/3.7.1 CFNetwork/978.0.7 Darwin/18.7.0"
1279
+ ],
1280
+ "info_url": "https://apps.apple.com/us/app/podcruncher-podcast-player/id421894356"
1281
+ },
1282
+ {
1283
+ "user_agents": [
1284
+ "^Podbean/Android App",
1285
+ "^Podbean/Android generic"
1286
+ ],
1287
+ "app": "Podbean",
1288
+ "os": "android",
1289
+ "examples": [
1290
+ "Podbean/Android App 7.6.4 (http://podbean.com),1927526fe23b5acf535b3e91b64cee95",
1291
+ "Podbean/Android generic 1.1.2 (http://podbean.com),9376c517335ded9a716022cc1f15c884"
1292
+ ],
1293
+ "info_url": "https://play.google.com/store/apps/details?id=com.podbean.app.podcast"
1294
+ },
1295
+ {
1296
+ "user_agents": [
1297
+ "^Podbean/iOS"
1105
1298
  ],
1106
- "app": "PodCruncher"
1299
+ "app": "Podbean",
1300
+ "os": "ios",
1301
+ "examples": [
1302
+ "Podbean/iOS (http://podbean.com) 5.2.0 - 19c4ff292bd09cd2ccbad22cc6755a45"
1303
+ ],
1304
+ "info_url": "https://apps.apple.com/us/app/podbean-podcast-app-player/id973361050"
1305
+ },
1306
+ {
1307
+ "user_agents": [
1308
+ "^Podhero/"
1309
+ ],
1310
+ "app": "Podhero",
1311
+ "bot": true,
1312
+ "info_url": "https://podhero.com",
1313
+ "description": "Podhero feed crawler. Supports websub."
1107
1314
  },
1108
1315
  {
1109
1316
  "user_agents": [
1110
- "^Podbean/"
1317
+ "^Podhero/"
1111
1318
  ],
1112
- "app": "Podbean"
1319
+ "app": "Podhero",
1320
+ "info_url": "https://podhero.com",
1321
+ "description": "Podhero app on iOS and Android."
1113
1322
  },
1114
1323
  {
1115
1324
  "user_agents": [
@@ -1118,6 +1327,41 @@
1118
1327
  "app": "Podkicker Pro",
1119
1328
  "os": "android"
1120
1329
  },
1330
+ {
1331
+ "user_agents": [
1332
+ "PodLink"
1333
+ ],
1334
+ "app": "PodLink",
1335
+ "info_url": "https://pod.link/faq/crawler"
1336
+ },
1337
+ {
1338
+ "user_agents": [
1339
+ "^PodMN/Android"
1340
+ ],
1341
+ "description": "Minnesota Podcasts Live Here",
1342
+ "examples": [
1343
+ "PodMN/Android 1.2.6 (Android 7.1.1; SM-J510FN Build/NMF26X)"
1344
+ ],
1345
+ "info_url": "https://play.google.com/store/apps/details?id=com.podmn.app",
1346
+ "app": "PodMN",
1347
+ "device": "phone",
1348
+ "os": "android",
1349
+ "svg": "podmn.svg"
1350
+ },
1351
+ {
1352
+ "user_agents": [
1353
+ "^PodMN/iOS"
1354
+ ],
1355
+ "description": "Minnesota Podcasts Live Here",
1356
+ "examples": [
1357
+ "PodMN/iOS 1.2.6 (iPhone XR/13.6.1)"
1358
+ ],
1359
+ "info_url": "https://apps.apple.com/us/app/podmn/id1464935818",
1360
+ "app": "PodMN",
1361
+ "device": "phone",
1362
+ "os": "ios",
1363
+ "svg": "podmn.svg"
1364
+ },
1121
1365
  {
1122
1366
  "user_agents": [
1123
1367
  "PodnewsBot"
@@ -1127,6 +1371,32 @@
1127
1371
  "description": "Podnews runs a number of bots to read and test RSS and audio files",
1128
1372
  "info_url": "http://podnews.net"
1129
1373
  },
1374
+ {
1375
+ "user_agents": [
1376
+ "Podyssey App"
1377
+ ],
1378
+ "app": "Podyssey",
1379
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1380
+ "info_url": "https://podyssey.fm"
1381
+ },
1382
+ {
1383
+ "user_agents": [
1384
+ "com.toysinboxes.Echo"
1385
+ ],
1386
+ "app": "Podyssey",
1387
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1388
+ "info_url": "https://podyssey.fm",
1389
+ "os": "ios"
1390
+ },
1391
+ {
1392
+ "user_agents": [
1393
+ "fm.podyssey.podcasts"
1394
+ ],
1395
+ "app": "Podyssey",
1396
+ "description": "Podyssey is a community for people that love podcasts. It's like Goodreads, but for podcasts.",
1397
+ "info_url": "https://podyssey.fm",
1398
+ "os": "android"
1399
+ },
1130
1400
  {
1131
1401
  "user_agents": [
1132
1402
  "python-requests"
@@ -1168,10 +1438,14 @@
1168
1438
  {
1169
1439
  "user_agents": [
1170
1440
  "RadioPublic iOS",
1171
- "RadioPublic.+CFNetwork"
1441
+ "RadioPublic.+CFNetwork",
1442
+ "^RadioPublic/iOS"
1172
1443
  ],
1173
1444
  "app": "RadioPublic",
1174
1445
  "description": "RadioPublic’s free, easy to use podcast player makes listening to podcasts simple, enjoyable, and fun.",
1446
+ "examples": [
1447
+ "RadioPublic/iOS-2.0"
1448
+ ],
1175
1449
  "info_url": "https://radiopublic.com/",
1176
1450
  "svg": "radiopublic.svg",
1177
1451
  "os": "ios"
@@ -1263,9 +1537,10 @@
1263
1537
  },
1264
1538
  {
1265
1539
  "user_agents": [
1266
- "^Spotify/\\d+"
1540
+ "^Spotify/1.0$"
1267
1541
  ],
1268
- "bot": true
1542
+ "bot": true,
1543
+ "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."
1269
1544
  },
1270
1545
  {
1271
1546
  "user_agents": [
@@ -1305,6 +1580,16 @@
1305
1580
  ],
1306
1581
  "app": "Subcast"
1307
1582
  },
1583
+ {
1584
+ "user_agents": [
1585
+ "Sonnet"
1586
+ ],
1587
+ "app": "Sonnet",
1588
+ "description": "Sonnet is a simple, easy to use podcast app aimed at new listeners",
1589
+ "os": "android",
1590
+ "info_url": "https://sonnet.fm",
1591
+ "svg": "sonnet.svg"
1592
+ },
1308
1593
  {
1309
1594
  "user_agents": [
1310
1595
  "Sonos"
@@ -1375,7 +1660,8 @@
1375
1660
  "user_agents": [
1376
1661
  "^Swoot/"
1377
1662
  ],
1378
- "app": "Swoot"
1663
+ "app": "Swoot",
1664
+ "description": "Renamed to Podhero in June 2020"
1379
1665
  },
1380
1666
  {
1381
1667
  "user_agents": [
@@ -1383,11 +1669,63 @@
1383
1669
  ],
1384
1670
  "bot": true
1385
1671
  },
1672
+ {
1673
+ "user_agents": [
1674
+ "^TuneIn Radio/.*;Android"
1675
+ ],
1676
+ "examples": [
1677
+ "TuneIn Radio/24.2 (Linux;Android 10) ExoPlayerLib/2.11.4"
1678
+ ],
1679
+ "app": "TuneIn Radio",
1680
+ "os": "android",
1681
+ "info_url": "https://play.google.com/store/apps/details?id=tunein.player"
1682
+ },
1683
+ {
1684
+ "user_agents": [
1685
+ "^TuneIn Radio Pro/.*;Android"
1686
+ ],
1687
+ "examples": [
1688
+ "TuneIn Radio Pro/23.3.2 (Linux;Android 5.1.1) ExoPlayerLib/2.10.7"
1689
+ ],
1690
+ "app": "TuneIn Pro",
1691
+ "os": "android",
1692
+ "info_url": "https://play.google.com/store/apps/details?id=radiotime.player"
1693
+ },
1694
+ {
1695
+ "user_agents": [
1696
+ "^TuneIn(%20| )Radio/.*(CFNetwork/|iPhone)"
1697
+ ],
1698
+ "examples": [
1699
+ "TuneIn Radio/1366 CFNetwork/1121.2.2 Darwin/19.3.0",
1700
+ "TuneIn Radio/18.1; iPhone12,8; iOS/13.4.1",
1701
+ "TuneIn%20Radio/1383 CFNetwork/1125.2 Darwin/19.4.0"
1702
+ ],
1703
+ "app": "TuneIn Radio",
1704
+ "os": "ios",
1705
+ "info_url": "https://apps.apple.com/us/app/tunein-radio-live-news-music/id418987775"
1706
+ },
1707
+ {
1708
+ "user_agents": [
1709
+ "^TuneIn(%20| )Radio(%20| )Pro/.*CFNetwork/"
1710
+ ],
1711
+ "examples": [
1712
+ "TuneIn Radio Pro/1361 CFNetwork/1121.2.2 Darwin/19.3.0",
1713
+ "TuneIn%20Radio%20Pro/1383 CFNetwork/1125.2 Darwin/19.4.0"
1714
+ ],
1715
+ "app": "TuneIn Pro",
1716
+ "os": "ios",
1717
+ "info_url": "https://apps.apple.com/us/app/tunein-pro-radio-sports/id319295332"
1718
+ },
1386
1719
  {
1387
1720
  "user_agents": [
1388
1721
  "^TuneIn"
1389
1722
  ],
1390
- "app": "TuneIn"
1723
+ "examples": [
1724
+ "TuneIn Radio"
1725
+ ],
1726
+ "app": "TuneIn Radio",
1727
+ "info_url": "https://tunein.com/",
1728
+ "developer_notes": "Other versions of this app use many other user agents."
1391
1729
  },
1392
1730
  {
1393
1731
  "user_agents": [
@@ -1472,5 +1810,150 @@
1472
1810
  "stagefright/"
1473
1811
  ],
1474
1812
  "os": "android"
1813
+ },
1814
+ {
1815
+ "user_agents": [
1816
+ "^^com\\.evolve\\.podcast/"
1817
+ ],
1818
+ "app": "The Podcast App",
1819
+ "device": "phone",
1820
+ "examples": [
1821
+ "com.evolve.podcast/3.10.1 (iPhone; ) (build 951, iOS 13.3)"
1822
+ ],
1823
+ "os": "ios"
1824
+ },
1825
+ {
1826
+ "user_agents": [
1827
+ "^Podimo/.*iOS"
1828
+ ],
1829
+ "app": "Podimo",
1830
+ "device": "phone",
1831
+ "os": "ios",
1832
+ "examples": [
1833
+ "Podimo/1.11.3 build 121/iOS 13.3"
1834
+ ],
1835
+ "info_url": "https://apps.apple.com/dk/app/podimo-a-world-of-podcasts/id1476538730"
1836
+ },
1837
+ {
1838
+ "user_agents": [
1839
+ "^Podimo/.*Android"
1840
+ ],
1841
+ "app": "Podimo",
1842
+ "device": "phone",
1843
+ "os": "android",
1844
+ "examples": [
1845
+ "Podimo/1.11.3 build 91/Android 28"
1846
+ ],
1847
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US"
1848
+ },
1849
+ {
1850
+ "user_agents": [
1851
+ "BingPreview/"
1852
+ ],
1853
+ "bot": true
1854
+ },
1855
+ {
1856
+ "user_agents": [
1857
+ "^msnbot/"
1858
+ ],
1859
+ "bot": true
1860
+ },
1861
+ {
1862
+ "user_agents": [
1863
+ "^Deezer Podcasters\/1\\.0"
1864
+ ],
1865
+ "bot": true
1866
+ },
1867
+ {
1868
+ "user_agents": [
1869
+ "^got/"
1870
+ ],
1871
+ "bot": true,
1872
+ "info_url": "https://play.google.com/store/apps/details?id=com.podimo&hl=en_US",
1873
+ "developer_notes": "Got is a HTTP library for NodeJs"
1874
+ },
1875
+ {
1876
+ "user_agents": [
1877
+ "INA dlweb"
1878
+ ],
1879
+ "bot": true,
1880
+ "developer_notes": "Institut National de l'Audiovisuel is a repository of all French radio and television audiovisual archives."
1881
+ },
1882
+ {
1883
+ "user_agents": [
1884
+ "^SoundOn/[\\d\\.]+\\s+\\(Linux;Android",
1885
+ "^SoundOn\/[^12]\\.\\d+\\.\\d+$",
1886
+ "^SoundOn\/1\\.[^1][^0-2]?\\.\\d+$"
1887
+ ],
1888
+ "app": "SoundOn",
1889
+ "device": "phone",
1890
+ "examples": [
1891
+ "SoundOn/1.9.17 (Linux;Android 10) ExoPlayerLib/2.9.4"
1892
+ ],
1893
+ "os": "android"
1894
+ },
1895
+ {
1896
+ "user_agents": [
1897
+ "^SoundOn/1\\.1[0-2]\\.\\d+$",
1898
+ "^SoundOn/2\\.\\d+\\.\\d+$",
1899
+ "^SoundOn/[\\d\\.]+\\s+\\(iOS"
1900
+ ],
1901
+ "app": "SoundOn",
1902
+ "device": "phone",
1903
+ "examples": [
1904
+ "SoundOn/1.10.1",
1905
+ "SoundOn/2.2.0",
1906
+ "SoundOn/2.2.2 (iOS)"
1907
+ ],
1908
+ "os": "ios"
1909
+ },
1910
+ {
1911
+ "user_agents": [
1912
+ "^SoundOn/[\\d\\.]+\\s+\\(bot"
1913
+ ],
1914
+ "bot": true
1915
+ },
1916
+ {
1917
+ "user_agents": [
1918
+ "^Podverse/Android Mobile App/"
1919
+ ],
1920
+ "app": "Podverse Android Mobile App",
1921
+ "device": "phone",
1922
+ "os": "android",
1923
+ "info_url": "https://play.google.com/store/apps/details?id=com.podverse&hl=en_US",
1924
+ "description": "Open source podcast catcher for Android, with clip-sharing, playlists, device syncing and more.",
1925
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/Android Mobile App/ user agent."
1926
+ },
1927
+ {
1928
+ "user_agents": [
1929
+ "^Podverse/iOS Mobile App/"
1930
+ ],
1931
+ "app": "Podverse iOS Mobile App",
1932
+ "device": "phone",
1933
+ "os": "ios",
1934
+ "examples": [
1935
+ "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"
1936
+ ],
1937
+ "description": "Open source podcast catcher for iOS, with clip-sharing, playlists, device syncing and more.",
1938
+ "info_url": "https://apps.apple.com/us/app/podverse/id1390888454",
1939
+ "developer_notes": "The standard device user agent is concatenated to the end of the Podverse/iOS Mobile App/ user agent."
1940
+ },
1941
+ {
1942
+ "user_agents": [
1943
+ "^Podverse/Feed Parser"
1944
+ ],
1945
+ "bot": true,
1946
+ "app": "Podverse Server-Side Feed Parser",
1947
+ "info_url": "https://podverse.fm",
1948
+ "description": "The Podverse feed parser.",
1949
+ "developer_notes": "This service parses publicly-accessible RSS feeds on a timer, then stores parsed data in the Podverse database."
1950
+ },
1951
+ {
1952
+ "user_agents": [
1953
+ "^Podcast/1."
1954
+ ],
1955
+ "app": "小宇宙",
1956
+ "info_url": "https://www.coolapk.com/apk/app.podcast.cosmos",
1957
+ "description": "Cosmos, a chinese podcast app"
1475
1958
  }
1476
1959
  ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: podcast_agent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Benjamin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-08 00:00:00.000000000 Z
11
+ date: 2020-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: User agent parser written in Ruby using regex patterns from the Open
14
14
  Podcast Analytics Working Group.