구글 스프레드시트 스팀잇 RSS 만들기

in #kr6 years ago (edited)


안녕하세요. 안피곤입니다.

어제 BNW 토큰의 창시자 @naha님에게 보여줄 구글 스프레드시트를 만들었어요.
스팀잇 포스팅 URL을 입력하면, 저자, 보팅, 댓글, 리스팀 여부를 가져와서 보여줍니다.




그리고 구글 스프레드시트 API 문서를 살펴보다가,
스팀잇 RSS 피드도 구현 가능할 것 같아서 한번 만들어 보았습니다.
만족할 만한 수준은 아닙니다.
이런 것도 가능하구나 하고 그냥 재미로 읽어보세요. ㅎㅎ


* * *


스팀잇에서 글 가져오는 스크립트 입력하기


구글 스프레드시트를 열고 도구 > 스크립트 편집기를 선택합니다.

다음과 같이 스크립트를 입력합니다. 아래 코드를 복사&붙여넣기 하세요.

// 스팀잇 글 가져오기
function getPosts(username) {
  var params = [{
    tag: username, // 사용자 이름
    limit: 100 // 100건
  }];
  var data = {
    jsonrpc: "2.0", 
    method: 'condenser_api.get_discussions_by_blog', 
    params: params, 
    id: 1
  };
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };
  var response = UrlFetchApp.fetch('https://api.steemit.com', options);
  if (response.getResponseCode() == 200) {
    var data = JSON.parse(response.getContentText())
      .result
      .filter(function(post) {
        return post.author === username; // 리스팀 글 제외(저자 글만)
      })
      .map(function(post) {
        return [
          post.title, // 제목
          post.body // 본문
        ]
      });
    if(data.length) {
      var sheet = SpreadsheetApp.getActiveSheet();
      sheet.getRange(1, 1, data.length, 2).setValues(data); // 시트에 입력
    }
  }
}

function main() {
  getPosts("anpigon") // 실행
}



그리고 코드를 저장합니다.


코드를 실행하면 다음과 같이 인증 권한을 요구합니다. 확인을 눌러서 계속 진행합니다.



스케쥴러 설정하기


실행 바로 아래에 있는 시계 아이콘을 선택합니다.


트리거를 추가합니다. 실행할 함수, 이벤트 소스, 트리거 기반 시간 유형을 선택합니다.



공유하기


다음과 같은 작업을 해야지 외부에서 API 조회가 가능합니다.

메뉴에서 파일 > 웹에 게시를 선택합니다.

모든 사용자가 볼 수 있게 게시합니다.



RSS 피드 만들기

이제 마지막입니다. 현재 보고 있는 구글 스프레드 시트의 주소의 형태는 다음과 같습니다.

https://docs.google.com/spreadsheets/d/1Ky1tJvioEAzqD4suXqOD52XUiRzXshyU7sPo8gN80cY/edit#gid=0


주소를 다음과 같은 형태로 변경하여 브라우저에서 확인합니다.

https://spreadsheets.google.com/feeds/worksheets/1Ky1tJvioEAzqD4suXqOD52XUiRzXshyU7sPo8gN80cY/public/basic

XML Viewer 서비스를 이용하면 XML 데이터 보기가 편할 거에요.


XLM 에서 아래와 같은 형태의 데이터를 찾으세요. 여기서 href 속성에 있는 값이 우리가 찾는 RSS Feed URL 입니다.

<feed>
  <entry>
    <...>
    <link rel="http://schemas.google.com/spreadsheets/2006#listfeed" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/1Ky1tJvioEAzqD4suXqOD52XUiRzXshyU7sPo8gN80cY/od6/public/basic" />
    <...>
  </entry>
</feed>



다음과 같이 제 스팀잇 RSS URL이 생성되었습니다.

https://spreadsheets.google.com/feeds/list/1Ky1tJvioEAzqD4suXqOD52XUiRzXshyU7sPo8gN80cY/od6/public/basic



브라우저에서 확인하면 다음과 같이 보입니다.


RSS 프로그램에서 확인하면 이렇게 보이네요.



이걸 응용하면 특정 태그(kr, kr-dev)나 다른 사용자의 블로그도 RSS로 만들 수 있을 것 같습니다.

여기까지 읽어주셔서 감사합니다.


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

저도 한번 따라해봐야겠어요. 좋은 정보 감사합니다.

구글 스프레드시트를 다른 스케쥴러에도 사용할 수 있을 것 같습니다. ㅎㅎ

코딩 까막눈이라 모가 몬진 모르지만 드라마틱하네요! ㅎㅎ

!dramatoken

드라마토큰은 이렇게 사용하는 거군요. 감사합니다. ㅎㅎ

굿!!!!!
이건 진짜 유용하네요.ㅋㅋㅋ
역시 구글이 짱임.ㅋㅋ

구글에서는 안되는게 없네요. ㅎㅎㅎ

곰돌이가 @stylegold님의 소중한 댓글에 $0.017을 보팅해서 $0.006을 살려드리고 가요. 곰돌이가 지금까지 총 3949번 $46.569을 보팅해서 $48.941을 구했습니다. @gomdory 곰도뤼~

좋네요 ㅎㅎ해보고 싶은거 너무 많아요 ㅠ

저도 해보고 싶은게 너무 많아요. ㅠㅠ 그래서 하나씩 천천히 해가고 있는 중입니다. 아곰님도 그렇지 않나요? ㅎㅎ

곰돌이가 @ayogom님의 소중한 댓글에 $0.016을 보팅해서 $0.007을 살려드리고 가요. 곰돌이가 지금까지 총 3976번 $46.806을 보팅해서 $49.325을 구했습니다. @gomdory 곰도뤼~

오 이거 정말 신기하네요!

RSS로 사용할 수 있지 않을까 해서 연구해봤는데...
만족할만한 수준은 안되네요. ㅎㅎ
그래서 조금 아쉬웠습니다.

그래도 이런 방식이 가능하다는 것이 참 신선하네요. 예전부터 RSS구현에 관심이 많으셨던 것 같은데 축하드립니다. 앞으로 또 더 개선되어 나가겠죠.

스팀잇을 Feedly에 등록해서 읽고 싶었어요.
그러다보니 RSS 쪽에 관심이 많았습니다. ㅎㅎ
결론적으로 완벽한 스팀잇 RSS를 위해서는 서버가 필요할 것 같습니다. ㅠㅠ

곰돌이가 @blockchainstudio님의 소중한 댓글에 $0.016을 보팅해서 $0.007을 살려드리고 가요. 곰돌이가 지금까지 총 3978번 $46.827을 보팅해서 $49.350을 구했습니다. @gomdory 곰도뤼~

와~~~ 대박!!! 개발자님이시군요. 아직 반도 이해 안 되지만 찬찬히 해볼게요. ^^ 정말 너무너무 고맙습니다. ㅎㅎㅎ

설명이 부족해서 따라하기 어려울 수 있겠어요. 저는 naha님 덕분에 구글 스프레드시트의 새로운 가능성을 보았습니다. 다른것도 연구해봐야겠어요. ㅎㅎ

아핫,,, 멋지십니다. ㅎㅎㅎ

곰돌이가 @naha님의 소중한 댓글에 $0.016을 보팅해서 $0.007을 살려드리고 가요. 곰돌이가 지금까지 총 3948번 $46.552을 보팅해서 $48.935을 구했습니다. @gomdory 곰도뤼~

저는 한셀이라서 안 됩니다. ㅠㅅㅠ 쥬륵.

곰돌이가 @urobotics님의 소중한 댓글에 $0.016을 보팅해서 $0.007을 살려드리고 가요. 곰돌이가 지금까지 총 3953번 $46.603을 보팅해서 $48.999을 구했습니다. @gomdory 곰도뤼~

곰돌이 감사합니다. ^^

구글 드라이브는 무료인데 사용 안하시나요? ㅠㅅㅠ 쥬륵.

아. ㅇㅅㅇa 그거 쓰면 되는거였나요. 헉

우와~.
저도 SW 개발이지만 전자공학출신 임베디드 쪽이라, 이런거 하시는거 보면 신기할 따름이네요^^

Posted using Partiko Android

곰돌이가 @lucky2015님의 소중한 댓글에 $0.016을 보팅해서 $0.007을 살려드리고 가요. 곰돌이가 지금까지 총 3957번 $46.638을 보팅해서 $49.056을 구했습니다. @gomdory 곰도뤼~

저는 Java SI 개발자입니다. 그래서 저보다 low level 임베디드 하시는 분들이 대단하다고 생각합니다. 그런데 럭키님이 SW개발하시는지는 전혀 몰랐습니다. ㅎㅎ

그리고 최근에 스팀잇 책리뷰 모바일앱을 만들고 싶어서, 모바일앱 개발을 열심히 공부하고 있습니다. 럭키님은 책을 많이 읽으시니깐 필요할 것 같네요. ㅎㅎ

엇. 제가 이 댓글을 놓쳤는데 곰돌이 때문에 이제야 봤네요.
스팀잇 책리뷰 모바일 앱이란거 어떻게 나올지 기대가 됩니다!~

와 전 정말 저런 거 다루는 분들 뵈면 정말 존경스럽습니다. 정말 머리 좋으신 분들이신 것같습니다^^

감사합니다. 구글 스프레드 시트가 정말 활용도가 높더군요. ㅎㅎ

재밌네요 이건 ㅎㅎ 좋은 기능입니다.

오랜만이네요. 스팀잇 복귀하신건가요? ㅎㅎ

복귀라니요. 그냥 글과 코멘트를 안했을 뿐 가끔 눈팅은 하고 있었다구요 ㅎㅎ

오랜만에 스팀잇에서 보니깐 반갑네요. ㅎㅎ

아!피곤...ㅎㅎ
이런것도 뚝딱~ 만드시고 능력자시네요^^

감사합니다. 구글에서 자료 찾아보면서 만들었습니다. 좀 더 연구하면 다양한 것들을 할 수 있을 것 같습니다. ㅎㅎ

오호!
저렇게 읽어오셨군요.
귀찮아서 구글함수를 이용해서 이렇게 읽어왔는데

 sheet.getRange(2, 1).setValue('=IMPORTXML("'+blog+'","'+athor+'")'); 
  sheet.getRange(2, 2).setValue('=IMPORTXML("'+blog+'","'+post+'")'); 
  sheet.getRange(2, 5).setValue('=IMPORTXML("'+blog+'","'+Voting+'")'); 
  sheet.getRange(2, 9).setValue('=IMPORTXML("'+blog+'","'+VotesAndComments_votes+'")'); 
  sheet.getRange(2, 14).setValue('=IMPORTXML("'+blog+'","'+VotesAndComments_comments+'")'); 

각 변수들은 해당 웹페이지에서 추출할 위치를 나타내는데 전체 코딩은 생략했지만 IMPORTXML()함수로 타이머를 이용해서 스프레드시트에 갱신해서 해보긴 했는데 이것도 괜찮더군요.

오홍 IMPORTXML 라는 함수도 있군요. API를 제공하지 않는 사이트 데이터를 가져오는데 매우 유용할 것 같습니다. 알려주셔서 감사합니다.

Hi @anpigon!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.023 which ranks you at #10675 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 202 contributions, your post is ranked at #131.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • You have already shown user engagement, try to improve it further.

Feel free to join our @steem-ua Discord server

와!! 좋은 정보 감사합니다~!
궁금한게 있는데요, 혹시 이렇게 구글 시트를 이용하면 Full feed를 다 가져올 수 있나요?
전에 구글링으로 현재 구축되어있는 사설서버의 RSS를 받아보니
본문 뒷부분이 잘리더라구요.
IFTTT를 이용해서 스팀잇 - Blogger.com 을 연동해보려다가 그래서 실패했는데ㅠㅠ 혹시 Full Feed를 받을 수 있는지 궁금해서 여쭤봅니다~

Full Feed를 가져옵니다. 하지만 몇가지 문제가 있어요. 큰 문제가 html을 제거해버리네요.ㅠ

구글 스프레드시트를 이용하면 Blogger.com에 자동으로 Publish 하는 것을 구현 할 수 있을 것 같습니다. 이쪽으로 연구 좀 해볼려구용. ㅎㅎ

그리고 Full feed 가져오는 것은 아래 RSS를 이용해 보세요.
http://www.steemrss.com/@sintai/blog


Here's your DRAMA. Don't spend it all in one place!

To view or trade DRAMA go to steem-engine.com.

Congratulations @anpigon! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 2500 comments. Your next target is to reach 3000 comments.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

The Steem blockchain survived its first virus plague!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

nTOPAZ 소개 및 간단한 퀴즈 ( $1 👍 )

퀴즈 참여 감사합니다 😊


정말 쉽게 설명한 글인 것 같아 리스팀할게요 😂

보팅과 리스팀 감사합니다^^


@anpigon님 넘치는 사랑 감사합니다~