読者はそれが起こる

まあ、実際には、夕方に私はそれがpythonで起こるリーダーをコンパイルしました。 フォーチュン形式で引用符を保存する方法を知っており(Dはチェックしませんでした)、ファイルまたは端末に出力します。







#!/usr/bin/env python # -*- coding: utf-8 -*- #Public domain '''Ithappens - show random quote''' #  python2 from __future__ import unicode_literals from __future__ import print_function from textwrap import fill import os,sys from lxml import etree if sys.version_info[0] == 2: # open from codecs import open def getTerminalSize(): #http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python '''Get tuple of terminal size''' env = os.environ def ioctl_GWINSZ(fd): try: import fcntl, termios, struct cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,'1234')) except: return None return cr cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2) if not cr: try: fd = os.open(os.ctermid(), os.O_RDONLY) cr = ioctl_GWINSZ(fd) os.close(fd) except: pass if not cr: try: cr = (env['LINES'], env['COLUMNS']) except: cr = (25, 80) return int(cr[1]), int(cr[0]) def print_quote(url,file=sys.stdout, fortune=False): '''print quote to given file''' path='/body/table/tr/td[@class="main"]/table[@class="content"]/tr/td[@class="text"]/div[@class="text"]/p[@class="text"]' parser = etree.HTMLParser() tree = etree.parse(url,parser) title = tree.find('/head/title').text.split('—')[1].strip() w,h = getTerminalSize() charno = (w-len(title)+2)/2 print ('{chars} {title} {chars}'.format(title=title, chars='#'*charno)) elem=tree.find(path) for i in elem.iter(): if i.text is not None: text, end = i.text, i.tail if i.tail is not None else '' elif i.tail is not None: text,end = i.tail, '' else: continue print (fill(text + end, w),file=file) if fortune: print ('%',file=file) if __name__ == '__main__': usage = """usage: {file} <args> <quote ID> -h: Show help message -f: write a fortune file format -o <file> write to file (default is stdout) If no IDs passed, then print random quote""".format(file=os.path.basename(sys.argv[0])) fortune = False file = False quotes = [] for arg in sys.argv[1:]: if arg == '-f': #fortune fortune = True elif arg == '-o': #file file = True elif arg in ('--usage','--help','-h'): print (usage) exit() elif file is True: file = arg else: try: int(arg) except ValueError: print ('Failed to parse Quote ID argument - seems like it is not int',file=sys.stderr) exit() else: quotes.append(arg) if not file: out=sys.stdout elif file is True: print('Output to file requested in -o but no file specified') exit() else: out = open(file, 'at',encoding='utf-8') if not quotes: print_quote('http://ithappens.ru/random/',file=out, fortune=fortune) for q in quotes: print_quote('http://ithappens.ru/story/{id}'.format(id=q),file=out, fortune=fortune) out.close()
      
      







の使用

 chmod +x ithappens.py ./ithappens.py
      
      






All Articles