def test_kindle_function(self): from polyglot import kindle sender = kindle( log=log, settings=settings, urlOrPath="http://www.thespacedoctor.co.uk/blog/2016/09/26/mysqlSucker-index.html", header='<a href="http://www.thespacedoctor.co.uk">thespacedoctor</a>', footer='<a href="http://www.thespacedoctor.co.uk">thespacedoctor</a>' ) success = sender.send()
def test_kindle_function_exception(self): from polyglot import kindle try: this = kindle( log=log, settings=settings, fakeKey="break the code" ) this.get() assert False except Exception, e: assert True print str(e)
def send_webarticles( self): """*Send all new webarticles found in the reading-list database table to kindle device and/or apps* **Return:** - None **Usage:** To send only the webarticles (not imported PDFs) to your kindle run the code: .. code-block:: python from headjack.read import sendToKindle sender = sendToKindle( log=log, settings=settings, dbConn=dbConn ) sender.send_webarticles() """ self.log.info('starting the ``send_webarticles`` method') articlesToSend = self._get_data_to_send(docType="web") for article in articlesToSend: articleId = article["primaryId"] original = article["url"] footer = """%(articleId)s""" % locals( ) from polyglot import kindle sender = kindle( log=self.log, settings=self.settings, urlOrPath=article["url"], title=article["pdfName"].replace(".pdf", "").replace("_", " "), header=footer, footer=footer ) success = sender.send() if success == True or success == 404: self._update_database_for_sent_item( article["primaryId"], success) self.log.info('completed the ``send_webarticles`` method') return None
def main(arguments=None): """ *The main function used when ``cl_utils.py`` is run as a single script from the cl, or when installed as a cl command* """ # setup the command-line util settings su = tools( arguments=arguments, docString=__doc__, logLevel="WARNING", options_first=False, projectName="polyglot" ) arguments, settings, log, dbConn = su.setup() # unpack remaining cl arguments using `exec` to setup the variable names # automatically for arg, val in arguments.iteritems(): if arg[0] == "-": varname = arg.replace("-", "") + "Flag" else: varname = arg.replace("<", "").replace(">", "") if isinstance(val, str) or isinstance(val, unicode): exec(varname + " = '%s'" % (val,)) else: exec(varname + " = %s" % (val,)) if arg == "--dbConn": dbConn = val log.debug('%s = %s' % (varname, val,)) ## START LOGGING ## startTime = times.get_now_sql_datetime() log.info( '--- STARTING TO RUN THE cl_utils.py AT %s' % (startTime,)) # for k, v in locals().iteritems(): # print k, v if not destinationFolder: destinationFolder = os.getcwd() if not filenameFlag: filenameFlag = False if not cleanFlag: readability = False else: readability = True if init: from os.path import expanduser home = expanduser("~") filepath = home + "/.config/polyglot/polyglot.yaml" try: cmd = """open %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass try: cmd = """start %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass if pdf and url: filepath = printpdf.printpdf( log=log, settings=settings, url=url, folderpath=destinationFolder, title=filenameFlag, append=False, readability=readability ).get() if html and url: cleaner = htmlCleaner.htmlCleaner( log=log, settings=settings, url=url, outputDirectory=destinationFolder, title=filenameFlag, # SET TO FALSE TO USE WEBPAGE TITLE, style=cleanFlag, # add polyglot's styling to the HTML document metadata=True, # include metadata in generated HTML (e.g. title), h1=True # include title as H1 at the top of the doc ) filepath = cleaner.clean() if epub: if url: iinput = url else: iinput = docx from polyglot import ebook epub = ebook( log=log, settings=settings, urlOrPath=iinput, title=filenameFlag, bookFormat="epub", outputDirectory=destinationFolder ) filepath = epub.get() if mobi: if url: iinput = url else: iinput = docx from polyglot import ebook mobi = ebook( log=log, settings=settings, urlOrPath=iinput, title=filenameFlag, bookFormat="mobi", outputDirectory=destinationFolder, ) filepath = mobi.get() if kindle: if url: iinput = url else: iinput = docx from polyglot import kindle sender = kindle( log=log, settings=settings, urlOrPath=iinput, title=filenameFlag ) success = sender.send() if kindleNB2MD: basename = os.path.basename(notebook) extension = os.path.splitext(basename)[1] filenameNoExtension = os.path.splitext(basename)[0] if destinationFolder: filepath = destinationFolder + "/" + filenameNoExtension + ".md" else: filepath = notebook.replace("." + extension, ".md") from polyglot.markdown import kindle_notebook nb = kindle_notebook( log=log, kindleExportPath=notebook, outputPath=filepath ) nb.convert() if openFlag: try: cmd = """open %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass try: cmd = """start %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass if "dbConn" in locals() and dbConn: dbConn.commit() dbConn.close() ## FINISH LOGGING ## endTime = times.get_now_sql_datetime() runningTime = times.calculate_time_difference(startTime, endTime) log.info('-- FINISHED ATTEMPT TO RUN THE cl_utils.py AT %s (RUNTIME: %s) --' % (endTime, runningTime, )) return
def send_pdfs( self): """*send pdfs* **Key Arguments:** # - **Return:** - None **Usage:** .. todo:: - add usage info - create a sublime snippet for usage - update package tutorial if needed .. code-block:: python usage code """ from headjack.read import get_pdf_paths self.log.info('starting the ``send_pdfs`` method') pdfsToSend = self._get_data_to_send(docType="pdf") pdfDict = get_pdf_paths( log=self.log, settings=self.settings ) for pdf in pdfsToSend: # TEST IF REFLOW REQUIRED if pdf["pdfName"] in pdfDict: docx = self._trigger_docx_generation(pdfDict[pdf["pdfName"]]) if docx: articleId = pdf["primaryId"] original = pdf["url"] footer = """%(articleId)s | <a href="%(original)s">search for original webpage</a>""" % locals( ) from polyglot import kindle sender = kindle( log=self.log, settings=self.settings, urlOrPath=docx, title=pdf["pdfName"].replace( ".pdf", "").replace("_", " "), header=footer, footer=footer ) success = sender.send() if success == True or success == 404: self._update_database_for_sent_item( articleId, success) os.remove(docx) self.log.info('completed the ``send_pdfs`` method') return None
def main(arguments=None): """ *The main function used when ``cl_utils.py`` is run as a single script from the cl, or when installed as a cl command* """ # setup the command-line util settings su = tools(arguments=arguments, docString=__doc__, logLevel="WARNING", options_first=False, projectName="polyglot") arguments, settings, log, dbConn = su.setup() # unpack remaining cl arguments using `exec` to setup the variable names # automatically for arg, val in arguments.iteritems(): if arg[0] == "-": varname = arg.replace("-", "") + "Flag" else: varname = arg.replace("<", "").replace(">", "") if isinstance(val, str) or isinstance(val, unicode): exec(varname + " = '%s'" % (val, )) else: exec(varname + " = %s" % (val, )) if arg == "--dbConn": dbConn = val log.debug('%s = %s' % ( varname, val, )) ## START LOGGING ## startTime = times.get_now_sql_datetime() log.info('--- STARTING TO RUN THE cl_utils.py AT %s' % (startTime, )) # for k, v in locals().iteritems(): # print k, v if not destinationFolder: destinationFolder = os.getcwd() if not filenameFlag: filenameFlag = False if not cleanFlag: readability = False else: readability = True if init: from os.path import expanduser home = expanduser("~") filepath = home + "/.config/polyglot/polyglot.yaml" try: cmd = """open %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass try: cmd = """start %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass if pdf and url: filepath = printpdf.printpdf(log=log, settings=settings, url=url, folderpath=destinationFolder, title=filenameFlag, append=False, readability=readability).get() if html and url: cleaner = htmlCleaner.htmlCleaner( log=log, settings=settings, url=url, outputDirectory=destinationFolder, title=filenameFlag, # SET TO FALSE TO USE WEBPAGE TITLE, style=cleanFlag, # add polyglot's styling to the HTML document metadata=True, # include metadata in generated HTML (e.g. title), h1=True # include title as H1 at the top of the doc ) filepath = cleaner.clean() if epub: if url: iinput = url else: iinput = docx from polyglot import ebook epub = ebook(log=log, settings=settings, urlOrPath=iinput, title=filenameFlag, bookFormat="epub", outputDirectory=destinationFolder) filepath = epub.get() if mobi: if url: iinput = url else: iinput = docx from polyglot import ebook mobi = ebook( log=log, settings=settings, urlOrPath=iinput, title=filenameFlag, bookFormat="mobi", outputDirectory=destinationFolder, ) filepath = mobi.get() if kindle: if url: iinput = url else: iinput = docx from polyglot import kindle sender = kindle(log=log, settings=settings, urlOrPath=iinput, title=filenameFlag) success = sender.send() if kindleNB2MD: basename = os.path.basename(notebook) extension = os.path.splitext(basename)[1] filenameNoExtension = os.path.splitext(basename)[0] if destinationFolder: filepath = destinationFolder + "/" + filenameNoExtension + ".md" else: filepath = notebook.replace("." + extension, ".md") from polyglot.markdown import kindle_notebook nb = kindle_notebook(log=log, kindleExportPath=notebook, outputPath=filepath) nb.convert() if openFlag: try: cmd = """open %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass try: cmd = """start %(filepath)s""" % locals() p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) except: pass if "dbConn" in locals() and dbConn: dbConn.commit() dbConn.close() ## FINISH LOGGING ## endTime = times.get_now_sql_datetime() runningTime = times.calculate_time_difference(startTime, endTime) log.info( '-- FINISHED ATTEMPT TO RUN THE cl_utils.py AT %s (RUNTIME: %s) --' % ( endTime, runningTime, )) return