slsk-client
slsk-client copied to clipboard
Questions about the project and its future
Hi,
First of all: really nice project. I've gone through almost all of the soulseek related open source projects and this seems to have the biggest potential. I'm somewhat dissatisfied with the original (soulseekqt) client and am looking into creating an alternative tailored to my (and I think many other user's) needs. I'm not exactly sure but maybe an Electron or browser based GUI client or maybe a CLI. All of which would use your node js client as a "backend". So do you plan on maintaining this project in the future or should I just fork it instead. Are you interested in contributing to my project? Do you have detailed plans for the future so maybe I could contribute more easily?
Sorry if my message is a bit "all-over-the-place". I hope I was clear enough and thanks again for the awesome project.
I’ll help. Blessed or Vue/Electron would be amazing but I’d love to work on a terminal UI.
On 10 Nov 2017, at 6:42 pm, Balazs Saros [email protected] wrote:
Hi,
First of all: really nice project. I've gone through almost all of the soulseek related open source projects and this seems to have the biggest potential. I'm somewhat dissatisfied with the original (soulseekqt) client and am looking into creating an alternative tailored to my (and I think many other user's) needs. I'm not exactly sure but maybe an Electron or browser based GUI client or maybe a CLI. All of which would use your node js client as a "backend". So do you plan on maintaining this project in the future or should I just fork it instead. Are you interested in contributing to my project? Do you have detailed plans for the future so maybe I could contribute more easily?
Sorry if my message is a bit "all-over-the-place". I hope I was clear enough and thanks again for the awesome project.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
Hi,
I'm very happy if this project can help some peoples and I'll be very delighted to see a new modern interface instead old QT one. I will use this module in a personal project (using this module in backend server and access to it with API for many clients) and correct discovered bugs in a very close future, improve this module with new features not implemented at this time. If you make UI, this is something very close and I'm free if you need help, maybe @nayrrod can/want to be a part of this. Somebody beginned to make a CLI https://github.com/aeyoll/soulseek-cli with this module.
At the moment, you can make issues (if I've the time, I will resolve it) or you can do PR directly. For the future, some work is needed:
- refactor lib/index.js who looks like more "Spaghetti" than readable source code
- implement connections from others Soulseek clients to this module (at this time, it's one way only)
- implement file sharing (depend of previous) because It's unfair for others
- make chat but it's not primary function
I do agree on the importance of implementing file sharing (otherwise it wouldn't be viable as a general client) and I'm glad you plan to support and update this project. I've not yet looked into the soulseek API so if you don't mind I have a couple questions about it:
- How public and well documented is that API?
- Are the soulseek developers against independent clients?
- Does that API changes a lot or they keep consistent and versioned?
I'm also happy that you may take part in the UI project. I'm still hesitant about the stack but the most probable is an electron app with vue or angular.
- Soulseek API have documentations but they was made by reverse engineering the source code/client, and are a little bit difficult to find. In fact, none is really up to date at this time. I made reverse when documentation was not present or when functions described not worked.
- I haven't contacted any Slsk developers at this time and nobody contacted me for this purpose.
- API changed, but not a lot for deprecating functions
Personally, I prefer Vue (I am working with it mostly everyday).
Thanks for the info. I'm also more experienced in Vue so I think I will go with that. I will update this thread with the repo URL if it's up.
I'll join the conversation to congratulate you on this shot. Didn't tried yet but it's been a while I've been looking for a simple Soulseek wrapper API, and I didn't find time to dig it up.
I originally planned to make a web UI to run on e.g. a Raspberry Pi to feed a media server like Subsonic. Then why not use MusicBrainz for tagging / covers :)
I'll let you know. Thank you again, will follow it closely!
Edit: @balzss Going for a desktop or a web app? Is a web app simple to wrap with Electron or should it be a different codebase?
I was hesitant on the Electron vs. webapp question but I'm more on the webapp side now. It could run both on a remote server or your main machine without the "weight" of an electron app.
And marrying it with a tagging solution is a really good idea.
Hi
I like your work, i'm also very interested to convert this application in a webapp and searched everywhere for some progress, I think this is most advanced.
Do you think if this app can be used for multi-user web application or multi-concurent requests from multiple users in a short time?
I've also tried soulseek-cli (that who use your code) but is not that fast as I want, maybe a way is to create a server which persist connection, without connect every time when someone search.
Hi @carcabot
Normally this module can handle multiple downloads at the same time, but most of Soulseek desktop clients can only send 1 file for 1 peer at the same time, and a maximum of a 1 file per peer at the same time (it depends on the client) But if you want to try, I wrote this test https://github.com/f-hj/slsk-client/blob/master/test/multiDown.js
If you want to be fast and serve HTTP requests, I made the downloadStream
function https://github.com/f-hj/slsk-client/blob/master/README.md#downloadstream, it will be faster than waiting for oa complete buffer to serve the file
A Soulseek account can't be shared through instances, so if you want to make a load-balancer on the front of your API, you should have more than 1 Soulseek account
Hi, very nice job!But i'm not so able with js and node...i know that's an annoying questions but, would you mind to explain a little bit the logic behind index.js , the use of message module and connectToPeer function? Sorry again for the silly questions!
Hi! really good job! I'd like to help implementing sharing (according to my availability). In the meantime I just PR a small refactoring, hope it's good enough ;)
Hi, thanks to @andreabertagnolli the code is more understandable than before. This is just the implementation from theses documentations/softwares https://github.com/f-hj/slsk-client#sources
I'm trying to understand how to implement file sharing, but I'm in a dead end street. I tryed to open a server socket and send a "SetListenPort" message, but no connections are coming... for sure I don't know the protocol enough...
someone knows how the file sharing works in the protocol?
I'm still here! :D I'm unable to receive the FileSearch message from server (essential to implement file sharing). I took a look to nicotine plus code, sent SharedFoldersFiles ans SetStatus to server after login but nothing...
Maybe something other is needed after login... I took a look at nicotine plus code, seems that there's other messages sent after login (like Have no parent (???), Notify privileges, private chat login...), but they doesn't seem useful: https://github.com/Nicotine-Plus/nicotine-plus/blob/master/pynicotine/pynicotine.py#L712
Any help will be appreciated :)
Nailed it! It was a long fight against distributed peer type, but now the client is able to receive other peers search queries
@f-hj i need PR #18 merged beacuse I started from that refactoring, can you take a look on it?
It's only the beginning to implement file sharing, but... let's start!
Ok, now there's a file scanner that starts only on start (no watching for changes in filesystem) and a component that replies to search request. Any thoughts on that? The upload part is still missing :)
any updates on creating the new UI @balzss ?