dyerc / Doughnut

Podcast client (podcatcher) for Mac
https://doughnutapp.com
GNU General Public License v3.0
210 stars 20 forks source link

Discussion about the user agent of Doughnut. #87

Closed GetToSet closed 2 years ago

GetToSet commented 2 years ago

Podcasting services rely heavily on User-Agent header to serve best-suited audio format and for analytics. The Open Podcast Analytics Working Group (OPAWG) maintains lists of audio user agents and RSS user agents. While it's technically possible to customize the user agents for various components of Doughnut. This issue serves as a thread to discuss the proper format for the user agent of Doughnut.

Some resources of best practises of user agents:

Update Aug.28:

Since we have a website for Doughnut, it's better to include the site URL like how Overcast does.

Update Jul.12:

Here's the examples of current (default) user agents of Doughnut:

After examining user agents from various podcast clients, the above user agents should be acceptable (can be identified from the keyword Doughnut) except for media playback.

PR #92 implements a distinguishable user agent for Player in the following format:

Doughnut/x.y.z.build (+https://doughnutapp.com/; Podcast Client; macOS Version x.y.x (Build xxxxxx))

Example:

Doughnut/2.0.0-rc.1.1653423049 (+https://doughnutapp.com/; Podcast Client; macOS Version 13.0 (Build 22A5295h))
Previous thoughts (Jun 6.): Currently I propose: * `Doughnut/x.y.z.build CFNetwork/x.y.z Darwin/x.y.z (arch)` for `URLSession` requests of audio downloads, feeds and images. **Example**: `Doughnut/2.0.0.1654319012 CFNetwork/1333.0.4 Darwin/21.5.0 (arm64)` * `AppleCoreMedia/x.y.z.build (Macintosh; U; Intel Mac OS X x_y; lang) Doughnut/x.y.z.build.arch` (same prefix for `AVPlayer`, but with Doughnut version postfix) for audio streaming. **Example**: `AppleCoreMedia/1.0.0.21F79 (Macintosh; U; Intel Mac OS X 12_4; en_us) Doughnut/2.0.0.1654319012.arm64` * `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/x.y.z (KHTML, like Gecko) Doughnut/x.y.z.build.arch` (same prefix for `WKWebView`, but with Doughnut version postfix) for the webView. **Example**: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Doughnut/2.0.0.1654319012.arm64`

Feel free to share your ideas :-).