A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

at b11d5b0a8d204ed3db401c0eedb8da25e4076131 76 lines 1.8 kB view raw
1module Queue exposing (EngineItem, Item, makeEngineItem, makeItem, makeTrackUrl) 2 3import Dict exposing (Dict) 4import List.Extra as List 5import Sources exposing (Source) 6import Sources.Processing exposing (HttpMethod(..)) 7import Sources.Services 8import Time 9import Tracks exposing (IdentifiedTrack, Tags, Track) 10 11 12 13-- 🌳 14 15 16type alias Item = 17 { manualEntry : Bool 18 , identifiedTrack : IdentifiedTrack 19 } 20 21 22type alias EngineItem = 23 { isCached : Bool 24 , progress : Maybe Float 25 , sourceId : String 26 , trackId : String 27 , trackTags : Tags 28 , trackPath : String 29 , url : String 30 } 31 32 33 34-- 🔱 35 36 37makeEngineItem : Time.Posix -> List Source -> List String -> Dict String Float -> Track -> EngineItem 38makeEngineItem timestamp sources cachedTrackIds progressTable track = 39 { isCached = List.member track.id cachedTrackIds 40 , progress = Dict.get track.id progressTable 41 , sourceId = track.sourceId 42 , trackId = track.id 43 , trackPath = track.path 44 , trackTags = track.tags 45 , url = makeTrackUrl timestamp sources track 46 } 47 48 49makeItem : Bool -> IdentifiedTrack -> Item 50makeItem isManualEntry identifiedTrack = 51 { manualEntry = isManualEntry 52 , identifiedTrack = identifiedTrack 53 } 54 55 56makeTrackUrl : Time.Posix -> List Source -> Track -> String 57makeTrackUrl timestamp sources track = 58 sources 59 |> List.find (.id >> (==) track.sourceId) 60 |> Maybe.map (makeTrackUrl_ timestamp track) 61 |> Maybe.withDefault "<missing-source>" 62 63 64 65-- ㊙️ 66 67 68makeTrackUrl_ : Time.Posix -> Track -> Source -> String 69makeTrackUrl_ timestamp track source = 70 Sources.Services.makeTrackUrl 71 source.service 72 timestamp 73 source.id 74 source.data 75 Get 76 track.path