Пример #1
0
def load_notes(note_store,accessToken,type,guid,display):

	# Connecting to Evernote
    notes = []
    offset = 0
    maxNotes = 100
    # Creating NoteFilter
    if (type == "search"):
    	noteFilter = NoteFilter(order=NoteSortOrder.UPDATED,words=guid)
    elif (type == "tag"):
    	noteFilter = NoteFilter(order=NoteSortOrder.UPDATED,tagGuids=[guid])
    else:
    	noteFilter = NoteFilter(order=NoteSortOrder.UPDATED,notebookGuid=guid)

        if int(display) == safeglobals.NOTES_ENCRYPTED_ONLY:
            noteFilter.words = safeglobals.ENCRYPTED_PREFIX[:-2]
        elif int(display) == safeglobals.NOTES_UNENCRYPTED_ONLY:
            noteFilter.words = "-%s" % safeglobals.ENCRYPTED_PREFIX[:-2]

    # Creating ResultSpec
    result_spec = NotesMetadataResultSpec(includeTitle=True,includeCreated=True,includeUpdated=True,includeNotebookGuid=True)
    
    # Getting the result
    response = note_store.findNotesMetadata(accessToken, noteFilter, offset, maxNotes, result_spec)

    # Parsing the list of NotesMetadata
    for metadata in response.notes:
        notes.append({"guid":metadata.guid,"updated":millisToDate(metadata.updated),"created":millisToDate(metadata.created),"title":metadata.title})

    # Caching notes
    cache_notes(notes,type,guid)
    return notes
Пример #2
0
 def search_notes(self, words):
     filter = NoteFilter(words=words)
     spec = NotesMetadataResultSpec()
     spec.includeTitle = True
     note_list = self.note_store.findNotesMetadata(self.token, filter, 0,
                                                   100, spec)
     return note_list
Пример #3
0
def searchNote(client, note_store, notebooks, notebookname, notename):

    # 対象のノートブックを検索
    copied_notebook_guid = None
    for notebook in notebooks:
        if notebook.name == notebookname:
            copied_notebook_guid = notebook.guid
            break
    # 該当するノートブックが存在しない場合にはエラー
    if copied_notebook_guid == None:
        return "", ""

    # 対象のノートを検索
    offset = 0
    max_notes = 400
    filter = NoteFilter(notebookGuid=copied_notebook_guid)
    result_spec = NotesMetadataResultSpec(includeTitle=True)
    result_list = note_store.findNotesMetadata(EVERNOTE_DEV_TOKEN, filter,
                                               offset, max_notes, result_spec)
    copied_note_guid = None
    for note in result_list.notes:
        if note.title == notename:
            copied_note_guid = note.guid
            break
    # 該当するノートが存在しない場合にはエラー
    if copied_note_guid == None:
        return "", ""

    return copied_notebook_guid, copied_note_guid
Пример #4
0
def view_notebook_detail(request):
    if request.method == "POST":
        notes_values = ""
        try:
            user_obj = User.objects.get(username=request.user.get_username())
            evernote_token = user_obj.evernotecredential.evernote_token
            client = get_evernote_client(evernote_token)
            note_store = client.get_note_store()
            userStore = client.get_user_store()
            updated_filter = NoteFilter(
                notebookGuid=request.POST.get("guid_", ""))
            offset = 0
            max_notes = 10
            result_spec = NotesMetadataResultSpec(includeTitle=True)
            notes = note_store.findNotesMetadata(updated_filter, offset,
                                                 max_notes, result_spec)
            notes_values = notes.notes
        except Exception as e:
            print "{}:{}".format(e.args, e.message)
            raise

        return render(
            request, 'notes.html', {
                'notes': notes_values,
                'notebook_id': request.POST.get("guid_", ""),
                'username': request.user.get_username()
            })
Пример #5
0
def get_notes():
    auth_token = request.args.get('auth_token')
    if not auth_token:
        return

    notebook = request.args.get('notebook')
    if not notebook:
        return

    client = EvernoteClient(token=auth_token)
    note_store = client.get_note_store()

    offset = 0
    max_notes = 1000
    filter = NoteFilter(order=Types.NoteSortOrder.UPDATED,
                        notebookGuid=notebook)
    result_spec = NotesMetadataResultSpec(includeTitle=True)
    metadata = note_store.findNotesMetadata(auth_token, filter, offset,
                                            max_notes, result_spec)

    notes = []
    for n in metadata.notes:
        content = note_store.getNoteContent(auth_token, n.guid)
        notes.append({
            'guid': n.guid,
            'content': unicode(ENMLToHTML(content)),
            'title': n.title
        })

    return jsonify(notes=notes)
Пример #6
0
def getToDos(day):
    dev_token = getToken(False)
    client = EvernoteClient(token=dev_token, sandbox=False)
    notestore = client.get_note_store()
    ToDoTags = getToDoTags(dev_token, notestore)
    dayGuid = getDayTag(day, notestore)
    myfilter = NoteFilter()
    spec = NotesMetadataResultSpec()
    spec.includeTitle = True
    mylist = []
    noteguids = {}
    TODOLIST = dict()

    notebody = ""

    for tag, guid in ToDoTags.iteritems():
        mylist = []
        mylist.append(guid)
        mylist.append(dayGuid)
        myfilter.tagGuids = mylist
        notes = notestore.findNotesMetadata(dev_token, myfilter, 0, 100, spec)
        TODOLIST[tag] = []
        for note in notes.notes:
            TODOLIST[tag].append(note.title)

    return TODOLIST
Пример #7
0
def list_notes(note_store, notebook):

    filter = NoteFilter(notebookGuid=notebook.guid)
    spec = NotesMetadataResultSpec(includeTitle=True,
                                   includeContentLength=True,
                                   includeCreated=True,
                                   includeUpdated=True)

    notes = []
    offset = 0
    remain = EDAM_USER_NOTES_MAX

    while remain > 0:
        notes_list = note_store.findNotesMetadata(filter, offset, remain, spec)

        # See http://dev.evernote.com/doc/reference/NoteStore.html#Struct_NotesMetadataList
        remain = notes_list.totalNotes - (notes_list.startIndex +
                                          len(notes_list.notes))
        offset += len(notes_list.notes)

        notes.extend(notes_list.notes)

    for note in notes:
        created_time = datetime.datetime.fromtimestamp(note.created *
                                                       TIMESTAMP_RESOLUTION)
        updated_time = datetime.datetime.fromtimestamp(note.updated *
                                                       TIMESTAMP_RESOLUTION)
        title = note.title.decode('utf-8')
        print(u'  {} ({}) ctime={} mtime={}'.format(title, note.guid,
                                                    created_time,
                                                    updated_time))
Пример #8
0
 def defaultSearchFilter(self, notebook):
     # `order = 1' -> order by created
     # `order = 2' -> order by updated
     # @see NoteStoreOrder at https://dev.evernote.com/doc/reference/Types.html
     searchFilter = NoteFilter(order=2,
                               ascending=False,
                               notebookGuid=notebook.guid)
     return searchFilter
Пример #9
0
 def get_notes_with_tag(self, tag):
     """ Gets all the notes with the tag "tag"
     """
     notestore = self._get_note_store()
     allTags = notestore.listTags(self.oauth_token)
     tag = [x for x in allTags if x.name == tag][0]
     nFilter = NoteFilter(tagGuids=[tag.guid])
     notes = notestore.findNotes(self.oauth_token, nFilter, 0, 10)
     return notes.notes
Пример #10
0
    def __get_all_notes_metadata_from_notebook(self, notebook_guid, note_store,
                                               token):
        notes_filter = NoteFilter(notebookGuid=notebook_guid)

        spec = NotesMetadataResultSpec()
        spec.includeTitle = True

        allNotesFromNotebook = note_store.findNotesMetadata(
            token, notes_filter, 0, 250, spec)
        return allNotesFromNotebook.notes
 def retrieve_note_content(self):
     note_filter = NoteFilter(order=2,
                              notebookGuid=self.get_notebook_guid())
     result_spec = NotesMetadataResultSpec(includeTitle=True)
     notesMetadata = self._note_store.findNotesMetadata(
         note_filter, 0, 1, result_spec)
     if notesMetadata.notes:
         note_guid = notesMetadata.notes[0].guid
         return self._note_store.getNoteContent(note_guid)
     return 'ERROR: There are no notes in the notebook.'
Пример #12
0
    def search(self, title=None, max_results=1):
        """ bumble through evernote's weird api to find a note. """
        if title:
            title = "intitle:'{title}'".format(title=title)

        notefilter = NoteFilter(order=NoteSortOrder.UPDATED, words=title)
        finder = self.store.findNotesMetadata(notefilter, 0, max_results,
                                              NotesMetadataResultSpec())
        notes = finder.notes
        if notes:
            return [note.guid for note in finder.notes]
Пример #13
0
 def getnotes(self, auth_token, nb_guid, fun):
     spec = NotesMetadataResultSpec()
     spec.includeTitle = True
     filter = NoteFilter()
     filter.notebookGuid = nb_guid
     note_store = self.client.get_note_store()
     notelist = []
     for i in range(0, 500, 250):
         notes = note_store.findNotesMetadata(auth_token, filter, i,
                                              i + 250, spec)
         notelist.extend([fun(n) for n in notes.notes])
     return notelist
Пример #14
0
    def get_note_dict_in_tag(self, tagname):
        tags = self.note_store.listTags(self.auth_token)
        tag_guid = None
        for t in tags:
            if t.name == tagname:
                tag_guid = t.guid

        if not tag_guid:
            raise NameError("tag not found " + tagname)

        return self.get_note_dict_in_filterlist(
            [NoteFilter(tagGuids=[tag_guid])])
 def retrieve_note(self):
     note_filter = NoteFilter(order=2,
                              notebookGuid=self.get_notebook_guid())
     result_spec = NotesMetadataResultSpec(includeTitle=True)
     notesMetadata = self._note_store.findNotesMetadata(
         note_filter, 0, 1, result_spec)
     if notesMetadata.notes:
         note_guid = notesMetadata.notes[0].guid
         retrieved_note = self._note_store.getNote(note_guid, False, False,
                                                   True, False)
         for resource in retrieved_note.resources:
             print resource
Пример #16
0
 def find_notes_filter_by_tag_guids(self, guids_list):
     evernote_filter = NoteFilter()
     evernote_filter.ascending = False
     evernote_filter.tagGuids = guids_list
     spec = NotesMetadataResultSpec()
     spec.includeTitle = True
     note_list = self.noteStore.findNotesMetadata(self.token,
                                                  evernote_filter, 0, 10000,
                                                  spec)
     guids = []
     for note in note_list.notes:
         guids.append(note.guid)
     return guids
Пример #17
0
    def list_notes(self, notebook):
        # ノート検索条件を指定。ノートブックのIDを指定。更新日でソート
        note_filter = NoteFilter()
        note_filter.notebookGuid = notebook.guid
        note_filter.order = NoteSortOrder.UPDATED

        # ノート検索結果のフォーマットを指定。タイトルを含む
        result_format = NotesMetadataResultSpec()
        result_format.includeTitle = True

        # ノートのメタデータリストを取得
        note_meta_list = self.note_store.findNotesMetadata(note_filter, 0, 10, result_format)
        return [Note(self, note_meta) for note_meta in note_meta_list.notes]
Пример #18
0
    def getsContent(self, limit):
        self.getsNoteBooks()
        # 取最近4条笔记
        article_list = {}
        for guid, _ in self.notebook_guids.items():
            searchfilter = NoteFilter(notebookGuid=guid)
            offset = 0
            article_list[guid] = self.note_store.findNotes(
                searchfilter, offset, limit)

        if not bool(article_list):
            #print(notebookname+"的笔记本中没有数据")
            return False

        return_data = []
        for notebook_guid, notebook_article in article_list.items():
            for row in notebook_article.notes:
                data = {}
                if True != row.active: continue
                data["deleted"] = row.deleted  # None or True
                data["guid"] = row.guid
                data["title"] = row.title
                data["content"] = row.content
                data["created"] = formatDate(row.created)
                data["updated"] = formatDate(row.updated)
                content = self.note_store.getNoteContent(row.guid)
                content = xml2Html(content)
                data["notebook_guid"] = notebook_guid
                data["notebook_name"] = self.notebook_guids[notebook_guid]
                data["content"] = content
                return_data.append(data)

                if None != row.resources:
                    for image in row.resources:
                        suffix = image.mime[image.mime.find("/") + 1:]
                        '''
						print(image.width)
						print(image.height)
						'''
                        #生成图片
                        binary_data = self.note_store.getResourceData(
                            image.guid)
                        file_name = hashlib.md5(binary_data).hexdigest()
                        file_path = "./html/upload/" + file_name + "." + suffix
                        image = open(file_path, 'wb')
                        image.write(bytes(binary_data))
                        image.close()
        return_data = sorted(return_data,
                             key=lambda keys: keys['created'],
                             reverse=True)
        return return_data
Пример #19
0
    def get_note_dict_in_notebook(self, notebook_name="", stack_name=""):
        notebooks = self.note_store.listNotebooks()
        print "Found ", len(notebooks), " notebooks:"

        notebook_guids = []
        for notebook in notebooks:
            if (notebook.stack and stack_name and notebook.stack.endswith(stack_name)) or \
                (notebook.name and notebook_name and notebook.name.endswith(notebook_name)):
                print notebook.name
                # notebook = self.note_store.getNotebook(notebook.guid)
                notebook_guids.append(notebook.guid)

        return self.get_note_dict_in_filterlist(
            [NoteFilter(notebookGuid=guid) for guid in notebook_guids])
Пример #20
0
def get_all_notes_in_notebook(notebook):
    guid = notebook.guid
    filter = NoteFilter(notebookGuid=guid)

    #def __init__(self, includeTitle=None, includeContentLength=None, includeCreated=None, includeUpdated=None, includeDeleted=None, includeUpdateSequenceNum=None, includeNotebookGuid=None, includeTagGuids=None, includeAttributes=None, includeLargestResourceMime=None, includeLargestResourceSize=None,):
    resultsSpec = NotesMetadataResultSpec(includeTitle=True)
    fetch_results = _get_note_store().findNotesMetadata(
        filter, 0, 10, resultsSpec)
    real_notes = []
    for n in fetch_results.notes:
        #note = _get_note_store().getNote(n.guid, withContent=True, withResourcesData=False, withResourcesRecognition=False, withResourcesAlternateData=False)
        note = _get_note_store().getNote(n.guid, True, False, False, False)
        real_notes.append(note)
    return real_notes
Пример #21
0
    def sync_notebook_notes(self, notebook):
        if not self.should_sync_notebook_notes(notebook):
            return

        logging.info('sync notebook: ' + notebook.name)
        note_filter = NoteFilter()
        note_filter.notebookGuid = notebook.guid

        note_list = []
        current_offset = 0
        while True:
            logging.info('sync notebook: ' + notebook.name + ' - ' +
                         str(current_offset))
            note_batch = self.note_store.findNotes(note_filter, current_offset,
                                                   NOTES_LOAD_BATCH_SIZE + 1)
            if len(note_batch.notes) < NOTES_LOAD_BATCH_SIZE + 1:
                note_list += note_batch.notes
                break
            else:
                note_list += note_batch.notes[:-1]
                current_offset += NOTES_LOAD_BATCH_SIZE

        if notebook.guid in self.notebook_notes:
            prev_notes = self.notebook_notes[notebook.guid].copy()
        else:
            prev_notes = {}
        new_notes = {}

        for note in note_list:
            new_notes[note.guid] = note
            if note.guid not in prev_notes:
                logging.info('sync new note: ' + note.title)
                self.add_notebook_note_to_fuse(note)
            elif note.title != prev_notes[note.guid].title:
                logging.info('sync note renamed: ' +
                             prev_notes[note.guid].title + '->' + note.title)
                self.rename_notebook_note_in_fuse(note.notebookGuid,
                                                  prev_notes[note.guid].title,
                                                  note.title)

        for prev_note_guid, prev_note in prev_notes.items():
            if prev_note_guid not in new_notes:
                logging.info('sync: note deleted: ' + prev_note.name)
                self.remove_notebook_note_from_fuse(prev_note.notebookGuid,
                                                    prev_note_guid)

        self.notebook_notes[notebook.guid] = new_notes
        logging.info('sync notebook - done: ' + notebook.name)
        self.notebooks_notes_sync_time[notebook.guid] = time()
Пример #22
0
def et_list_notes(**kwa):
    """
    Can we get a list of notes?
    """
    if kwa['d']:
        pdb.set_trace()
    client = get_authorized_client('full')
    note_store = client.get_note_store()
    flt = NoteFilter(words="")
    spec = NotesMetadataResultSpec(includeTitle=True)
    md_list = note_store.findNotesMetadata(flt, 0, 250, spec)

    for note in md_list.notes:
        print(note.title)
        print("   {}".format(note.guid))
Пример #23
0
 def _iter_all_notes(self):
     """Iterate all notes"""
     offset = 0
     while True:
         note_list = self.note_store.findNotes(
             self.auth_token,
             NoteFilter(
                 order=NoteSortOrder.UPDATED,
                 ascending=False,
             ), offset, EDAM_USER_NOTES_MAX)
         for note in note_list.notes:
             yield note
         offset = note_list.startIndex + len(note_list.notes)
         if note_list.totalNotes - offset <= 0:
             break
Пример #24
0
def main():
    """Generates tag cloud using the Evernote API and word_cloud library"""
    setup_logging()
    print_version()
    args = command_line_args()
    verbose, sandbox, image_file, image_width, image_height, mask_file, font_file, max_tags, horizontal_tags, tag_scaling, tag_color_scheme, evernote_auth_token = parse_args(
        args)
    tags, note_collection_counts = retrieve_tags_and_note_collection_counts(
        evernote_auth_token, sandbox, NoteFilter())
    tag_counts = determine_tag_counts(tags, note_collection_counts)
    tag_cloud = generate_tag_cloud(image_width, image_height, max_tags,
                                   horizontal_tags, tag_scaling,
                                   tag_color_scheme, mask_file, font_file,
                                   tag_counts, verbose)
    save_tag_cloud(tag_cloud, image_file)
Пример #25
0
 def find_notes(self,
                count=1,
                keywords=None,
                notebook_guid=None,
                tag_guids=None,
                order=ttypes.NoteSortOrder.CREATED):
     spec = NotesMetadataResultSpec(includeTitle=True,
                                    includeUpdated=True,
                                    includeTagGuids=True)
     note_filter = NoteFilter(words=keywords,
                              order=order,
                              notebookGuid=notebook_guid,
                              tagGuids=tag_guids)
     return self.noteStore.findNotesMetadata(self.client.token, note_filter,
                                             0, count, spec)
Пример #26
0
def _get_evernote_data():
    """Helper method that gets data.

    Update to give more control to which notes you get.
    """
    # Set up the NoteStore client
    client = EvernoteClient(token=DEV_TOKEN)
    note_store = client.get_note_store()

    note_filter = NoteFilter(order=NoteSortOrder.UPDATED)
    result_spec = NotesMetadataResultSpec(includeTitle=True,
                                          includeCreated=True)

    # Make API call.
    return note_store.findNotesMetadata(DEV_TOKEN, note_filter, 0, 100,
                                        result_spec)
Пример #27
0
    def runBackup(self):
        self.initClient()

        notebooks = self.noteStore.listNotebooks(self.token)

        notebookIndex = 0
        for notebook in notebooks:
            self.progressHandler.startTask('Backing up notebook ' +
                                           notebook.name)

            filt = NoteFilter()
            filt.notebookGuid = notebook.guid
            notelist = self.noteStore.findNotes(self.token, filt, 0, 100)

            if not len(notelist.notes): continue

            notes = []

            self.progressHandler.startTask('Notebook: ' + notebook.name)

            i = 0
            for note in notelist.notes:
                i += 1
                notes.append(self.getNote(notebook.name, note.guid))

                notesProgress = float(i) / len(notelist.notes) / len(notebooks)
                notebookProgress = float(notebookIndex) / len(notebooks)
                self.progressHandler.setProgress(notesProgress +
                                                 notebookProgress)

            if self.add_note_files:
                for note in notes:
                    filename = note['title'] + '.xml'
                    self.output.set(filename,
                                    note['content_raw'],
                                    bucket=notebook.name + '/notes')

            if self.create_json:
                jsonData = json.dumps(notes)
                self.output.set('data.json', jsonData, bucket=notebook.name)

            if self.create_csv:
                self.writeCsvData(notebook.name, 'data.csv', notes)

            notebookIndex += 1
Пример #28
0
def get_ev_notes():
    dev_token = app.config['EN_DEV_TOKEN']
    notestore_url = app.config['EN_NOTESTORE_URL']
    nb_guid = app.config['EN_NB_GUID']

    client = EvernoteClient(token=dev_token)
    note_store = client.get_note_store()

    filt = NoteFilter()
    filt.notebookGuid = nb_guid

    spec = NotesMetadataResultSpec()
    spec.includeTitle = True

    notemetalist = note_store.findNotesMetadata(dev_token, filt, 0, 100, spec)
    notes = []
    for note_data in notemetalist.notes:
        note = note_store.getNote(dev_token, note_data.guid, True, True, True,
                                  True)

        title = note.title
        author = note.attributes.author
        date = note.updated
        url = note.attributes.sourceURL
        cont = note.content
        note_tags = []

        tag_guids = note.tagGuids
        if tag_guids is not None:
            for tag_guid in tag_guids:
                tag = note_store.getTag(dev_token, tag_guid)
                note_tags.append({'guid': tag_guid, 'name': tag.name})

        notes.append({
            'guid': note_data.guid,
            'title': title,
            'date_modified': date,
            'author': author,
            'content': cont,
            'tags': note_tags
        })

    #print notes
    return dumps(notes)
Пример #29
0
def getEvernoteResources(config, notebook_guid):
    resources = []
    client = EvernoteClient(token=config["en_devtoken"],
                            sandbox=config["en_sandbox"] == "True")
    noteStore = client.get_note_store()
    # get notes from a specific notebook
    noteFilter = NoteFilter(notebookGuid=notebook_guid)
    result_spec = NotesMetadataResultSpec(includeTitle=True)

    filteredNotes = noteStore.findNotesMetadata(noteFilter, 0, 10, result_spec)
    notebooks = noteStore.listNotebooks()

    for n in filteredNotes.notes:
        print n.title, n.guid
        fullnote = noteStore.getNote(n.guid, True, True, False, True)
        for r in fullnote.resources:
            print r.guid
            resources += [(r.guid, r.data.body)]

    return resources
Пример #30
0
def find_note(keywords):
    """
    Find note content by keyword.
    :param keywords: (str) keyword for search.
    :return: (str) first result content.
    """
    from evernote.edam.notestore.ttypes import NoteFilter, NotesMetadataResultSpec
    dev_token, note_store = connect_note()
    search = NoteFilter()
    search.words = keywords
    search.ascending = False

    spec = NotesMetadataResultSpec()
    spec.includeTitle = True

    our_note_list = note_store.findNotesMetadata(dev_token, search, 0, 100,
                                                 spec)
    note_content = note_store.getNoteContent(dev_token,
                                             our_note_list.notes[0].guid)
    return note_content