PDA

View Full Version : PHP Collaboration Pr0ject


-=[Juztin]=-
04-14-2004, 09:02 AM
What's up every1,

Just curious if there are any PHP enthusiasts on the forum. If so, I've been thinken about making a web controlled mp3 streaming server and was wondering if anyone would also be interested in helping write the code. I'm gonna start working on it on my weekends. What'd I'd like to see feature wise:

*One mp3 stream (reduce comlexity process wise) per server
*Ability to select MP3's by Artists/Album/Track
*Save as playlist
*Upload mp3's to contribute to central playlist
*Download mp3's if they like what they hear
*FUNDMENTAL- Stream Mp3's they select on the fly in real-time
*Multiple people can login but of course the stream will not allow the already streaming mp3 to be cut-off for a new stream, but rather insert directly into the playlist (less vote-system applies)
*Delete next-in-line mp3 to be streamed by a vote system if more than 1 user is logged in
*Cut-off current playing mp3 if only 1 user logged in or vote system allows for action
*Multiple people to be logged in and chat with each other
*Upload/Download files that are in a public "sandbox" (automatically be pruned every 5 days)
*Provide full anonomity with no logging of IP addresses anywhere in the web system (this does not take into account apache though or any 3rd party apps which may be running)
*Provide security for username & password
*Provide encryption/decryption on sanbdox for files stored on system through OpenPGP support
*Provide ability to upload/download files through HTTP/FTP/XML stream/ or ASCII paste
*Provide image gallery w/ comment system & automatic image thumbnails
*Provid ability to fragment files and hide on a needed basis throughout system, the recall and rebuild. (For all the van eck fans out there)
*Provide ability to email out files if needed to supplied addresses, also the fragment ability appear here as well, maybe even email out fragments in raw ASCII format and rebuild when all emails are obtained on the remote end.
*Ability to upload/download files through actual chat as it happens, devise some kind of tracking system to keep track of waht's chat and what's not, can even include multiple chats to allow for faster transfer rates.
*Possible redudancy if backup server is present
*Possible inclusion of other servers running on internet, kinda like a distributed system!
IF this was to somehow happen over time:
[distrib. mp3's/files/chat/storage/fragmentation]
[eventual goal of making system as autonomous as programmingly possible]
[resiliant, auto-healing, and eventually even auto-installing on willing servers]
[ability to auto-create code on an as needed basis to fix things]

PHP right now, but other languages welcome provided I can learn em ;-)

Any features anyone else could think of?

--j2

(I need to get back into PHP so figured this would be a great way)

I'd also ideally like to have PHP5 used as the base language due to it's extended OOP support.
Oh yeah, OOP will be a requirement of the underlying code, we need modularity and a solid abstract design for each layer of the app and how it interacts with each other and the other components needed to stream the software, store the files, etc...

foxxof
04-14-2004, 09:06 AM
well i dont know php. but i may be able to help you with some html or other. its been a few years since i did web design and such but i might be able to help you here and there. sounds like a fun project!

-=[Juztin]=-
04-14-2004, 09:43 AM
all help welcome regardless of PHP or not! ;) May end up having tons of different languages being incorporated cause my goal would be for the system to be run on anything from a corporate linux/unix server to a kids windows desktop sitting in a room on a 128k link. :D

-=[Juztin]=-
04-14-2004, 09:49 AM
talking to our web dev dude over here at work, we also would need to probably considering a self-intengrity check for the distributed portion. If it's going to be run we better make sure it's the actual right program rather than some re-written code which could possibly be used by "foreign bodies/unwanted ppl" to log who uses what, etc. Basically only use code which is approved to allow anonymous access/use/distribution.

also virus scanning of files which would be in the sandbox section, don't wanna condone virus spreading now don't we. Wouldn't be fun to download say a "video clip" to only find it had a virus attached to it as well.

Probably would want to md5 the files as well, that way we know legitly it hasn't changed it's integrity as it goes through the system. MIght also want to incorporate a vote system which keeps only 1 copy of the file across the entire system, but if a better version or more complete version came out, then the file would be allowed to be replaced with the better one through number of votes. This of course would not be applicable if the filename changed as that wouldnt be needed.

wild.irish
04-14-2004, 10:16 AM
cheers from a php-addict!
justin, sounds terrific, count me definitely in, i'll write you any code.
we should get together sometime to discuss it! though i'm pretty loaded at work right now, this weekend might be not as blocked as the last one was. :)
EDIT: wasn't reading attentively your first post: i never tried php5, but i'll sure enjoy digging into it.

-=[Juztin]=-
04-14-2004, 10:51 AM
shouldnt be that bad Dima, if you already write some OOP once in a while, it'll be cake, it's just be nice to have the modularity just in case we need to re-use functions a lot (noteably DB code, and probably the mp3 player process handling routines, etc.) Be easier to just bundle them in classes and use in instances. Hell maybe even just create an instance and keep it registered in the db as a temporary table entry per user to keep the number of instances down in RAM, gotta think performance and try to use the least amount of ram as possible :) I'm thinking to fast for my own good right now anyway, we definately gotta sit down and just talk it all through and get a design going.

I'm thinking of using MySQL over Postgres just cause it's easily installed and used on either windows or linux. Preliminary code development will be done on a linux box first, then port it over to windows, and then get both working in parallel, then continually going from there :D

Hey PM me your # so I can give you a call this weekend.
--j2

wild.irish
04-14-2004, 01:32 PM
pm'd you

Weston
04-15-2004, 01:09 AM
I don't know PHP, so I'm just going to needlessly trash on it and say it's crappy... :D

I prefer to write all of my stuff in C, since it's efficient, easy to code, and you can do anything with it. Sounds like a neat idea though. Let me know if you want help with figuring out how to do anything involved. I have a lot of development experience with several languages, but not PHP.

-=[Juztin]=-
04-15-2004, 07:59 AM
How about you write a daemon for us in C? I could use something that will keep tabs on the mp3 streaming software and be able to to say pass data to a port it's listening on. That way so I can simply connect with a PHP script to a socket for info on certain things when I may need it. I'm thinking about having the core of the system being a PHP script that will call the sub-scripts once every second by running it in the crontab, but having a daemon would be great.

PHP is easy man, I can teach you it!

Also could you port it over to windows as well?