def read(self, note_id): tempnote = self._notestore.getNote(self._token, note_id, True, False, False, False) #Retreieve the note #Get the name of the notebook tempbook = EvernoteNotebook.objects.filter(user=self._user, id__exact=tempnote.notebookGuid).first() #Try to retreive the notebook name from the database if tempbook: notebookName = tempbook.name else: notebook = self._notestore.getNotebook(self._token, tempnote.notebookGuid) #Get the name of the notebook of the note if not in database storeBook = EvernoteNotebook(user=self._user, id=tempnote.notebookGuid, name=notebook.name) storeBook.save() #Save the notebook to the databse notebookName = notebook.name #Get the names of the tags of the note tags = [] if tempnote.tagGuids: #If there are any tags, add their guids to the list serverTags = None for tagid in tempnote.tagGuids: temptag = EvernoteTag.objects.filter(user=self._user, id__exact=tagid).first() if not temptag: if serverTags == None: serverTags = self._notestore.listTags(self._token) #Retreive list of tags on evernote servers if we don't already have it foundTag = [x for x in serverTags if x.guid == tagid] #Find the tag with the correct guid if foundTag: storeTag = EvernoteTag(user=self._user, id=foundTag[0].guid, name=foundTag[0].name) #Add the to the database if we found it storeTag.save() tags.append({'tag': storeTag.name, 'id': storeTag.id}) else: #Error didnt find tag on server but should be there tags.append(("ERRORFINDINGTAGNAME", tagid)) else: tags.append({'tag': temptag.name, 'id': temptag.id}) #Strip the evernote specific metadata and tags from the content content = tempnote.content prefix1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" prefix2 = "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" prefix3 = "<en-note>" suffix1 = "</en-note>" x = content.find(prefix1) if not x == -1: content = content.split(prefix1)[1] x = content.find(prefix2) if not x == -1: content = content.split(prefix2)[1] x = content.find(prefix3) if not x == -1: content = content.split(prefix3)[1] x = content.rfind(suffix1) if not x == -1: content = content.rsplit(suffix1)[0] note = Note(tempnote.title, content, notebookName, tempnote.notebookGuid, tags) #, tempnote.attributes.reminderDoneTime, tempnote.attributes.reminderTime) return note
def _getTagIdList(self, note): tags = [] serverTags = None for tag in note.content['tags']: if tag.get('id'): #Add the tag id to the list if we have it tags.append(tag.get('id')) else: temptag = EvernoteTag.objects.filter(user=self._user, name__iexact=tag['tag']).first() #If we don't have, check for it in database if temptag: tags.append(temptag.id) else: #If not in database check if it is on evernote servers if serverTags == None: serverTags = self._notestore.listTags(self._token) #Retreive list of tags on evernote servers if we don't already have it foundTag = [x for x in serverTags if x.name.lower() == tag['tag'].lower()] #Find the tag with the correct name if foundTag: storeTag = EvernoteTag(user=self._user, id=foundTag[0].guid, name=foundTag[0].name) #Add the to the database if we found it storeTag.save() tags.append(foundTag[0].guid) else: newTag = Types.Tag() #Create the tag if it didn't exist on the server newTag.name = tag['tag'] createdTag = self._notestore.createTag(self._token, newTag) storeTag = EvernoteTag(user=self._user, id=createdTag.guid, name=createdTag.name) #And add it to the database storeTag.save() tags.append(createdTag.guid) return tags