Commit Graph

940 Commits

Author SHA1 Message Date
sentriz
657fb221db feat(subsonic)!: drop support for guessed artist covers in filesystem
it doesn't make sense with multi-artist support anymore

gonic will use lastfm or an album cover instead

Release-As: 0.16.0
2023-09-10 16:16:04 +01:00
sentriz
3ac77823c3 feat(subsonic): add support for multi-valued album artist tags
closes #103

a

a

a

r

a

a

a

a

a

a

a

a

a

a
2023-09-10 14:05:32 +01:00
sentriz
908c7cf088 update scrobble block desc 2023-09-07 18:27:54 +01:00
sentriz
e7e949a077 fail test if we leave a mockfs.DumpDB behind 2023-09-07 18:27:54 +01:00
sentriz
77fa858531 add support for adding mockfs item by glob pattern 2023-09-05 17:42:24 +01:00
sentriz
623d5c3709 feat(tags): support multi valued tags like albumartists 2023-09-05 17:42:24 +01:00
sentriz
75761d98f6 improve podcast error messages 2023-09-05 17:41:48 +01:00
Senan Kelly
bf59f98583 add .github/ISSUE_TEMPLATE/bug-or-issue.md 2023-09-05 15:32:16 +01:00
Daniel
a644f0ff5c feat(transcode): add MP3 320 transcoding profile (#363) 2023-09-04 23:29:24 +00:00
Gregor Zurowski
478f512d2c add tests for Last.FM ArtistGetSimilar (#355)
* Add tests for Last.FM client `ArtistGetSimilar`

* [Minor] Fix typo in test
2023-08-17 11:29:15 +00:00
sentriz
56bd2c6432 add a test for orphaned genres 2023-08-16 22:52:26 +01:00
brian-doherty
8309425c9e parse podcast description from HTML to text just as with episodes (#354) 2023-08-16 19:13:39 +00:00
sentriz
5700558a3f swap order of require.Equal() args
we had the order of require.Equal() arguments mixed up. it should be
(expected, actual) not the other way around

updated with

    find . -name "*_test.go" -exec gofmt -r "require.Equal(a, b) -> require.Equal(b, a)" -w '{}' \+
2023-08-15 22:38:38 +01:00
archekb
d5f8e23a89 feat(subsonic): gracefully handle missing podcast episode paths when returning playlists
fixes #345

* fix return playlist if file not found and do not add to playlist not downloaded podcast

---------

Co-authored-by: sentriz <senan@senan.xyz>
2023-08-15 14:49:18 +00:00
brian-doherty
7d2c4fbb5c feat(podcast): parse podcast episode descriptions from HTML to plain text (#351) 2023-08-14 21:14:13 +00:00
Gregor Zurowski
09413ea06e add tests for LastFM similar tracks (#347)
* Rename and reuse image struct

* Add LastFM test for similar tracks
2023-08-13 21:33:52 +00:00
Gregor Zurowski
78c7fbe493 add VSCode .devcontainer to Git ignore list (#348) 2023-08-13 21:33:16 +00:00
archekb
8f05f33ab8 subsonic: make homepageURL parameter optional
By the https://opensubsonic.netlify.app/docs/endpoints/createinternetradiostation/ the `homepageURL` is not requirement option
2023-08-02 10:08:49 +00:00
brian-doherty
5fb9c49ed2 fix(podcasts): make sure we use safeFilename for podcast episodes too (#339)
Co-authored-by: Brian Doherty <brian@mediaserver.dohertyfamily.me>
2023-07-17 10:58:36 +00:00
Senan Kelly
b4df1fa3f6 Update README.md 2023-07-10 12:50:34 +00:00
sentriz
637aae9b36 make getTopSongs return an empty list when there's no results
https://github.com/tamland/airsonic-refix/issues/99
2023-07-10 13:25:13 +01:00
sentriz
c5cac5b987 auto migrate plays before migration 2023-06-30 16:12:42 +01:00
Gregor Zurowski
2e879f6f16 add test for LastFM top tracks (#330) 2023-06-29 21:11:57 +00:00
brian-doherty
7982ffc0b4 feat(subsonic): change frequent album list to use total time played per album instead of play count. (#331)
Co-authored-by: Brian Doherty <brian@mediaserver.dohertyfamily.me>
2023-06-29 21:11:15 +00:00
brian-doherty
cbab68b057 feat(subsonic): improve search2 and search3 when there are multiple words searched on. (#335)
Co-authored-by: Brian Doherty <brian@mediaserver.dohertyfamily.me>
2023-06-29 20:59:22 +00:00
brian-doherty
c45c3c9041 rename podcast and podcast episode filenames to be safe at startup. (#337)
Co-authored-by: Brian Doherty <brian@mediaserver.dohertyfamily.me>
2023-06-29 20:58:15 +00:00
sentriz
5e3b8daf96 add lastfm client to subsonic controller 2023-05-22 13:05:34 +01:00
Gregor Zurowski
dbcccdc811 add initial Last.FM tests (#329)
* Move model into separate file

* Separate Last.FM client and scrobbler

* Use separate Last.FM client and scrobbler

* Fix playcount attribute name

* Add initial test for Last.FM client
2023-05-20 11:24:03 +00:00
Gregor Zurowski
6144ac7979 feat(ci): update checkout and setup-go actions (#326)
* Update Github checkout action to v3

* Update Github action setup-go to v4

* Get Go version from `go.mod`
2023-05-19 14:41:20 +00:00
Gregor Zurowski
85eeb860bf feat(ci): update golangci-lint and action (#325)
* Update linter

- Update Github golangci-lint-action to v3
- Update golangci-lint to v1.52.2

* Fix linter issues after updating to linter 1.52.2
2023-05-19 12:05:14 +00:00
Peter Nordin
ab07b876b8 feat: add .wav to list of supported audio types (#322) 2023-05-13 20:42:38 +00:00
Gregor Zurowski
5363beb031 fix names in ListenBrainz tests (#321)
* Rename test data file

* Rename require instance
2023-05-13 16:27:49 +00:00
Gregor Zurowski
b7a50ee9cb use testify for all tests (#319)
* Use Testify for all tests

* Terminate failing non-relaxed tests using `require`
2023-05-13 15:17:37 +00:00
Gregor Zurowski
bb8507a72f add unit tests for ListenBrainz scrobbler (#317)
* Access HTTP client via interface to allow for testing

* [Minor] Fix typo

* Add initial test cases for ListenBrainz scrobbler

* Fix linter error for insecure TLS in tests

* Use Testify for unit tests

* Move model into separate file

* Embed JSON responses into tests

* [Minor] Fix test function names
2023-05-13 12:10:11 +00:00
Gregor Zurowski
05b2b469dc revert "add playlists directory to docker volumes" (#316)
This reverts commit aae0683671.
2023-05-09 20:19:56 +00:00
Gregor Zurowski
aae0683671 add playlists directory to docker volumes
Add the `/playlists` directory to the list of volumes, so
the server doesn't exit when validating the playlist path
on startup.
2023-05-07 16:29:49 +00:00
sentriz
7dc9575e52 feat: store and use m3u files on filesystem for playlists
closes #306
closes #307
closes #66
2023-05-06 18:42:52 +01:00
Gregor Zurowski
1d3877668f feat(scanner): add a new option for excluding paths based on a regexp
* Exclude paths based on new exclude pattern option

* Add test for excluded paths

* Add exclude pattern option to docs

* Set exclude regexp only if given argument is set

* Update scanner/scanner.go

---------

Co-authored-by: Senan Kelly <senan@senan.xyz>
2023-05-06 17:03:11 +00:00
Senan Kelly
74de06430a refactor: consolidate specid <-> filesystem mapping and always use abs paths (#309) 2023-04-22 17:23:17 +00:00
sentriz
efe72fc447 fix(subsonic): only return one bookmark entry per row in getBookmarks
fixes #310

https://gitlab.com/ultrasonic/ultrasonic/-/issues/1113
2023-04-21 22:46:59 +01:00
sentriz
d83fe560d3 feat(scanner): support non lowercase extensions like .Mp3
https://github.com/sentriz/gonic/issues/308#issuecomment-1505650896
2023-04-12 19:04:55 +01:00
sentriz
b8fceae383 feat(sunsonic): expose type serverVersion in subsonic responses
https://opensubsonic.netlify.app/docs/responses/subsonic-response/
https://github.com/opensubsonic/open-subsonic-api/discussions/3
2023-04-08 01:27:40 +01:00
sentriz
3974b0d844 docs: add airsonic-refix 2023-03-11 13:54:07 +00:00
Zoltan Puskas
4ecc1e1285 docs: update tested player list in README (#305)
- Sublime music: update link as it has moved to GitHub
- Add Strawberry music player (Clementine fork) for QT and KDE desktops
- Add Ultrasonic Android app
2023-03-11 13:52:40 +00:00
sentriz
906164a5de feat(scanner): support more cover types
like bmp gif, and also files like folder.1.jpg like beets can create sometimes
2023-03-10 17:10:14 +00:00
sentriz
4ca9dbe320 skip flakey test 2023-03-10 17:10:14 +00:00
sentriz
a2f70f4059 chore(ci): update linters 2023-03-10 17:10:14 +00:00
sentriz
222256cccb feat(admin): update stylesheet 2023-03-04 13:22:33 +00:00
sentriz
16e6046e85 fix(admin): continue on track match error 2023-02-23 19:15:49 +00:00
Zoltan Puskas
ac74b35465 feat(contrib): improve system related contrib files
Make example configuration self documenting

Most services on *nix type systems have configuration files that are
self documenting. This usually entails:
- listing all configuration options with some sane default values
- commenting out options that do not need to be set or match the binary
  default value
- some explanatory comments where needed

This simplifies management of the service as configuration can be
understood and modified in place without having to open up the internet.

This diff also groups settings into logical blocks:
- basic server settings
- directory settings
- behavioural settings

Improve contrib system file behaviour

This diff improves gonic serive files in the following way:
- Define a sane default for gonig cache, which will map well to
  established cache paths on most Linux systems
- Update service file to use StateDirectory=, CacheDirectory= directives
  to create /var/lib/gonic and /var/cache/gonic directories respectively
- Add a tmpfilesd sample configuration that will automatically clean
  cache files if they are older than 7 days
- Add sysysers configuration file that can be used in sysusers.d to
  create relevant gonic user and group during installation.
2023-02-22 10:47:39 +00:00