Carey Metcalfe
9ac30419ab
Kill transcoding processes on error
...
Asking nicely with a SIGTERM doesn't cause the transcoding process(es)
to exit. Using SIGKILL gets the job done.
This was verified by manually sending SIGTERM and SIGKILL signals to
hung transcoding processes, as well as getting a client to abort stream
requests before they had completed.
Fixes #55
2018-10-12 02:38:09 -04:00
Taizo Simpson
2c4ec6c0e8
Whether or not a track has embeded art is tracked just like any other metadata, to reduce disk r/w and mem usage and a lot of other things.
...
WARNING: This needs migrations before being merged to master
2018-10-10 12:59:20 -04:00
Taizo Simpson
74fba8840e
Fixed error when shrinking a cached embeded cover
2018-10-09 16:37:00 -04:00
Taizo Simpson
00b043dda6
Used Python2-friendly syntax in creating new directories
2018-10-08 21:28:24 -04:00
Taizo Simpson
4bbcbd0acf
Art extraction is now done as a method of Track; cover_art() only extracts cover art if given a track ID; Cache embeded art
2018-10-08 20:05:45 -04:00
Taizo Simpson
7106d95cee
Added support for ID3 based metadata, OGG, and FLAC in album art extraction
2018-10-08 16:34:44 -04:00
Taizo Simpson
befc460120
Added support for embeded album art in MP3s
2018-10-08 15:31:15 -04:00
Carey Metcalfe
396df4f1ca
Stringify Exceptions when creating SubsonicAPIExceptions from them
...
This prevents a `TypeError` from being raised when the
`SubsonicAPIException` is serialized to JSON in preparation for being
returned to the client.
2018-10-07 16:17:26 -04:00
Michael Sabin
8c38292abd
Expand path when adding a folder
...
Expand the path using the system environment
before generating the absolute path.
For example, ~ was not being expanded to
the user's home directory.
2018-09-29 22:53:10 -07:00
spl0k
5a065c75ae
Merge branch 'master' into db-setup
2018-09-15 16:04:43 +02:00
spl0k
59f7fd62b0
Improved transcoding description and added client-side validation
...
Closes #115
2018-09-15 16:02:36 +02:00
spl0k
1a15b95155
Merge branch 'master' into issue90
2018-09-08 15:37:08 +02:00
spl0k
670bef6a91
Added support for python migrations
2018-09-02 17:26:18 +02:00
spl0k
659e46611a
Fixed tests
2018-08-29 18:18:31 +02:00
spl0k
e84459d627
First throw at automatic database migrations
...
Only supporting SQL scripts for now
2018-08-29 17:46:59 +02:00
spl0k
2568b9bc91
Added a small table to store the schema version
...
Defined in a dedicated 'pony database', allowing to check only this table
to determine if we need to create the tables, and so existing tables getting
a new attribute won't trigger a table creation
2018-08-29 16:09:41 +02:00
spl0k
dbf817ea9e
Automatically create DB tables if needed
2018-08-29 14:56:28 +02:00
spl0k
9c58b695ff
Watcher now handles cover art
...
Closes #92
2018-08-28 17:44:32 +02:00
spl0k
9736622ce1
Recently played API returns albums/folders that have been played at least once
...
Fixes #107
2018-08-27 15:51:01 +02:00
spl0k
38f718b4df
Using new pony on_connect
decorator
...
Revert "Restore SQLite case insensitive LIKE"
This reverts commit a08689e8c0
.
2018-08-11 16:16:34 +02:00
spl0k
a08689e8c0
Restore SQLite case insensitive LIKE
...
See ponyorm/pony#367
2018-08-05 15:35:29 +02:00
spl0k
dd33e8da14
Fixed LastFM account linking
2018-08-04 13:12:20 +02:00
spl0k
1b0cc54581
Workaround new pony QueryResult behaviour
...
Ref ponyorm/pony#369
2018-08-04 12:24:29 +02:00
spl0k
b25e943e4e
Removed bulk deletes from scanner
...
Was causing either cache issues or constraint errors
Fixes #103 , #102
2018-07-29 17:58:20 +02:00
spl0k
78cf84e136
Remove invalid folders before scanning for covers
...
Fixes #101
2018-06-24 13:19:04 +02:00
spl0k
b43a70a045
Cover art discovery: handle badly encoded files
2018-05-21 16:37:21 +02:00
spl0k
405a26a20a
Don't restrict cover art to 'cover.jpg' files
...
Ref #81
2018-05-21 16:16:06 +02:00
spl0k
918cd11262
Allow missing/empty tags
...
Closes #94 , closes #99
2018-05-20 17:35:32 +02:00
spl0k
a7cdeb0b2d
Don't bulk delete folders
...
Fixes issue with MariaDB<10.3.1
Ref #99
2018-05-20 13:38:17 +02:00
spl0k
2b1977892e
Generate a secret key only once
2018-04-01 12:32:36 +02:00
hhm
6bb98085bc
B"H allow accessing public playlists even when not admin
2018-03-21 23:11:28 -04:00
spl0k
6ac969e2c5
Index folder and track path
...
Speeds up scanning
2018-03-17 23:25:26 +01:00
spl0k
b72daea109
Improved folder deletion
2018-03-15 20:50:01 +01:00
spl0k
b4a9a21671
Don't distinct random queries
...
Fixes #89
2018-03-12 21:06:57 +01:00
spl0k
e5d9050fa7
Improved transcoding configuration parsing
2018-03-11 21:29:17 +01:00
spl0k
9eb1bf63d7
API: stream.view: added support for 'estimateContentLength'
2018-03-10 23:04:57 +01:00
spl0k
a6b894c586
API: marked explicitly unsupported methods/parameters as such
2018-03-10 22:15:40 +01:00
spl0k
adb4e7e89b
API: improved client preference passing
2018-03-10 18:35:00 +01:00
spl0k
0988d4319e
Unified file headers
2018-03-04 21:49:56 +01:00
spl0k
4cbc8765e0
Refactored FolderManager to raise exceptions
...
rather than returning status codes
2018-03-04 17:36:35 +01:00
spl0k
ef9e7af026
Refactored UserManager to raise exceptions
...
rather than returning status codes
2018-03-02 22:51:49 +01:00
spl0k
8bf488fab2
Refactored star/unstar error handling
2018-02-28 20:12:34 +01:00
spl0k
5188976e6f
Merge branch 'master'
2018-02-25 22:36:39 +01:00
spl0k
58b8a1171a
More error refactoring
2018-02-25 22:28:47 +01:00
spl0k
177b0cce0d
Refactoring API error handling
2018-02-25 11:39:26 +01:00
spl0k
ba61281ba1
Allow extra db connection args. Set utf8mb4 as the default charset for MySQL
2018-02-21 22:13:35 +01:00
spl0k
43b197a95e
Wrapping all request handling in a database transaction
2018-02-14 22:48:44 +01:00
spl0k
e3ccf0809f
Bumping the version, just because
2018-02-14 19:53:17 +01:00
spl0k
005ae4803b
More formatter refactoring
2018-02-11 12:40:10 +01:00
spl0k
27b9c232c2
Small refactoring of supysonic.api.get_entity
2018-01-30 21:56:06 +01:00
spl0k
66b6eb341e
Tests: removed context/module unload dance
...
Was a workaround for issues fixed by blueprints
2018-01-29 22:09:28 +01:00
spl0k
7455711b60
Frontend as blueprint
...
Ref #76
2018-01-29 21:37:19 +01:00
spl0k
0de87e64b0
API as blueprint
...
Ref #76
2018-01-28 22:50:21 +01:00
spl0k
aedda4f642
Add CORS header on JSON responses only
2018-01-27 17:18:30 +01:00
spl0k
b33e8ae6d1
Set mimetype when creating the response, don't try to fix it afterwards
...
Ref #76
2018-01-27 15:18:44 +01:00
spl0k
8275966db0
Dropped simplejson dependency
...
Ref #79
2018-01-21 22:02:32 +01:00
spl0k
c6992a4726
Fixed reading malformed tags
...
Fixes #86
2018-01-21 14:42:27 +01:00
spl0k
2df4de47a8
Replaced most of catch-all exception handlers
...
Closes #82
2018-01-20 22:46:41 +01:00
spl0k
3fd748cc5a
Scanner: handle permission errors
2018-01-20 21:44:20 +01:00
spl0k
954c75bc35
Ignore files with a badly encoded path
...
Closes #85
2018-01-20 18:26:58 +01:00
spl0k
bfe6da12d7
Dropped 'future' dependency
2018-01-18 21:10:01 +01:00
spl0k
fd67eb9cd4
Fixed DeprecationWarnings
2018-01-16 23:16:13 +01:00
spl0k
420003dfc1
Py3: fixed remaining errors (hidden due to skipped tests)
...
Ref #75
2018-01-16 22:19:24 +01:00
spl0k
c36d1813ee
Fixed setting client preferences
2018-01-16 19:45:28 +01:00
spl0k
7edb246b1e
Py3: str/bytes, iterators, etc.
...
It seems to work on Python 3 now!
Ref #75
2018-01-11 23:08:53 +01:00
spl0k
1a79fe3d70
Py3: basestring
...
Ref #75
2018-01-08 23:13:50 +01:00
spl0k
8674965c03
Read config files without interpolation
...
Fixes #84
2018-01-08 19:17:00 +01:00
spl0k
1605fcd202
Py3: imports, exceptions, dicts
...
Ref #75
2018-01-06 00:33:45 +01:00
spl0k
d807f26ccb
Provided migration scripts for existing storm databases
2017-12-30 19:06:43 +01:00
spl0k
df63919634
Look at my pony, my pony is amazing
2017-12-23 22:59:04 +01:00
spl0k
53fd4865cb
Get on my pony
2017-12-21 23:29:00 +01:00
spl0k
6daedc6919
I'm on a pony
2017-12-19 23:16:55 +01:00
spl0k
2428ffeb57
Scanner, CLI and watcher are on a pony
2017-12-17 23:25:34 +01:00
spl0k
a4b9a97271
All managers get a pony
2017-12-16 17:42:53 +01:00
spl0k
6bd61e0388
Getting out of the storm on a pony
2017-12-16 13:53:43 +01:00
spl0k
8046457661
Relative imports
2017-12-12 22:24:18 +01:00
spl0k
0a47ef89a5
CLI: fixed foreign key errors on user deletion
2017-12-10 15:11:50 +01:00
spl0k
d3271e7174
CLI: added ability to set stdin/stdout/stderr
2017-12-10 14:31:04 +01:00
spl0k
5236abf6ff
Moved CLI code to package
2017-12-08 22:02:12 +01:00
spl0k
bb72ce8f7c
Slight changes to watcher
...
Configurable scan delay
Test friendliness
2017-12-05 22:48:55 +01:00
spl0k
c515a25b69
Config sample update
2017-11-29 22:55:39 +01:00
spl0k
9ffe40aa2c
Reactivated config-dependent test
2017-11-27 22:46:09 +01:00
spl0k
a62976ba9d
Reworked config handling
2017-11-27 22:30:13 +01:00
spl0k
510d9e6dc7
Added some validation to scanner
2017-11-25 22:03:42 +01:00
spl0k
18383a6cc4
Removed users import/export
...
That was some method I was using by the time I deleted/recreated the
database on each schema change
2017-11-24 19:24:00 +01:00
spl0k
c947219f59
Web UI user section: validation
2017-11-24 19:19:24 +01:00
spl0k
0353a8a1bc
Web UI user section: factoring some usual validation with a decorator
2017-11-22 23:11:58 +01:00
spl0k
b7e9914246
Web UI: split GET and POST handlers
2017-11-22 22:39:54 +01:00
spl0k
b998bb0684
Web UI: reworked how data is passed to templates
...
Logged user is pushed in request data
No more 'username' session key
Small fixes along the way
2017-11-22 22:07:06 +01:00
spl0k
1488f29e9f
Fixed playlist related errors
2017-11-20 21:31:10 +01:00
spl0k
aac5ee6936
Small None-formatting / mimetype fix (and (c) dates)
2017-11-17 19:46:35 +01:00
spl0k
da857b9ceb
Reworked star/unstar error handling
...
Don't stop at the first error anymore, instead treat all provided ids
Potential errors are aggregated, if there's only one it is returned
as-is, if there are more they are all nested in a top-level error whose
code is 0 if there are different error codes, or their value if all
error codes are the same.
This error-nesting doesn't validate against the XSD, but the Subsonic
API gives absolutely no information on how errors should be handled.
And reverse-engineering is not in my line of work
2017-11-14 23:16:58 +01:00
spl0k
c709fa7e29
Better errors on listings
2017-11-11 00:12:10 +01:00
spl0k
336f556ced
Improved playlists error handling
2017-11-08 23:18:41 +01:00
spl0k
0602bed2e8
Fixed error in old search and handled newerThan
parameter
2017-11-03 23:14:39 +01:00
spl0k
b20c151765
Prevent server error when browsing on tracks that have been deleted
2017-11-03 23:12:38 +01:00
spl0k
d8c3b9fa88
User management error code tweaks
2017-11-01 20:52:59 +01:00
spl0k
7de57cb680
Small API content-type and error codes adjustments
2017-10-29 16:00:39 +01:00
spl0k
8f5fcc82f5
Response formatting tests
2017-10-28 21:18:34 +02:00
spl0k
033a86381b
Removed password decoding from UserManager
...
Decode only when passwords are coming from API query parameters
2017-10-28 12:41:34 +02:00
spl0k
7effd3aee5
Untabbify
2017-10-28 12:23:31 +02:00
spl0k
4eb7386c99
Playlists improvements
...
They don't mess up the the track order anymore
A same track can now be added more than once to a playlist
Closes #61
2017-10-22 22:05:17 +02:00
spl0k
4d3809a835
Return a correct error when the client parameter isn't supplied
2017-10-16 19:57:09 +02:00
spl0k
534a6de4a0
Slightly improved API responses
2017-10-16 19:49:29 +02:00
spl0k
da4cde77e1
Fix for cache folder set as relative path
2017-10-14 14:25:32 +02:00
spl0k
62bcce331a
Dropped python-daemon and its daemon-runner wrapper
...
This makes the watcher persisting with the terminal, breaking
installs using it as a initd/sysV daemon. The watcher currently
doesn't print anything on standard output or standard error.
Closes #39 , #72
2017-10-08 16:22:04 +02:00
spl0k
81609be7ce
Untabify watcher
2017-10-08 12:40:49 +02:00
spl0k
68aaf145ad
Merge branch 'scanner_daemon'
2017-10-08 12:30:16 +02:00
Óscar García Amor
76b55a7fe7
Fix small issue with makedirs import
2017-08-15 17:35:26 +02:00
spl0k
10ca91bd6f
Fixed potential issue when trying to delete a user
2017-08-08 19:19:33 +02:00
Óscar García Amor
7fe88d4670
Set some imports in one line
2017-08-08 10:56:42 +02:00
Óscar García Amor
a1619dd96a
Improve config.py to read file only in check
2017-08-08 10:37:22 +02:00
Óscar García Amor
5f011ed3e4
Support UTF-8 passwords with old enc:
2017-08-07 14:32:08 +02:00
Óscar García Amor
a5afece2d7
Add missing import
2017-08-07 14:07:52 +02:00
Óscar García Amor
81c356355b
Check that username match with UUID in login
2017-08-07 13:14:03 +02:00
Óscar García Amor
d9d90ffacf
Retab and change header to frontend __init__.py
2017-08-07 13:10:06 +02:00
Óscar García Amor
9818117b46
Fixes #67
2017-08-07 11:31:15 +02:00
Óscar García Amor
a6a37475c2
Retab and change header of user.py
2017-08-07 11:11:15 +02:00
Óscar García Amor
523903cac5
Improved setup script
2017-08-07 11:04:00 +02:00
Óscar García Amor
47237fd8e7
Add missing return in config.py
2017-08-07 10:59:21 +02:00
Óscar García Amor
81c2fafe86
Rewrite web.py to use new config.py
2017-08-07 09:47:39 +02:00
Óscar García Amor
1271a35c20
WIP rewrite config.py: simply retab web.py
2017-08-07 09:37:37 +02:00
Óscar García Amor
8fe9f9b715
WIP rewrite config.py: change several files to use new config
2017-08-07 09:34:43 +02:00
Óscar García Amor
2a3f13bb82
WIP: Rewrite config.py to make project more clean
2017-08-07 08:58:32 +02:00
Óscar García Amor
cb9f792ffd
Add confirmation dialog before deleting
2017-08-04 13:53:41 +02:00
Óscar García Amor
c856345c6c
Retab templates and simplify headers
2017-08-04 11:57:38 +02:00
Óscar García Amor
4c6cb3a678
Prevent admin user to delete itself
2017-08-04 10:58:47 +02:00
Óscar García Amor
be03239f9d
Use UserManager.SUCCESS to check UIDs
2017-08-04 10:24:12 +02:00
Óscar García Amor
fcf1a83234
Now admins can modify other users passwords
2017-07-27 10:23:24 +02:00
Óscar García Amor
fe5e966dbc
Check when uid param isn't me
2017-07-27 10:06:51 +02:00
Óscar García Amor
97fb5232e5
New feature: Now admins can edit users profiles
2017-07-11 16:43:55 +02:00
Óscar García Amor
c888af2d83
Added missing style files
2017-07-10 18:07:26 +02:00
Óscar García Amor
41e386e6ad
Fix: List only public playlists
2017-07-10 18:05:06 +02:00
Óscar García Amor
b53c33f92c
Add some style to web frontend
2017-07-10 17:39:30 +02:00
Óscar García Amor
ac851f04bf
WIP: Add some style to web frontend
2017-07-10 16:18:17 +02:00
Óscar García Amor
672cf0183c
Fixed issue when delete an user
2017-07-10 16:03:46 +02:00
Óscar García Amor
aa7939cbc7
WIP: Add some style to web frontend
2017-07-10 14:25:19 +02:00
Óscar García Amor
8a91e23043
WIP: Add some style to web frontend
2017-07-09 21:45:59 +02:00
Óscar García Amor
b42d0e7af2
WIP: Add some style to web frontend
2017-07-09 16:22:09 +02:00
Óscar García Amor
eb1e5a3f56
Added last play date to user list
2017-07-05 14:58:24 +02:00
spl0k
1e1b475fe6
Add 'transcoded' info to API responses if the server is set to transcode for that client
...
Closes #62
2017-07-02 17:08:40 +02:00
spl0k
5e51468246
Merge remote-tracking branch 'baldurmen/master'
2017-06-26 19:03:20 +02:00
Louis-Philippe Véronneau
b27e04c66a
new link for UltraSonic, replace Subsonic app (deprecated) by DSub
2017-06-24 14:04:23 -04:00
hhm
11031fcbd9
B"H api/search3: return search3 response tag
2017-05-17 00:01:56 -04:00
hhm
d714c691cf
B"H use range requests when available (flask >= 0.12)
2017-03-01 17:11:59 -05:00
spl0k
80e9e40248
Prevent hanging transcoding processes on client disconnection
...
Fixes #55
2016-11-27 19:00:17 +01:00
spl0k
02ac2df31a
Missing imports
...
Fixes #53
2016-11-14 19:29:09 +01:00
spl0k
1de9e2bf6e
References deletion
...
Should fix #38
2016-11-11 17:28:14 +01:00
spl0k
783e9b5465
More checks on folder add
...
Fixes #49
2016-11-11 16:31:44 +01:00
spl0k
2e8d57b9d0
Updated API responses for new album artist support
...
Closes #52
2016-10-30 21:45:34 +01:00
spl0k
104c9ffbb6
Adding support for track artist vs album artist. Scanner only
2016-10-30 20:58:00 +01:00
spl0k
074a0dc026
CLI: Added a '--force' option to folder scan command
2016-10-28 22:03:32 +02:00
spl0k
5fb98d96f5
Merge remote-tracking branch 'hhm0/rescan_albums'
2016-09-09 22:46:55 +02:00
hhm
0ca628a8fd
B"H check old albums when track metadata changed
2016-09-09 00:58:50 -04:00
hhm
ef64db46d1
B"H api: use GET and POST values in get_entity helper
2016-08-24 02:21:11 -04:00
hhm
306a7b3ec3
B"H api: use GET and POST values
2016-08-24 01:45:07 -04:00
sanderd
e1e5961c41
Fixed lookup of parent folder in scanner, to resolve issue when two folders start with the same characters.
2016-02-12 02:21:41 +01:00
spl0k
541efa6437
Added header allowing web-clients using JSON to work
2015-08-15 16:07:28 +02:00
spl0k
5fdd28290b
Fixed scanner folder lookup
...
Closes #33 , #35
2015-08-06 20:51:28 +02:00
spl0k
e73b358c63
Prevent issuing useless move operations if files have been created
2015-04-11 16:21:19 +02:00
spl0k
8b9fa416f8
Merge branch 'scanner_daemon'
2015-04-05 16:15:41 +02:00
spl0k
3c8c563b31
Providing an init.d script for the watcher using python-daemon
2014-10-26 19:37:14 +01:00
spl0k
276ebc9410
count() instead of length
2014-10-24 14:44:45 +02:00
Andre-Nam
76f23a5f01
Storm: use .count() instead of length filter
2014-10-22 21:03:05 +02:00
spl0k
f61a3a7937
Added basic file move support
2014-08-31 16:32:17 +02:00
spl0k
deba8aeee4
Changing which methods are available from Scanner
and what they do
2014-08-04 20:01:43 +02:00
spl0k
18ecf0fc08
Fixed scanning
2014-07-27 23:20:17 +02:00
spl0k
a18f670ff0
Merge branch 'master' into scanner_daemon
...
Conflicts:
README.md
supysonic/scanner.py
supysonic/web.py
2014-07-27 20:24:35 +02:00
spl0k
dd79c4d750
Fixed getNowPlaying
2014-07-27 15:05:00 +02:00
spl0k
0bd788b74d
Fixed import
2014-06-16 12:09:06 +02:00
spl0k
2c41e1af64
Merge branch 'master' into storm
...
Conflicts:
bin/supysonic-cli
supysonic/api/__init__.py
supysonic/api/albums_songs.py
supysonic/api/annotation.py
supysonic/api/browse.py
supysonic/api/chat.py
supysonic/api/media.py
supysonic/api/playlists.py
supysonic/api/search.py
supysonic/api/user.py
supysonic/db.py
supysonic/frontend/__init__.py
supysonic/frontend/folder.py
supysonic/frontend/playlist.py
supysonic/frontend/user.py
supysonic/lastfm.py
supysonic/managers/folder.py
supysonic/managers/user.py
supysonic/scanner.py
supysonic/web.py
2014-06-14 17:55:52 +02:00
spl0k
b83538f80b
A tiny bit more configuration on logging
2014-06-14 14:49:03 +02:00
spl0k
d1d3d4416e
Fixed scanner scanning untouched files
2014-06-12 14:25:58 +02:00
spl0k
f2ca878301
Scanner: exposing scan_file
2014-06-11 17:55:01 +02:00
spl0k
21f14a6dc1
Scanner: don't require a folder instance to call __scan_file
2014-06-11 17:53:33 +02:00
Andre-Nam
c29a2284b8
make it ready for packaging
2014-05-10 18:11:20 +02:00
Jelmer Vernooij
a254d17801
Add a setup.py file.
2014-05-04 23:48:17 +02:00
Jelmer Vernooij
2eb65c33f3
Move all code into a package.
2014-05-01 02:55:39 +02:00