Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions about the project and its future #2

Open
balzss opened this issue Nov 10, 2017 · 17 comments
Open

Questions about the project and its future #2

balzss opened this issue Nov 10, 2017 · 17 comments
Labels

Comments

@balzss
Copy link

balzss commented Nov 10, 2017

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.

@gridsystem
Copy link

gridsystem commented Nov 10, 2017 via email

@f-hj
Copy link
Owner

f-hj commented Nov 12, 2017

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

@f-hj f-hj added the question label Nov 12, 2017
@balzss
Copy link
Author

balzss commented Nov 14, 2017

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.

@f-hj
Copy link
Owner

f-hj commented Nov 14, 2017

  • 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).

@balzss
Copy link
Author

balzss commented Nov 15, 2017

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.

@raphaelyancey
Copy link

raphaelyancey commented Feb 23, 2018

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?

@balzss
Copy link
Author

balzss commented Feb 23, 2018

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.

@carcabot
Copy link

carcabot commented Mar 23, 2018

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.

@f-hj
Copy link
Owner

f-hj commented May 1, 2018

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

@kual
Copy link

kual commented Jun 13, 2018

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!

@ndr-brt
Copy link
Collaborator

ndr-brt commented Jun 13, 2018

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 ;)

@f-hj
Copy link
Owner

f-hj commented Jun 16, 2018

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

@ndr-brt
Copy link
Collaborator

ndr-brt commented Aug 18, 2018

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?

@ndr-brt
Copy link
Collaborator

ndr-brt commented Oct 16, 2018

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 :)

@ndr-brt
Copy link
Collaborator

ndr-brt commented Oct 21, 2018

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!

@ndr-brt
Copy link
Collaborator

ndr-brt commented Dec 13, 2018

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 :)

@theaccessvirus
Copy link

any updates on creating the new UI @balzss ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants