Example #1
0
    def create_evernote_notes(self, evernote_guids=None, use_local_db_only=False):
        """
        Create EvernoteNote objects from Evernote GUIDs using EvernoteNoteFetcher.getNote().
        Will prematurely return if fetcher.getNote fails

        :rtype : EvernoteNoteFetcherResults
        :param evernote_guids:
        :param use_local_db_only: Do not initiate API calls
        :return: EvernoteNoteFetcherResults
        """
        if not hasattr(self, 'evernote_guids') or evernote_guids:
            self.evernote_guids = evernote_guids
        if not use_local_db_only:
            self.check_ancillary_data_up_to_date()
        action_str_base = 'Create'
        action_str = 'Creation Of'
        info = stopwatch.ActionInfo(action_str, 'Evernote Notes', report_if_empty=False)
        tmr = stopwatch.Timer(evernote_guids, info=info,
                              label='Add\\Evernote-%sNotes' % (action_str_base))
        fetcher = EvernoteNoteFetcher(self, use_local_db_only=use_local_db_only)
        if not evernote_guids:
            fetcher.results.Status = EvernoteAPIStatus.EmptyRequest; return fetcher.results
        if in_anki():
            fetcher.evernoteQueryTags = SETTINGS.EVERNOTE.QUERY.TAGS.fetch().replace(',', ' ').split()
            fetcher.keepEvernoteTags = SETTINGS.ANKI.TAGS.KEEP_TAGS.fetch()
            fetcher.deleteQueryTags = SETTINGS.ANKI.TAGS.DELETE_EVERNOTE_QUERY_TAGS.fetch()
            fetcher.tagsToDelete = SETTINGS.ANKI.TAGS.TO_DELETE.fetch().replace(',', ' ').split()
        for evernote_guid in self.evernote_guids:
            if not fetcher.getNote(evernote_guid):
                return fetcher.results
            tmr.reportSuccess()
            tmr.step(fetcher.result.Note.FullTitle)
        tmr.Report()
        return fetcher.results
Example #2
0
def anknotes_onload():
    # write_file_contents('%s: anknotes_onload' % __name__, 'load')
    if in_anki():
        addHook("profileLoaded", anknotes_profile_loaded)
        if ANKNOTES.HOOKS.DB:
            DB.scalar = anknotes_scalar # wrap(DB.scalar, anknotes_scalar, "before")
            DB.execute = wrap(DB.execute, anknotes_execute, "before")
        if ANKNOTES.HOOKS.SEARCH:
            addHook("search", anknotes_search_hook)
            Finder._query = wrap(Finder._query, anknotes_finder_query_wrap, "around")
            Finder.findCards = wrap(Finder.findCards, anknotes_finder_findCards_wrap, "around")
            browser.Browser._systemTagTree = wrap(browser.Browser._systemTagTree, anknotes_browser_tagtree_wrap, "around")
        # write_file_contents('%s: anknotes_onload: anknotes_setup_menu' % __name__, 'load')
        menu.anknotes_setup_menu()
        Preferences.setupOptions = wrap(Preferences.setupOptions, settings.setup_evernote)
Example #3
0
    def create_evernote_notes(self,
                              evernote_guids=None,
                              use_local_db_only=False):
        """
        Create EvernoteNote objects from Evernote GUIDs using EvernoteNoteFetcher.getNote().
        Will prematurely return if fetcher.getNote fails

        :rtype : EvernoteNoteFetcherResults
        :param evernote_guids:
        :param use_local_db_only: Do not initiate API calls
        :return: EvernoteNoteFetcherResults
        """
        if not hasattr(self, 'evernote_guids') or evernote_guids:
            self.evernote_guids = evernote_guids
        if not use_local_db_only:
            self.check_ancillary_data_up_to_date()
        action_str_base = 'Create'
        action_str = 'Creation Of'
        info = stopwatch.ActionInfo(action_str,
                                    'Evernote Notes',
                                    report_if_empty=False)
        tmr = stopwatch.Timer(evernote_guids,
                              info=info,
                              label='Add\\Evernote-%sNotes' %
                              (action_str_base))
        fetcher = EvernoteNoteFetcher(self,
                                      use_local_db_only=use_local_db_only)
        if not evernote_guids:
            fetcher.results.Status = EvernoteAPIStatus.EmptyRequest
            return fetcher.results
        if in_anki():
            fetcher.evernoteQueryTags = SETTINGS.EVERNOTE.QUERY.TAGS.fetch(
            ).replace(',', ' ').split()
            fetcher.keepEvernoteTags = SETTINGS.ANKI.TAGS.KEEP_TAGS.fetch()
            fetcher.deleteQueryTags = SETTINGS.ANKI.TAGS.DELETE_EVERNOTE_QUERY_TAGS.fetch(
            )
            fetcher.tagsToDelete = SETTINGS.ANKI.TAGS.TO_DELETE.fetch(
            ).replace(',', ' ').split()
        for evernote_guid in self.evernote_guids:
            if not fetcher.getNote(evernote_guid):
                return fetcher.results
            tmr.reportSuccess()
            tmr.step(fetcher.result.Note.FullTitle)
        tmr.Report()
        return fetcher.results
Example #4
0
def anknotes_onload():
    # write_file_contents('%s: anknotes_onload' % __name__, 'load')
    if in_anki():
        addHook("profileLoaded", anknotes_profile_loaded)
        if ANKNOTES.HOOKS.DB:
            DB.scalar = anknotes_scalar  # wrap(DB.scalar, anknotes_scalar, "before")
            DB.execute = wrap(DB.execute, anknotes_execute, "before")
        if ANKNOTES.HOOKS.SEARCH:
            addHook("search", anknotes_search_hook)
            Finder._query = wrap(Finder._query, anknotes_finder_query_wrap,
                                 "around")
            Finder.findCards = wrap(Finder.findCards,
                                    anknotes_finder_findCards_wrap, "around")
            browser.Browser._systemTagTree = wrap(
                browser.Browser._systemTagTree, anknotes_browser_tagtree_wrap,
                "around")
        # write_file_contents('%s: anknotes_onload: anknotes_setup_menu' % __name__, 'load')
        menu.anknotes_setup_menu()
        Preferences.setupOptions = wrap(Preferences.setupOptions,
                                        settings.setup_evernote)
Example #5
0
# -*- coding: utf-8 -*-
import re
from fnmatch import fnmatch
import inspect
from collections import defaultdict, Iterable
from bs4 import UnicodeDammit
import string
from datetime import datetime


### Anknotes Imports
from anknotes.imports import in_anki

### Anki Imports
if in_anki():
    from aqt import mw

class SafeDict(defaultdict):
    def __init__(self, *a, **kw):
        for i, arg in enumerate(a):
            if arg is None:
                raise TypeError("SafeDict arg %d is NoneType" % (i + 1))
        dct = dict(*a, **kw)
        super(self.__class__, self).__init__(self.__missing__, dct)

    def __getitem__(self, key):
        item = super(self.__class__, self).__getitem__(key)
        if isinstance(item, dict):
            item = SafeDict(item)
        return item
Example #6
0
 def mw(self):
     global mw
     if mw is None and in_anki():
         from aqt import mw
     return mw
Example #7
0
 def mw(self):
     global mw
     if mw is None and in_anki():
         from aqt import mw
     return mw