비개발자도 steemit을 주물러 보자 #1

By @asbear9/23/2017kr

front_normal.jpeg

현재 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)

Screen Shot 2017-09-23 at 11.09.16.png

언뜻 보아도 글에 대한 내용을 담고있다는것은 알겠지요? Python의 Dictionary라는 구조인데, 복잡한 데이터를 체계적으로 담을 수 있습니다. 이제 이 Post 객체에서 원하는 내용을 가져와 볼게요.

글 저자 아이디를 한번 가져와 볼까요?

>>> p['author']
'lindaflyhigh'

글의 저자 ID인 lindaflyhigh가 출력되네요.


이번에는 제목과 본문을 읽어봅니다.

>>> p['title']
'이번 주말은 모카와 함께~ 모카 목베개를 사주었어요'
>>> p['body']
'![1506131305004.jpg](https://steemitimages.com/DQmUdbUrBC6ZKeQdZiFABpTbWSXUYDb1zRWFeBGfTyjsPCF/1506131305004.jpg)\n\n
안녕하세요 린다입니다\n\n주말이라 오랜만에 회사 기숙사에서 나와 본가로가서 우리 모카랑 주말을 즐겁게 보내고 있습니다.\n![1506131302203.jpg](https://steemitimages.com/DQmSQMivuHk1rgHJGmL55bkTuB6mMN5becwgD6sdLWfTFPi/1506131302203.jpg)\n\n
모카가 엉덩이에 알러지에 걸려서.. 간지러운지 자꾸 핥아요..ㅠ.ㅠ 그래서 못하게 막기위해 목베개를 사주었습니다. \n![1506131292874.jpg](https://steemitimages.com/DQmf4o2qNfJripG6p8XrgidQ5K4Rzyhyy5UybPxuyPznRu8/1506131292874.jpg)\n\n병원에서 해줬던게 있었는데 그건 불편했나본지.. 너무 힘들어하는거 같아서 목베개로 바꿔줬는데 지금은 편한가보네요 ㅎㅎ 정말다행이에요 \n\n
![1506131295126.jpg](https://steemitimages.com/DQmYPKjFELhb93EQCihn3PHVf3nVqmHcjW5EaDQrQtGkF6U/1506131295126.jpg)'

이처럼 마크다운 스타일 자체가 출력 됩니다. 따라서 복사해서 그대로 붙이시면 토씨하나 틀리지 않고 그대로 동일한 글을 적을수 있지요.

태그를 한번 읽어와 보겠습니다.

>>> 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 ``` Screen Shot 2017-09-23 at 11.43.42.png

앞으로는 이렇게 파일로 실행하는 방식으로 알려드릴게요. 다음에는 steem-python을 이용해 글 포스팅하는 방법을 소개해 드리겠습니다.

84

comments