Page 1 of 1

Feature Requests: Comment-File, Lyrics from Tag

PostPosted: Wed Oct 24, 2012 9:20 am
by pemholder
Hi,
there are 2 long time feature requests that did not make it in new subsonic-versions for some time now:

1. Getting lyrics in subsonic is a never ending story because subsonic is getting them online and the changing sources often were offline after some time or changed the api. In many cases this feature shows lyrics for the worng song. There are a lot of users like me who have stored available lyrics in the tag "unsyncedlyrics", but subsonic does not show them.
The requested feature should work like this:
a) Look if there is a tag-field "Unsyncedlyrics" in the song and if yes show it.
b) If not, try to get lyrics from external source and show it

http://forum.subsonic.org/forum/viewtopic.php?f=3&t=8773&p=37645&hilit=lyrics#p37645
http://forum.subsonic.org/forum/viewtopic.php?f=2&t=8082&p=32858&hilit=lyrics#p32524

2. I have live recordings that are not splitted in tracks and therefore there is no track listing available in subsonic. In order to show the track-listing in subsonic I write the tracks and some other additional informations as a comment. But if you want to switch to new versions, switch the installation to another PC or just want to rebuild the database from scratch those comments are gone, one reason for me to stick to older versions of subsonic for some time and not to make Madsonic my working environment but only to my test-environment till now.

Therefore I would appreciate it very much if Madsonic would be able to show a file like "comment.txt" as a comment, if there is such a file in the directory.
http://forum.subsonic.org/forum/viewtopic.php?f=3&t=2532&p=8145&hilit=comment#p8145
http://forum.subsonic.org/forum/viewtopic.php?f=3&t=10568

Donation promised. :)

Re: Feature Requests: Comment-File, Lyrics from Tag

PostPosted: Wed Nov 07, 2012 1:49 pm
by pemholder
@MadEvil

Thank you for including the "comment.txt"-feature with build 3200.
I made some successful tests and appreciate that madsonic puts formating tags automatically.

I have some questions about the behaviour of this feature:

Does the reading of the comment.txt-file only happen once and then store the comment internally?
How am I able to change the comment? Is this only possible inside subsonic with the comment-button?
How can I change the text of the comment.txt-file and get it to be seen in subsonic?

I looked at the album in subsonic and the comment.txt was shown as comment. I changed the content of comment.txt and nothing changed in comment.
I deleted the content of comment, saved the empty comment and ist stayed like that - no comment.txt read again.
(In one case I got an error after deleteing the comment)


Code: Select all
Error
Subsonic encountered an internal error. You can report this error in the Subsonic Forum. Please include the information below.

Exception   java.lang.NullPointerException
Message   null
Java version   Oracle Corporation 1.7.0_07
Operating system   Windows XP 5.1
Server   jetty-6.1.x
Memory   Used 105 of 145 MB
Stack trace   java.lang.NullPointerException
   at net.sourceforge.subsonic.service.MediaFileService.checkForCommentFile(MediaFileService.java:779)
   at net.sourceforge.subsonic.service.MediaFileService.createMediaFile(MediaFileService.java:491)
   at net.sourceforge.subsonic.service.MediaFileService.checkLastModified(MediaFileService.java:141)
   at net.sourceforge.subsonic.service.MediaFileService.getChildrenOf(MediaFileService.java:254)
   at net.sourceforge.subsonic.service.MediaFileService.getChildrenOf(MediaFileService.java:230)
   at net.sourceforge.subsonic.controller.MainController.handleRequestInternal(MainController.java:96)
   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
   at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
   at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
   at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
   at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
   at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
   at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
   at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
   at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
   at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
   at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
   at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
   at org.mortbay.jetty.Server.handle(Server.java:313)
   at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
   at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
   at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
   at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
   at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)