puppeteer를 사용하여 트윗을 자르고 반환하는 API

puppeteer는 Headless Chrome이며, GoogleChrome 공식이 내고 있을 뿐 안심감이 있어 활용 장면이 늘어나간다고 생각합니다.

GoogleChrome/puppeteer: Headless Chrome Node API

이번에는 트윗의 url을 쿼리로 주면 그 트윗을 잘라서 반환하는 API를 썼습니다.

akameco/capture-tweet-api

clone하고 npm start하면 port 3000에서 움직입니다.localhost:3000?url=ツイートのurl에 액세스하면 해당 트윗의 캡처가 반환됩니다. 시간이 걸리지만.



그러나 데모 이미지의 내용을 보면 알 수 있듯이 aws lambda에 배포하려고했지만 다음과 같은 이유로 실패했습니다.
puppeteer는 node v7 이상이 필요하지만 aws lambda의 node 버전은 6 때문입니다.

Deploying on AWS Lambda · Issue #323 · GoogleChrome/puppeteer

또한 배포 크기에 약간의 문제가 있습니다.
위의 이슈에도 있듯이 AWS lambda의 향후에 기대하고 있습니다.

또, 요소를 잘라내어 캡처하는 처리는 라이브러리로 했습니다.

akameco/capture-element

이런 식으로 url과 잘라내고 싶은 요소를 지정하면 캡처를 얻을 수 있습니다.
const fs = require('fs');
const captureElement = require('capture-element')

captureElement(
  'https://github.com/akameco',
  '.js-calendar-graph'
).then(buffer => {
  fs.writeFileSync(buffer, 'github.png')
})

이것을 사용하여 GitHub의 잔디 상황을 잘라내는 라이브러리와 모바일 버전의 트윗을 잘라내는 라이브러리도 조금 만들어 보았습니다.

akameco/capture-github-kusa
const fs = require('fs');
const captureGithubKusa = require('capture-github-kusa');

captureGithubKusa('akameco').then(img => {
  fs.writeFileSync('github.png', img)
})



akameco/capture-mobile-tweet
const fs = require('fs');
const cap = require('capture-mobile-tweet');

const tweet = 'https://mobile.twitter.com/akameco/status/904080083802923008'

cap(tweet).then(img => {
  fs.writeFileSync('mobile-tweet.png', img)
})



작은 슬라이드에 트윗이나 GitHub 잔디를 붙여 넣을 때 유용 할 수 있습니다.

뭔가가 있다면 댓글이나 트위터에서 논의합시다.

puppeteer를 aws lambda로 움직이려고 한 결과, 원래 aws lambda가 6.10이고 puppeteer가 node 7 이상이었기 때문에 막혔다 (배포시에 깨달았다) htps // t. 코 / 9 y zDmVL1



puppeteer를 사용하여 트윗 URL을 전달하면 트윗을 잘라낸 이미지를 반환하는 API를 작성했습니다. 하지만 이미지처럼 배포할 수 없었습니다. September 4, 2017 htps // t. 코 / LT에서 5qgRKj


참고



Puppeteer를 사용하여 지정한 DOM 전용 스크린 샷 얻기
피 c. 라고 r. 코 m/SK게임 T6v mZ

좋은 웹페이지 즐겨찾기