Skip to content

Add Car Curious - #84

Merged
johnspurlock merged 1 commit into
opawg:masterfrom
carcurious:add-carcurious
Aug 1, 2026
Merged

Add Car Curious#84
johnspurlock merged 1 commit into
opawg:masterfrom
carcurious:add-carcurious

Conversation

@ryanwi

@ryanwi ryanwi commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Car Curious is a podcast player for automotive shows. It surfaces timestamped annotations for the cars, parts and terms mentioned in an episode. There is an iOS app and a web player.

Two entries, because hosts match the two clients on different headers.

src/referrers.json, the web player

The web player is a plain <audio> element pointed at the enclosure. It cannot set a User-Agent, so hosts match it on the Referer.

You can check this half today. Every episode page serves the enclosure to anonymous visitors, no login:

https://getcarcurious.com/episodes/ep-367-bill-s-thoughts-on-so-cal-month-brian-reed-dkp-ii

Press play. The request goes to traffic.libsyn.com/...?dest-id=4819480 carrying Referer: https://getcarcurious.com/. We set no Referrer-Policy, so browsers apply their strict-origin-when-cross-origin default and Libsyn receives the origin with no path. That is why the example holds an origin rather than a full URL.

src/apps.json, the iOS app

The app sends CarCurious/<version> (iOS; +https://getcarcurious.com) on both its download and its streaming path, so a play reaches you the same way whichever path the app picks.

The app ships on TestFlight today. There is no App Store listing for urls yet, and no public source for you to check the UA against. If you would rather not carry an entry you cannot verify, I will drop this half and reopen it once we ship. The referrer entry stands on its own. Tell me which you prefer.

Notes

I ran prettier --check src/*.json and deno test locally. Examples match their own patterns, and neither pattern collides with another entry in either direction.

One note on the streaming path, in case it helps you elsewhere. The header has to go into the AVURLAsset at construction. Otherwise AVFoundation issues its own range requests as AppleCoreMedia, which may explain other iOS apps that surface in your data only some of the time.

Car Curious is a podcast player for automotive shows, which surfaces
timestamped annotations for the cars, parts and terms mentioned in an
episode. iOS app and web player.

Two entries, because the two clients are matched by different headers:

- apps.json — the iOS app sends "CarCurious/<version> (iOS; ...)" on both
  its download and its streaming path, so a play is attributed the same way
  whichever the app chooses.
- referrers.json — the web player is a plain <audio> element pointed at the
  enclosure, so it cannot set a User-Agent and is matched on the Referer.
  The site sets no Referrer-Policy, so browsers apply the
  strict-origin-when-cross-origin default and a host sees the bare origin,
  which is what the example shows.

The display name is spaced and the User-Agent token is not, following the
28 existing entries that do the same (All Daf -> ^AllDaf/, Amazon Music ->
^AmazonMusic, BBC iPlayer -> ^BBCiPlayer/). The name is identical in both
files so the shared-properties rule in the referrers header applies.

Verified with prettier --check and deno test: examples match their own
patterns, and neither pattern collides with another entry in either
direction.
@johnspurlock

Copy link
Copy Markdown
Contributor

looks good

re: user-agent, yep Apple added this officially four years ago now (it was possible before then with a non-public header), most/all of the top apps have updated and AppleCoreMedia is not really much of a problem these days

or "were gently updated" : ) https://github.com/Automattic/pocket-casts-ios/blame/3e695e7de8436a79cfee53abd0a9a1f1039adc68/podcasts/PlaybackItem.swift#L21

@johnspurlock
johnspurlock merged commit 1866e00 into opawg:master Aug 1, 2026
1 check passed
@ryanwi

ryanwi commented Aug 1, 2026

Copy link
Copy Markdown
Contributor Author

Ok, great, thanks for the additional info and merging!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants