A music player that connects to your cloud/distributed storage. diffuse.sh
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677module Queue exposing (EngineItem, Item, makeEngineItem, makeItem, makeTrackUrl)
import Dict exposing (Dict)import List.Extra as Listimport Sources exposing (Source)import Sources.Processing exposing (HttpMethod(..))import Sources.Servicesimport Timeimport Tracks exposing (IdentifiedTrack, Tags, Track)
-- 🌳
type alias Item = { manualEntry : Bool , identifiedTrack : IdentifiedTrack }
type alias EngineItem = { isCached : Bool , progress : Maybe Float , sourceId : String , trackId : String , trackTags : Tags , trackPath : String , url : String }
-- 🔱
makeEngineItem : Time.Posix -> List Source -> List String -> Dict String Float -> Track -> EngineItemmakeEngineItem timestamp sources cachedTrackIds progressTable track = { isCached = List.member track.id cachedTrackIds , progress = Dict.get track.id progressTable , sourceId = track.sourceId , trackId = track.id , trackPath = track.path , trackTags = track.tags , url = makeTrackUrl timestamp sources track }
makeItem : Bool -> IdentifiedTrack -> ItemmakeItem isManualEntry identifiedTrack = { manualEntry = isManualEntry , identifiedTrack = identifiedTrack }
makeTrackUrl : Time.Posix -> List Source -> Track -> StringmakeTrackUrl timestamp sources track = sources |> List.find (.id >> (==) track.sourceId) |> Maybe.map (makeTrackUrl_ timestamp track) |> Maybe.withDefault "<missing-source>"
-- ㊙️
makeTrackUrl_ : Time.Posix -> Track -> Source -> StringmakeTrackUrl_ timestamp track source = Sources.Services.makeTrackUrl source.service timestamp source.id source.data Get track.path