Meetup.com 이벤트를 Github Pages Jekyll 사이트로 내보내기

13862 단어 javajsongroovygraphql
저는 Omaha Java 사용자 그룹 운영을 돕고 있으며 오랫동안 meetup.com/omahajava/을 통해 커뮤니케이션을 해왔지만 여전히 ojug.org 웹사이트도 운영하고 있습니다. 처음에는 이벤트를 Meetup과 OJUG.org 모두에 잘 복사했지만, 몇 달 안에 복사 작업을 중단하고 ojug.org의 이벤트가 빠르게 구식임을 알 수 있습니다. 당시에는 큰 문제가 아닙니다. 그러나 지난 이벤트를 ojug.org 사이트에 보관하는 것이 좋을 것입니다(특히 가까운 장래에 Meetup.com 대안을 탐색할 때[1] ).

(TL&DR을 원하는 경우: https://github.com/jeffsheets/ojug-meetup-export에서 모든 세부 정보를 참조하십시오.)

Meetup.com에서 이벤트 내보내기



첫 번째 단계는 내보낼 방법을 찾는 것이었습니다our past events. 관리 UI를 통해 CSV 내보내기를 원했지만 아무 것도 표시되지 않았습니다. 그런 다음 웹 스크래핑이 필요하거나 일부 네트워크 개발 도구 API 호출 감시가 필요할 수 있다고 생각했습니다. 그러나 Meetup API 🤔의 관리 UI에 회색으로 표시된 설정이 있음을 확인했습니다. 빠른 Google에서 Meetup GraphQL API Playground 페이지를 찾았습니다. 그리고 놀랍게도 테스트 쿼리를 보내는 것이 제대로 작동했습니다! 🎉

API 문서에서 약간의 시행착오를 거쳐 페이징 없이 모든 이벤트를 가져오기 위해 결과 수를 100으로 늘린 후 다음을 사용하여 모든 과거 이벤트를 JSON으로 내보낼 수 있었습니다.

  query($meetupId: String!) {
    groupByUrlname(urlname: $meetupId) {
      description
      pastEvents(input: {first: 100}) {
        count
        edges {
          node {
            title
            description
            dateTime
            going
          }
        }
      }
    }
  }


그리고 다음의 일부 입력:

  {"meetupId":"omahajava"}


a nice JSON result 다음과 같이

{
    "data": {
      "groupByUrlname": {
        "description": "Omaha's Java User Group [@omahajug](https://twitter.com/omahajug/). yadda yadda yadda",
        "pastEvents": {
          "count": 65,
          "edges": [
            {
              "node": {
                "title": "Angular JS for Java Developers",
                "description": "This month //etc etc etc",
                "dateTime": "2014-05-20T17:30-05:00",
                "going": 27
              }
            },
.....


ojug.org 기술



이벤트 블로그 게시물 페이지가 생성된 방법을 보여주기 전에 ojug.org의 기술에 대한 간단한 메모입니다(src at https://github.com/OJUG/ojug.github.io ). 표준Github Pages Jekyll workflow 스택에서 실행 중입니다. 11ty 으로 옮길 생각이 있지만 지금은 Jekyll 이 잘 작동합니다. _posts folder에서 새 마크다운 파일을 생성하고 기본 분기에 병합하면 워크플로가 자동으로 시작되어 마술처럼 ojug.org 사이트를 재배포합니다.

Meetup 이벤트 Jekyll 게시물 생성



이를 염두에 두고 블로그에는 이벤트 JSON의 각 이벤트에 대해 생성된 .md 파일이 필요합니다. 약간의 Groovy를 사용하여 이것은 GSP 템플릿, 날짜 형식을 예쁘게 만드는 일부 기능 및 파일 이름 생성 기능으로 매우 빠르게 수행되었습니다. 그루비post.gsp template는 다음과 같습니다.

---
layout: post
title: " \"<%= longDate %> <%= title %>\""
---

<%= description %>

(This past event was exported from Meetup.com)
(<%= attended %> people had RSVP'd to this event in Meetup)


그런 다음 각 JSON 이벤트에 대한 템플릿을 생성하는 코드는 PostGenerator.groovy에 있습니다.

    void generatePosts() {
        def events = new JsonSlurper().parse(getClass().getResource(SRC_JSON)).data.groupByUrlname.pastEvents.edges
        events.each {
            def event = it.node
            def filename = makeFilename(event.title, event.dateTime)
            def outfile = new File("$DEST_FOLDER/$filename")
            def filecontents = new SimpleTemplateEngine()
                    .createTemplate(getClass().getResource('/post.gsp'))
                    .make([
                            title      : event.title.replaceAll('"', '\"'),
                            description: event.description,
                            longDate   : convertToLongDate(event.dateTime),
                            attended   : event.going
                    ])
                    .toString()
            outfile.write filecontents
        }
    }


실행되면 2014-05-20-angular-js-for-java-developers.md과 유사한 멋진 마크다운 파일이 출력 디렉터리에 생성됩니다.

---
layout: post
title:  "May 20, 2014 Angular JS for Java Developers"
---

This month //etc etc etc

(This past event was exported from Meetup.com)
(27 people had RSVP'd to this event in Meetup)


마지막 단계는 모든 새 마크다운 파일을 _posts 디렉토리에 복사하고, PR을 만들고, 병합하고, ojug.org에서 최종 결과를 확인하는 것입니다!



마무리



그리고 그게 다야! 이 블로그 게시물을 작성하는 데는 Meetup을 JSON으로 내보내고 Jekyll 블로그를 위한 새 마크다운 파일을 생성하는 프로세스보다 더 오래 걸렸을 것입니다! 내 githubhttps://github.com/jeffsheets/ojug-meetup-export에서 전체 소스를 모두 볼 수 있습니다.

[1] - Meetup.com에 대한 짧은 각주... 수년 동안 Meetup은 우리 그룹을 광고하고, 새로운 회원을 유치하고, 훌륭한 사용자 인터페이스를 갖고, 이벤트에 대한 RSVP를 쉽게 수집하는 데 큰 도움이 되었습니다. 우리는 항상 증가하는 수수료를 지불할 수 있는 훌륭한 스폰서를 가질 수 있어 항상 운이 좋았습니다. 이제 수수료는 연간 최대 $197.98입니다. 그러나 우리(또는 어떤 그룹)가 계정을 "동결"하는 것을 허용하지 않기로 한 Meetup의 결정은 우리 스폰서가 거의 혜택 없이 2.5년 동안 그 수수료를 지불해 왔다는 것을 의미합니다. 다른 지역 기술 모임 주최자와 이야기를 나누면서 우리 중 많은 사람들이 이러한 수수료에서 벗어날 수 있는 방법을 숙고하고 있음이 분명해졌습니다. 우리 스폰서는 절약된 금액으로 꽤 멋진 사용자 그룹 파티를 열 수 있습니다! 복제해야 할 기능이 많기 때문에 전체 논의는 다음 시간으로 미루겠습니다...

좋은 웹페이지 즐겨찾기