https://github.com/phacks/gatsby-source-meetup
Source plugin for pulling Meetup.com Group and Events data into Gatsby.
https://github.com/phacks/gatsby-source-meetup
gatsby-plugin gatsbyjs meetup
Last synced: about 1 year ago
JSON representation
Source plugin for pulling Meetup.com Group and Events data into Gatsby.
- Host: GitHub
- URL: https://github.com/phacks/gatsby-source-meetup
- Owner: phacks
- Created: 2018-11-10T09:05:50.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T21:39:12.000Z (over 3 years ago)
- Last Synced: 2025-04-13T09:06:09.826Z (about 1 year ago)
- Topics: gatsby-plugin, gatsbyjs, meetup
- Language: JavaScript
- Homepage: https://www.gatsbyjs.org/packages/gatsby-source-meetup/
- Size: 1 MB
- Stars: 11
- Watchers: 2
- Forks: 7
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# gatsby-source-meetup
Source plugin for pulling [Meetup.com](https://www.meetup.com/) data about a specific Group and the events associated to it.
## Install
`npm install --save gatsby-source-meetup`
## How to use
First, you need a way to pass environment variables to the build process, so secrets and other secured data aren't committed to source control. We recommend using [`dotenv`](https://github.com/motdotla/dotenv) which will then expose environment variables. [Read more about dotenv and using environment variables here](envvars). Then we can _use_ these environment variables and configure our plugin.
```javascript
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-source-meetup`,
options: {
// Learn about environment variables: https://gatsby.app/env-vars
// Your Meetup.com API key can be retrieved here: https://secure.meetup.com/fr-FR/meetup_api/key/
apiKey: process.env.MEETUP_API_KEY,
// Mandatory: the URL name of a Meetup Group.
// See the URL of the group page, e.g. https://www.meetup.com/fr-FR/jamstack-paris
groupUrlName: "jamstack-paris",
// Optional parameters for retrieving Events, see full documentation at
// https://www.meetup.com/meetup_api/docs/:urlname/events/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2Fevents%2F#list
status: "upcoming,past",
desc: "true",
page: 10
},
},
],
}
```
### Querying multiple groups
To get data from multiple Groups, you can define the plugin multiple times:
```javascript
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-source-meetup`,
options: {
apiKey: process.env.MEETUP_API_KEY,
groupUrlName: "jamstack-paris",
status: "past",
desc: "true",
page: 10
},
},
{
resolve: `gatsby-source-meetup`,
options: {
apiKey: process.env.MEETUP_API_KEY,
groupUrlName: "paris-js",
status: "upcoming,past",
desc: "true",
page: 10
},
},
],
}
```
### Querying events with multiple options
To get data from the same Group with multiple options (sorting, number of events…) depending on their status, you can use the optional parameter `eventsOptions`:
```javascript
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-source-meetup`,
options: {
apiKey: process.env.MEETUP_API_KEY,
groupUrlName: "jamstack-paris",
status: "past",
desc: "true",
page: 10,
eventsOptions: [
{
status: `upcoming`,
desc: `true`,
page: 1,
},
{
status: `past`,
desc: `true`,
page: 5,
}
],
},
},
],
}
```
With eventsOptions used above, you get the first next event from today and the last 5 events.
## How to query
You can query the Group node and associated Event nodes created from Meetup like the following:
```graphql
{
meetupGroup {
events {
name
created
duration
rsvp_limit
status
time
local_date
local_time
rsvp_open_offset
rsvp_close_offset
updated
utc_offset
waitlist_count
yes_rsvp_count
venue {
name
lat
lon
repinned
address_1
city
country
localized_country_name
zip
state
phone
id
address_2
address_3
}
link
description
visibility
manual_attendance_count
meetupId
member_pay_fee
past_event_count_inclusive
plain_text_description
plain_text_no_images_description
rsvpable
rsvpable_after_join
saved
short_link
simple_html_description
venue_visibility
web_actions
why
id
how_to_find_us
featured
description_images
date_in_series_pattern
comment_count
attendance_count
attendance_sample {
bio
event_context
id
name
photo
role
self
title
}
attendee_sample {
created
id
member {
bio
event_context
title
self
role
photo
name
id
}
updated
}
event_hosts {
host_count
id
intro
join_date
name
photo {
base_url
highres_link
type
thumb_link
photo_link
id
}
}
featured_photo {
base_url
id
highres_link
photo_link
thumb_link
type
}
fee {
accepts
amount
currency
description
label
required
}
fee_options {
currencies {
default
code
}
is_setup
setup_link
type
}
group {
country
created
id
join_mode
lat
localized_location
lon
name
region
shortname
sort_name
state
timezone
urlname
who
}
internal {
content
contentDigest
description
fieldOwners
ignoreType
mediaType
owner
type
}
photo_album {
id
photo_count
title
photo_sample {
base_url
highres_link
id
photo_link
thumb_link
type
}
event {
id
name
no_rsvp_count
time
utc_offset
waitlist_count
yes_rsvp_count
}
}
rsvp_rules {
close_time
closed
guest_limit
open_time
refund_policy {
days
notes
policies
}
waitlisting
}
rsvp_sample {
created
id
member {
bio
event_context
id
title
role
self
photo
name
}
updated
}
self {
actions
role
rsvp {
answers
guests
response
}
pay_status
}
series {
weekly {
interval
day_of_week
}
template_event_id
start_date
monthly {
week_of_month
interval
day_of_week
}
id
end_date
description
}
survey_questions {
question
id
}
}
name
status
link
urlname
description
created
city
untranslated_city
country
localized_country_name
localized_location
state
join_mode
visibility
lat
lon
members
organizer {
name
bio
photo {
highres_link
photo_link
thumb_link
}
}
who
group_photo {
highres_link
photo_link
thumb_link
}
key_photo {
highres_link
photo_link
thumb_link
}
timezone
next_event {
name
yes_rsvp_count
time
utc_offset
}
category {
name
shortname
}
meta_category {
name
shortname
}
}
}
```
Full API documentation can be found [here](https://www.meetup.com/fr-FR/meetup_api/docs/:urlname/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2F#get) for Groups, and [here](https://www.meetup.com/fr-FR/meetup_api/docs/:urlname/events/?uri=%2Fmeetup_api%2Fdocs%2F%3Aurlname%2Fevents%2F#list) for Events.