Giter Club home page Giter Club logo

audiostreamerscrobbler's People

Contributors

vvdleun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

tml3nr

audiostreamerscrobbler's Issues

Investigation: should program be ported to different language than Golo?

Personally I'm quite happy with the Golo language. It's a fun language, it has a small run-time library with useful (and, again, fun) features. The JVM needs a small dynamic language like this in my view.

Also, while no work seems to be actively done to migrate Golo to newer Java versions, that's not really a concern to me at this time. For this particular project I plan to stay on Java 8 for the time being. The reason is that I want this program to keep running on my aging and very slow Raspberry pi 1, Model B device, which would otherwise become obsolete to me. It has been running fine for quite some time, monitoring about 3 to 5 players, of various types, each day (I keep not all my players on the network all the time).

Of course, the fact that nobody seems to be actively working on Golo is of some concern, so in the end I may choose to port this program to Groovy, Kotlin, or a different JVM language on the longer run.

Unable to install - Failed to apply plugin [id 'org.golo-lang.golo']

Using Windows 10 because getting old java is a pain on Linux, after installing both JRE and JDK 8, and Gradle 6.0.1 (latest) and Gradle 5.4 (was released around the time of the master push) I get the following error.

An exception occurred applying plugin request [id: 'org.golo-lang.golo', version: '0.6']

Failed to apply plugin [id 'org.golo-lang.golo'] >

No signature of method: org.gradle.api.plugins.JavaBasePlugin.configureForSourceSet() is applicable for argument types: (org.gradle.api.internal.tasks.DefaultSourceSet_Decorated, org.gololang.gradle.GoloCompile_Decorated) values: [source set 'main', task ':compileGolo']

More details and full Gradle build scan available at https://scans.gradle.com/s/zuxelnoqjmiqy

Add Gradle wrapper to project

Since the Golo compiler Gradle plugin does not seem to compatible with the newest Gradle versions, add the Gradle wrapper to this project, so that the user is not required to install a specific (outdated) Gradle version to compile this project.

Deadlocks occur, at least in the SSDP handler threads

While the program can run smoothly for months, from time to time the program seems to hang.

Some early investigation points to the SSDP handler as the cause. It has a clunky way to determine whether it should run or stay paused and it probably fails to detect that it needs to run from time to time. In certain situation it is never checked again whether its threads will need to run, so it can remain idle and never detect new devices on the network.

My current idea is to get rid of the Workers on the SSDP handler and just let the threads always run periodically. Since it knows which devices it has to detect, it can choose to do nothing each time it runs.

java.lang.IllegalArgumentException while running

Thanks for building this cool piece of software! Looking forward to start scrobbling, but ran into following error message when running audiostreamscrobbler (configured with lastfm):

Starting 'BluOS' detector...
Starting LSDP discovery thread...
Detected player 'BluOS/NODE 2i' is managed by the 'Player Group' group.
All players of type 'BluOS' in group 'Player Group' have been found. Stop looking for other players of this type.
Starting monitor for player 'NODE 2i (Standard: BluOS, model: N125, version 3.6.12, IP address: 192.168.1.59, MAC address: XX:XX:XX:XX:XX:XX)'...
Starting player polling thread for player 'NODE 2i (Standard: BluOS, model: N125, version 3.6.12, IP address: 192.168.1.59, MAC address: XX:XX:XX:XX:XX:XX)...
Stopping 'BluOS' detector...
New song detected: '"Ancient Skin" (Jack Penate, "After You"), played 206 seconds of 232 seconds'
Could not update Playing Now for service 'lastfm': java.lang.IllegalArgumentException: Comparison method violates its general contract!
Stopping LSDP discovery thread...
New song detected: '"Swept to the Sky" (Jack Penate, "After You"), played 0 seconds of 282 seconds'
Could not update Playing Now for service 'lastfm': java.lang.IllegalArgumentException: Comparison method violates its general contract!

Some information on my environment:

java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (Zulu8.42.0.195-CA-linux_aarch32hf) (build 1.8.0_232-b195)
OpenJDK Client VM (Zulu8.42.0.195-CA-linux_aarch32hf) (build 25.232-b195, mixed mode, Evaluation)
gradle --version

------------------------------------------------------------
Gradle 4.10.3
------------------------------------------------------------

Build time:   2018-12-05 00:50:54 UTC
Revision:     e76905e3a1034e6f724566aeb985621347ff43bc

Kotlin DSL:   1.0-rc-6
Kotlin:       1.2.61
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_232 (Azul Systems, Inc. 25.232-b195)
OS:           Linux 4.19.66-v7+ arm

I am running a Raspberry Pi 3 Model B. Any idea what could be causing the issue?

p.s. I did retrieve the sessionKey from lastfm and added it to the config.json file

Exception launched when starting script with Node already playing

script running on a Pi 4 / raspberry OS Buster. Streaming from Node 2i

Everything works fine when starting script, then streaming: scrobbling perfectly.

If I start playing a song and then run the script, the following error occurs :

Starting 'BluOS' detector...
Starting LSDP discovery thread...
Detected player 'BluOS/Node2' is managed by the 'Player Group' group.
All players of type 'BluOS' in group 'Player Group' have been found. Stop looking for other players of this type.
Starting monitor for player 'Node2 (Standard: BluOS, model: N125, version 3.16.1, IP address: 192.168.1.46, MAC address: 90:56:82:41:73:c4)'...
Starting player polling thread for player 'Node2 (Standard: BluOS, model: N125, version 3.16.1, IP address: 192.168.1.46, MAC address: 90:56:82:41:73:c4)...
Stopping 'BluOS' detector...
Error occurred while polling PlayerProxy{impl=BluOsPlayerImpl{playerType=union PlayerTypes.BluOs, name=Node2, bluOsImpl=struct BluOsPlayerImpl{name=Node2, port=11000, model=N125, version=3.16.1, macAddress=90:56:82:41:73:c4, ipAddress=192.168.1.46, LSDPVersionSupposedly=1, host=192.168.1.46}}, playerTypeId=BluOS, id=BluOS/Node2}: java.lang.IllegalArgumentException: Comparison method violates its general contract!
Exception in thread "PollBasedMonitorHelper" java.lang.IllegalArgumentException: Comparison method violates its general contract!
        at java.base/java.util.TimSort.mergeLo(TimSort.java:781)
        at java.base/java.util.TimSort.mergeAt(TimSort.java:518)
        at java.base/java.util.TimSort.mergeForceCollapse(TimSort.java:461)
        at java.base/java.util.TimSort.sort(TimSort.java:254)
        at java.base/java.util.Arrays.sort(Arrays.java:1515)
        at java.base/java.util.ArrayList.sort(ArrayList.java:1750)
        at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392)
        at java.base/java.util.stream.DistinctOps$1$2.end(DistinctOps.java:168)
        at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:210)
        at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)
        at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
        at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:720)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
        at org.eclipse.golo.runtime.RegularMethodFinder.find(RegularMethodFinder.java:40)
        at org.eclipse.golo.runtime.MethodInvocationSupport.findTarget(MethodInvocationSupport.java:349)
        at org.eclipse.golo.runtime.MethodInvocationSupport.lookupTarget(MethodInvocationSupport.java:225)
        at org.eclipse.golo.runtime.MethodInvocationSupport.fallback(MethodInvocationSupport.java:250)
        at audiostreamerscrobbler.utils.RequestUtils.doHttpGetRequest(RequestUtils:11)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.FunctionCallSupport.fallback(FunctionCallSupport.java:210)
        at audiostreamerscrobbler.factories.RequestFactory.__$$_golo$compiler$sugar_closure_8(RequestFactory:54)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at gololang.FunctionReference.invoke(FunctionReference.java:157)
        at gololang.DynamicObject.dispatchCall(DynamicObject.java:171)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.MethodInvocationSupport.fallback(MethodInvocationSupport.java:280)
        at audiostreamerscrobbler.players.bluos.BluOsMonitor.requestPlayerState(BluOsMonitor:61)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.FunctionCallSupport.fallback(FunctionCallSupport.java:210)
        at audiostreamerscrobbler.players.bluos.BluOsMonitor.pollBluOsStatus(BluOsMonitor:42)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.FunctionCallSupport.fallback(FunctionCallSupport.java:210)
        at audiostreamerscrobbler.players.bluos.BluOsMonitor.__$$_golo$compiler$sugar_closure_1(BluOsMonitor:34)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at gololang.FunctionReference.invoke(FunctionReference.java:157)
        at gololang.DynamicObject.dispatchGetterStyle(DynamicObject.java:201)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.MethodInvocationSupport.fallback(MethodInvocationSupport.java:280)
        at audiostreamerscrobbler.players.helpers.PollBasedMonitorHelper.pollPlayerAnCallCallback(PollBasedMonitorHelper:103)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.eclipse.golo.runtime.FunctionCallSupport.fallback(FunctionCallSupport.java:210)
        at audiostreamerscrobbler.players.helpers.PollBasedMonitorHelper.__$$_golo$compiler$sugar_closure_5(PollBasedMonitorHelper:41)
        at java.base/java.lang.invoke.MethodHandleProxies$1.invoke(MethodHandleProxies.java:195)
        at jdk.proxy1/com.sun.proxy.jdk.proxy1.$Proxy3.run(Unknown Source)
        at java.base/java.lang.Thread.run(Thread.java:829)
Stopping LSDP discovery thread...

MusicCast support is not working on Linux computers

On my Raspberry pi 1 (Model B) AudiostreamerScrobbler is detecting MusicCast players on the network. It sends HTTP requests, but fails to receive UDP responses.

On my Windows development machine, this seems to be working fine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.