Skip to main content

If Meetup didn't become a walled garden, the world wouldn't need Teemup

Project description

teemup

If Meetup didn't become a walled garden, the world wouldn't need Teemup

Purpose and scope

This library takes HTML source of a meetup group page on Meetup and returns a list of their upcoming events.

Usage

>>> import urllib.request
>>> from teemup import parse
>>> with urllib.request.urlopen('https://www.meetup.com/dresdenjs-io-javascript-user-group/') as f:
...     html = f.read()
...
>>> events = parse(html)
>>> event = next(event for event in events if event['venue'] is not None)
>>> sorted(event.keys())
['description', 'ends_at', 'group_name', 'starts_at', 'title', 'url', 'venue']
>>> sorted(event['venue'])
['address', 'city', 'country', 'name', 'state']

The example above is tested and thus doesn't contain any variable data, but should be enough to give you an idea.

If something breaks

If the website changes, update the fixture:

curl https://www.meetup.com/reactgirls/ > test_fixtures/response_content.html

Then run poetry run pytest. Change teemup.py and add unit tests to test_teemup.py as needed. Then cut a new release:

  • Make sure the tests really pass: poetry run pytest
  • Format the code: poetry run black .
  • Raise the version number in pyproject.toml
  • Commit the changes: git commit -am "release vX.Y.Z"
  • Create a version tag: git tag vX.Y.Z
  • Push the tag: git push --follow-tags

Note: If there are no upcoming events, choose a different group page for testing. Do not remove live testing from the repository! The whole purpose of the library is to be up-to-date with the current website. It must be monitored every day and fixed as soon as it breaks.

Why

Meetup used to be a nice and friendly platform where to host your events. It used to have an iCalendar export, RSS export, Atom export.

Such exports are useful if one wants to follow certain meetup in their own calendar software, or if one wants to read the event feed by a program and automatically link to upcoming events from a website – effectively sending more people to the events and more potential users to Meetup.

In March 2023 they've put these exports behind login, basically rendering them useless. You can download the files manually, but automatic fetching for future events is impossible. They do have an API (with horrendous auth flow), but that API is reserved to paying users only.

After a long conversation with their support (June 2023), they confirmed the login is intentional, but they couldn't explain why they did such product decision and how it benefits their users. From that point on, I consider Meetup to be a hostile walled garden, which contributes to harming the free and open internet.

All my integrations broke down, and not only mine.

I figured out they left JSON-DL meta data on the page. Such meta data is good for search engines and other tooling and can be read by extruct. This allowed me to fix everything for a while, but in August 2023, the JSON-DL has also disappeared from the website.

All out war then! I moved the code to this separate library so it's easier to develop, re-use, contribute to, and monitor.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teemup-1.2.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

teemup-1.2.1-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file teemup-1.2.1.tar.gz.

File metadata

  • Download URL: teemup-1.2.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for teemup-1.2.1.tar.gz
Algorithm Hash digest
SHA256 1e6164738d16d21d92a43faded7c10b72fb64a26bc6b6f19197c5d7e9832412c
MD5 20878c07f5bfd408477e75398d2cb888
BLAKE2b-256 2a8e98e49b47704db82d185fadf18d13a37ec7ad2523bfaf608dba4f6b4c62e3

See more details on using hashes here.

File details

Details for the file teemup-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: teemup-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for teemup-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4b5bc2e8921a12435c8a2a96953fefa840a33a40661c1efc68252727f188af41
MD5 2d806fa51d174f4dd982c5fa0bdd6d5e
BLAKE2b-256 6bebdcbbf28e56f9178334cd630fe54f12e7932b139caf37801f3987fafd45df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page