Search Engine

CarpeDiem

26-07-2006 23:27:12

Hey can anyone tell me how to add a search engine to the skin of the program i love the program but i really want to have people be able to search my site for music i was thinking of putting it next to playlists on the left any ideas?

sox

27-07-2006 12:13:23

A search function will come with the next skin update...

CarpeDiem

27-07-2006 18:49:14

cant u just make it as an addon seems like a lot of people want it, im using this stupid mp3 streamer and the only reason i went to it is it has a seach feature i really dont like it cuz it doesnt have any stats and the stupid thing has to run thru IIS and its not very stable.... so can u just make an addon really...

Amish

28-07-2006 19:18:56

Hmmmm.......It will be very hard to do so in this version but the next version will be released very soon hopefully and so it should be in that.

Gobble

30-08-2006 01:41:35

Is there a way when a letter is pressed that the user would go to that letter in the index? ie. I have over 2000 folder in my collection, I would like to be able to highlight the top folder and then press the letter "F" and if would bring me down to the F folders.

Is this a function that could be implimented easily?

Thanks

Lonnie

Amish

30-08-2006 17:52:00

It would be very very very slow, if it was produced in this version.

siit

30-08-2006 18:43:03

Don't underestimate the DOM p Don't think it would be any faster to loop through all div objects nomatter how you render the song/file lists, so it's pretty much as doable in the current version as in a future version.. so try it out loop through the outer DIV's around each song item until you find the first one that begins with F, and then scroll that into view..

CarpeDiem

02-11-2006 19:12:41

i found another streamer that has search engine but its kinda difficult to use its at http//www.slimdevices.com/

airjrdn

17-06-2007 15:11:09

Just wondering if there's been any progress on this. A search function would be extremely useful. I have a lot of various artist CD's, and remembering which one contains a particular song is nearly impossible.

DDS

20-06-2007 12:20:32

Yah, I guess we are all getting older waiting for this feature. It is coming up on a full year without any modifications added. "I know, its going to be out with the next release" Bla,Bla,Bla, But when, is the big question we all are waiting for. It's to bad as I realy wanted to use this software, but without a seach feature it is useless for my users. Hopefully it can be out before too long.
Growing Impatiant as many others.....

ymerc

20-06-2007 14:52:28

<Rant>
Ya know what... this is a free program done by someone in his spare time.
If you don't like how long it takes, do it yourself!

If you're tired of waiting, go learn web programming, and design the feature on your own! Don't bash on the people that gave you something free in the first place.

Would I love to see an update soon? Definitely! But I'm a software developer too, and I know how long it takes to get around to doing your own free stuff when you have a job that you do the same thing all day long, and the last thing you want to do when you get home is program some more.

I personally love this software, and I'm thankful I didn't have to spend the time myself programming it, and if I had more free time I would sit down and make a search feature myself, but unfortunately it isn't number one on my list of priorities.
</Rant>

P.s. Yes I know I forgot to indent... I never was a neat coder.

B-22

30-06-2007 00:59:02

yadayadayada, ok ,lets get this streaght there must be a function in it! for sure, there ,s no need to argue with it .

stop colling names or what ever!!
i love this program but Neverteless,lets get or head toghter and make it so!!

if tryed whit php fdiles and what happens is that the same programme doiung it the same ,but when i click on it , nothing hapenning SO!
LETS TRY ,WITH OR FRIENDS FROM VIBE STREAMER TO MAKE IT SO!!


OK! 8)

ymerc

03-07-2007 15:19:51

My brain hurts from reading that, but I have a feeling you were trying to say something like, "Forget what that guy just said, I don't care that it's free, this stuff needs to be done come hell or high water!"

That is not the right attitude to take to get stuff done.
If you really want to give the guy some incentive to get it done... go here[/url1dq91o2s], make a donation, do some voting, and then make a new topic in the forum and let him know what you've done, because you'd like to see some improvements made.
If nothing gets done after that, then you have a reason to bitch.

How much do you know about web programming?
If you know something, take a stab at it, and then ask for help if you don't get it right, don't just ask people to do it for you.

I'm not trying to be a moderator or anything, I just have an overdeveloped sense of justice and fair play.

I think this should be a new topic to be discussed on the forum, "What is expected of someone who provides you with something for free?", and maybe even a "I've tried to create a feature, can I get some help?".

Anyone else agree with me?

B-22

03-07-2007 21:57:35

[url3nmuhgi7]http://www.flickr.com/photo_zoom.gne?id=708173622&size=o[/url3nmuhgi7]

[url3nmuhgi7]http://www.flickr.com/photo_zoom.gne?id=708173594&context=photostream&size=o[/url3nmuhgi7]

1 # How much do you know about web programming?

well i dont know , but when they ask me how i got youtube on the online window if be glad to explain how i do it !!!

and when they ask how i got the ms character on my vibe i will also explain how i do it !!

but what is your contrubution for this programme other then make a port 80 OPEN!

evil

Its all about evolvinging and trying to make it for everybody a fun programme to be!!

just what siit say!! try something out,make it better

and yes i thank god!! for this beautiful online mp3 player and its FREE

but dont put people in a box! and making annoying questions,like what do you know about web programming,its not polite.


oh P.S excuse me ymerc for my language im dutch! try typing this KLOOTZAK twisted its dutch but you dont have a cluw what it means!

ymerc

04-07-2007 02:56:56

Well that's fantastic that you know how to do all of that.

So, did you take a shot at creating a search function instead of complaining that the author of this free program hasn't had the time to do it?
If you did, how did it turn out? Did it not work and you didn't ask anyone to help you?

I completely agree that it should evolve, but it is not the authors responsibility to do it on demand when he gets no benefit from it. If he has time, he has time, if he doesn't, he doesn't.

When I ask you how much you know about web programming, I'm trying to figure out whether you're just some guy trying to bug people into doing it because they have no idea how, or whether you want to get a group effort going with some other people that know what they're doing and also want to see that feature implemented, which is what I said in the next sentence, not to be annoying and impolite.
Group work is the heart of programming.
Everyone takes their own piece of the puzzle, solves it, and puts it all together to make a creation.

I can't recall ever putting you in a box, I am not justin timberlake.

P.s. It's not so hard to type KLOOTZAK, but it's easier to type BASTARD.

B-22

04-07-2007 10:28:22

well im so glad we be friends again,and that you find a dictionary!

but lets get back to work on the php file! to make a searchfunction in it!
its becoming here like a teaparty on this forum.

oh, and i hate justin timberlake.

ymerc

04-07-2007 13:19:36

I dunno about friends, and you threw the first punch by the way.

When you say "yadayadayada" to some one, that basically means "Shut the hell up, what you're saying is either stupid, or it makes sense but it's against what I want, and I want everyone else to ignore it."

I didn't need a dictionary to tell me you were saying something rude to me, hiding behind your language. I come from the Bahamas, so I could have rattled off some very nasty slang very easily that would have make sense to no one else here except me, and there isn't a dictionary for you to go look it up in.

Everyone hates justin timberlake, but I was drawing similarities between you saying I put you in a box, and the song he did on saturday night live.

ymerc

06-07-2007 19:47:34

Had some free time this morning, so I whipped up a little something to get people started if they want to play with making a search feature.

This is not a final product by any means, but it is just a demo of how it could be used to make a search function in javascript using the XMLDOM.

Just copy the code to a new html file and drop it in your VibeStreamer root folder (<DriveLetter>\Program Files\VibeStreamer\) to test.

Warning It doesn't like non english characters like accents on characters. If your songs have any of these it won't work because of the encoding.

Enjoy,
ymerc

P.s. I HATE case sensetivity.....

[code1o0h6nfz]
<html>
<head>
<script language="javascript" type="text/javascript">
var xmlDoc;
window.onload = loadIndex;

function loadIndex() { // load indexfile
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("share.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.load("share.xml");
}
}


function searchIndex() { // search the index (duh!)
if (!xmlDoc) {
loadIndex();
}

// get the search term from a form field with id 'searchme'
var searchterm = document.getElementById("searchme").value;
var allitems = xmlDoc.getElementsByTagName("File");
results = new Array;
if (searchterm.length < 3) {
alert("Enter at least three characters");
} else {
for (var i=0;i<allitems.length;i++) {
// see if the XML entry matches the search term,
// and (if so) store it in an array
var attributes = allitems[i].attributes;
var name = attributes.getNamedItem("Name").value;
var exp = new RegExp(searchterm,"i");
if ( name.match(exp) != null) {
results.push(allitems[i]);
}
}
// send the results to another function that displays them to the user
showResults(results, searchterm);
}
}


// The following is just an example of how you
// could handle the search results
function showResults(results, searchterm) {
if (results.length > 0) {
// if there are any results, put them in a list inside the "resultshere" div
var resultshere = document.getElementById("resultshere");
var header = document.createElement("h5");
var list = document.createElement("ul");
var searchedfor = document.createTextNode("You've searched for "+searchterm);
resultshere.appendChild(header);
header.appendChild(searchedfor);
resultshere.appendChild(list);
for (var i=0;i<results.length;i++) {
var listitem = document.createElement("li");
var item = document.createTextNode(results[i].attributes.getNamedItem("Name").value);
list.appendChild(listitem);
listitem.appendChild(item);
}
} else {
// else tell the user no matches were found
var resultshere = document.getElementById("resultshere");
var para = document.createElement("p");
var notfound = document.createTextNode("Sorry, I couldn't find anything like "+searchterm +"!");
resultshere.appendChild(para);
para.appendChild(notfound);
}
}

</script>
</head>
<body>
<form action="">
<input type="text" id="searchme" />
<input type="submit" onclick="searchIndex(); return false;" />
</form>
<div id="resultshere">
</div>
</body>
</html>
[/code1o0h6nfz]

B-22

07-07-2007 23:36:47

make a screenshot because if tried in a html file, and nothing happens.just a searchbar with no results

ymerc

08-07-2007 15:19:53

[urlfyj8b5oi]http://www.flickr.com/photo_zoom.gne?id=754098908&size=o[/urlfyj8b5oi]

When doing the search, are you just pressing enter? or actually clicking the button? You have to click the button for the search to work.

ymerc

10-07-2007 14:30:52

In case anyone is still working on this (I thought more people would be interested!), I cross referenced the streamserver.xml doc to be able to return the virtual (or local) path to the file.
The search results are now links.

[code20lle9z5]
<html>
<head>
<script language="javascript" type="text/javascript">
var xmlDoc;
var streamServerDoc;
window.onload = loadIndex;

function loadIndex() { // load share.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("share.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("share.xml");
}
}

function searchIndex() { // search the index (duh!)
if (!xmlDoc) {
loadIndex();
}

// get the search term from a form field with id 'searchme'
var searchterm = document.getElementById("searchme").value;
var allitems = xmlDoc.getElementsByTagName("File");
results = new Array;
if (searchterm.length < 3) {
alert("Enter at least three characters");
} else {
for (var i=0;i<allitems.length;i++) {
// see if the XML entry matches the search term,
// and (if so) store it in an array
var name = allitems[i].getAttribute("Name");
var exp = new RegExp(searchterm,"i");
if ( name.match(exp) != null) {
results.push(allitems[i]);
}
}
// send the results to another function that displays them to the user
showResults(results, searchterm);
}
}

// The following is just an example of how you
// could handle the search results
function showResults(results, searchterm) {
if (results.length > 0) {
// if there are any results, put them in a list inside the "resultshere" div
var resultshere = document.getElementById("resultshere");
var local = document.getElementById("local");
var header = document.createElement("h5");
var list = document.createElement("ul");
var searchedfor = document.createTextNode("You've searched for "+searchterm);
resultshere.appendChild(header);
header.appendChild(searchedfor);
resultshere.appendChild(list);
for (var i=0;i<results.length;i++) {
var listitem = document.createElement("li");
var alink = document.createElement("a");
var item = document.createTextNode(results[i].attributes.getNamedItem("Name").value);
if (local.checked) {
//Absolute Path
alink.setAttribute('href', recurseParentForPath(results[i],"") + results[i].attributes.getNamedItem("Name").value);
}
else {
//Virtual Path
alink.setAttribute('href', "virtual/" + recurseParentForVirt(results[i],"") + results[i].attributes.getNamedItem("Name").value);
}
list.appendChild(listitem);
//listitem.appendChild(item);
listitem.appendChild(alink);
alink.appendChild(item);
}
} else {
// else tell the user no matches were found
var resultshere = document.getElementById("resultshere");
var para = document.createElement("p");
var notfound = document.createTextNode("Sorry, I couldn't find anything like "+searchterm +"!");
resultshere.appendChild(para);
para.appendChild(notfound);
}
}

function loadStreamServerDoc() { // load StreamServer.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
streamServerDoc = document.implementation.createDocument("", "", null);
streamServerDoc.load("streamserver.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
streamServerDoc=new ActiveXObject("Microsoft.XMLDOM");
streamServerDoc.async=false;
streamServerDoc.load("streamserver.xml");
}
}

// Recursively get the absolute path to the file
function recurseParentForPath(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (Path(node.parentNode.getAttribute("GUID")) + String.fromCharCode(92) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(92) + path;
path = recurseParentForPath(node.parentNode,path);
}
}
return path;
}

// A function to return the stream directory path for a GUID
function Path(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs[i].getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs[i].getAttribute("Path"));
break;
}
}
}

// Recursively get the Virtual Directory
function recurseParentForVirt(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (VirtualDir(node.parentNode.getAttribute("GUID")) + String.fromCharCode(47) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(47) + path;
path = recurseParentForVirt(node.parentNode,path);
}
}
return path;
}

// A function to return the virtual name for a GUID
function VirtualDir(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs[i].getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs[i].getAttribute("VirtualName"));
break;
}
}
}

</script>
</head>
<body>
<form action="" >
<input type="text" id="searchme" />
<input type="submit" onclick="searchIndex(); return false;" />
<input type="checkbox" id="local" />Local
</form>
<div id="resultshere">
</div>
</body>
</html>
[/code20lle9z5]

ymerc

11-07-2007 00:52:35

Obviously the next step is to integrate that into the skin which I think can be done in left.html by creating a new tab ("Folders","Playlists","Search"), and then maybe check to make sure you are only returning results the user is allowed (if you restrict content to certain users) by cross referencing users.xml.

Is anyone else working on this?

I seem to be having a tiny bit of trouble reading the xml files from the local system (Access Denied) and I could use some assistance, but if no one else is interested then I'll just forget it.

MockY

12-07-2007 21:25:13

I wish I had the skills to help out, but I don't (
All I can do is cheer you on and express my excitement towards this project. Keep up the good work!

Amish

15-07-2007 13:30:42

Well both pieces of code you posted seem not to be working sooo..... ermmm. Weird.

ymerc

15-07-2007 14:35:58

Ok, you're the 2nd person to say that so it is strange.

That code does not run in the actual vibestreamer, it is just a standalone html that goes in your vibestreamer directory (where the xml files are located). You run it from the local file system.

I was progressively working up to getting it integrated into vibestreamer, these were just the first steps so that others could provide assistance and/or their point of view to my approach.

As I said in my last post, I was trying to integrate it into vibestreamer but it is now telling me access denied when I try to access the xml files via localhost instead of running it through the file system, so I need a little assistance with that.

How are you running it?
What errors are you getting?

Ymerc

Amish

15-07-2007 15:33:24

Ermm yeah...i think...i know how it works but. It dosnt seem to find anything.

The error is just "Sorry couldnt find anything like....."

So (

Amish

15-07-2007 15:44:16

hehe just as i thought.

Well you code works fine in Firefox but not in IE. Whick i origionally tested it on. And as i have a browser that uses an IE backend thats why it wasnt working.

by debugging the code I saw that in IE the line

[code33ppr95x]var allitems = xmlDoc.getElementsByTagName("File");[/code33ppr95x]

Outputted 0

So thats a problem.

Done really use JS so you can fix that P Becuase i think thats where the problem is.

Peace

ymerc

15-07-2007 16:58:16

That's really extra strange.... It works fine for me in IE as you can see in the screen shot I posted earlier... maybe you have some security restrictions in IE or something.

I'll have another look at it sometime, but right now my Fiancee's Father and Stepmother are coming into town, so we have to get ready to deal with them. ?

ymerc

B-22

15-07-2007 22:49:22

can it be that the xml error excist in the browser window with unusual signs like ã,â,¥ and give an error after you open it!!

i try to filter my share.xml encluding my mp3,from this!!
but its no fun trying 150gb to filter with these signs, i think when the error message after i openned share.xml in the browser window dissapear,this searchbar can work!!

ymerc

16-07-2007 15:21:37

As I said in my original post, this does not work with special characters.

This is because the vibestreamer xml files are not set with any special encoding at the top.

<?xml version='1.0' encoding='utf-8' standalone='yes'?>

That line should be at the top of every xml file to specify the encoding, but vibestreamers files dont have it, and I don't know how they are repopulated so I haven't bothered to try and change it.

Ymerc

jackslade

26-07-2007 02:43:24

Well after looking at the work done by ymerc, I conclude that even though his code works locally, it won't work remotely or intergrated with the actual player. My reason behind this is that the xml files are stored outside of the web directory and thus can not be accessed by javascript.

I think the only other way to do searching would be to write a vibe script to get all the files/directories and store them in javascript. and then allowing searching via script. There are some vibe functions to return directories and files, so it may be possible.

ymerc

26-07-2007 14:36:42

This is true, but assuming you're content didnt update all the time, you could create a copy of the xml files and drop them in the skin directory you are using which in theory should be in the web directory.

I tried that too, but was still getting the access denied, thus why I needed some assistance.

<Edit> I actually just tried it and according to vibe streamer I'm getting a bad http request for share.xml when I do the search. The files are located in the skin folder I am using. </Edit>

Haven't had much time recently to play with it, but out of curiousity what are the vibe functions you're talking about?

jackslade

26-07-2007 18:23:02


Haven't had much time recently to play with it, but out of curiousity what are the vibe functions you're talking about?[/quote2y4ue11x]

Well just looking at the docs without any coding, it looks like we could use
array<Directory> get_directories(string virtualPath)
array<File> get_files(string virtualPath)

I don't have that much time either, but I might have something by early next week. Sounds like in another post that a new version will have search built in, so I don't know how much effort it is worth to put into this.

jackslade

27-07-2007 06:33:41

well, I have a search working.

That was a pain. It is kinda slow for a lot of files though, mainly because I had to implement my own find string routine. I also had to work through some bugs and missing scripting options.

Right now I can only search on the song file names, but I was thinking I could search on the id3 tags instead. Maybe a future enhancement.

I will attempt to cleanup my code and get the results to display links so that you can add them to the playlist.

ymerc

27-07-2007 13:20:26

Good Job!

Sucks that it's slow though, that was why I was trying to use the XMLDom in the first place... it's pretty damn speedy! Too bad that didn't work out.

I just this very second realized why it was giving me a bad http request.... I hadn't registered the file type in the web server! That got me all excited for about 30 seconds before I tried it and it still didnt work for some reason.... Man I thought it was gonna work that time! No Bad Http Request now though...

Cest La Vie.

jackslade

27-07-2007 17:48:33

Just a quick question, are you going directly to the search page, e.g. http//host8081/search.html or are you going to http//host8081, logging in and then going to the search.html page.

I found if you first go to the main page and login, then goto another page, it doesn't give you an access denied.

Maybe that is just my machine though.

ymerc

27-07-2007 19:28:41

Actually when I started trying to integrate it I modified the left.html page to have another tab (Folders, Playlists, Search)....

I never posted that code.

I'll give that a try again though.

<Edit> Nope... same thing. </Edit>

jackslade

27-07-2007 20:48:06

Here is my search solution for vibe streamer. Not the fastest thing in the world, but it works.

In order to use this, I modified the left.html to include a new tab, Search, that includes an entry and button. The button calls this file in the iframe.

This zip file contains my performsearch.vibe and my left.html file from the standard skin.

[url1gbi3vf4]http://cmbeard.no-ip.com/files/Standard-Search.zip[/url1gbi3vf4]

ymerc

27-07-2007 21:02:09

In order to use this, I modified the left.html to include a new tab, Search, that includes an entry and button.[/quote12wvl4cl]

shock THIEF!

Just Kidding... it was hardly a copyrighted idea. 8)

Good work on that. It is pretty slow but it works!
Maybe someday I'll figure out why this blasted thing doesn't work and I can post a fast one!

jackslade

27-07-2007 22:39:36

Good work on that. It is pretty slow but it works![/quotenjihztxj]

Thanks, I think the main reason it is slow is because of the actual find part. I had to create a brute force find since the str_findfirst doesn't work on a more than one character.

Oh well, hopefully the next version will improve these functions or have its own search.

sgmorton

31-07-2007 19:17:19

You could try this...

var v_foundarray = new Array();
var v_regexp = new RegExp(searchterm)
var j = 0;

for ( var i = 0; i < files.length; i++ )
{
if ( v_regexp.test(files) ) {
v_foundarray[j] = files; // Pattern found
j++;
}
}

I don;t have the time or gumption to do this right now, but http//www.irt.org/script/1411.htm should give you a head start.


Sam

ymerc

01-08-2007 20:32:35

Not sure who you're talking to on this one, myself or Jackslade, but I already have regex in my solution and it doesn't work when integrated with vibestreamer, and Jackslade is not using javascript to implement his, it's VibeScript.

Although that does bring up the idea of trying to combine the two approaches.... i.e. get the files and directories from vibescript, and store them in a javascript array to be searched with Regex.....

jackslade

02-08-2007 19:16:21


Although that does bring up the idea of trying to combine the two approaches.... i.e. get the files and directories from vibescript, and store them in a javascript array to be searched with Regex.....[/quote1usdd9be]


Funny, I thought of the same thing and actually tried it out. Seemed faster, but it still takes time to output all the files into an array.

I actually created a .Net console application that will index all the files indexed by vibestreamer and create a javascript array. Then take the regex for javascript and search the array. It is pretty fast, but I have to run my indexer whenever I update vibestreamers index.

ymerc

03-08-2007 14:14:44

Hey that's better than nothing!
Some people (like myself) might not update their indexes very often and find this quite useful.

Throw your code up!

Just out of curiosity, are you a programmer by trade jackslade?

jackslade

03-08-2007 21:58:10

Yes, I am a developer during the day.

Here is the code and the executable for my indexer. Just put the exe into the main VibeStreamer directory and run. It will create a searchindex.js file in the jscript directory for each skin.

The searchindex.js file will contain all the indexed files in a javascript array called searchIndex. You can then use this to search through.

Also included with the executable is the performsearch.vibe file that will search the array and return the results incase you don't want to write your own. I also included the left.html which includes the search tab and the call to performsearch.vibe.

Have fun.

Note Microsoft .Net framework v2.0+ is required.
Source[/url3gatl9t7]
[url=http://cmbeard.no-ip.com/files/VibeStreamerIndexer.zip3gatl9t7]Exe[/url3gatl9t7]

ymerc

08-08-2007 00:06:20

Ewwww C#! shock

Just kidding... lol
Seriously that's some great work! 8)

Only found one flaw with it (not that I was looking... I was just confused the first time I ran it), you never fire your ProcessComplete event, so it was just kinda sitting there, and I had no clue if it had died or if it was done! P

Good stuff.
Where do you work?

jackslade

08-08-2007 06:13:33

Thanks, I actually updated the program with that fix. The main reason it just pauses was more than likely b/c in debug mode the app waits for an enter key press to terminate.

Anyway, I removed that code and actually call the ProcessComplete event now.

Here are the updated files
Source[/url3e7h5rxj]
[url=http://cmbeard.no-ip.com/files/VibeStreamerIndexer.zip3e7h5rxj]Exe[/url3e7h5rxj]

I work in West LA, CA for a financial company.

What about you?

ymerc

08-08-2007 14:36:05

Yeah I noticed that Debug statement, but it didn't cross my mind that it wouldnt happen if I compiled in Release mode. I haven't seen a Debug statement since my company's old vb6 code.

Where I work is a bit complicated.
I work for a Private Banking Company in the Bahamas, but I actually work from home wherever I am in Canada. (Just got done a big move from New Brunswick to Ontario over the weekend in a beastly 26 foot truck with a car trailer on the back!)

kris333

09-08-2007 07:21:04

The search option works perfectly fine. thank u very much ) good work ....

~ kris333

dudek

09-08-2007 11:07:52

Hi

First of all Thank you very much for the search-function - it works great, and is really fast. And with a scheduled task, it's reindexing every single night.

However, it would be cool, if the search-function was able to search through both filenames AND ID3 tags. Is that possible?

Cheers
Bo Dudek
Webdeveloper
Denmark

mysticc

09-08-2007 13:36:50

The search function - there it is -)

Thanks a lot, the only thing I was missing.
Works fine and fast enough for me with music library of 130 GB.

Great to see how some guys add value to Vibestreamer in their free time.

Downloadable files via modified skin and now the search function.
So Vibestreamer stays small and handy and is only doing what is intended for.

Thanks a lot all you geeks doing this for free.

Conny

bs88243

09-08-2007 15:23:40

Great work folks. This is a dream come true for me. But how do I get the search function to work?

I put left.html into the skins\standard folder, performsearch.vibe & VibeStreamerIndexer.exe in the root of Vibestreamer. I see the search option next to playlist upon logining in but when I typed something in to search, it doesn't return any results. My event log is saying, Bad HTTP request 'performsearch.vibe', when I click on to do the search. Where do I extract the VibeStreamerIndexer-Source.zip file to?

What am I missing here? Thxx.

ymerc

09-08-2007 17:15:53

Performsearch.vibe has to go into the same skins folder as left.html, and make sure you run the VibeStreamerIndexer.exe.
You dont have to do anything with the VibeStreamerIndexer-Source.zip, that is just for us geeks that like to see (play with) the code.

Enjoy.

jackslade

09-08-2007 18:34:41


However, it would be cool, if the search-function was able to search through both filenames AND ID3 tags. Is that possible?[/quote3g2lacvi]

I was thinking of adding that next. The indexer could read the id3 tags as well and I could modify the search to have some options on what to search.
That way you could search against album, year, or song title entries.

Let me look into it.

B-22

09-08-2007 20:07:15

[url7b62ljmk]http://www.flickr.com/photo_zoom.gne?id=1062601065&size=o[/url7b62ljmk]

I must admitted,great work on the searchfunction guys!!!
D

but if you can see add the link above,there are some mp3 files that would't play in the player ,when i click on it ,it will open a new window and playes this file in wmp,or quiktime player.
i dont know why that is??

i also renamed the mp3 file,and run the VibeStreamerIndexer again!
but no succes, but i can say THANKS GUYS! for the hard work. wink

B-22

10-08-2007 02:36:36

now i know why!! it doesnt like a capital letter like *.MP3 !!!
i have to change the extension in to *.mp3,im glad there was a programme for me to do it!! its called ckrename , now the vibestreamerindexer works fine!! 8)

maelue

11-08-2007 20:07:18

Hi,

this search function is awesome !
But i still have trouble with äüu-letters... My collection is full with files like that cry
Is there any chance to fix that ?

Thanks )

B-22

12-08-2007 15:06:53

hey maelue! yes it will change an intyre collection with names and extensions
in a instant check this link , its freeware

D http//www.musicsucks.com/CKSoft/CKRename/

maelue

13-08-2007 09:32:09

Thanks B-22 ! This tool is a geat alternative, but i thougt about a modification in the source-code to enable the äöü-letters. It works with the normal function (clicking the folders/files), but in the search function the letters are replaced and in the result there's a "File Not Found Error" by clicking them to load it into the playlist. (

jackslade

13-08-2007 20:51:14

The VibeStreamerIndexer has been updated to work with .MP3 files and the äöü-letters now.

Just rerun the executable. You may have to clear your cache. You can tell if it worked by looking at the icon next to the song name. It should be a little note or whatever the image for audio is.


Source[/urlw12t0n5f]
[url=http://cmbeard.no-ip.com/files/VibeStreamerIndexer.zipw12t0n5f]Exe[/urlw12t0n5f]

maelue

14-08-2007 16:52:45

[b8gr3g66x]B-22, jackslade, YOU'RE MARVELOUS ![/b8gr3g66x]
The tool you've talked about is very comfortable and one of the best I ever have seen in this category !

And the update for the VibeStreamerIndexer works perfectly !

D D T H A N K S D D

B-22

14-08-2007 19:50:35

no thanx!! D i think we have to thank jackslade for this marvelous piece of work. HAVE FUN!!

mysticc

16-08-2007 17:57:57

Hi all.

Using the search for some days now. -)
Since today searching on IE 6 or IE 7 gives the below error (yellow exlamation mark at the below left, when clicking it gives the below box. (worked before)
With Firefox it is still working.

[img2zuan0dn]http://www.mysticc.de/downloads/bilder/searchonie.JPG[/img2zuan0dn]
58
4
"Error Object expected"
Code 0

I don`t have a clue what the problem might be.
Any clue?
Thanks.
Conny

jackslade

16-08-2007 21:01:41

what is the text you are seaching for?

Also, just give IE the ctrl-f5 refresh/clear your cache.

mysticc

16-08-2007 23:04:15

In this example I am searching for "Sweet".
Works when using Firefox, but no longer with IE.
Clearing the cache was the first I was trying.

mysticc

17-08-2007 00:02:15

Hmm, really weird.

Tried on three different machines, all the same.

Made a fresh install of vibestreamer and only put in the search-functionality --> the same.
(Normally I also use a modified skin to allow downloading.)

Vibestreamer is running with a restricted account, so I also tried running it when logged on als administrator, thought of eventually some rights-issues, but no change.

Now also tried with Opera, does not work.
Gives the below error.

[img3nno6h6n]http://www.mysticc.de/downloads/bilder/error_opera.jpg[/img3nno6h6n]

However with Firefox still fine

--> ??

jackslade

17-08-2007 00:25:33

That is weird, I searched every file in vibestreamer skin for the var sUrl = 'virtual/' + url_encode(sTitle) and am unable to located it. Are you sure you didn't modify something?

Just to make sure, you downloaded the search zip file extracted left.html and performsearch.vibe to the skins directory. then extracted vibestreamerindexer.exe to the main vibe streamer directory and ran it?

mysticc

17-08-2007 00:48:34

Yes, sure. Works in Firefox as expected.

In the meantime I tried the BBE-skin with your search, did not work in any browser, then switched back to my previous saved folder/config, and now it doesn`t work with Firefox too, although nothing in the folder has changed.
So whatever is going wrong on my machine,.. I am tired now, my brain does not work any more and I will make a new start tomorrow.

However thanks for looking into so far.

Conny

jackslade

17-08-2007 00:49:56

If you want, you could zip up the skin and I could take a look at it.

mysticc

17-08-2007 01:02:21

Thanks for your offer.
However I think this is something very special wrong on my machine, so any effort here won`t give benefit to others, I assume, and I don`t want to waste your time, ...time you might better use for some other cool features for vibestreamer ? -)

I will do an new start from scratch tomorrow and surely get it running again.

Thanks.
Conny

mysticc

17-08-2007 16:45:34

Now found when search is breaking.

This happens only when using the BBE-skin to get option to download songs.
Tried the very first version of BBE and the latest version.

Without enabling the option in BBE to allow downloads your search is working.

I saw now that even in Firefox it is not reliable working when download is enabled, breaks search too., sooner or later.

So you may check yourself using the BBS-skin with your search, maybe it is only a small thing that needs to be fixed.
As I am not a programmer I cannot be of help here -(

Conny

jackslade

17-08-2007 18:24:26

Alright, I now have the fixes for the search to work with the BBE-FSG skin.

Here they are
BBE-FSG Search Files[/url3abv8yw3]


Also, here is another skin
[url=http://cmbeard.no-ip.com/files/VibeStreamerIndexer-BLACK.zip3abv8yw3]BLACK Search Files[/url3abv8yw3]

mysticc

17-08-2007 22:18:19

Tried the new files.

Looks like in Firefox it is working without breaking anymore -)
That`s cool -)

However in IE I am not able to put anything in the searchbox at all.

With Opera when trying to type something in the search box I am switching throgh the 3 tabs above.

Did it work with IE for you?

jackslade

17-08-2007 23:15:20

Alright it is working now. just re-download it from the previous link.

Hopefully that is everything.

mysticc

17-08-2007 23:31:43

Perfect.

Works now as whether there never was a problem, Firefox, IE and Opera.

Excellent, many many thanks for your work -)

Conny

geforcer

18-08-2007 00:13:17

wow, thanks for the update. i fought with it all day yesterday trying to get it working too D

B-22

18-08-2007 17:33:55

huh! jackslade, why is the searchfunction not working outsite the network??
(

the searchfunction works in all my network spaces but when i go to my neighbour or friends, the searchfunction doesn't work! i tried to exposed host in my modem so the vibestreamer is completly free of ports outside ,streaming music is fine ,but the searcfunction will not cooperate on the internet by my neigbour, i also tried to install firefox with his pc but the search function will not response!
(

but when i got home the searchfunction works fine! on the network environment.....weird? roll

geforcer

18-08-2007 18:15:32

how long did you wait for items to start showing up? i've had someone test it from outside my network, and it took close to 2 minutes before the 1st item showed up. i've seen a search take as long as 10 minutes or so. it's weird how it takes that long when all it's doing is searching a database file rather than the actual hard drive. ( very cool to have the feature working though )

B-22

18-08-2007 19:26:33

maybe your right geforser !!! i have to be patience,and on a network enviroment its a lot quiker to load some files up ?

but i hope that jackslade have an awnser why it behave lik this!

so i give my link on this forum maybe i do something wrong with the modification, i doubt it , but nevertheless ????

oh and excuse me for my english im dutch ,and learning lol

http//86.87.63.1518081/

username and password = 22

jackslade

18-08-2007 19:29:30

It can take awhile because it has to initially download a list of every song in your music collection. That could be massive depending on how big your collection is.

Obviously, on your local network, the speed is much quicker than over the internet.

Hopefully the next version of Vibestreamer will have search built in that performs the search on the server, but who knows if that will be the case or when it will come out.

Check out the file searchIndex.js in your jscript directory under the skin directory. That is the file you download that contains all your music.

omegatotal

26-08-2007 04:54:24

would it be possible to have the search return folders as well as files ?

as it sits right now some of my music is not ideally named

ex. music/artist/album/tracknum-songtitle.mp3

nemesispapi

14-11-2007 22:42:09

i downloaded the BLACK search zip file. don't don't how to install. I place both files inside here
C\Program Files\VibeStreamer

what am u doing wrong?


please help me how to install this. Thanks!!

nemesispapi

14-11-2007 22:49:13

I GOT IT yEAH!!!!!!!



I FIGURE IT OUT THANKS!

nemesispapi

14-11-2007 23:06:52

how can i play the return files??? after i do a search i double click on the mp3 file and it opens an extra window but can't play file. how can i play it or add it to the playlist on top?


Thanks in advance.

Potatoking

23-01-2008 15:50:47

I get the same problem. I have tried to re-install it all again but the searchfunction do not work 100%.
I can search the index and it shows up but they are not clickable and not downloadable.

[url28otd82q]https://secure.storegate.se/user/share.aspx?id=238d46a7-0b51-4abb-a479-72916af2df57[/url28otd82q]

I have noticed the icons are not alike from the file.list.

EDIT

I still have this fault and I cannot by all means figure it out to solve....

nitramf

06-02-2008 14:34:48

Hi,

i use the Black Skin.

If i try to Search a file eq. "2000 Mädchen", and i open it, it gave me an access denied back.

What did i made wrong?
[imgj3jks9ut]http://img3.imagebanana.com/img/85zm0k63/thumb/access.PNG[/imgj3jks9ut][/urlj3jks9ut]

Try it out
http//88.80.215.37

User user
Password user

Greets,
nitramf

Potatoking

08-02-2008 13:25:09

Same problem after I tried the Firefox too....

EDIT

nitramf As you can see you have, like I have, the same different icons for the files. This is not an audio-icons.

juinz

25-02-2008 20:33:33

Hi, i just installed this search tool, and first than all have to txs the developers. This is really a necessary tool. But i got a problem. I installed it and it works, but the search doesnt show all the tags that it should find. So, its a directory problem? has a limited number of search results? Whats up? Some problem with "strange" letters ("á") for example?
Results show this characters (->´<- for example). How to make it search allll the possible results?

Another This forum is still working? posts are too old xD

aron

31-03-2008 12:53:19

I tried today and link was dead, whats the new location for this search skin ?

ifloydian

26-04-2008 01:07:59

I, like a few others here have problems playing any item in the search results. Searching gives the appropriate results in the right window, but upon clicking any of these resulting files a new window is launched with "Access Denied".
IE7 and FF 2.0.0.14 were tested.

[b2bopj96t]What I have found[/b2bopj96t] The results are not including the 'Virtual Name' in the path to the file, therefore the path to the search result files are all incorrect and gives us the 'Access Denied' message.

I've tested this by hovering over a file in the normal file list (not a search result) and seeing the path that pops up. (e.g. [b2bopj96t]My Music/Pink Floyd/A Momentary Lapse of Reason/Pink Floyd-On the turning away-05.mp3[/b2bopj96t]) Clicking this allows it to be added to the playlist as expected.

Now, what happens with searching. To keep with the example above, I execute a search on "Momentary" and the right pane [i2bopj96t]search results window[/i2bopj96t] reveals the Pink Floyd-Momentary Lapse of Reason song. But if I hover over it I see [b2bopj96t]Pink Floyd/A Momentary Lapse of Reason/Pink Floyd-On the turning away-05.mp3[/b2bopj96t] not [b2bopj96t]My Music/Pink Floyd/A Momentary Lapse of Reason/Pink Floyd-On the turning away-05.mp3[/b2bopj96t]. So results are not loaded with the proper URL and this is the root of the 'Access Denied' message and the inability for some of us to use the search function.

Any ideas?

Steen

18-06-2008 20:01:23

[quote1aaz0nj0]I tried today and link was dead, whats the new location for this search skin ?[/quote1aaz0nj0]

mkormendy

05-08-2008 06:51:29

Please visit my article here for an alternative download site.
This is legit and does not contain viruses, malware or spyware.

[url2epbstir]http://www.somethinginteractive.com/index.php/2007/09/14/i-love-my-vibe-server/[/url2epbstir]

B-22

19-05-2009 00:54:43

Well after looking at the work done by ymerc, I conclude that even though his code works locally, it won't work remotely or intergrated with the actual player. My reason behind this is that the xml files are stored outside of the web directory and thus can not be accessed by javascript.
[/quoteuwe3o87o]

wel after the script that ymerc sent
!
<html>
<head>
<script language="javascript" type="text/javascript">
var xmlDoc;
var streamServerDoc;
window.onload = loadIndex;

function loadIndex() { // load share.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("share.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("share.xml");
}
}

function searchIndex() { // search the index (duh!)
if (!xmlDoc) {
loadIndex();
}

// get the search term from a form field with id 'searchme'
var searchterm = document.getElementById("searchme").value;
var allitems = xmlDoc.getElementsByTagName("File");
results = new Array;
if (searchterm.length < 3) {
alert("Enter at least three characters");
} else {
for (var i=0;i<allitems.length;i++) {
// see if the XML entry matches the search term,
// and (if so) store it in an array
var name = allitems.getAttribute("Name");
var exp = new RegExp(searchterm,"i");
if ( name.match(exp) != null) {
results.push(allitems);
}
}
// send the results to another function that displays them to the user
showResults(results, searchterm);
}
}

// The following is just an example of how you
// could handle the search results
function showResults(results, searchterm) {
if (results.length > 0) {
// if there are any results, put them in a list inside the "resultshere" div
var resultshere = document.getElementById("resultshere");
var local = document.getElementById("local");
var header = document.createElement("h5");
var list = document.createElement("ul");
var searchedfor = document.createTextNode("You've searched for "+searchterm);
resultshere.appendChild(header);
header.appendChild(searchedfor);
resultshere.appendChild(list);
for (var i=0;i<results.length;i++) {
var listitem = document.createElement("li");
var alink = document.createElement("a");
var item = document.createTextNode(results.attributes.getNamedItem("Name").value);
if (local.checked) {
//Absolute Path
alink.setAttribute('href', recurseParentForPath(results,"") + results.attributes.getNamedItem("Name").value);
}
else {
//Virtual Path
alink.setAttribute('href', "virtual/" + recurseParentForVirt(results,"") + results.attributes.getNamedItem("Name").value);
}
list.appendChild(listitem);
//listitem.appendChild(item);
listitem.appendChild(alink);
alink.appendChild(item);
}
} else {
// else tell the user no matches were found
var resultshere = document.getElementById("resultshere");
var para = document.createElement("p");
var notfound = document.createTextNode("Sorry, I couldn't find anything like "+searchterm +"!");
resultshere.appendChild(para);
para.appendChild(notfound);
}
}

function loadStreamServerDoc() { // load StreamServer.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
streamServerDoc = document.implementation.createDocument("", "", null);
streamServerDoc.load("streamserver.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
streamServerDoc=new ActiveXObject("Microsoft.XMLDOM");
streamServerDoc.async=false;
streamServerDoc.load("streamserver.xml");
}
}

// Recursively get the absolute path to the file
function recurseParentForPath(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (Path(node.parentNode.getAttribute("GUID")) + String.fromCharCode(92) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(92) + path;
path = recurseParentForPath(node.parentNode,path);
}
}
return path;
}

// A function to return the stream directory path for a GUID
function Path(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs.getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs.getAttribute("Path"));
break;
}
}
}

// Recursively get the Virtual Directory
function recurseParentForVirt(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (VirtualDir(node.parentNode.getAttribute("GUID")) + String.fromCharCode(47) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(47) + path;
path = recurseParentForVirt(node.parentNode,path);
}
}
return path;
}

// A function to return the virtual name for a GUID
function VirtualDir(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs.getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs.getAttribute("VirtualName"));
break;
}
}
}

</script>
</head>
<body>
<form action="" >
<input type="text" id="searchme" />
<input type="submit" onclick="searchIndex(); return false;" />
<input type="checkbox" id="local" />Local
</form>
<div id="resultshere">
</div>
</body>
</html>




arrow it can be remotely accessing just as he said That code does not run in the actual vibestreamer, it is just a standalone html that goes in your vibestreamer directory (where the xml files are located).

explaind vibe streamer settings /mime types add xml [application/xml] and xml [text/xml] put them both in shared and webserver file types

copy the streamserver.xml and the share.xml in the standard map ,now open the share.xml and put this tag in it <?xml version="1.0" encoding="ISO-8859-1"?> works for me with signs like ˆ‘öº&

and make a link in your vibestreamer and name it search.html ..whatever

only 1 bug its not transcoding anything its full stream and when your users have winamp they can download your mp3 to !

SO ... i terminated the link
i wish there was Someone that makes the results link that giving by request from this script by clicking on it , that it goes in the actual vibeplayer because this searchfunction is very fast even with my 8 mb share.xml ...so any help will do idea[urluwe3o87o]http://www.vibestreamer.com/forum/viewtopic.php?t=101&postdays=0&postorder=asc&start=15[/urluwe3o87o]

Kajoe

26-06-2009 23:33:10

Hey can anyone tell me how to add a search engine to the skin of the program i love the program but i really want to have people be able to search my site for music i was thinking of putting it next to playlists on the left any ideas?[/quote2v9ax8w3]


look for it
http//www.somethinginteractive.com/ind ... be-server/ D

B-22

08-07-2009 11:05:30

[quote1weroalg]

look for it
http//www.somethinginteractive.com/ind ... be-server/ D[/quote1weroalg]
don't work with large collections !

B-22

14-07-2009 00:40:04

Well after looking at the work done by ymerc, I conclude that even though his code works locally, it won't work remotely or intergrated with the actual player. My reason behind this is that the xml files are stored outside of the web directory and thus can not be accessed by javascript.
[/quote3ug38054]

wel after the script that ymerc sent
!
<html>
<head>
<script language="javascript" type="text/javascript">
var xmlDoc;
var streamServerDoc;
window.onload = loadIndex;

function loadIndex() { // load share.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("share.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("share.xml");
}
}

function searchIndex() { // search the index (duh!)
if (!xmlDoc) {
loadIndex();
}

// get the search term from a form field with id 'searchme'
var searchterm = document.getElementById("searchme").value;
var allitems = xmlDoc.getElementsByTagName("File");
results = new Array;
if (searchterm.length < 3) {
alert("Enter at least three characters");
} else {
for (var i=0;i<allitems.length;i++) {
// see if the XML entry matches the search term,
// and (if so) store it in an array
var name = allitems.getAttribute("Name");
var exp = new RegExp(searchterm,"i");
if ( name.match(exp) != null) {
results.push(allitems);
}
}
// send the results to another function that displays them to the user
showResults(results, searchterm);
}
}

// The following is just an example of how you
// could handle the search results
function showResults(results, searchterm) {
if (results.length > 0) {
// if there are any results, put them in a list inside the "resultshere" div
var resultshere = document.getElementById("resultshere");
var local = document.getElementById("local");
var header = document.createElement("h5");
var list = document.createElement("ul");
var searchedfor = document.createTextNode("You've searched for "+searchterm);
resultshere.appendChild(header);
header.appendChild(searchedfor);
resultshere.appendChild(list);
for (var i=0;i<results.length;i++) {
var listitem = document.createElement("li");
var alink = document.createElement("a");
var item = document.createTextNode(results.attributes.getNamedItem("Name").value);
if (local.checked) {
//Absolute Path
alink.setAttribute('href', recurseParentForPath(results,"") + results.attributes.getNamedItem("Name").value);
}
else {
//Virtual Path
alink.setAttribute('href', "virtual/" + recurseParentForVirt(results,"") + results.attributes.getNamedItem("Name").value);
}
list.appendChild(listitem);
//listitem.appendChild(item);
listitem.appendChild(alink);
alink.appendChild(item);
}
} else {
// else tell the user no matches were found
var resultshere = document.getElementById("resultshere");
var para = document.createElement("p");
var notfound = document.createTextNode("Sorry, I couldn't find anything like "+searchterm +"!");
resultshere.appendChild(para);
para.appendChild(notfound);
}
}

function loadStreamServerDoc() { // load StreamServer.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
streamServerDoc = document.implementation.createDocument("", "", null);
streamServerDoc.load("streamserver.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
streamServerDoc=new ActiveXObject("Microsoft.XMLDOM");
streamServerDoc.async=false;
streamServerDoc.load("streamserver.xml");
}
}

// Recursively get the absolute path to the file
function recurseParentForPath(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (Path(node.parentNode.getAttribute("GUID")) + String.fromCharCode(92) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(92) + path;
path = recurseParentForPath(node.parentNode,path);
}
}
return path;
}

// A function to return the stream directory path for a GUID
function Path(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs.getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs.getAttribute("Path"));
break;
}
}
}

// Recursively get the Virtual Directory
function recurseParentForVirt(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (VirtualDir(node.parentNode.getAttribute("GUID")) + String.fromCharCode(47) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(47) + path;
path = recurseParentForVirt(node.parentNode,path);
}
}
return path;
}

// A function to return the virtual name for a GUID
function VirtualDir(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs.getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs.getAttribute("VirtualName"));
break;
}
}
}

</script>
</head>
<body>
<form action="" >
<input type="text" id="searchme" />
<input type="submit" onclick="searchIndex(); return false;" />
<input type="checkbox" id="local" />Local
</form>
<div id="resultshere">
</div>
</body>
</html>




arrow it can be remotely accessing just as he said That code does not run in the actual vibestreamer, it is just a standalone html that goes in your vibestreamer directory (where the xml files are located).

explaind vibe streamer settings /mime types add xml [application/xml] and xml [text/xml] put them both in shared and webserver file types

copy the streamserver.xml and the share.xml in the standard map ,now open the share.xml and put this tag in it <?xml version="1.0" encoding="ISO-8859-1"?> works for me with signs like ˆ‘öº&

and make a link in your vibestreamer and name it search.html ..whatever

only 1 bug its not transcoding anything its full stream and when your users have winamp they can download your mp3 to !

SO ... i terminated the link
i wish there was Someone that makes the results link that giving by request from this script by clicking on it , that it goes in the actual vibeplayer because this searchfunction is very fast even with my 8 mb share.xml ...so any help will do idea[url3ug38054]http://www.vibestreamer.com/forum/viewtopic.php?t=101&postdays=0&postorder=asc&start=15[/url3ug38054][/quote3ug38054]

is there any way that the mp3 links you get by search results in this script,that you can link it to a certain player like WMP,FLASHPLAYER by an onclick event. sorry to bothered again but this script works on remote and its fast! there must be a way to avoid that the mp3 results just by right clicking that users only downloading it by this searchscript (

i was thinking like an external flashplayer and embedding in this html file so the links can play on it ....any help will do
THANX FOR REPLY!

B-22

05-08-2009 11:35:31

tanks to all the replies...... ?


[code3o6u4nje]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<a href="#" onclick="this.href=''; return false;">

<script type="text/javascript" src="http://o.aolcdn.com/art/merge?f=/_media/sp/sp-player.js&f=/_media/sp/sp-player-other.js&expsec=86400&ver=10&clickimg=true&showpop=false&showplaylist=true"></script>





<script language="javascript" type="text/javascript">
var xmlDoc;
var streamServerDoc;
window.onload = loadIndex;

function loadIndex() { // load share.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("share.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("share.xml");
}
}

function searchIndex() { // search the index (duh!)
if (!xmlDoc) {
loadIndex();
}

// get the search term from a form field with id 'searchme'
var searchterm = document.getElementById("searchme").value;
var allitems = xmlDoc.getElementsByTagName("File");
results = new Array;
if (searchterm.length < 3) {
alert("Enter at least three characters");
} else {
for (var i=0;i<allitems.length;i++) {
// see if the XML entry matches the search term,
// and (if so) store it in an array
var name = allitems[i].getAttribute("Name");
var exp = new RegExp(searchterm,"i");
if ( name.match(exp) != null) {
results.push(allitems[i]);
}
}
// send the results to another function that displays them to the user
showResults(results, searchterm);
}
}

// The following is just an example of how you
// could handle the search results
function showResults(results, searchterm) {
if (results.length > 0) {
// if there are any results, put them in a list inside the "resultshere" div
var resultshere = document.getElementById("resultshere");
var local = document.getElementById("local");
var header = document.createElement("h5");
var list = document.createElement("ul");
var searchedfor = document.createTextNode("You've searched for "+searchterm);
resultshere.appendChild(header);
header.appendChild(searchedfor);
resultshere.appendChild(list);
for (var i=0;i<results.length;i++) {
var listitem = document.createElement("li");
var alink = document.createElement("a");
var item = document.createTextNode(results[i].attributes.getNamedItem("Name").value);
if (local.checked) {
//Absolute Path
alink.setAttribute('href', recurseParentForPath(results[i],"") + results[i].attributes.getNamedItem("Name").value);
}
else {
//Virtual Path
alink.setAttribute('href', "virtual/" + recurseParentForVirt(results[i],"") + results[i].attributes.getNamedItem("Name").value);
}
list.appendChild(listitem);
//listitem.appendChild(item);
listitem.appendChild(alink);
alink.appendChild(item);
}
} else {
// else tell the user no matches were found
var resultshere = document.getElementById("resultshere");
var para = document.createElement("p");
var notfound = document.createTextNode("Sorry, I couldn't find anything like "+searchterm +"!");
resultshere.appendChild(para);
para.appendChild(notfound);
}
}

function loadStreamServerDoc() { // load StreamServer.xml
// most current browsers support document.implementation
if (document.implementation && document.implementation.createDocument) {
streamServerDoc = document.implementation.createDocument("", "", null);
streamServerDoc.load("streamserver.xml");
}
// MSIE uses ActiveX
else if (window.ActiveXObject) {
streamServerDoc=new ActiveXObject("Microsoft.XMLDOM");
streamServerDoc.async=false;
streamServerDoc.load("streamserver.xml");
}
}

// Recursively get the absolute path to the file
function recurseParentForPath(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (Path(node.parentNode.getAttribute("GUID")) + String.fromCharCode(92) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(92) + path;
path = recurseParentForPath(node.parentNode,path);
}
}
return path;
}

// A function to return the stream directory path for a GUID
function Path(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs[i].getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs[i].getAttribute("Path"));
break;
}
}
}

// Recursively get the Virtual Directory
function recurseParentForVirt(node,path) {
if (node.parentNode.baseName== "StreamDirectory") {
path = (VirtualDir(node.parentNode.getAttribute("GUID")) + String.fromCharCode(47) + path);
}
else {
if (node.parentNode.baseName== "Directory") {
path = node.parentNode.getAttribute("Name") + String.fromCharCode(47) + path;
path = recurseParentForVirt(node.parentNode,path);
}
}
return path;
}

// A function to return the virtual name for a GUID
function VirtualDir(guid) {
if (!streamServerDoc) {
loadStreamServerDoc();
}
var dirs = streamServerDoc.getElementsByTagName("StreamDirectory");
results = new Array;
for (var i=0;i<dirs.length;i++) {
var searchGuid = dirs[i].getAttribute("GUID");
if ( searchGuid == guid ) {
return (dirs[i].getAttribute("VirtualName"));
break;
}
}
}

</script>
</head>
<body>
<form action="" >
<input type="text" id="searchme" />
<input type="submit" onclick="searchIndex(); return false;" />
<input type="checkbox" id="local" />
<script type="text/javascript" language="javascript"> function reloadURL() { window.location.reload(); }</script><INPUT TYPE="image" SRC="h.gif" value="Refresh Location URL" onclick="reloadURL();" />

</form>
<div id="resultshere">
</div>
</body>
</html> [/code3o6u4nje]

case solved!

yuanyelss

20-01-2011 08:05:52

so try it out loop through the outer DIV's around each song item until you find the first one that begins with F, and then scroll that into view...... roll roll roll roll roll