
현재 steem-python이 윈도우에 원활하게 설치가 되지 않는 것을 확인 하였습니다. Mac가 Linux에서는 문제 없습니다. 그런데 비개발자분들 대부분은 윈도우라는점에서.. 취지가 약해지는것 같습니다 ㅎㅎ NodeJS쪽으로 바꿔볼까 고민해 보겠습니다.
안녕하세요? @asbear입니다.
비개발자 분들중에 스팀잇에 무한 애정을 가지고 뭔가 해보고싶어하시는 분들이 많다는것을 알게 되었습니다. 하지만 프로그래밍 없이는 마땅히 할수있는것이 없어 답답해 하시는 분들도 계실것 같습니다. 그래서 비개발자를 대상으로 steem-python을 사용하는 방법을 소개해 드리려고 합니다. 개발자는 아니어도 커맨드라인에서 명령어 입력하는것정도는 익숙하신 분들을 대상으로 합니다. 실제 코딩이기 때문에, 처음에는 이해가 안되실 수 있습니다. 하지만 파이썬 코딩은 일반인이 경험적으로 배우는게 어느 선까지는 가능하기때문에 용기를 갖고 따라와 보시기 바랍니다.
python-steem을 이용하시면 steem에 관해서 거의 모든것을 하실 수 있습니다. 글을 쓰고, 보팅하고, 송금을 하고, 댓글을 달고 계정을 만드는 등 할수 있는 것들이 수없이 많습니다. 마켓에서 SBD/STEEM 거래도 자동으로 하실 수 있으며, 또한 웹사이트를 통해 얻을 수 없는 데이터도 읽어낼 수 있지요. 가이드독 봇이 하듯이 실시간으로 올라오는 글이나 댓글들을 모니터링하면서 액션을 취할수도 있죠. 하지만 비개발자 대상이다보니, 그 설명 방법에 명확한 한계가 있어 제가 생각하는 최선으로 한번 접근해 보려고 합니다. 그래서 첫회에는 steem-python을 이용하여 글을 읽어오는 것부터 시작해 보겠습니다. 진행하면서 조금씩 프로그래밍적인 설명도 곁들여, 열정이 있으신분들은 파이썬에 입문하실 수 있도록 도와드려 볼까 합니다.
steem-python에 대한 자세한 내용은 아래의 GitHub를 참조하세요.
https://github.com/steemit/steem-python
첫번째 관문 - 설치
파이썬3 설치
첫번째 관문은 Python3 설치하기 입니다. python3을 설치하시고 나서, 명령프롬프트에서 python 이라고 입력했을때 Python이 실행되도록 설정하시면 이 강좌를 따라오실 수준이 된다고 생각합니다.
https://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_Python_3_%EC%84%A4%EC%B9%98
접근하기 쉬운 곳에 작업 폴더를 하나 만들어 두세요. 그곳에서 작업합시다.
코딩을 하기 좋은 에디터를 하나 설치해 두세요. 개인적으로 강력히 추천하는 툴입니다. MS 에서 만든 무료 캐주얼 코딩 툴입니다.
https://code.visualstudio.com/
steem-python 설치
다음 명령어를 입력하셔서 steem-python을 설치하세요.
pip install -U steem
시스템에 Python2.7이 이미 깔려있으면 pip이 아니라 pip3으로 하셔야될수도 있습니다. Python2.7이 깔려있다는건 개발에 손좀 담그신 분일테니 부연설명 생략합니다.
드디어 시작 - 가벼운 발걸음
첫회이고 비개발자 대상이니, 커맨드라인을 통해서 한줄한줄 가지고 놀아보는 방식으로 설명드리겠습니다. 자 파이썬을 실행하세요. 버전 꼭 확인하시구요.
$ python
Python 3.6.2 (default, Jul 17 2017, 16:44:45)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
오늘 사용할 Post 모듈을 로딩해봅시다.
>>> from steem.post import Post
자 로딩 되었습니다.
글의 ID를 이용하여 글을 불러와 봅시다. 글의 URL을 보면 @아이디로 시작하는 부분이 있는데, 거기부터 끝까지가 글의 ID로 사용됩니다. 아래 링크를 한번 보시지요.
https://steemit.com/kr/@lindaflyhigh/3zhmuz
이 글의 ID는 "@lindaflyhigh/3zhmuz" 입니다. 이 값으로 글을 읽어올 수 있습니다.
>>> p = Post("@lindaflyhigh/3zhmuz")
Post라는 모듈에게 "@lindaflyhigh/3zhmuz" 에 해당하는 글을 읽어오게 한 후 p 라는 변수 에 저장해라 라는 의미입니다.
위의 설명대로, 이렇게 하면 파이썬이 해당 글을 읽어서 p라는 변수에 저장하게 됩니다. P는 Post라는 객체인데, 세부 기능들은 나중에 사용해보기로하고 이번에는 내용을 읽는 용도로만 사용 해 볼게요. 우선 아래를 입력 해 보세요. 그러면 뭔가 복잡해보이는 메시지가 출력됩니다.
>>> dict(p)

언뜻 보아도 글에 대한 내용을 담고있다는것은 알겠지요? Python의 Dictionary라는 구조인데, 복잡한 데이터를 체계적으로 담을 수 있습니다. 이제 이 Post 객체에서 원하는 내용을 가져와 볼게요.
글 저자 아이디를 한번 가져와 볼까요?
>>> p['author']
'lindaflyhigh'
글의 저자 ID인 lindaflyhigh가 출력되네요.
이번에는 제목과 본문을 읽어봅니다.
>>> p['title']
'이번 주말은 모카와 함께~ 모카 목베개를 사주었어요'
>>> p['body']
'\n\n
안녕하세요 린다입니다\n\n주말이라 오랜만에 회사 기숙사에서 나와 본가로가서 우리 모카랑 주말을 즐겁게 보내고 있습니다.\n\n\n
모카가 엉덩이에 알러지에 걸려서.. 간지러운지 자꾸 핥아요..ㅠ.ㅠ 그래서 못하게 막기위해 목베개를 사주었습니다. \n\n\n병원에서 해줬던게 있었는데 그건 불편했나본지.. 너무 힘들어하는거 같아서 목베개로 바꿔줬는데 지금은 편한가보네요 ㅎㅎ 정말다행이에요 \n\n
'
이처럼 마크다운 스타일 자체가 출력 됩니다. 따라서 복사해서 그대로 붙이시면 토씨하나 틀리지 않고 그대로 동일한 글을 적을수 있지요.
태그를 한번 읽어와 보겠습니다.
>>> p['tags']
('kr', 'kr', 'kr-life', 'kr-pet', 'animals', 'kr-newbie')
대표태그 (kr)과 전체태그가 함께 리턴 됩니다.
글보상이 얼마나 되는지 한번 볼까요?
>>> p['pending_payout_value']
0.021 SBD
해당글에 보팅한 내역도 보실 수 있습니다. ``` >>> p['active_votes'] [{'voter': 'enomujjass', 'weight': 83955, 'rshares': '7924010656', 'percent': 200, 'reputation': '4924889423377', 'time': '2017-09-23T05:03:27'}, {'voter': 'kromtar', 'weight': 10007, 'rshares': 96846235, 'percent': 300, 'reputation': '113631815090', 'time': '2017-09-23T02:27:45'}] ```
이 외에도 수많은 정보를 가져올 수 있는데, 차차 필요할때마다 알아보기로 하겠습니다.
지금까지 아주 기초적인 내용으로 steem-python으로 뭘 할수있는지 예시를 보여드렸습니다. 이 내용을 하나의 묶음으로 만들어서 반복해서 실행하고 싶으시다면? 소스파일을 만드시면 됩니다. 원하는 폴더에 test.py 라는 파일을 생성하신 후, 다음 내용을 입력하시고 저장하세요.
from steem.post import Post
p = Post("@lindaflyhigh/3zhmuz")
print ('Author: %s' % p['author'])
print ('Title: %s' % p['title'])
print ('Body: %s' % p['body'])
print ('Tags: %s' % p['tags'][0])
print ('Value: %s' % p['pending_payout_value'])
print ('Votes: %s' % ([x['voter'] for x in p['active_votes']]))
그런후에, 해당 파일이 있는 곳으로 커맨드 창을 열어서 커맨드 프롬프트에 다음과같이 실행합니다. 그럼 아래의 결과를 보실 수 있을겁니다. ``` python test.py ```
앞으로는 이렇게 파일로 실행하는 방식으로 알려드릴게요. 다음에는 steem-python을 이용해 글 포스팅하는 방법을 소개해 드리겠습니다.