|
|
#1 |
|
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.) |
|
|
|
|
|
#2 |
|
Senior Member
Join Date: Apr 2001
Posts: 269
|
*bump*
9 downloads and no feedback *Sniff* ...
|
|
|
|
|
|
#3 |
|
Passionately Apathetic
Administrator Join Date: May 2000
Location: Hell
Posts: 5,437
|
its very very basic, and i couldnt get it working properly.
|
|
|
|
|
|
#4 |
|
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
|
|
|
|
|
|
#5 |
|
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.
|
|
|
|
|
|
#6 |
|
Major Dude
Join Date: Jul 2002
Location: Wasabidev
Posts: 607
|
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 |
|
|
|
|
|
#7 |
|
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 ?
|
|
|
|
|
|
#8 |
|
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!
|
|
|
|
|
|
#9 |
|
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.
|
|
|
|
|
|
#10 |
|
Junior Member
Join Date: Oct 2003
Posts: 41
|
does this allow for downloading as well?
|
|
|
|
|
|
#11 |
|
Senior Member
Join Date: Apr 2001
Posts: 269
|
No, however this is a very popular feature and I could dead easily implement it
|
|
|
|
|
|
#12 |
|
Junior Member
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. |
|
|
|
|
|
#13 |
|
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! |
|
|
|
|
|
#14 |
|
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
|
|
|
|
|
|
#15 |
|
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. |
|
|
|
|
|
#16 |
|
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? |
|
|
|
|
|
#17 |
|
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'
|
|
|
|
|
|
#18 |
|
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.
|
|
|
|
|
|
#19 |
|
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.
|
|
|
|
|
|
#20 |
|
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.. |
|
|
|
|
|
#21 |
|
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 ?
|
|
|
|
|
|
#22 |
|
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
|
|
|
|
|
|
#23 |
|
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
|
|
|
|
|
|
#24 |
|
Junior Member
Join Date: Mar 2004
Posts: 20
|
ok, perhaps it could have an option to use all available nics too?
|
|
|
|
|
|
#25 |
|
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
|
|
|
|
|
|
#26 |
|
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 |
|
|
|
|
|
#27 |
|
Junior Member
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. |
|
|
|
|
|
#28 |
|
Junior Member
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. |
|
|
|
|
|
#29 |
|
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!]) |
|
|
|
|
|
#30 |
|
Junior Member
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. |
|
|
|
|
|
#31 |
|
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....
|
|
|
|
|
|
#32 |
|
Junior Member
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. |
|
|
|
|
|
#33 |
|
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>
|
|
|
|
|
|
#34 |
|
Major Dude
|
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.
|
|
|
|
|
|
#35 |
|
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?
|
|
|
|
|
|
#36 |
|
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; 30th March 2004 at 23:46. |
|
|
|
|
|
#37 |
|
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
|
|
|
|
|
|
#38 |
|
Senior Member
Join Date: May 2002
Location: Lisbon, Portugal
Posts: 293
|
this plugin is looking great, just a pity I'm not part of a lan
|
|
|
|
|
|
#39 |
|
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
|
|
|
|
|
|
#40 |
|
Senior Member
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
|
|
|
|
![]() |
|
|||||||
| Thread Tools | Search this Thread |
| Display Modes | |
|
|