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
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)
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
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)
# -*- 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
def mw(self): global mw if mw is None and in_anki(): from aqt import mw return mw