Liking cljdoc? Tell your friends :D

dk.simongray.podcast.profile

The listener's profile, which syncs between their devices, as plain data with pure functions over it.

A profile is one map:

{:device         "8f1c9e2a-…"   ; this device's id
 :clock          #inst "…"      ; the latest stamp written or merged
 :subscriptions  {feed-guid {:url :title :image :added-at :guid
                             :removed?}}
 :show-ranks     {feed-guid {:rank "V" :removed? false}}  ; the order
 :remote-items   {id {:feed-url :removed?}}  ; episodes of other shows
 :settings       {feed-guid {:skip-intro 20 ... :stamps {…}}}
 :tags           {feed-guid {"Tech" {:removed? false}}}
 :lists          {url {:title :folder :removed?}}  ; followed OPML lists
 :episodes       {id {:position :duration :reported-at}}
 :played         {id {:played? true :played-at}}
 :hidden         {id {:hidden? true}}           ; as the listener chose
 :archive        {feed-guid {device-id {:items #{item-guid} :n 1}}}
 :queue          {id {:rank "V" :removed? false}}
 :queue-moves    {id {:rank "W" :removed? false}}  ; moved ranks
 :playlists      {name {id {:rank "V" :removed? false}}}
 :playlist-moves {name {id {:rank "W" :removed? false}}}
 :inbox          {id {:removed? false}}
 :stars          {id {:removed? false}}
 :bookmarks      {id {754 {:title :removed?}}}
 :clips          {id {754 {:duration :title :removed?}}}
 :ratings        {id {:rating 4 :worst 1 :best 5 :removed?}}
 :filters        {name {:criteria {:where {:status :unplayed}} :removed?}}
 :listened       {feed-guid {"2026-09" {device-id {:seconds 5400.0}}}}
 :payments       {id {:status :paid :sats 50 :address :removed?}}
 :preferences    {:skip-forward {:value 30} ...}
 :devices        {device-id {:name :platform ... :seen {…}}}
 :retired        {device-id {}}}

A profile is a CRDT of dk.simongray.mind-meld: each write takes the time it happens at, and stamps what it changed with that time and the :device of the profile. It syncs through dk.simongray.like-minded with the sync-options. A feed is identified by its key, the guid that its first fetch settled on, and an episode by its id, [feed-guid item-guid]. Once nothing has changed a played episode for a year, compact moves it from :episodes and :played to the :archive of its show.

This namespace has the subscriptions, their settings, the preferences and the progress of the episodes. The other parts have namespaces of their own:

  • profile.queue, the queue, the inbox and the playlists
  • profile.marks, the stars, bookmarks, clips and ratings
  • profile.opml, the followed lists, and the subscriptions as OPML
  • profile.player, the events of a player
  • profile.payments, the record of the listener's payments
The listener's profile, which syncs between their devices, as plain
data with pure functions over it.

A profile is one map:

    {:device         "8f1c9e2a-…"   ; this device's id
     :clock          #inst "…"      ; the latest stamp written or merged
     :subscriptions  {feed-guid {:url :title :image :added-at :guid
                                 :removed?}}
     :show-ranks     {feed-guid {:rank "V" :removed? false}}  ; the order
     :remote-items   {id {:feed-url :removed?}}  ; episodes of other shows
     :settings       {feed-guid {:skip-intro 20 ... :stamps {…}}}
     :tags           {feed-guid {"Tech" {:removed? false}}}
     :lists          {url {:title :folder :removed?}}  ; followed OPML lists
     :episodes       {id {:position :duration :reported-at}}
     :played         {id {:played? true :played-at}}
     :hidden         {id {:hidden? true}}           ; as the listener chose
     :archive        {feed-guid {device-id {:items #{item-guid} :n 1}}}
     :queue          {id {:rank "V" :removed? false}}
     :queue-moves    {id {:rank "W" :removed? false}}  ; moved ranks
     :playlists      {name {id {:rank "V" :removed? false}}}
     :playlist-moves {name {id {:rank "W" :removed? false}}}
     :inbox          {id {:removed? false}}
     :stars          {id {:removed? false}}
     :bookmarks      {id {754 {:title :removed?}}}
     :clips          {id {754 {:duration :title :removed?}}}
     :ratings        {id {:rating 4 :worst 1 :best 5 :removed?}}
     :filters        {name {:criteria {:where {:status :unplayed}} :removed?}}
     :listened       {feed-guid {"2026-09" {device-id {:seconds 5400.0}}}}
     :payments       {id {:status :paid :sats 50 :address :removed?}}
     :preferences    {:skip-forward {:value 30} ...}
     :devices        {device-id {:name :platform ... :seen {…}}}
     :retired        {device-id {}}}

A profile is a CRDT of dk.simongray.mind-meld: each write takes the time
it happens at, and stamps what it changed with that time and the :device
of the profile. It syncs through dk.simongray.like-minded with the
sync-options. A feed is identified by its key, the guid that its first
fetch settled on, and an episode by its id, [feed-guid item-guid].
Once nothing has changed a played episode for a year, compact moves it
from :episodes and :played to the :archive of its show.

This namespace has the subscriptions, their settings, the preferences
and the progress of the episodes. The other parts have namespaces of
their own:

- profile.queue, the queue, the inbox and the playlists
- profile.marks, the stars, bookmarks, clips and ratings
- profile.opml, the followed lists, and the subscriptions as OPML
- profile.player, the events of a player
- profile.payments, the record of the listener's payments
raw docstring

add-remote-itemclj/s

(add-remote-item profile id {:keys [feed-url] :as details} at)

The profile with the episode id of a show that it isn't subscribed to, whose feed is at the :feed-url of details, at at. It's an episode that the listener took from a search, a link or another show, e.g. to queue it.

The `profile` with the episode `id` of a show that it isn't subscribed
to, whose feed is at the :feed-url of `details`, at `at`. It's an
episode that the listener took from a search, a link or another show,
e.g. to queue it.
sourceraw docstring

archive-afterclj/s

How long nothing may change a played episode before compact moves it to the archive of its show, in milliseconds: a year.

How long nothing may change a played episode before compact moves it to
the archive of its show, in milliseconds: a year.
sourceraw docstring

archived?clj/s

(archived? profile [feed-guid item-guid :as id])

Whether the archive of profile holds the episode id as played.

Whether the archive of `profile` holds the episode `id` as played.
sourceraw docstring

compactclj/s

(compact profile at)
(compact profile at opts)

Move the old played episodes of profile to the archive at at, and drop the tombstones that every live device has merged, once they're older than the :keep-for of opts, as dk.simongray.mind-meld/compact does.

A played episode moves once nothing has changed it for the :archive-after of opts, in milliseconds and a year by default. Its position and stamps go, and the archive of its show keeps it as played. Listening counts are never dropped, and the tombstones of unsubscriptions stay while the listener follows a list.

Move the old played episodes of `profile` to the archive at `at`, and
drop the tombstones that every live device has merged, once they're
older than the :keep-for of `opts`, as dk.simongray.mind-meld/compact
does.

A played episode moves once nothing has changed it for the
:archive-after of `opts`, in milliseconds and a year by default. Its
position and stamps go, and the archive of its show keeps it as played.
Listening counts are never dropped, and the tombstones of unsubscriptions
stay while the listener follows a list.
sourceraw docstring

configureclj/s

(configure profile feed-guid settings at)

Change the settings of the subscription feed-guid in profile at at.

The settings are the keys of default-settings, and these:

  • :rate, the playback rate of this show
  • :video?, whether to watch the video of its episodes that offer audio and video
  • :notify?, whether its new episodes are announced
  • :downloads, its rule for dk.simongray.podcast.downloads
Change the `settings` of the subscription `feed-guid` in `profile` at
`at`.

The settings are the keys of default-settings, and these:

- :rate, the playback rate of this show
- :video?, whether to watch the video of its episodes that offer audio
  and video
- :notify?, whether its new episodes are announced
- :downloads, its rule for dk.simongray.podcast.downloads
sourceraw docstring

default-preferencesclj/s

How the listener likes to listen until they change it:

  • :skip-forward and :skip-back, the seconds that a skip jumps
  • :rate, the playback rate
  • :video?, whether to watch the video of an episode that offers audio and video
  • :notify?, whether the new episodes of a show are announced
  • :track-buttons, what the next and previous buttons of a lock screen or headphones go to: :chapters, the episodes of the :queue, or :chapters-first, which goes to the queue once no chapter is left
  • :continuous?, whether the next episode of a show plays when one ends and the queue has no other
  • :rewinds, how far back an episode resumes after a pause, as pairs of the seconds of a pause and the seconds back, the longest pause that was reached counting, e.g. after a call
  • :subscription-defaults, the settings of a new subscription, as profile/configure takes them. A new subscription gets them when it's made, so a change of them leaves the shows that the listener has as they are.
How the listener likes to listen until they change it:

- :skip-forward and :skip-back, the seconds that a skip jumps
- :rate, the playback rate
- :video?, whether to watch the video of an episode that offers audio
  and video
- :notify?, whether the new episodes of a show are announced
- :track-buttons, what the next and previous buttons of a lock screen or
  headphones go to: :chapters, the episodes of the :queue, or
  :chapters-first, which goes to the queue once no chapter is left
- :continuous?, whether the next episode of a show plays when one ends
  and the queue has no other
- :rewinds, how far back an episode resumes after a pause, as pairs of
  the seconds of a pause and the seconds back, the longest pause that
  was reached counting, e.g. after a call
- :subscription-defaults, the settings of a new subscription, as
  profile/configure takes them. A new subscription gets them when it's
  made, so a change of them leaves the shows that the listener has as
  they are.
sourceraw docstring

default-settingsclj/s

The settings of a subscription until the listener changes them:

  • :auto-queue?, whether new episodes join the queue: true or :back at its end, :next right after the current episode, or false
  • :auto-queue-max, the most new episodes of one fetch that join the queue, the newest, or nil for all of them
  • :inbox?, whether they join the inbox instead, and those that the :auto-queue-max leaves out
  • :join-where, the criteria of criteria/where that a new episode meets to join the queue or the inbox, e.g. {:type #{"full" "bonus"}} to leave the trailers out, or nil for every new episode
  • :skip-intro and :skip-outro, the seconds to skip at the start and the end
  • :folder, the folder that the show is in
  • :order, the order of its episodes, one of criteria/orders, or nil for the listening order of the show
  • :custom-title, the listener's own title of the show, or nil for that of its feed
  • :hide-where, the criteria of criteria/where that hide an episode of the show, unless the listener shows it, e.g. {:status :played}, or nil
The settings of a subscription until the listener changes them:

- :auto-queue?, whether new episodes join the queue: true or :back at
  its end, :next right after the current episode, or false
- :auto-queue-max, the most new episodes of one fetch that join the
  queue, the newest, or nil for all of them
- :inbox?, whether they join the inbox instead, and those that the
  :auto-queue-max leaves out
- :join-where, the criteria of criteria/where that a new episode meets
  to join the queue or the inbox, e.g. {:type #{"full" "bonus"}} to
  leave the trailers out, or nil for every new episode
- :skip-intro and :skip-outro, the seconds to skip at the start and the
  end
- :folder, the folder that the show is in
- :order, the order of its episodes, one of criteria/orders, or nil for
  the listening order of the show
- :custom-title, the listener's own title of the show, or nil for that
  of its feed
- :hide-where, the criteria of criteria/where that hide an episode of
  the show, unless the listener shows it, e.g. {:status :played}, or
  nil
sourceraw docstring

episode-entriesclj/s

(episode-entries profile)

The entries of the episodes of profile by id, each with its played mark, except those that are only in the archive, or forgotten.

The entries of the episodes of `profile` by id, each with its played
mark, except those that are only in the archive, or forgotten.
sourceraw docstring

episode-entryclj/s

(episode-entry profile id)

The entry of the episode id in profile with its played mark, or nil. It has the stamp and the device of the later of the two.

An archived episode counts as played, and without a position, its entry is the mark alone, with the stamp of the archive. A forgotten episode has no entry until the listener plays it again.

The entry of the episode `id` in `profile` with its played mark, or nil.
It has the stamp and the device of the later of the two.

An archived episode counts as played, and without a position, its entry
is the mark alone, with the stamp of the archive. A forgotten episode
has no entry until the listener plays it again.
sourceraw docstring

filtersclj/s

(filters profile)

The saved filters of profile by name, as criteria for dk.simongray.podcast.criteria/episodes.

The saved filters of `profile` by name, as criteria for
dk.simongray.podcast.criteria/episodes.
sourceraw docstring

foldersclj/s

(folders profile)

The feed guids of the live subscriptions of profile by folder, in the listener's order, as shows gives it, with the shows in no folder under nil.

The feed guids of the live subscriptions of `profile` by folder, in the
listener's order, as shows gives it, with the shows in no folder under
nil.
sourceraw docstring

forgetclj/s

(forget profile id at)

Forget the episode id in profile at at, e.g. to take it out of the history: its progress and its played mark go, leaving tombstones, so that it counts as never heard on every device, even once archived. Its places in the queue, the inbox and the playlists, and its marks, stay.

Forget the episode `id` in `profile` at `at`, e.g. to take it out of the
history: its progress and its played mark go, leaving tombstones, so
that it counts as never heard on every device, even once archived. Its
places in the queue, the inbox and the playlists, and its marks, stay.
sourceraw docstring

hiddenclj/s

(hidden profile id)

Whether the listener hid the episode id in profile: true, false when they unhid it, or nil when they did neither, and the :hide-where of its show decides.

Whether the listener hid the episode `id` in `profile`: true, false when
they unhid it, or nil when they did neither, and the :hide-where of its
show decides.
sourceraw docstring

hideclj/s

(hide profile id at)

Hide the episode id in profile at at, as hide-all does.

Hide the episode `id` in `profile` at `at`, as hide-all does.
sourceraw docstring

hide-allclj/s

(hide-all profile ids at)

Hide the episodes ids in profile at at with one stamp, e.g. to take them out of the lists without marking them played, even where the :hide-where of their show would show them.

Hide the episodes `ids` in `profile` at `at` with one stamp, e.g. to
take them out of the lists without marking them played, even where the
:hide-where of their show would show them.
sourceraw docstring

historyclj/s

(history profile)

The episode ids in profile, most recently played or touched first: an episode heard again comes first again, and a forgotten one is left out until then.

The episode ids in `profile`, most recently played or touched first: an
episode heard again comes first again, and a forgotten one is left out
until then.
sourceraw docstring

listenedclj/s

(listened profile)

The seconds that the listener heard of each show in profile, by feed guid and month in UTC, e.g. {feed-guid {"2026-09" 5400.0}}.

The counts of all the devices add up. Report the position at least every 30 seconds while an episode plays, since a longer gap can count as a pause.

The seconds that the listener heard of each show in `profile`, by feed
guid and month in UTC, e.g. {feed-guid {"2026-09" 5400.0}}.

The counts of all the devices add up. Report the position at least
every 30 seconds while an episode plays, since a longer gap can count as
a pause.
sourceraw docstring

makeclj/s

(make device)

A fresh profile for the device device, a stable id that tells the listener's devices apart, made once per installation, e.g. (str (random-uuid)).

A fresh profile for the device `device`, a stable id that tells the
listener's devices apart, made once per installation, e.g.
(str (random-uuid)).
sourceraw docstring

mark-all-playedclj/s

(mark-all-played profile ids at)

Mark the episodes ids in profile as played at at, with one stamp, e.g. those of a show or of the inbox.

Mark the episodes `ids` in `profile` as played at `at`, with one stamp,
e.g. those of a show or of the inbox.
sourceraw docstring

mark-all-unplayedclj/s

(mark-all-unplayed profile ids at)

Mark the episodes ids in profile as not played at at, with one stamp, as mark-unplayed does.

Mark the episodes `ids` in `profile` as not played at `at`, with one
stamp, as mark-unplayed does.
sourceraw docstring

mark-playedclj/s

(mark-played profile id at)

Mark the episode id in profile as played at at, which takes it out of the inbox.

Mark the episode `id` in `profile` as played at `at`, which takes it out
of the inbox.
sourceraw docstring

mark-unplayedclj/s

(mark-unplayed profile id at)

Mark the episode id in profile as not played at at, with its position back at the start.

Mark the episode `id` in `profile` as not played at `at`, with its
position back at the start.
sourceraw docstring

mergeclj/s

(merge a b)

Reconcile the profiles a and b of a listener's devices, as dk.simongray.mind-meld/merge does: by the later entry, and of two listening counts of one device, by the higher.

Reconcile the profiles `a` and `b` of a listener's devices, as
dk.simongray.mind-meld/merge does: by the later entry, and of
two listening counts of one device, by the higher.
sourceraw docstring

move-showclj/s

(move-show profile feed-guid index at)

Move the subscription feed-guid of profile to index in the listener's order at at. The first move places every show where shows has it, so that the others keep their places.

Move the subscription `feed-guid` of `profile` to `index` in the
listener's order at `at`. The first move places every show where shows
has it, so that the others keep their places.
sourceraw docstring

notifies?clj/s

(notifies? profile feed-guid)

Whether the new episodes of the feed feed-guid in profile are announced: its own setting, or else the listener's preference.

Whether the new episodes of the feed `feed-guid` in `profile` are
announced: its own setting, or else the listener's preference.
sourceraw docstring

outro-startclj/s

(outro-start profile feed-guid id)

Where the outro of the episode id of feed-guid starts in profile, its skip-outro seconds before the end.

Nil when the duration is unknown, the feed skips no outro, or the outro is as long as the episode.

Where the outro of the episode `id` of `feed-guid` starts in `profile`,
its skip-outro seconds before the end.

Nil when the duration is unknown, the feed skips no outro, or the outro
is as long as the episode.
sourceraw docstring

playback-rateclj/s

(playback-rate profile feed-guid)

The playback rate for the feed feed-guid in profile: its own setting, or else the listener's preference.

The playback rate for the feed `feed-guid` in `profile`: its own setting,
or else the listener's preference.
sourceraw docstring

played-thresholdclj/s

How many seconds before the end of an episode count as having heard it, by default.

How many seconds before the end of an episode count as having heard it,
by default.
sourceraw docstring

played?clj/s

(played? profile id)

Whether the episode id counts as played in profile, by its mark or else by the archive.

Whether the episode `id` counts as played in `profile`, by its mark or
else by the archive.
sourceraw docstring

preferclj/s

(prefer profile preferences at)

Change the listener's preferences in profile at at, with the keys of default-preferences, and :downloads, the listener's rules for dk.simongray.podcast.downloads.

Change the listener's `preferences` in `profile` at `at`, with the keys of
default-preferences, and :downloads, the listener's rules for
dk.simongray.podcast.downloads.
sourceraw docstring

preferencesclj/s

(preferences profile)

The listener's preferences in profile, over the defaults.

The listener's preferences in `profile`, over the defaults.
sourceraw docstring

prefers-video?clj/s

(prefers-video? profile feed-guid)

Whether the listener watches the video of an episode of the feed feed-guid in profile that offers audio and video: its own setting, or else the listener's preference.

Whether the listener watches the video of an episode of the feed
`feed-guid` in `profile` that offers audio and video: its own setting,
or else the listener's preference.
sourceraw docstring

problemclj/s

(problem profile)

A description of what in profile breaks the rules below, or nil.

The rules are those of dk.simongray.mind-meld/problem, and:

  • Each rank in the queue and in a playlist is a rank.
  • A list is at a URL, a tag is a string, and a bookmark and a clip are at a whole number of seconds.
  • A rating is a number of its scale, and a clip lasts a number of seconds.
  • A listening count is a number of seconds.
  • An archive is a set of item guids, counted by its :n.
  • The criteria of a saved filter are a map.
  • A remote item names the URL of its feed.

Saved filters from a later version are fine here, even when this version doesn't understand them.

A description of what in `profile` breaks the rules below, or nil.

The rules are those of dk.simongray.mind-meld/problem, and:

- Each rank in the queue and in a playlist is a rank.
- A list is at a URL, a tag is a string, and a bookmark and a clip are
  at a whole number of seconds.
- A rating is a number of its scale, and a clip lasts a number of
  seconds.
- A listening count is a number of seconds.
- An archive is a set of item guids, counted by its :n.
- The criteria of a saved filter are a map.
- A remote item names the URL of its feed.

Saved filters from a later version are fine here, even when this
version doesn't understand them.
sourceraw docstring

progressclj/s

(progress profile id position at)
(progress profile id position duration at)
(progress profile id position duration at opts)

Record in profile that the listener is position seconds into the episode id at at, with its duration if known. An episode heard to within the :played-threshold of opts of its end, in seconds, counts as played and leaves the inbox.

Record in `profile` that the listener is `position` seconds into the
episode `id` at `at`, with its `duration` if known. An episode heard to
within the :played-threshold of `opts` of its end, in seconds, counts as
played and leaves the inbox.
sourceraw docstring

rekeyclj/s

(rekey profile feed-guid new-guid at)

The profile with the subscription feed-guid moved to new-guid at at, along with its settings, tags and place among the shows, leaving a tombstone, e.g. when a feed declares a guid other than that of its URL.

Nothing changes when the guids are the same, or when there's no live subscription.

The `profile` with the subscription `feed-guid` moved to `new-guid` at
`at`, along with its settings, tags and place among the shows, leaving a
tombstone, e.g. when a feed declares a guid other than that of its URL.

Nothing changes when the guids are the same, or when there's no live
subscription.
sourceraw docstring

relocateclj/s

(relocate profile feed-guid {:keys [url title image] :as details})

Note in profile that the feed feed-guid moved to the :url of details, with the :title and :image it has there, e.g. after a permanent redirect. Nothing changes without a live subscription.

Note in `profile` that the feed `feed-guid` moved to the :url of
`details`, with the :title and :image it has there, e.g. after a
permanent redirect. Nothing changes without a live subscription.
sourceraw docstring

remote-itemsclj/s

(remote-items profile)

The live remote items of profile, by episode id, each with the :feed-url of its show.

The live remote items of `profile`, by episode id, each with the
:feed-url of its show.
sourceraw docstring

remove-filterclj/s

(remove-filter profile name at)

Remove the saved filter name from profile at at, leaving a tombstone.

Remove the saved filter `name` from `profile` at `at`, leaving a
tombstone.
sourceraw docstring

remove-remote-itemclj/s

(remove-remote-item profile id at)

The profile without the remote item id at at, leaving a tombstone.

The `profile` without the remote item `id` at `at`, leaving a
tombstone.
sourceraw docstring

rename-episodeclj/s

(rename-episode profile old-id new-id at)

The profile with the state of the episode old-id under new-id at at, e.g. after a host rewrote the guids of its feed.

The places in the queue and the playlists, the inbox, the marks and a remote item move, leaving tombstones, while the progress, the played mark, an archived one too, and whether it's hidden are copied, since their collections keep every tombstone. Nothing is written where new-id has an entry already, e.g. from a device that renamed it first.

The `profile` with the state of the episode `old-id` under `new-id` at
`at`, e.g. after a host rewrote the guids of its feed.

The places in the queue and the playlists, the inbox, the marks and a
remote item move, leaving tombstones, while the progress, the played
mark, an archived one too, and whether it's hidden are copied, since
their collections keep every tombstone. Nothing is written where
`new-id` has an entry already, e.g. from a device that renamed it
first.
sourceraw docstring

rename-folderclj/s

(rename-folder profile from to at)

Move the shows of profile in the folder from to the folder to at at, or out of all folders when to is nil.

Move the shows of `profile` in the folder `from` to the folder `to` at
`at`, or out of all folders when `to` is nil.
sourceraw docstring

rename-tagclj/s

(rename-tag profile from to at)

Rename the tag from to to on the shows of profile at at, or take it off them when to is nil.

Rename the tag `from` to `to` on the shows of `profile` at `at`, or take it
off them when `to` is nil.
sourceraw docstring

resume-positionclj/s

(resume-position profile feed-guid id)
(resume-position profile feed-guid id at)

Where to start playing the episode id of feed-guid in profile: where the listener left it, or after the intro when it hasn't been started or was heard to the end.

Given the time at, it goes back after a pause by the listener's :rewinds, from the time of the last report of the position, but never before the start.

Where to start playing the episode `id` of `feed-guid` in `profile`: where
the listener left it, or after the intro when it hasn't been started or
was heard to the end.

Given the time `at`, it goes back after a pause by the listener's
:rewinds, from the time of the last report of the position, but never
before the start.
sourceraw docstring

save-filterclj/s

(save-filter profile name criteria at)

Save the criteria of criteria/episodes in profile as the filter name at at, so that the other devices have it too.

The criteria replace a filter of the same name, without :profile and :url, which are the context of one search. They must be data, since the profile is printed as EDN, so an order that's a function throws.

Save the `criteria` of criteria/episodes in `profile` as the filter
`name` at `at`, so that the other devices have it too.

The criteria replace a filter of the same name, without :profile and
:url, which are the context of one search. They must be data, since
the profile is printed as EDN, so an order that's a function throws.
sourceraw docstring

settingsclj/s

(settings profile feed-guid)

The settings of the subscription feed-guid in profile, over the defaults.

The settings of the subscription `feed-guid` in `profile`, over the
defaults.
sourceraw docstring

settleclj/s

(settle profile feed-guid guid)

Note in profile that the feed of the subscription feed-guid gives itself guid, which settles its key. Nothing changes without a live subscription, or when it notes that guid already.

A first fetch moves a subscription without a :guid to the guid that its feed gives itself, and one with a :guid keeps its key. A later guid is an alias that takeover reads.

Note in `profile` that the feed of the subscription `feed-guid` gives
itself `guid`, which settles its key. Nothing changes without a live
subscription, or when it notes that guid already.

A first fetch moves a subscription without a :guid to the guid that its
feed gives itself, and one with a :guid keeps its key. A later guid is
an alias that takeover reads.
sourceraw docstring

showsclj/s

(shows profile)

The feed guids of the live subscriptions of profile in the listener's order: those that move-show placed by their places, then the others by title.

The feed guids of the live subscriptions of `profile` in the listener's
order: those that move-show placed by their places, then the others by
title.
sourceraw docstring

skipclj/s

(skip profile id seconds at)
(skip profile id seconds at opts)

Move seconds forward, or back when negative, in the episode id of profile at at, with the opts of progress. The position never goes before the start or past a known end, and a duration of zero, or one that isn't a finite number, counts as unknown.

Move `seconds` forward, or back when negative, in the episode `id` of
`profile` at `at`, with the `opts` of progress. The position never goes
before the start or past a known end, and a duration of zero, or one
that isn't a finite number, counts as unknown.
sourceraw docstring

subscribeclj/s

(subscribe profile
           feed-guid
           {:keys [url title image added-at guid] :as details}
           at)

Subscribe profile to the feed feed-guid at at, with the :url, :title and :image of the feed in details, and its :guid when the feed was fetched or a list named it, which settles the key. The image is the artwork that a device shows before it has fetched the feed.

The settings of an earlier subscription to the feed still hold, and a feed without any gets the listener's :subscription-defaults. For a new subscription, :added-at can give an earlier time of subscribing, e.g. from the OPML of another app.

Subscribe `profile` to the feed `feed-guid` at `at`, with the :url,
:title and :image of the feed in `details`, and its :guid when the feed
was fetched or a list named it, which settles the key. The image is the
artwork that a device shows before it has fetched the feed.

The settings of an earlier subscription to the feed still hold, and a
feed without any gets the listener's :subscription-defaults. For a new
subscription, :added-at can give an earlier time of subscribing, e.g.
from the OPML of another app.
sourceraw docstring

subscribed?clj/s

(subscribed? profile feed-guid)

Whether profile holds a live subscription to feed-guid.

Whether `profile` holds a live subscription to `feed-guid`.
sourceraw docstring

subscriptionsclj/s

(subscriptions profile)

The live subscriptions of profile, by feed guid.

The live subscriptions of `profile`, by feed guid.
sourceraw docstring

sync-optionsclj/s

The options of the state of dk.simongray.like-minded that a profile is, which syncs between the listener's devices:

  • :crdt, the merge, compact and problem of profiles
  • :version, of the format, 2 since an episode without a played mark can be played by the archive. It changes only when the meaning of a key changes, since a device merges the keys it doesn't know by their shape.
  • :kind, so that an app that syncs another state through the same folder leaves the profiles alone
  • :document, the name of the one document that a store without a listing shares
The options of the state of dk.simongray.like-minded that a profile is,
which syncs between the listener's devices:

- :crdt, the merge, compact and problem of profiles
- :version, of the format, 2 since an episode without a played mark can
  be played by the archive. It changes only when the meaning of a key
  changes, since a device merges the keys it doesn't know by their shape.
- :kind, so that an app that syncs another state through the same
  folder leaves the profiles alone
- :document, the name of the one document that a store without a
  listing shares
sourceraw docstring

tagclj/s

(tag profile feed-guid t at)

Give the show feed-guid in profile the tag t, a string, at at, when the profile has the subscription.

Give the show `feed-guid` in `profile` the tag `t`, a string, at `at`, when
the profile has the subscription.
sourceraw docstring

taggedclj/s

(tagged profile)

The feed guids of the live subscriptions of profile by tag, each tag's shows in the order of their titles.

The feed guids of the live subscriptions of `profile` by tag, each tag's
shows in the order of their titles.
sourceraw docstring

tagsclj/s

(tags profile feed-guid)

The tags that the listener gave the show feed-guid in profile, as a sorted set. Unlike folders, a show can have many tags.

The tags that the listener gave the show `feed-guid` in `profile`, as a
sorted set. Unlike folders, a show can have many tags.
sourceraw docstring

takeoverclj/s

(takeover profile feed-guid url)

Check whether subscribing profile to the feed at url, under the guid feed-guid that the feed declares, would replace the subscription of another feed. It gives the diagnostic :fetch/guid-taken if so, and nil if not.

A feed can declare any guid, so check a new feed before subscribing to it. The guid can be the key of a subscription, or the :guid that the feed of one gives itself now. Two forms of one URL, e.g. with http and https, count as the same feed.

Check whether subscribing `profile` to the feed at `url`, under the guid
`feed-guid` that the feed declares, would replace the subscription of
another feed. It gives the diagnostic :fetch/guid-taken if so, and nil
if not.

A feed can declare any guid, so check a new feed before subscribing to
it. The guid can be the key of a subscription, or the :guid that the
feed of one gives itself now. Two forms of one URL, e.g. with http and
https, count as the same feed.
sourceraw docstring

titleclj/s

(title profile feed-guid)

The title of the subscription feed-guid in profile: the listener's :custom-title, or else the title of its feed.

The title of the subscription `feed-guid` in `profile`: the listener's
:custom-title, or else the title of its feed.
sourceraw docstring

unhideclj/s

(unhide profile id at)

Show the episode id in profile again at at, as unhide-all does.

Show the episode `id` in `profile` again at `at`, as unhide-all does.
sourceraw docstring

unhide-allclj/s

(unhide-all profile ids at)

Show the episodes ids in profile again at at with one stamp, even where the :hide-where of their show would hide them.

Show the episodes `ids` in `profile` again at `at` with one stamp, even
where the :hide-where of their show would hide them.
sourceraw docstring

unsubscribeclj/s

(unsubscribe profile feed-guid at)

Unsubscribe profile from feed-guid at at, leaving a tombstone even where no subscription was known, so that it outlives an older subscription on another device.

Unsubscribe `profile` from `feed-guid` at `at`, leaving a tombstone even
where no subscription was known, so that it outlives an older
subscription on another device.
sourceraw docstring

untagclj/s

(untag profile feed-guid t at)

Take the tag t off the show feed-guid in profile at at, leaving a tombstone.

Take the tag `t` off the show `feed-guid` in `profile` at `at`, leaving a
tombstone.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close