리눅스데스크탑: 오늘의 인용문 표시하기
2018.10.19 10:02
컴퓨터를 켤때마다 매일 인용문이 나오면 좋겠다는 생각을 해봤습니다.
cowsay같은거도 있지만 실없는 소리보다는 뭔가 의미있는 내용이 나오는걸 찾아봤네요
그러다보니 theysaidso.com 에서 매일 서비스하는 인용글 서비스가 있네요
이걸 i3스테이터스 바에 띄우는걸 만들어 봤습니다.
그런데 이 i3스테이터스바를 그려주는 것은 시계등 자주 업데이트해야하는데 그때마다 저 REST서비스를 이용하면 안되겠죠
그래서 간단한 캐싱기법을 생각해봤습니다.
.cache/quotes로 한시간정도 최근의 인용문이 유지되도록 했습니다.
물론 bash상에서도 간단히 될거같은데 다른 파이선스크립트상에서 쓰려고 파이선모듈로 만들었습니다.
다음을 ~/bin에 넣고 conky에서 json으로 표시하면 됩니다.
만일 터미널실행시 표시하고 싶다면 .bashrc 에 quotes라고 추가하세요
먼저 캐시 모듈
cache.py
-------8<-------------------8<-------------------8<-------------------8<-------------------8<------------
import os,sys
import time as tm, datetime as dt
class Cache:
def __init__(self, interval ):
""" Use sys.argv joined by delimeter_ as key """
a = []
a.append(sys.argv[0].split("/")[-1])
a += sys.argv[1:]
self.key = "_".join(a)
self.interval = interval
self.file_name = os.environ['HOME']+"/.cache/"+self.key
def read(self):
value = None # Assume cache is exprired by default
timestamp = -1
try:
f = open(self.file_name, 'r')
content = f.readlines()
line = content[-1].rsplit(' ',1)
value,timestamp = str(line[0]), float(line[1])
except IOError:
pass
if timestamp + self.interval < tm.time(): # means expired
value = None
return value
def write(self, value):
f = open(self.file_name, 'w+')
f.write(str(value) + " " + str(tm.time()))
f.close()
def clear():
os.remove(self.file_name)
quotes 실행화일
(chmod +x quotes 로 실행권한주고 ~/bin에 넣습니다)
-------8<-------------------8<-------------------8<-------------------8<-------------------8<------------
#!/usr/bin/env python
import urllib, json
from cache import Cache
def get_quotes():
""" Read cached data if exists """
q_cache = Cache(3600)
value = q_cache.read()
if value == None:
url="http://quotes.rest/qod.json?category=inspire"
response = urllib.urlopen(url)
data = json.loads(response.read())
try:
value = data["contents"]["quotes"][0]["quote"] + " - " +\
data["contents"]["quotes"][0]["author"]
q_cache.write(value)
except KeyError:
print "key error"
print data
pass # return old value
return value
msg = get_quotes()
print msg
코멘트 0
번호 | 제목 | 작성자 | 작성일 | 조회 |
---|---|---|---|---|
41 | [팁] 구글 주소록 정렬 [2] | 맑은하늘 | 10.14 | 4575 |
40 | Palm Desktop to Google [6] | dow | 10.08 | 3220 |
39 | 갤럭시 S 간단 사용기.. (노란 액정, 하얀 액정) [3] | 상현아빠 | 10.03 | 4205 |
38 | [draft] 팜 to 안드로이드 주소록 옮기기 [7] | 맑은하늘 | 09.29 | 5664 |
37 | 다이어트 방법 공유? [8] | Freedom^^ | 09.16 | 3143 |
36 | [뽐뿌 사이트 / 휴대폰 - 간략 약어 해설] [6] | 맑은하늘 | 09.13 | 4030 |
35 | [팁] 아이폰과 나이키 플러스 [1] | 미케니컬 | 09.06 | 3837 |
34 | 윈모바일 기기 속도향상방법(PDA 포함)-아시는 분도 많을듯 합니다~ [4] | 아브라함 | 09.03 | 3402 |
33 | DIY 철상자를 책 테이블로 [6] | 파리 | 07.16 | 3218 |
32 | 노키아 N5800 하드리셋 방법 [3] | 준용군 | 07.12 | 3373 |
31 | 위룰 하고 싶은데, 미국계정으로 앱스토어 접속해야하나요? [2] | 바보남자 | 07.02 | 3326 |
30 | iBooks 의 화끈한 샘플 양 [9] | 파리 | 06.24 | 3319 |
29 | EKEN M001 안드로이드 타블렛 FAQs [7] | 성야무인 | 06.20 | 3367 |
28 | EKEN M001 안드로이드 타블렛 플리뷰~~~ [17] | 성야무인 | 06.03 | 3736 |
27 | 휴대기기 이북리더 활용 [6] | 마루 | 05.24 | 3343 |
26 | VIA ARM 기반의 중국산 넷북 그리고 그 다양한 OS~~ [11] | 星夜舞人 | 04.26 | 4252 |
25 | 아이팟터치 사용자들을 위한 오페라 앱의 오프라인 저장 기능 [1] | minki | 04.26 | 3540 |
24 | 아이폰 동기화 팁 (재생횟수, 별점 유지하기) | 불량토끼 | 04.16 | 5772 |
23 | 노트북의 트랙패드나 마우스로 팜 그래피티 입력 하기. [2] | 거스파이 | 04.10 | 3803 |
22 | VIA ARM 기반의 중국산 넷북과 그 기기를 최적화 시키는 방법... [15] | 성야무인 | 04.04 | 3742 |