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

Configure Feed

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

Fix processing issue

+14 -8
+1
CHANGELOG.md
··· 2 2 3 3 ## 2.2.3 4 4 5 + - Fixes processing issue 5 6 - Fixes search text color 6 7 - Improves search regarding parentheses 7 8 - Uses variable fonts (loads fonts faster)
+13 -8
src/Javascript/processing.js
··· 7 7 8 8 import * as musicMetadata from "music-metadata-browser" 9 9 import { HttpTokenizer } from "@tokenizer/http" 10 + import { parseContentRange } from "@tokenizer/range"; 10 11 11 12 import { mimeType } from "./common" 12 13 import { transformUrl } from "./urls" ··· 31 32 .then(url => resolveUrl("HEAD", url)) 32 33 .then(res => head = res) 33 34 34 - .then(_ => urls.headUrl === urls.getUrl 35 + .then(_ => (urls.headUrl === urls.getUrl) && head.mime && head.size 35 36 ? head 36 37 : transformUrl(urls.getUrl).then(url => resolveUrl("GET", url)) 37 38 ) ··· 84 85 85 86 const fileMime = overrideContentType 86 87 ? mimeType(fileExt) 87 - : head.mime 88 + : get.mime 88 89 89 90 // Reader 90 91 const reader = HttpTokenizer.fromUrl( ··· 93 94 ) 94 95 95 96 reader.contentType = fileMime 96 - reader.fileSize = head.size 97 + reader.fileSize = get.size 97 98 reader.url = get.url 98 99 99 100 // Get tags ··· 150 151 ? new Headers() 151 152 : new Headers({ "Range": "bytes=0-0" }) 152 153 153 - }).then(resp => ({ 154 - mime: resp.headers.get("content-type"), 155 - size: resp.headers.get("content-length"), 156 - url: resp.url 154 + }).then(resp => { 155 + const length = resp.headers.get("content-length") 156 + const range = resp.headers.get("content-range") 157 157 158 - })) 158 + return { 159 + mime: resp.headers.get("content-type"), 160 + size: length ? length : (range ? parseContentRange(range).instanceLength : 0), 161 + url: resp.url 162 + } 163 + }) 159 164 }