비개발자도 steemit을 주물러 보자 #1steemCreated with Sketch.

in #kr7 years ago (edited)

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을 이용해 글 포스팅하는 방법을 소개해 드리겠습니다.

Sort:  

Cheer Up! 많은 사람들이 이 포스팅에 관심을 갖고 있나봐요!

  • from Clean STEEM activity supporter

제목에서 혹하고, 모든 내용을~ 두번 정독 했습니다~ ^^...
다음편을 기대 할께요~!!
steemdb나 steemsql을 사용하지 않고 가능하다는 것에 ~ 큰 기대를~^^ㅣ 하게 됩니다.

전. 개발에 'ㄱ'도 모른답니다~!!
감사합니다~!!

skt3님 파이썬을 우선 설치 해 보세요.. ^^ 시작이 반입니다~!!

그럼요 그럼요.. 링크 주신데 따라서~ 아나콘다 파이썬 3.6 설치 완료 했습니다~! ^^

역시 능력자십니다 ㅎㅎ

기찬님도 슬슬 참여 준비 하고 계신가요?

요새 편입 공부때문에 많은시간 수학에만 시간을 쏟아 버렸습니다...일단 facemaker님이랑 연락이 되면 이야기 한번 해봐야 할거 같습니다

이것은 필요한 포스트. 나에게 개발자.
필요한 풀보팅 그리고 리스팀. 너의 포스팅 아름다운 감사한다.

ㅋㅋㅋㅋ 세계님 아직 로봇이 되시기에는 멀었군요. 휴머니즘이 느껴집니다.

휴머니즘을 좀더 버려야겠군요 ㅎㅎ 혹시 가이드독 부르시면 어떻게 하나 걱정했는데 기우였네요 ㅋㅋㅋ

댓글신고기능만 있었어도 부르는건데..!! 에잇 ㅎㅎㅎ

ㅋㅋㅋㅋㅋㅋ 이거 뭽니까 ㅋㅋㅋ 요즘 짤방놀이에 재미들리신듯.. ㅎㅎ

많은 비개발자분들이 관심을 가지시겠네요~ ^*

빗블루님 좋은주말입니다. 맞습니다. 관심가진분이 계시면 저도 재밌을것 같습니다 ^^

@_@ ;; 아직은 봐도 모르겠지만 한 번 더 , 두 번 더 보면서 최대한 이해하려고 노력해보겠습니다 .

우선 python3 프로그램을 설치하시는데까지라도 진행 해보세요! ^^

오! 감사합니다.
새로운 걸 익혀볼 수 있는 좋은 기회가 또 만들어지네요! ㅎㅎ

질문 기다리겠숩니다!! ㅎㅎ 문서화가 잘되어있어 조금만 만지작거리면 감이 오실겁니다. ^^ 과감하게 도전해 보세요!

안그래도 짱구굴리는중이었는데 대박 ! 이거 몇편까지나옵니까 ?! 봇 만들고 싶어요

이게 문서화가 잘 되어있는데 개발자가아니면 조금 난해하니까 제가 중간에서 손붇들고 끌고가드릴라고 합니다. 아주 간단한 봇 만드는것은 쉽습니다. 잘 따라와 보세요~ ^^

보기만해도 어마무시한데요...?

꼭 관심있는 비개발자 분들이 나타나 주실거라고 믿으며.. 계속 써볼랍니다 -_ㅜ