Twitter 동적 이름 생성기



Twitter 동적 이름 생성기는 Twitter 프로필 이름이 팔로워 수와 함께 매분 업데이트되는 애완 동물 프로젝트입니다. 나는 이 글을 내가 어떻게 했는지에 대한 저널 노트로 썼다.

#100DaysOfCode의 챌린지 중 하나로 진행되었습니다. 그들의 아이디어 영감에 감사드립니다. 그의 지도에 특별한 감사를 드립니다.


기술 스택에는 다음이 포함됩니다.

  • - Twitter API와 통신하기 위해

  • node.js - Twitter 프로필 이름을 업데이트하는 스크립트

  • AWS Lambda with serverless - Cron 부분 실행

  • 내가 어떻게 했지? 모든 단계는 무엇입니까?



    처음에는 에 의해 작성된 지침으로 시작되었습니다. 나는 주로 이 작업을 세 부분으로 나눴다.
  • Twitter 개발자 계정에서 Twitter API 키를 가져옵니다.
  • 프로필 이름을 업데이트하는 Node js 스크립트.
  • 1분마다 프로필 이름을 업데이트하는 크론 부분입니다.

  • 1단계 - 트위터 API 키 받기



    기사에 언급된 대로 가서 로그인했습니다. 필요한 정보를 제공함으로써 트위터에서 내 계정 이메일로 확인하도록 요청했습니다. 이메일로 확인하면 내 개발자 계정이 생성되었습니다. (만세!🎉) 앱 이름, 앱 설명 등의 정보를 입력한 후 앱을 사용하려는 이유를 명확하게 설명하라고 요청했습니다. 약관을 검토한 후 내 앱이 생성되었습니다. 소비자 API 키, 소비자 API 비밀 키, 액세스 토큰 및 액세스 토큰 비밀 키를 적어두세요!

    이 단계가 끝나면 소비자 API 키, 소비자 API 비밀 키, 액세스 토큰, 액세스 비밀 키를 얻었습니다.

    다음 흥미로운 부분! 코딩에 빠져보자!

    2단계 - 프로필 이름을 업데이트하는 스크립트입니다.



    자, 이제 코딩 시간입니다. 발사 모드 켜짐🔥
    나는 그것에 익숙하기 때문에 node.js을 선택했습니다. 에서 에 대해 알게 되었습니다.

    간단한 것부터 시작했고,

    $ npm init
    $ npm install twitter-lite
    


    index.js 파일에서 twitter-lite를 가져오고 이전 단계에서 얻은 필수 키를 업데이트합니다.

    const Twitter = require("twitter-lite");
    const client = new Twitter({
      subdomain: "api", // api is the default
      version: "1.1", // version 1.1 is the default
      consumer_key: process.env.twitter_consumer_key,
      consumer_secret: process.env.twitter_consumer_secret,
      access_token_key: process.env.twitter_access_token_key, 
      access_token_secret: process.env.twitter_access_token_secret, 
    });
    


    이제 실제로 코딩 부분이 온다.
    그래서 이것을하는 논리는 무엇입니까?
  • twitter API를 사용하여 팔로워 수를 가져와야 합니다.
  • 팔로워 수를 이름과 함께 추가해야 하지만 이모티콘으로 🤔 (흠)
  • twitter API를 사용하여 새 이름을 프로필 이름으로 업데이트해야 합니다.

  • 멋지다, 해보자!
    팔로어 수를 얻으려면 twitter lite API를 사용했습니다.

    client
        .get("account/verify_credentials")
        .then((results) => {
          const followerCount = results.followers_count;
        });
        .catch(console.error);
    };
    


    자, 약간의 트릭! 나는 모든 논리를 얻었지만 이모티콘을 동적으로 업데이트하는 방법에 놀랐습니다. 그래서 트위터에서 물었다. 그는 방금 응답했습니다. 일치하는 이모티콘이 있는 JSON을 가져오세요. Gotcha, 이제 여행을 계속하세요!
    팔로워 수를 가져오고, 문자열로 변환하고, 문자열 배열로 변경하고, 마지막으로 매핑된 이모티콘으로 팔로워 수를 줄이는 것과 같은 다음 간단한 로직입니다.

    exports.handler = () => {
      client
        .get("account/verify_credentials")
        .then((results) => {
          const followerCount = results.followers_count;
          const string = followerCount.toString();
          const stringSplit = string.split("");
          const followers = stringSplit.reduce((acc, val) => {
            return acc + numberMatch[val];
          }, "");
          const profile_name = `${name} | ${emoji} |" + ${followers}`;
          console.log("profile_name: ", profile_name);
        })
        .catch(console.error);
    };
    
    const numberMatch = {
      "0": "0️⃣",
      "1": "1️⃣",
      "2": "2️⃣",
      "3": "3️⃣",
      "4": "4️⃣",
      "5": "5️⃣",
      "6": "6️⃣",
      "7": "7️⃣",
      "8": "8️⃣",
      "9": "9️⃣",
    };
    


    실행하여 확인,

    node index.js
    


    Cool!은 이제 이모지가 추가된 새 이름의 콘솔을 얻었습니다. 이제 다음은 프로필 이름을 업데이트해야 합니다. 동일한 twitter-lite API를 사용하여 프로필을 업데이트했습니다.

      const response = client.post("account/update_profile", {
            name: user_name,
          });
    


    트위터 프로필에 이름이 업데이트 되는지 다시한번 실행 ( 틱틱틱틱 모멘트 )

    만세 🎉 작동합니다!

    이제 마지막 부분이 나옵니다!

    3단계 - Cron을 사용하여 1분마다 프로필 이름을 업데이트합니다.



    괜찮아! 이제 모든 것이 잘 작동하지만 매분마다 실행되도록 하려면 어떻게 해야 합니까? 여기 내 기술 전문가가 연극에 등장합니다. 그는 서버리스 전문가이기 때문에 이미 람다에 익숙하기 때문에 AWS Lambda 함수에서 Cron을 실행하도록 제안했습니다. 괜찮아! 좋아, 해보자. 시간이 너무 오래 걸리므로 AWS 설정을 건너뛰고 Cron 부분으로 직접 다이빙합니다.

    service: twitter-scheduler
    
    custom:
        twitter_consumer_key: ${ssm:/twitter_consumer_key~true}
        twitter_consumer_secret: ${ssm:/twitter_consumer_secret~true}
        twitter_access_token_key: ${ssm:/twitter_access_token_key~true}
        twitter_access_token_secret: ${ssm:/twitter_access_token_secret~true}
    
    provider:
      name: aws
      runtime: nodejs12.x
      stage: prod
      region: ap-south-1
      environment:
          STAGE: prod
    
    functions:
      subscription:
        handler: index.handler
        environment: 
          twitter_consumer_key: ${self:custom.twitter_consumer_key}
          twitter_consumer_secret: ${self:custom.twitter_consumer_secret}
          twitter_access_token_key: ${self:custom.twitter_access_token_key}
          twitter_access_token_secret: ${self:custom.twitter_access_token_secret}
        events:
          - schedule: rate(1 minute)
    


    이 cron은 1분마다 실행되며 새 프로필 이름이 동적으로 업데이트됩니다. 새 프로필 이름은 Cloud Watch에서 위로됩니다.

    명시적 키 노출을 피하기 위해 서비스AWS System Manager(SSM)를 사용했습니다.

    드디어 내 작업이 완료되었습니다. 다음은 source code에 대한 링크입니다.

    의심, 제안 및 피드백이 있으면 내 트위터 프로필에서 저에게 연락하십시오. 이 정보가 도움이 되었기를 바랍니다. 읽어 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기