본문 바로가기

투자/Blockchain

210816월 - 스팀API python으로 포스팅시 태그문제

728x90

문제

스팀잇에 포스팅을 하는데 스팀은 첫 태그를 community값으로 넘겨서 그 커뮤니티에 속한 포스팅으로 작성한다.

def post(self,
             title,
             body,
             author,
             permlink=None,
             reply_identifier=None,
             json_metadata=None,
             comment_options=None,
             community=None,
             tags=None,
             beneficiaries=None,
             self_vote=False):

        """Create a new post.
        community (str): (Optional) Name of the community we are posting
        into. This will also override the community specified in
        `json_metadata`.
        ... 생략 ...
        """		
				
				.... 생략 ....


            # first tag should be a category
            category = tags[0]


				.... 생략 ....

예를 들어, 태그에 kr zzan aaa 라고 작성하면 맨 처음 태그인 kr 커뮤니티에 포스팅이 들어가서 포스팅주소는 다음처럼 생성된다.

https://steemit.com/kr/@ymmu/8463000912

그러므로 내가 이 글을 어떤 커뮤니티에 포함할 것인지 정해놓았다면 적어도 첫번째 태그는 계속 첫번째에 놓여야 하는데 스팀 API 파이썬 패키지에서는 태그순서를 바꿔버린다.

옛날(3년 전..?)에 만들어져서 업데이트가 안 되서 그런지...

코드를 잠시 살펴보면...

파이썬을 이용해 포스팅을 할 때 여러 개의 태그를 띄어쓰기로 구분하여 string으로 전달한다.

"tags": 'hive-123456 kr krsuccess aaa zzan'

이를 commit.py 파일에서 다음처럼 처리해 json_metadata 로 넘기게 된다.

...생략

# deal with the category and tags
        if isinstance(tags, str):
            tags = list(set(filter(None, (re.split("[\W_]", tags)))))

...생략

코드를 보면 중복방지를 위해 set처리를 하면서 태그 순서를 뒤바꾼다.

이 코드는 스팀잇 개인 블로그가 아닌 스팀코인판이나 스팀짱 등의 디앱에 포스팅을 하고자 할 때도 문제가 있다. re.split("[\W_]", tags) 로 자르게 되는데 디앱의 태그는 hive-{번호} 형태로 이루어져 있어서 hive , 123456 으로 태그를 쪼개버린다.

그리고 추가적으로 태그 갯수를 5개로 제한해두었다.

tags = tags or json_metadata.get('tags', [])
        if tags:
            print('tags: ', tags)
            if len(tags) > 5: 
                raise ValueError('Can only specify up to 5 tags per post.')

스팀짱에 포스팅을 하려다 에러가 나서 살펴보게 되었는데 이런 것들은 좀 수정을 해야할 거 같은데..나는 그냥 개인적으로 수정을 했지만;

steemit-python을 쓰는 분들 중에 이런 문제를 겪은 분이 없는지 궁금..

다들 알아서 쓰는건가..? 아님 사용자가 너무 적나;;

참조:

반응형