Old 25th February 2004, 07:19   #1
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
LAN Media Sharing Plugin Wombat Share

In the interim period before the plugin submission process is completed I've put this here for people to try, please note this is version 0.25 and as such is a beta.

This little plugin will allow you to share your media library with everyone on your network with no configuration. This is similar to Hydra ML but works with large playlists.

Features:
+ Dynamic network discovery
+ zLib used for playlist transmission
+ Support for very large playlists.
+ Multi-threaded, should not lock-up your winamp at any time.
+ Low bandwidth usage, communications via http and multi-casting.

To-Do List:
+ Bridging nodes, between two multi-cast visible networks (Some routers within lans do not support multi-casting)
+ Context menu on media list.
+ Bug fixes (experiences random, but rare crashes.)
+ Caching of remote playlists.
+ Passwording of media lists
+ Barred IP support.
+ Selectable Shared Media
+ Seperation of video and audio files.

This code could not have been done without jnetlib, zLib and the wicked code in ml_wwww. Oh and its all free
Please let me know what you think of it!

(Uses ports 9000 udp and port 9005 tcp for firewall configuration. Needs to be able to accept connections on 9005.)
Attached Files
File Type: zip wombatshare.zip (68.9 KB, 2799 views)
javajunky is offline   Reply With Quote
Old 28th February 2004, 18:14   #2
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
*bump* 9 downloads and no feedback *Sniff* ...
javajunky is offline   Reply With Quote
Old 29th February 2004, 19:29   #3
CraigF
Passionately Apathetic
Administrator
 
CraigF's Avatar
 
Join Date: May 2000
Location: Hell
Posts: 5,436
its very very basic, and i couldnt get it working properly.

CraigF is offline   Reply With Quote
Old 29th February 2004, 20:29   #4
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Thanks for the feedback ..>Gotta start somewhere. It is meant to be basic to reduce configuration complexity. In what way do you feel it should be more advanced ?

In what way did you have problems getting it to work ? It *will* only work on winamp 5 not quite sure why, looking into it... Any feedback appreciated
javajunky is offline   Reply With Quote
Old 2nd March 2004, 21:49   #5
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Updated version. No longer causes crash on Winamp 2.9x. Users of this Winamp will not be able to share their music, but they will be able to see other user's music and play that.
Attached Files
File Type: zip wombatshare.zip (68.6 KB, 1303 views)
javajunky is offline   Reply With Quote
Old 3rd March 2004, 09:51   #6
WHEREamI
Major Dude
 
Join Date: Jul 2002
Location: Wasabidev
Posts: 606
well, haven't had time to test any actual functionality (ie, get others on the network using it), but here's what strikes me right off the bat:

- Utilize the whole area of the media library pane. ie, use relative sizes for the listboxes.
- increase the size of the "Update Visible Media" button, as it barely fits, and would look better with some border.
- Configuration dialog is huge for the tiny amount of config it has.

~WHEREamI
WHEREamI is offline   Reply With Quote
Old 3rd March 2004, 10:09   #7
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Cheers dude, I agree totally on all counts I'm trying to make the network code/functionality as robust as possible first then work on the aesthetics secondarily, do you think this maybe the wrong approach for this community ?
javajunky is offline   Reply With Quote
Old 3rd March 2004, 10:10   #8
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Oops! Just discovered a daft bug where I'll have been opening large numbers of sockets on your machine without closing them correctly. I've fixed this so it now closes sockets correctly. Grr school boy errors!
Attached Files
File Type: zip wombatshare.zip (69.5 KB, 1405 views)
javajunky is offline   Reply With Quote
Old 5th March 2004, 13:21   #9
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
version 0.5 now published. Unless anything is attached beneath here, the most up to date version is on the plugins page.
javajunky is offline   Reply With Quote
Old 8th March 2004, 07:26   #10
wakingrufus
Junior Member
 
Join Date: Oct 2003
Posts: 41
does this allow for downloading as well?
wakingrufus is offline   Reply With Quote
Old 8th March 2004, 08:00   #11
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
No, however this is a very popular feature and I could dead easily implement it
javajunky is offline   Reply With Quote
Old 14th March 2004, 02:24   #12
Claydough
Junior Member
 
Claydough's Avatar
 
Join Date: Nov 2003
Posts: 19
Ideas

Good job so far. Here are a few ideas:

1) Ditto on the GUI updates.
2) Ditto on adding downloadability.
3) Impliment more complete info about the files when streaming. (current track position, ID3 info, etc.)
4) Customizable columns.
5) Context menus.
6) Playlist access.
7) I can't tell if you've already implimented it, but add internet access for known IP addresses (low priority, of course).
8) If you do the 'net access, make sure that can be turned off.
9) By default, the computer name should be the windows user name (if available), followed by the IP address.
10) Allow the password protection of libraries.
11) When downloading a file through your plug, automatically add it to the library.

Last edited by Claydough; 14th March 2004 at 05:11.
Claydough is offline   Reply With Quote
Old 15th March 2004, 06:23   #13
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
1) Am working on, I'm developing this plugin in an absract fashion so I can allow mutliple media players to share their libraries, this does mean I've concentrated on the network layer so far. But will do the GUI promise
2) I'm nervous about this one, before I can do this I need to put connection limiting in so no-one will get their bandwidth 'raped'
3) Not entirely sure how to do this, if the mpeg stream doesn't contain this information I can't put it in thee stream..or can I ?. Bizarrely for me on my player at work I get the track position, but the guy who sits next to me doesn't !(Same version of winamp, weird huh!)
4) Okey, at the minute I'm just pretty much using the default sdk example
5) Am working on, the code's already in there, just struggling to stop the popup appearing at (0,0)
6) Not entirely sure what this means? Share the current playlist as well?
7) Manual IP will be implemented to allow sharing on a LAN that has a router that isn't multicast-enabled. However I doubt this would work behind NAT you'd need to setup forwarding rules
8) I will have an 'enable' checkbox generally at some point
9) Agreed, will fix that
10) In the pipeline
11) See 2)

Thanks for the feedback, its appreciated!
javajunky is offline   Reply With Quote
Old 15th March 2004, 13:57   #14
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
Just downloaded from plugins page and installed (so latest version?).
I like the idea a lot, I liked Hydra ML except.. it seemed to miss lots of tracks and/or get names of songs wrong, plus it didn't seem to like the iPod plugin.
So I was pleased to see someone was making a hopefully working version of what hydra was supposed to be.. unfortunately, I don't know how to use it.. Am I being stupid? Is it your own IP or another computers IP you are supposed to put in those IP boxes? and which box?
Nothing happens when I enter any IP into either box..
A readme with some basic instructions would be nice
ibi is offline   Reply With Quote
Old 15th March 2004, 14:15   #15
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
You're right it would be I should probably do that! The boxes are actually a red herring they're gone on my desktop version (the plugin download is the latest version available yes).
You should just install the plugin, your other friend(s) on the network all install the plugin, et voila they will appear in your media-library window. If you click their IP (or friendly name if they've configured) and their tracks will appear. You can then use these like you'd use any other winamp media library window.
javajunky is offline   Reply With Quote
Old 15th March 2004, 15:27   #16
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
Ah ok.. well since last post, I can see my laptop from my desktop, but I can't see my dekstop from laptop.. which is annoying given all my media is on desktop
I have a friendly name configured on both computers, and they each have two NICs, one wired, one wireless.
Any ideas?
ibi is offline   Reply With Quote
Old 15th March 2004, 15:33   #17
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
A couple, if its a windows XP machine, check that your default firewall is configured to allow access on ports 9000 + 9005 (only need UDP on 9000). If your wireless NIC goes via a router, check that the router is 'multi-cast enabled'
javajunky is offline   Reply With Quote
Old 15th March 2004, 17:29   #18
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
Ok.. don't have a firewall on either machine, the wireless network is an ad-hoc network between the two machines only.
ibi is offline   Reply With Quote
Old 15th March 2004, 17:32   #19
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
You *sure* ... XP has one on by default. To be honest I've not tested this on a wireless network, I don't even know if they support multi-casting! Anyone? PM me with an ICQ number if you have one.
javajunky is offline   Reply With Quote
Old 15th March 2004, 20:07   #20
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
Yup.. firewall is definitely disabled, its one of the first things i do on a fresh xp install
Both computers are plugged into the same wired network, and also are linked by the wireless network (ad-hoc - for when the laptop isnt in its docking station).
So.. it doesn't even need to use the wireless network..
ibi is offline   Reply With Quote
Old 15th March 2004, 20:11   #21
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Ah.... I'm pretty certain I know what it is. I bet you have multiple networking interfaces (stupid question of course you do), here's an exerpt from my code:
// for (int i = 0; phe->h_addr_list[i] != 0; ++i) {
//TODO: Deal with these multiple interface types !!!
// struct in_addr addr;
// memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
// cout << "Address " << i << ": " << inet_ntoa(addr) << endl;
// }


Note the TODO ... I'd bet its something to do with this... but I don't get why you can't 'see' the other machine, I could understand not being able to connect to it. I *need* to fix this and would appreciate your help in doing so if your'e interested ?
javajunky is offline   Reply With Quote
Old 15th March 2004, 21:42   #22
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
lol.. sure what do you need me to do?
btw, i realised my wireless nic wasnt connected to the network properly, and after disabling it or connecting it properly it works perfectly.. however, it would be better if it could cope with the multiple nics rather than use the first one (which in this case didn't work) and ignore the second (working) one.
I'm happy to help you debug this just pm me what you need doing
ibi is offline   Reply With Quote
Old 15th March 2004, 21:57   #23
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
So it was working <g>. No worries if it works now there's nothing specific about your setup. In the long run I'll put in a drop-down that will allow 'primary' interface selection
javajunky is offline   Reply With Quote
Old 15th March 2004, 22:41   #24
ibi
Junior Member
 
Join Date: Mar 2004
Posts: 20
ok, perhaps it could have an option to use all available nics too?
ibi is offline   Reply With Quote
Old 16th March 2004, 06:28   #25
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Not entirely sure how I'd do that, I have to broadcast my address to other nodes, it would be difficult to determine which address I was in order to broadcast to the relevant subnet. I'll need to think about it
javajunky is offline   Reply With Quote
Old 16th March 2004, 18:06   #26
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
New Version!

This is currently the newest version of the plugin available. This is newer than the one available on the plugins page. (I'm waiting for some artwork from a friend before I update the plugin officially.)
This plugin should be compatible with the previous version.

Added Fun
---------
User:
+ Moved UpdateVisible media to config
+ Added new super list (Lists *EVERY* track on the network in one window)
+ Fixed (I think) the annoying crash that could occur when frantically swapping between nodes.
+ Update the GUI to be less rough+ready and more usable (Now features that aren't available aren't displayed!)

Codey:
+ Moved udnerlying code over to C++
+ Swapped thread creation mechanism
+ Mutex'd some poorly shared code.
+ Removed some memory leaks
+ Swapped to non-blocking Sockets for one of the processes.

I hope you enjoy, please comment/feedback to me
Attached Files
File Type: zip wombatshare.zip (70.4 KB, 1378 views)
javajunky is offline   Reply With Quote
Old 26th March 2004, 00:54   #27
Claydough
Junior Member
 
Claydough's Avatar
 
Join Date: Nov 2003
Posts: 19
Earlier you mentioned cross-player compatibility. Which other players are in the works for having wombat share? Which are good candidates (if they're not in the works)?

About the downloading: You could just test the code with some hard-coded connection maximums, and then test the downloading, and then a small GUI change would give the user access to said variables.

By playlist sharing, I meant the permanent queries under 'local media' and the playlists under 'playlists.' The current playlist would also be nice.

That reminds me. How are you handling the library's changes (such as automatic rescans, and if you add playlist access, changes to playlists)?

I'm pretty sure that if you can't get extra info into the stream, you could still communicate the info though the same methods you use for listing library info. An ugly solution, for sure, but one that could be easily implemented.

And one more thing: If you need help debugging or something, I used to work in C++ (though all my current projects are in Java, and I've gotten rusty on the higher-level stuff). I might be able to lend a hand over the summer, or perhaps start work on another player's plug. Just an idea.
Claydough is offline   Reply With Quote
Old 26th March 2004, 17:51   #28
Claydough
Junior Member
 
Claydough's Avatar
 
Join Date: Nov 2003
Posts: 19
Oh another idea, and this one's very easy to implement. Make available to the user who is connected/streaming from his library, and what they are streaming.

Also, great idea on the 'mega list' that shows all the available media. I can't wait to see it implemented.
Claydough is offline   Reply With Quote
Old 28th March 2004, 14:16   #29
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Mmmm Just back from nice short holiday in Dublin <g>.
Hmm lots of points.... downloading, I can do it I'm just a little worried about making it dead easy to copy files locally, I'm not sure on the legality of such things... although I guess performing a stream-rip is the same...

The Mega-List is available on the the included zip file 2 posts up (isn't it ?).

Suitable players, open to suggestion, I've got a proof-of-concept plugin for foobar2000, and a standalone, and hopefully soon I'll have got something working for xmms (linux). I've downloaded the sonique sdk to look at, I'm open to ideas. Ideally I'd like to support as many as possible. I've used (about 80% ported over to now)a cross-platform api for the networking/threads etc which means I can provide plugins for players on different operating systems which would be cool

A plugin porter could be handy to have a long, not sure what I'm doing with this code yet though, whether I'll open source it or not. Who knows <g>....

At the minute I'm not catching library changes... which sucks, I'm pretty sure there's a way I can hook into this that I read elsewhere, at the minute you have to manually 'update visible media' (in the configuration panel).
Playlist sharing is a pain because it duplicates tracks that are already in the media library. I do keep meaning to put playlist sharing in for winamp versions < 5.0 (since I can't share their media librarys [don't ask!])
javajunky is offline   Reply With Quote
Old 28th March 2004, 20:50   #30
Claydough
Junior Member
 
Claydough's Avatar
 
Join Date: Nov 2003
Posts: 19
I have the latest version, and I can't find Super List... I'll check again to see which version I have. (What number is the posted zip?)

Also, I believe that the legality (I'm hardly an expert, though) would be roughly that of such clients as Shareaza and BearShare, both of which have been ruled totally legal.

Also, I would like a link to the standalone client. I might get a few people to share with it, out of the kindness of their hearts.

The player I'm most interested in developing a plug for is iTunes. Two-way communication with that is crucial for the successful comeback of winamp on college campuses, where much ground has been lost, because of sharing alone.
Claydough is offline   Reply With Quote
Old 28th March 2004, 20:59   #31
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
The standalone client's a proofer.. i.e. it shares arbritary files... its not really ready for linking to. I need to attach an id3/ogg tag engine to it to strip out the relevant fields.

I think I've covered the itunes thing before there's a couple of problems with it (I initially started off implementing that.) However to do it with free/opensource code the only 'ZeroConf' solution written in C++ required an external server to be installed and only worked on NT. Plus I believe that although iTunes uses DAPP (a simple http protocol) they encrypt it ? I don't think they want people to be able to connect to it. However with wombatshare I'm trying to provide plugins for multiple players on multiple platforms to get some choice back

It'll never be as good as itunes, but you never know Technically I guess a bridge node could be implemented....
javajunky is offline   Reply With Quote
Old 29th March 2004, 11:28   #32
Claydough
Junior Member
 
Claydough's Avatar
 
Join Date: Nov 2003
Posts: 19
hmm... I'd be interested in how myTunes works. If it's open-source or GPL, that could be a bit help. I hope I'm not beating a dead horse, but if you can download the whole mp3 through myTunes off an iTunes network, it proves that security isn't impenetrable.

Of course, the Winamp plug is first priority, I just wanted to put in my two cents about iTunes feasibility. Thanks.

Two more points: First, I have the latest version of the plug (.74?) and I still don't see superlist (though only one other person is on my network at the moment). Second, what do you think about the download feature? I've shared my guess about legality, but I'm not sure whether it's good enough for you. If it's any help, if you were to write a program with a feature that the RIAA wanted to kill, they'd first offer to let you go without any trouble if you disable that particular bit of code.
Claydough is offline   Reply With Quote
Old 29th March 2004, 11:46   #33
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
No security is inpenetrable I'm not sure I want to go to the hassle of pulling of itunes 'tunes'.... the problem as it happens isn't really with DAAP, its with the ZeroConf bit.

You do have super list Honest!. Just select 'Wombat Share' from the ML tree. On the bottom right should be a button 'Fetch Super List' ? If you want a true *all* music list you'll also want to check 'Include self in superlist' in the configuration dialog. Yeah I know, I'm getting closer to putting in the 'download to local library' option, but I need to write the sharing server in such a way as it can disallow multiple connections to the same user (or at least throttle them) so someone can't say 'select all library, download locally' which would more than likely kill the local machine <g>
javajunky is offline   Reply With Quote
Old 29th March 2004, 13:07   #34
inthegray
Major Dude
 
inthegray's Avatar
 
Join Date: Sep 2003
Posts: 704
Send a message via AIM to inthegray
sorry to plug my own article, but while i was writing it, i kept thinking how awesome it would be if you could test it out at this event.
inthegray is offline   Reply With Quote
Old 29th March 2004, 13:15   #35
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
That would be cool, but mundo scary, never tested it with more than 5/6 nodes . Unfortunately I'll not be able to go there <g> any offers?
javajunky is offline   Reply With Quote
Old 30th March 2004, 23:04   #36
sxd
Junior Member
 
Join Date: Mar 2004
Posts: 2
Your plugin already allows for download very well. When you get file info in the playlist, you can copy the stream URL to any HTTP client and download the MP3 unrestricted. You had said that you didn't want to implement downloading due to bandwidth concerns.

Also, I (and others I know who now use wombat share) would like to thank you for giving us yet another reason to insult iTunes (and a badass plugin). I live in a university dormitory, and the people who use iTunes have always had music sharing to stick in our faces when arguments (holy wars) about the superior music player arose. Now, we have 30000+ songs at our disposal. Whee. Kudos.

Last edited by sxd; 31st March 2004 at 00:46.
sxd is offline   Reply With Quote
Old 31st March 2004, 07:21   #37
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Sweet Glad to know people are using it. (Roughly how many on your network.. the most I've been able to test with is about 5 remote nodes.)

Yeah I Know its possible..but at the minute you need at least *some* relevant skills, I am/was hesitant about making it simple-easy to do However I've now re-written the webserver side of it from the ground up and should be able to limit individual ip's to a a 'configurable' number of con-current threads which would mean an individual could stop a nother user raping their entire bandwidth....this does mean I need to come up with a neat and funky queueing mechanism on the client download side of it. But thats easy enough
javajunky is offline   Reply With Quote
Old 31st March 2004, 12:20   #38
Dextro
Senior Member
 
Dextro's Avatar
 
Join Date: May 2002
Location: Lisbon, Portugal
Posts: 293
this plugin is looking great, just a pity I'm not part of a lan

Dextro is offline   Reply With Quote
Old 31st March 2004, 12:25   #39
javajunky
Senior Member
 
Join Date: Apr 2001
Posts: 269
Cheers Well with manual ip's you could be part of an intra-net of friends/family I guess.... but that's still to come
javajunky is offline   Reply With Quote
Old 31st March 2004, 12:37   #40
Dextro
Senior Member
 
Dextro's Avatar
 
Join Date: May 2002
Location: Lisbon, Portugal
Posts: 293
that would be great kind of like waste was meant to be

Looking foward for the development of this plugin

Dextro is offline   Reply With Quote
Reply
Go Back   Winamp & SHOUTcast Forums > Developer Center > Winamp Development

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump