Commit Graph

409 Commits

Author SHA1 Message Date
sentriz
d9e8bd0d65 refactor(scanner): follow symlinks, move context, update mockfs
related #174
2021-12-20 16:51:26 +00:00
sentriz
62ccf01a3a unfunny the comments 2021-12-20 16:51:26 +00:00
sentriz
f9133aac91 fix(subsonic): route settings.view -> admin home 2021-12-20 16:51:26 +00:00
sentriz
1b013e73cf delete scanner ErrStatingItem 2021-11-20 18:18:32 +00:00
sentriz
3d4dd9d7ad add some scanner benchmarks 2021-11-20 18:09:33 +00:00
sentriz
1d1ab116cd fix: make sure open cover and audio files are closed after use 2021-11-20 18:09:33 +00:00
sentriz
e10c8bafdf refactor: remove godirwalk dep 2021-11-20 18:09:33 +00:00
sentriz
fc50f01de3 check ServeStream track errors 2021-11-14 16:56:10 +00:00
sentriz
7ec6440ed2 fix: render artistId in track types
fixes #170
2021-11-12 20:14:57 +00:00
sentriz
870bec7d56 add scanner.scanDir 2021-11-10 19:12:39 +00:00
sentriz
43a929c36a make multierr errors private 2021-11-10 19:12:39 +00:00
sentriz
0c790442f4 fix: show artist album count when searching by tags 2021-11-10 19:12:39 +00:00
sentriz
b2388e6d85 feat: log all folders while scanning 2021-11-10 00:22:25 +00:00
Senan Kelly
96f693f4e4 make musicFolderIds ints (#169)
* make `musicFolderId`s ints

https://github.com/sentriz/gonic/issues/50#issuecomment-963257103
006c1dafee/Classes/Models/API%20Models/MediaFolder.swift (L16)

related #50

* add a test for multi folders and reused artists
2021-11-09 00:23:32 +00:00
sentriz
a59c030385 add a hint about regenerating ctrlsubsonic tests 2021-11-08 19:32:27 +00:00
sentriz
40cd031b05 feat: add multi folder support
closes #50
2021-11-06 21:56:01 +00:00
sentriz
fa587fc7de refactor: update scanner, scanner tests, mockfs
closes #165
closes #163
2021-11-06 21:55:46 +00:00
sentriz
b07b9a8be6 fix: don't send listenbrainz playing_now and submitted_at at the same time
fixes #168
2021-11-06 16:19:13 +00:00
sentriz
4781a744ca log listenbrainz scrobble response 2021-11-06 15:21:33 +00:00
sentriz
98cab93557 add some logging to ServeScrobble 2021-11-05 17:37:55 +00:00
sentriz
c31b3b8d1f use time.Time in scrobbler interface 2021-10-13 06:30:14 +01:00
sentriz
df85d82137 params: add time helper 2021-10-13 06:30:14 +01:00
sentriz
82d8a57aab log scrobbling errors
related https://github.com/sentriz/gonic/issues/162
2021-10-12 19:00:35 +01:00
Duncan Overbruck
848d85d26a feat: add CreatedAt to albums (#159)
This change will make the GetAlbumList views with the "newest" type
work as expected.
2021-10-04 19:12:49 +01:00
sentriz
f50817a3dc fix(scanner): update changed cover files when scanning
fixes: #158
2021-10-03 21:00:37 +01:00
sentriz
0edee132ed refactor(encode): use a replaygain enum 2021-09-13 17:02:05 +01:00
Serge Tkatchouk
b9f8ea7048 feat(encode): use "true" (unconstrained) VBR for Opus profiles 2021-09-13 16:56:50 +01:00
Serge Tkatchouk
616b152fed feat(encode): add hi-gain RG and upsampling support 2021-09-13 16:56:43 +01:00
sentriz
93608d04b4 fix(scanner): refactor a bit and fix the issue of repeatedly adding and removing tracks 😎
fixes #26
fixes #63
2021-09-10 21:00:10 +01:00
sentriz
569f62c08c refactor(scanner): don't be fancy with the clean funcs 2021-09-09 22:04:14 +01:00
alex
393813665a feat(jukebox): reduce complexity and update dependencies (#154)
* feat(jukebox): reduce jukebox code complexity

This removes an unessecary channel, but this is still pretty bad

* feat(jukebox): update flac/beep/oto so flac seeking works
2021-09-09 19:08:05 +01:00
sentriz
212a13395d fix: return early before type switch in ServeStream
related #152
2021-08-23 21:31:49 +01:00
sentriz
b56f00e9ac feat: support filter by genre in browse by folder mode 2021-08-23 21:31:38 +01:00
sentriz
6e2d4f73c5 feat: support filter by year in browse by folder mode 2021-08-23 21:31:31 +01:00
sentriz
c0ca6aaf03 fix(scanner): spawn interval scans in a goroutine
this way, if the average scan takes longer than the tick interval, the ticker will be unblocked and scans won't stack on top of each other

related #63
2021-06-28 21:37:32 +01:00
Serge Tkatchouk
4109b5b66c feat(encode): add mime-type headers to cache handlers
* feat(encode): add mime-type headers to cache handlers

This commit adds a simple MIME-type guessing logic to `onCacheHit` and
`onCacheMiss` handlers, which sets `Content-Type` HTTP response header based on
format specified by transcoding profile.

* Make cacheFile stat() error fatal

Co-authored-by: Senan Kelly <senan@senan.xyz>

* Make linter happy

Good morning to you too, mister linter!

Co-authored-by: Senan Kelly <senan@senan.xyz>

Co-authored-by: Senan Kelly <senan@senan.xyz>
2021-06-21 23:36:17 +01:00
Serge Tkatchouk
5444d40018 fix(encode): Strip EBU R128 gain tags when using forced-RG transcoding (#145) 2021-06-20 18:42:06 +01:00
George Hilliard
7100b2b241 feat: Support WMA files, including those with embedded album art (#143)
The tag library supports WMA, so add the mimetype.

Some wma files have embedded album art encoded as a video stream
alongside the audio:

```
Input #0, asf, from '01. Emergency Pulloff.wma':
  Metadata:
    (snip)
  Duration: 00:03:11.47, start: 0.000000, bitrate: 129 kb/s
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 200x200 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      comment         : Cover (front)
    Stream #0:1: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, opus, to '/tmp/output.opus':
Output file #0 does not contain any stream
```

The `-map 0:0` passed to ffmpeg is selecting the video stream to
transcode, then `-vn` says not to transcode video, so the whole process
returns an error code:

```
2021/05/28 18:59:09 transcoding according to transcoding profile of 96k
2021/05/28 18:59:09 serving transcode `02. Cotton Patch Rag.wma`: cache [opus/96k] miss!
2021/05/28 18:59:09 serving transcode `02. Cotton Patch Rag.wma`: error: starting transcode: running ffmpeg: exit status 1
```

I believe the correct solution here is to use an _audio_ stream
specifier, as in `-map 0🅰️0`.  Doing this selects the audio and
successfully performs the transcode.
2021-06-04 19:03:19 +01:00
sentriz
58624f07dc feat(subsonic)!: don't return gonic version from responses 2021-05-08 18:37:55 +01:00
sentriz
0c871d888b refactor(admin): use go1.16 embed for templates and assets 2021-05-08 18:37:55 +01:00
sentriz
6a99cdf299 bump to v0.12.3
generated by `_do_bump_version` script in project root
2021-04-20 23:17:05 +01:00
sentriz
61e11471b3 Fix non-folder folder empty parent ids
fixes #134
introduced by 711ffe144f

id          updated_at                           modified_at                          left_path   right_path  right_path_u_dec  parent_id   cover       tag_artist_id  tag_title   tag_title_u_dec  tag_brainz_id  tag_year
----------  -----------------------------------  -----------------------------------  ----------  ----------  ----------------  ----------  ----------  -------------  ----------  ---------------  -------------  ----------
1           2021-04-20 22:04:31.437318349+01:00  2021-04-20 21:35:55.423563144+01:00              .
2           2021-04-20 22:04:31.437920005+01:00  2021-04-20 21:35:50.766896425+01:00              luke
3           2021-04-20 22:04:31.475871668+01:00  2021-04-20 21:35:11.526895985+01:00  luke/       (2003) Yos                    2           folder.jpe  1              YosepH                       cf497d42-736a  2003
4           2021-04-20 22:04:31.476325505+01:00  2021-04-20 21:35:55.423563144+01:00              beng
5           2021-04-20 22:04:31.511647498+01:00  2021-04-20 21:35:27.060229492+01:00  beng/       (2013) Cha                    4           folder.jpg  2              Chapter II                   bcafa993-f065  2013

->

id          updated_at                           modified_at                          left_path   right_path  right_path_u_dec  parent_id   cover       tag_artist_id  tag_title   tag_title_u_dec  tag_brainz_id  tag_year
----------  -----------------------------------  -----------------------------------  ----------  ----------  ----------------  ----------  ----------  -------------  ----------  ---------------  -------------  ----------
1           2021-04-20 22:22:55.368005558+01:00  2021-04-20 21:35:55.423563144+01:00              .                                                                                                                0
2           2021-04-20 22:22:55.331985959+01:00  2021-04-20 21:35:50.766896425+01:00              luke                          1                                                                                  0
3           2021-04-20 22:22:55.33148277+01:00   2021-04-20 21:35:11.526895985+01:00  luke/       (2003) Yos                    2           folder.jpe  1              YosepH                       cf497d42-736a  2003
4           2021-04-20 22:22:55.367693081+01:00  2021-04-20 21:35:55.423563144+01:00              beng                          1                                                                                  0
5           2021-04-20 22:22:55.36711045+01:00   2021-04-20 21:35:27.060229492+01:00  beng/       (2013) Cha                    4           folder.jpg  2              Chapter II                   bcafa993-f065  2013
2021-04-20 23:12:15 +01:00
Duncan Overbruck
ef86f5b094 scanner/tags: fix original date
Real tag is `originaldate` and matches TDOR from taglib in id3v2:
https://github.com/taglib/taglib/blob/1644c0dd/taglib/mpeg/id3v2/id3v2frame.cpp#L338

originalyear does not exist.
2021-04-19 16:18:12 +02:00
Duncan Overbruck
482c6f0e19 scanner/tags: prefer original_date over date 2021-04-18 23:58:56 +02:00
sentriz
b17ce76a72 Set getUser.view jukebox/podcast role
closes #130
2021-04-18 12:34:54 +01:00
sentriz
e9cc2e8ea6 fix podcast nil ITunesExt and escape cover path with slash
Co-authored-by: Alex McGrath <amk@amk.ie>
2021-03-30 21:41:22 +01:00
sentriz
e7d4b857f7 sanitise password in logs 2021-03-23 21:15:56 +00:00
sentriz
51dc407f2e Add PodcastEpisodeStatusError 2021-03-04 19:38:34 +00:00
sentriz
3c926aab99 use enum for PodcastEpisodeStatus and PodcastAutoDownload 2021-03-04 19:38:34 +00:00
Alex McGrath
512d967dfa Add updated assets 2021-03-04 19:38:34 +00:00