<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://wiki.student.utwente.nl/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jase</id>
	<title>CampusWiki - Gebruikersbijdragen [nl]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.student.utwente.nl/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jase"/>
	<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/wiki/Speciaal:Bijdragen/Jase"/>
	<updated>2026-10-31T14:22:27Z</updated>
	<subtitle>Gebruikersbijdragen</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12122</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12122"/>
		<updated>2010-10-07T17:08:46Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Installatie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
| [[afbeelding:xbox1.jpg|upright|thumb|Plugin]]&lt;br /&gt;
| [[afbeelding:xbox2.jpg|upright|thumb|Invoer]]&lt;br /&gt;
| [[afbeelding:xbox3.jpg|upright|thumb|Resultaten]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.)&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in de file [http://wiki.student.utwente.nl/nl/wiki.php/CampusSearch_XBOX_Plugin#default.py default.py] gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12121</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12121"/>
		<updated>2010-10-07T17:08:34Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
| [[afbeelding:xbox1.jpg|upright|thumb|Plugin]]&lt;br /&gt;
| [[afbeelding:xbox2.jpg|upright|thumb|Invoer]]&lt;br /&gt;
| [[afbeelding:xbox3.jpg|upright|thumb|Resultaten]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.)&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in de file [http://www.xbmc4xbox.org/ default.py] gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12120</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12120"/>
		<updated>2010-10-07T17:07:45Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
| [[afbeelding:xbox1.jpg|upright|thumb|Plugin]]&lt;br /&gt;
| [[afbeelding:xbox2.jpg|upright|thumb|Invoer]]&lt;br /&gt;
| [[afbeelding:xbox3.jpg|upright|thumb|Resultaten]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.)&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12117</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12117"/>
		<updated>2010-10-07T15:46:30Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
| [[afbeelding:xbox1.jpg|upright|thumb|Plugin]]&lt;br /&gt;
| [[afbeelding:xbox2.jpg|upright|thumb|Invoer]]&lt;br /&gt;
| [[afbeelding:xbox3.jpg|upright|thumb|Resultaten]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12116</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12116"/>
		<updated>2010-10-07T15:45:21Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[afbeelding:xbox1.jpg|upright|thumb|alt text]]&lt;br /&gt;
[[afbeelding:xbox2.jpg|upright|thumb|alt text]]&lt;br /&gt;
[[afbeelding:xbox3.jpg|upright|thumb|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12115</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12115"/>
		<updated>2010-10-07T15:44:34Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[afbeelding:xbox1.jpg|thumb|alt text]]&lt;br /&gt;
[[afbeelding:xbox2.jpg|thumb|alt text]]&lt;br /&gt;
[[afbeelding:xbox3.jpg|thumb|alt text]]&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox3.jpg&amp;diff=12114</id>
		<title>Bestand:Xbox3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox3.jpg&amp;diff=12114"/>
		<updated>2010-10-07T15:44:10Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox2.jpg&amp;diff=12113</id>
		<title>Bestand:Xbox2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox2.jpg&amp;diff=12113"/>
		<updated>2010-10-07T15:43:57Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12112</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12112"/>
		<updated>2010-10-07T15:43:42Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[afbeelding:xbox1.jpg|thumb|alt text]]&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12111</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12111"/>
		<updated>2010-10-07T15:43:10Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[afbeelding:xbox1.jpg|alt text]]&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox1.jpg&amp;diff=12110</id>
		<title>Bestand:Xbox1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=Bestand:Xbox1.jpg&amp;diff=12110"/>
		<updated>2010-10-07T15:42:14Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XML_interface&amp;diff=12109</id>
		<title>CampusSearch XML interface</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XML_interface&amp;diff=12109"/>
		<updated>2010-10-07T15:39:21Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Het is mogelijk om CampusSearch database te raadplegen via een GET-request, waarmee je een XML output kan genereren. Dit is de eerste versie van het geheel en zal zeker in de toekomst nog aangepast worden.&lt;br /&gt;
&lt;br /&gt;
Als je gebruik maakt van dit interface, zet je project bij &#039;&#039;Projecten die gebruikt maken van het XML interface&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Voor verdere vragen of uitbreidingen, neem contact op met [[ddofborg]].&lt;br /&gt;
&lt;br /&gt;
== Undocumented features ==&lt;br /&gt;
&lt;br /&gt;
=== Overige feeds ===&lt;br /&gt;
; Feed met alle computers op [[Campusnet]] die in afgelopen 3weken online waren.&lt;br /&gt;
* http://search.student.utwente.nl/api/feeds?feed=network-nodes&lt;br /&gt;
&lt;br /&gt;
=== TV Show Feeds ===&lt;br /&gt;
; Feed met alle TV shows bekend bij Search, incl. IMDB ID.&lt;br /&gt;
* http://search.student.utwente.nl/api/feeds?feed=all-tv-shows&lt;br /&gt;
&lt;br /&gt;
; Feed met alle episodes van show met &amp;lt;tt&amp;gt;IMDB ID = tt0904208&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* http://search.student.utwente.nl/api/feeds?feed=tv-show-eps&amp;amp;imdb_id=tt0904208&lt;br /&gt;
&lt;br /&gt;
; Feed met recente TV Shows.&lt;br /&gt;
* Alle series van afgelopen 30 dagen: http://search.student.utwente.nl/api/feeds?feed=recent-tv-shows&lt;br /&gt;
* Parameter &amp;lt;tt&amp;gt;found_after=2010-03-01+11:00:00&amp;lt;/tt&amp;gt; laat alleen series zien die gevonden zijn na 1 maart 2010 11:00. Voorbeeld: http://search.student.utwente.nl/api/feeds?feed=recent-tv-shows&amp;amp;found_after=2010-03-01+11:00:00&lt;br /&gt;
* Parameter &amp;lt;tt&amp;gt;show_results_after=91000000&amp;lt;/tt&amp;gt; laat alleen series zien die gevonden zijn na series met nummer 91000000. Bij elke request wordt ook laatste ID van de resultaten meegestuurd, waardoor je weet vanaf welk punt je weer nieuwe series op kunt halen. Voorbeeld: http://search.student.utwente.nl/api/feeds?feed=recent-tv-shows&amp;amp;show_results_after=91000000&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
&lt;br /&gt;
=== GET parameters ===&lt;br /&gt;
Doe een GET request naar &amp;lt;tt&amp;gt;http://search.student.utwente.nl/api/search&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deze parameters worden ondersteund (de waarden van de GET-parameters moeten URL-encoded zijn):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;q&amp;lt;/tt&amp;gt;: de zoek string, bijv. &amp;quot;The+Matrix&amp;quot; (&amp;lt;u&amp;gt;verplicht&amp;lt;/u&amp;gt;).&lt;br /&gt;
* &amp;lt;tt&amp;gt;page&amp;lt;/tt&amp;gt;: paginanummer, elke &#039;pagina&#039; heeft 30 resultaten, beginnend bij 0 (0-29), dan 1 (30-59), etc.&lt;br /&gt;
* &amp;lt;tt&amp;gt;minsize&amp;lt;/tt&amp;gt;: minimale grootte van de file/dir, bijv. 0.5M of 1G.&lt;br /&gt;
* &amp;lt;tt&amp;gt;maxsize&amp;lt;/tt&amp;gt;: maximale grootte van de file/dir,  bijv. 0.5M of 1G.&lt;br /&gt;
* &amp;lt;tt&amp;gt;dirsonly&amp;lt;/tt&amp;gt; waarde &#039;yes&#039; als je alleen op directories wilt zoeken.&lt;br /&gt;
* &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; aantal terug te geven resultaten, max. 500.&lt;br /&gt;
&lt;br /&gt;
=== Voorbeeld van XML uitvoer ===&lt;br /&gt;
Voorbeeld, zoeken naar directories genaamd &amp;quot;The Matrix&amp;quot;, met minimale grootte 0.5G en maximale grootte 2G:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;http://search.student.utwente.nl/api/search?q=the+matrix&amp;amp;page=0&amp;amp;minsize=0.5G&amp;amp;maxsize=2G&amp;amp;dirsonly=yes&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Een deel van de XML die uit komt is als volgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;campus_search&amp;gt; &lt;br /&gt;
	&amp;lt;status&amp;gt; &lt;br /&gt;
		&amp;lt;status_msg&amp;gt;success&amp;lt;/status_msg&amp;gt; &lt;br /&gt;
	&amp;lt;/status&amp;gt; &lt;br /&gt;
	&amp;lt;result&amp;gt; &lt;br /&gt;
		&amp;lt;rank&amp;gt;9&amp;lt;/rank&amp;gt; &lt;br /&gt;
		&amp;lt;netbios_name&amp;gt;NZSERVER&amp;lt;/netbios_name&amp;gt; &lt;br /&gt;
		&amp;lt;ip&amp;gt;130.89.162.28&amp;lt;/ip&amp;gt; &lt;br /&gt;
		&amp;lt;type&amp;gt;file&amp;lt;/type&amp;gt; &lt;br /&gt;
		&amp;lt;full_path&amp;gt;smb://130.89.162.28/Movies/IMDB top 30/30 - The Matrix/The Matrix [1].avi&amp;lt;/full_path&amp;gt; &lt;br /&gt;
		&amp;lt;dir&amp;gt;Movies/IMDB top 30/30 - The Matrix&amp;lt;/dir&amp;gt; &lt;br /&gt;
		&amp;lt;name&amp;gt;The Matrix [1].avi&amp;lt;/name&amp;gt; &lt;br /&gt;
		&amp;lt;online&amp;gt;no&amp;lt;/online&amp;gt; &lt;br /&gt;
		&amp;lt;size&amp;gt;735412224&amp;lt;/size&amp;gt; &lt;br /&gt;
		&amp;lt;meta&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_url&amp;gt;http://imdb.com/title/tt0133093&amp;lt;/imdb_url&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_rating&amp;gt;8.7&amp;lt;/imdb_rating&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_year&amp;gt;1999&amp;lt;/imdb_year&amp;gt; &lt;br /&gt;
		&amp;lt;/meta&amp;gt; &lt;br /&gt;
	&amp;lt;/result&amp;gt; &lt;br /&gt;
	&amp;lt;result&amp;gt; &lt;br /&gt;
		&amp;lt;rank&amp;gt;10&amp;lt;/rank&amp;gt; &lt;br /&gt;
		&amp;lt;netbios_name&amp;gt;WOLVERINE&amp;lt;/netbios_name&amp;gt; &lt;br /&gt;
		&amp;lt;ip&amp;gt;130.89.160.253&amp;lt;/ip&amp;gt; &lt;br /&gt;
		&amp;lt;type&amp;gt;directory&amp;lt;/type&amp;gt; &lt;br /&gt;
		&amp;lt;full_path&amp;gt;smb://130.89.160.253/FILMS/Animatrix&amp;lt;/full_path&amp;gt; &lt;br /&gt;
		&amp;lt;dir&amp;gt;FILMS&amp;lt;/dir&amp;gt; &lt;br /&gt;
		&amp;lt;name&amp;gt;Animatrix&amp;lt;/name&amp;gt; &lt;br /&gt;
		&amp;lt;online&amp;gt;yes&amp;lt;/online&amp;gt; &lt;br /&gt;
		&amp;lt;size&amp;gt;1457489248&amp;lt;/size&amp;gt; &lt;br /&gt;
		&amp;lt;meta&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_url&amp;gt;http://imdb.com/title/tt0328832&amp;lt;/imdb_url&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_rating&amp;gt;7.5&amp;lt;/imdb_rating&amp;gt; &lt;br /&gt;
			&amp;lt;imdb_year&amp;gt;2003&amp;lt;/imdb_year&amp;gt; &lt;br /&gt;
		&amp;lt;/meta&amp;gt; &lt;br /&gt;
	&amp;lt;/result&amp;gt; &lt;br /&gt;
&amp;lt;/campus_search&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Foutmeldingen ===&lt;br /&gt;
Een foutmelding ziet er als volgt uit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;campus_search&amp;gt; &lt;br /&gt;
	&amp;lt;status&amp;gt; &lt;br /&gt;
		&amp;lt;status_msg&amp;gt;error&amp;lt;/status_msg&amp;gt; &lt;br /&gt;
		&amp;lt;error_code&amp;gt;ERROR_SEARCH_NO_RESULTS&amp;lt;/error_code&amp;gt; &lt;br /&gt;
	&amp;lt;/status&amp;gt; &lt;br /&gt;
&amp;lt;/campus_search&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element &amp;lt;tt&amp;gt;error_code&amp;lt;/tt&amp;gt; kan een van de volgende waarden hebben: &amp;lt;tt&amp;gt;ERROR_SEARCH_NO_RESULTS&amp;lt;/tt&amp;gt; of &amp;lt;tt&amp;gt;ERROR_SEARCH_INCORRECT_QUERY&amp;lt;/tt&amp;gt;. Eerste geeft aan dat er geen resultaten gevonden zijn, de tweede dat de aanvraag niet volledig of incorrect was.&lt;br /&gt;
&lt;br /&gt;
== Projecten die gebruik maken van het XML interface ==&lt;br /&gt;
: &#039;&#039;Zet ook even je naam/e-mail hieronder, dan kunnen mensen contact met je opnemen.&#039;&#039;&lt;br /&gt;
* [http://muziek.student.utwente.nl Campusnet Music Player] (source: http://muziek.student.utwente.nl/CampusSearch.phps)&lt;br /&gt;
* V-Direct is een nieuw leven in geblazen. Meer informatie volgt.&lt;br /&gt;
* [[Prometheus]] is een nieuwe commandline download en zoektool voor [[CampusNet]].&lt;br /&gt;
** http://github.com/shokora/Prometheus/downloads&lt;br /&gt;
* [http://udownload.sourceforge.net/ UniversalDownload] is een (nu nog pre-alpha) open-sourceapplicatie die onder andere downloads vanaf campusnet gaat ondersteunen door gebruik te maken van CampusSearch.&lt;br /&gt;
&lt;br /&gt;
== Zie ook ==&lt;br /&gt;
* [[CampusSearch]]&lt;br /&gt;
* [[CampusSearch development]]&lt;br /&gt;
* [[CampusSearch XBOX Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Externe links ==&lt;br /&gt;
* http://search.student.utwente.nl/&lt;br /&gt;
&lt;br /&gt;
[[Category:CampusSearch]]&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12108</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12108"/>
		<updated>2010-10-07T15:38:44Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Het plugin is te vinden in XBMC onder Videos -&amp;gt; Video plugins -&amp;gt; CampusSearch. De werkwijze is self-explanatory.&lt;br /&gt;
== Hulp nodig? ==&lt;br /&gt;
Schrijf me een [mailto:haihappn@gmail.com mail] of kom ff langs (WBW 377-2 Voor)&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12107</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12107"/>
		<updated>2010-10-07T15:32:50Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12106</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12106"/>
		<updated>2010-10-07T15:32:20Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Installatie ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt eruit:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
== default.py ==&lt;br /&gt;
Laatste wijziging&#039;&#039;&#039; 07-10-2010 17:31&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import urllib,re,xbmc,xbmcplugin,xbmcgui,os,sys&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
__language__ = xbmc.Language( os.getcwd() ).getLocalizedString&lt;br /&gt;
&lt;br /&gt;
def getResults(film):&lt;br /&gt;
	notWantedKeywords = [&amp;quot;720p&amp;quot;, &amp;quot;1080p&amp;quot;, &amp;quot;1080i&amp;quot;, &amp;quot;HDDVD&amp;quot;, &amp;quot;Bluray&amp;quot;, &amp;quot;Blueray&amp;quot;]&lt;br /&gt;
	unwantedKeywordFound = 0&lt;br /&gt;
	found = 0&lt;br /&gt;
	&lt;br /&gt;
	film  = film.replace(&amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
	filmUrl = &amp;quot;http://search.student.utwente.nl/api/search?q=&amp;quot; + film + &amp;quot;&amp;amp;page=0&amp;amp;dirsonly=no&amp;amp;n=100&amp;quot;&lt;br /&gt;
	try:&lt;br /&gt;
		feed = urllib.urlopen(filmUrl)&lt;br /&gt;
		dom = parse(feed)	&lt;br /&gt;
	except Exception:&lt;br /&gt;
		message(&amp;quot;Could not reach CampusSearch!&amp;quot;)&lt;br /&gt;
	#check through all the &amp;lt;result&amp;gt;	&lt;br /&gt;
	for node in dom.getElementsByTagName(&#039;result&#039;):&lt;br /&gt;
		#only take those which are online!&lt;br /&gt;
		if node.getElementsByTagName(&#039;online&#039;)[0].firstChild.nodeValue == &#039;yes&#039;:&lt;br /&gt;
			# we dont want bluray or any orther HD movie, the xbox cannot play it!&lt;br /&gt;
			for keyword in notWantedKeywords:&lt;br /&gt;
				if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.find(keyword) != -1 or node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue.find(keyword) != -1:&lt;br /&gt;
					unwantedKeywordFound = 1		&lt;br /&gt;
			if unwantedKeywordFound == 0:       &lt;br /&gt;
				# okay, everything seems clear, now lets get rid of the directories, we only want the files!&lt;br /&gt;
				#if node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.avi&amp;quot;) or node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue.endswith(&amp;quot;.mp4&amp;quot;):&lt;br /&gt;
				addDir(node.getElementsByTagName(&#039;name&#039;)[0].firstChild.nodeValue, node.getElementsByTagName(&#039;full_path&#039;)[0].firstChild.nodeValue, &#039;&#039;)&lt;br /&gt;
				found = 1&lt;br /&gt;
			unwantedKeywordFound = 0;&lt;br /&gt;
	xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)			&lt;br /&gt;
	if found != 1:&lt;br /&gt;
		message(&amp;quot;nothing found!&amp;quot;)		&lt;br /&gt;
&lt;br /&gt;
#search for something&lt;br /&gt;
def GUIEditExportName(name):&lt;br /&gt;
	exit = True &lt;br /&gt;
	while (exit):&lt;br /&gt;
		kb = xbmc.Keyboard(&#039;default&#039;, &#039;heading&#039;, True)&lt;br /&gt;
		kb.setDefault(name)&lt;br /&gt;
		kb.setHeading(__language__(33223))&lt;br /&gt;
		kb.setHiddenInput(False)&lt;br /&gt;
		kb.doModal()&lt;br /&gt;
		if (kb.isConfirmed()):&lt;br /&gt;
			name_confirmed  = kb.getText()&lt;br /&gt;
			name = name_confirmed&lt;br /&gt;
			exit = False&lt;br /&gt;
		else:&lt;br /&gt;
			message(&amp;quot;nothing entered!&amp;quot;) &lt;br /&gt;
	return(name)&lt;br /&gt;
	&lt;br /&gt;
def message(text):&lt;br /&gt;
	dialog = xbmcgui.Dialog()&lt;br /&gt;
	dialog.ok(&amp;quot;Error&amp;quot;, text)&lt;br /&gt;
&lt;br /&gt;
def addDir(name,path,iconimage):&lt;br /&gt;
	#root level, we only want the files or directories from the search results, not what is inside the folders&lt;br /&gt;
	if name != &#039;&#039;:&lt;br /&gt;
		isDir = os.path.isdir(path)&lt;br /&gt;
		liz=xbmcgui.ListItem(name,&#039;&#039;)&lt;br /&gt;
		#os.path.isdir does apparently not work for samba shares, so dirty hack has to be applied :)&lt;br /&gt;
		#if isDir:&lt;br /&gt;
		if path[len(path) - 4] != &amp;quot;.&amp;quot;:&lt;br /&gt;
			url = sys.argv[0] + &amp;quot;?path=&amp;quot; + path + &amp;quot;/&amp;quot;&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
		else:&lt;br /&gt;
			xbmcplugin.addDirectoryItem(int(sys.argv[1]),path,liz)&lt;br /&gt;
	else:&lt;br /&gt;
		# os.listdir also does not work with samba shares, using xbmc httpapi as a workaround&lt;br /&gt;
		#folderContents = os.listdir(path)&lt;br /&gt;
		response = xbmc.executehttpapi(&amp;quot;GetDirectory(&amp;quot; + path + &amp;quot;)&amp;quot;)&lt;br /&gt;
		# remove &amp;lt;li&amp;gt; tags&lt;br /&gt;
		response = response.replace(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# we only want the directories and files, so remove the absolute network path&lt;br /&gt;
		response = response.replace(path, &amp;quot;&amp;quot;)&lt;br /&gt;
		# also &amp;quot;dir/&amp;quot; has to be just &amp;quot;dir&amp;quot;&lt;br /&gt;
		response = response.replace(&amp;quot;/&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		# first token is a newline, we do not want that&lt;br /&gt;
		response = response.replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
		# we split at each newline, so that we have a list of dirs &amp;amp; files&lt;br /&gt;
		folderContents = response.split(&#039;\n&#039;)&lt;br /&gt;
		for entries in folderContents:&lt;br /&gt;
			url = os.path.join(path,entries)&lt;br /&gt;
			#url = path + entries&lt;br /&gt;
			isDir = os.path.isdir(url)&lt;br /&gt;
			liz=xbmcgui.ListItem(entries,&#039;&#039;)&lt;br /&gt;
			if isDir:&lt;br /&gt;
				url = sys.argv[0] + &amp;quot;?path=&amp;quot; + url + &amp;quot;/&amp;quot;&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz,isDir)&lt;br /&gt;
			else:&lt;br /&gt;
				xbmcplugin.addDirectoryItem(int(sys.argv[1]),url,liz)&lt;br /&gt;
		xbmcplugin.endOfDirectory(int(sys.argv[1]), 1)	&lt;br /&gt;
	return (0)&lt;br /&gt;
&lt;br /&gt;
#this if will only be true if we want to see the content of a subfolder&lt;br /&gt;
if cmp (sys.argv[2][0:6],&amp;quot;?path=&amp;quot;) == 0:&lt;br /&gt;
	addDir(&#039;&#039;, sys.argv[2][6:], &#039;&#039;)&lt;br /&gt;
else:&lt;br /&gt;
	requestedMovie = &amp;quot;&amp;quot;&lt;br /&gt;
	requestedMovie = GUIEditExportName(requestedMovie)&lt;br /&gt;
	getResults(requestedMovie)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12105</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12105"/>
		<updated>2010-10-07T15:30:10Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Plugin ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Op onze xbox ziet het als volgt ui:&lt;br /&gt;
&amp;lt;pre&amp;gt;E/apps/xbmc/plugins/video/CampusSearch/default.py&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12104</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12104"/>
		<updated>2010-10-07T15:26:29Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;br /&gt;
== Plugin ==&lt;br /&gt;
De volgende code moet in een file &amp;quot;default.py&amp;quot; gesaved worden. Vervolgens wordt in het sub directory plugins/video/ van XBMC de map &amp;quot;CampusSearch&amp;quot; aangemakt en de default.py daar opgeslagen.&lt;br /&gt;
Een voorbeeld structuur zou kunnen zijn:&lt;br /&gt;
&amp;lt;pre&amp;gt;bla&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12103</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12103"/>
		<updated>2010-10-07T15:23:25Z</updated>

		<summary type="html">&lt;p&gt;Jase: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project.&lt;br /&gt;
** Getest op Build 30682 (06-10-2010), nieuwste builds zijn [http://sshcs.com/xbmc/ hier] verkrijgbar.&lt;br /&gt;
* FTP access&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12102</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12102"/>
		<updated>2010-10-07T15:21:15Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* modded xbox&lt;br /&gt;
* [http://xbmc.org/ XBMC] installatie (het XBMC team ondersteunt de xbox niet meer. gelukkig maakt [http://www.xbmc4xbox.org/ XBMC4XBOX] nog verder met het project&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
	<entry>
		<id>https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12101</id>
		<title>CampusSearch XBOX Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.student.utwente.nl/w/index.php?title=CampusSearch_XBOX_Plugin&amp;diff=12101"/>
		<updated>2010-10-07T15:17:16Z</updated>

		<summary type="html">&lt;p&gt;Jase: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dankzij het * [[CampusSearch XML interface]] is er nu ook voor een xbox plugin gemaakt, met die je makkelijk vanuit je xbox films kunt zoeken en toevoegen.&lt;/div&gt;</summary>
		<author><name>Jase</name></author>
	</entry>
</feed>