Math equations

Monday, August 5, 2013

신영복님의 감옥으로부터의 사색을 킨들에서 읽어보자.(1)


신영복 선생님께서 홈페이지에 올려두신
감옥으로부터의 사색을 킨들에서 읽기위해 여러 가지 방법을 고민해왔다.


한페이지씩 Push to Kindle을 이용해서 mobi화일로 변환한 뒤에
킨들로 보내보니 깔끔하긴 한데,

247개의 웹페이지를 직접 버튼을 눌러가면서 변환하고 저장하는 것은 몹시 괴로운 일이라,


여러개의 html화일을 mobi화일로 변환하는 방법이 없는지 검색해왔었는데,



calibre로 미디어스 뉴스를 내려받다 문득
1. xml 화일을 직접 만들어
2. Calibre를 이용해 이북으로 변환하는 게 더 손쉬운 방법이 아닐까 하는 생각이 들었다.





먼저 xml화일의 예를 한번 살펴보자.


미디어스 인기기사
http://www.mediaus.co.kr/rss/clickTop.xml
를 참고하면 기사 항목들은 각각 다음과 같은 항목들로 이뤄져있는 것을 알 수 있다.


<item><title>정찬성 조제알도에 TKO패 - 어깨 부상이 막은 챔피언 도전, 아쉽지만 최고였다</title>
<link>
http://www.mediaus.co.kr/news/articleView.html?idxno=36093
</link>
<description>
<![CDATA[
&nbsp;&nbsp;&nbsp;&nbsp; 아시안 파이터 중 최초로 챔피언 벨트를 두를 수 있는 기회를 놓친 정찬성. 코리안 좀비라는 닉네임으로 세계적인 파이터로 성장한 정찬성의 이번 도전은 아쉽기만 했습니다. 충분히 잡을 수도 있었던 알도였지만 어깨 탈골이 만들어낸 위기는 더는 정찬성에게 기회를 주지 않았습니다. 코리안 좀비, 비록 적지에서 패했지만 최선을 다했다 페더급 최강자인 조제 알도는 챔피
]]>
</description>
<author>스포토리</author>
<pubDate>2013-08-04 16:52:14</pubDate>
</item>

제목과 기사링크, 기사요약, 저자, 작성일이 있으면 되겠다.


우선, 신영복 선생님의 감옥으로부터의 사색은
http://www.shinyoungbok.pe.kr/letter/1869
부터
http://www.shinyoungbok.pe.kr/letter/2116
까지로 글이 나눠져서 올라와 있기 때문에

기사링크 부분은 쉽다.



제목을 뽑아내는 건 늘 그렇듯이 imacros를 이용하면 된다.


VERSION BUILD=8300326 RECORDER=FX

TAB T=1
SET !TIMEOUT 8 
SET !ERRORIGNORE YES
SET !VAR1 1869ADD !VAR1 {{!loop}}
URL GOTO=http://www.shinyoungbok.pe.kr/{{!VAR1}}

TAG POS=1 TYPE=h1 ATTR=* EXTRACT=TXT

SAVEAS TYPE=EXTRACT FOLDER=* FILE=*




imacros를 이용해서 이 코드를 247번 반복해서 실행하면,

각 글의 제목을 뽑아내어 다음과 같이 화일로 저장하게 된다.





"우리 시대의 고뇌와 양심"
"시대를 넘어 민족의 고전으로"
"나의 숨결로 나를 데우며"
......



그 다음은 다음 파이썬 코드를 써서 xml화일을 만든다. 칼리버에는 한 피드당 글100개 제한이 있기 때문에 할 수 없이 3개로 쪼갰다.



# coding=utf8
import re
import sys
import codecs
import urllib, urllib2, cookielib




def main():


title_file = open('extract.csv', 'r')




output = open('shin0.xml', 'w')

output1 = open('shin1.xml', 'w')

output2 = open('shin2.xml', 'w')




number = 1868

for line in title_file:

number = number + 1

if number - 1868 < 100:

output.write("<item>")

output.write('\n')

output.write("<title>"+line+"</title>")

output.write('\n')

output.write("<link>"+"http://www.shinyoungbok.pe.kr/letter/"+str(number)+"</link>")

output.write("<author>신영복</author><pubDate>2013-08-04 16:52:14</pubDate></item>")


elif number - 1868 < 200:

output1.write("<item>")

output1.write('\n')

output1.write("<title>"+line+"</title>")

output1.write('\n')

output1.write("<link>"+"http://www.shinyoungbok.pe.kr/letter/"+str(number)+"</link>")

output1.write("<author>신영복</author><pubDate>2013-08-04 16:52:14</pubDate></item>")


else:

output2.write("<item>")

output2.write('\n')

output2.write("<title>"+line+"</title>")

output2.write('\n')

output2.write("<link>"+"http://www.shinyoungbok.pe.kr/letter/"+str(number)+"</link>")

output2.write("<author>신영복</author><pubDate>2013-08-04 16:52:14</pubDate></item>")




title_file.close()


output.close()






# This is the standard boilerplate that calls the main() function.
if __name__ == '__main__':
main()


그리고 칼리버에 shin0.xml shin1.xml shin2.xml을 등록하고 뉴스 내려 받기를 하면 끝!

No comments:

Post a Comment