def getWordsMostFreqByAuthor(authorName, wordNumber = 10): ''' Get the keyword's stats for a given author. :param authorName: The asked author's name. :param wordNumber: the max number of results. :returns: a dictionnary of [word=>count]. example of use: data["lol"] = 42''' author = Author.all() author.filter('name = ', authorName) artiAuths = ArtiAuth.all() artiAuths.filter('keyAuthor = ', author.get()) data = collections.defaultdict(list) for article in artiAuths : mapReduces = MapReduce.all() mapReduces.filter('keyArticle = ', article.keyArticle) for mR in mapReduces: try: if data[mR.keyWord]: data[mR.keyWord] += mR.count else: data[mR.keyWord] = mR.count except ReferencePropertyResolveError : print 'Pas de reference word' # Sort the results based on the sum of each word's occurences sortedList = data.items() sortedList.sort(key=lambda x: x[1], reverse=True) return OrderedDict(sortedList[0:wordNumber-1])
def listAuthor(): '''Returns a list of all authors. :returns: a list of strings being the authors's names ''' authors = Author.all() data = [] logging.info("scout authors") for aut in authors: logging.info(aut.name) if(aut.name == ' '): continue # Filtrer les auteurs vides data.append(aut.name) return data
def getAuthorsByWords(words): '''Get authors by their names. :param words: A string containing words. :returns: a list of Authors.''' dico = words.split(' ') query = Author.all() results = [] for author in query: for w in dico: if (w in author.name): results.append(author) return list(set(results))
def getArticleByAuthor (authorName, artNumber = 10) : '''Get the articles from a given author. :param authorName: a string which is the author's name. :param artNumber: the max count of results to give in the returned list. :returns: a list of string being the article's names.''' author = Author.all() author.filter('name = ', authorName) artiAuths = ArtiAuth.all() artiAuths.filter('keyAuthor = ', author.get()) data = [] results = artiAuths.fetch(limit=artNumber) for art in results: data.append(art.keyArticle.name) return data
def deleteData(): """ Delete all the data """ masters = Master.all() for master in masters: Master.delete(master) mapReduces = MapReduce.all() for mapReduce in mapReduces: MapReduce.delete(mapReduce) articles = Article.all() for article in articles: Article.delete(article) authors = Author.all() for author in authors: Author.delete(author) artCitedBibs = ArtCitedBib.all() for artCitedBib in artCitedBibs: ArtCitedBib.delete(artCitedBib)