--- a
+++ b/OSSEval/IMDBMovieApp/imdb.py
@@ -0,0 +1,80 @@
+# This Source Code Form of OSSEval is subject to the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE, v. 3.0. If a copy of the AGPL was not
+# distributed with this file, You can obtain one at http://www.gnu.org/licenses/agpl.txt
+#
+# OSSeval is powered by the SOS Open Source AGPL edition.
+#  The AGPL requires that you do not remove the SOS Open Source attribution and copyright 
+#  notices from the user interface (see section 5.d below).
+
+# OSSEval Copyright 2014 Bitergium SLL
+# SOS Open Source Copyright 2012 Roberto Galoppini
+# Author: Davide Galletti 
+
+from xml.dom import minidom
+from OSSEval.utils import TrivialJSONEncoder 
+import json
+import urllib2
+from lxml import html
+from IMDBMovieApp.models import IMDBMovie
+
+class IMDBProxy():
+    
+    @staticmethod
+    def search(title):
+        print "IMDB searching for " + title
+        movie_list = []
+        all_results = []
+#         s=tt to search on titles
+#         q=berlin+wall   searches both words
+        url_imdb = "http://www.imdb.com/xml/find?json=1&s=tt&q=" + title.replace(" ", "+")
+        response = urllib2.urlopen(url_imdb)
+        imdb_json = response.read()
+        try:
+            # if the result is exaclty one movie instead of sending back json as requested
+            # they might send the html page of the movie and json load fails
+            decoded = json.loads(imdb_json)
+#             look for results in     title_approx , title_substring , title_exact, title_popular
+            if 'title_exact' in decoded.keys():
+                all_results += decoded['title_exact']
+            if 'title_substring' in decoded.keys():
+                all_results += decoded['title_substring']
+            if 'title_approx' in decoded.keys():
+                all_results += decoded['title_approx']
+            if 'title_popular' in decoded.keys():
+                all_results += decoded['title_popular']
+            for movie in all_results:
+                m = IMDBMovie()
+                m.imdb_id = movie['id']
+                m.title = movie['title']
+                m.description = movie['description']
+                movie_list.append(m)
+        except:
+            # it might be an html page with just one movie
+            imdb_html = imdb_json
+            tree = html.fromstring(imdb_html)
+            m = IMDBMovie()
+            # <meta property="og:url" content="http://www.imdb.com/title/tt0072684/" />
+            url = tree.xpath('//meta[@property="og:url"]')[0].get('content')
+            url = url[:-1]
+            m.imdb_id = url[url.rfind("/")+1:]
+            m.title = tree.xpath('//meta[@property="og:title"]')[0].get('content')
+            m.description = tree.xpath('//meta[@property="og:description"]')[0].get('content')
+            movie_list.append(m)
+
+        return movie_list
+
+    @staticmethod
+    def getMovieInfo(project_identifier):
+        ### perche' ho questo e ho anche IMDBMovie.getInstanceInfo ?
+        url_ohloh = "http://www.openhub.net/projects/" + project_identifier + ".xml?api_key=" + Configuration.api_key
+        xml = UrllibHelper.urlopen(url_ohloh)
+        xmldoc = minidom.parseString(xml)
+        info = {}
+        
+        status = xmlElements(xmldoc.getElementsByTagName('status')).firstValue()
+        if status == 'success':
+            info['id'] = project_identifier
+                
+        return info
+
+