如果Meetup没有成为封闭花园,世界就不需要Teemup
项目描述
teemup
如果Meetup没有成为封闭花园,世界就不需要Teemup
目的和范围
这个库从Meetup上的Meetup小组页面提取HTML源代码,并返回他们的即将举行的活动列表。
用法
>>> 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', 'starts_at', 'title', 'url', 'venue']
>>> sorted(event['venue'])
['address', 'city', 'country', 'name', 'state']
上面的例子是测试过的,因此不包含任何变量数据,但应该足以给你一个想法。
如果出现问题
如果网站发生变化,请更新测试用例
curl https://www.meetup.com/reactgirls/ > test_fixtures/response_content.html
然后运行 poetry run pytest
。根据需要更改 teemup.py
并在 test_teemup.py
中添加单元测试。然后发布新版本
- 确保测试真正通过:
poetry run pytest
- 格式化代码:
poetry run black .
- 在
pyproject.toml
中提高版本号 - 提交更改:
git commit -am "release vX.Y.Z"
- 创建版本标签:
git tag vX.Y.Z
- 推送标签:
git push --follow-tags
注意:如果没有即将举行的活动,请选择不同的群组页面进行测试。不要从仓库中删除实时测试!库的整个目的就是与当前网站保持同步。它必须每天进行监控,并在出现问题后立即修复。
原因
Meetup曾经是一个很好的平台,可以在这里举办活动。它曾经有iCalendar导出、RSS导出、Atom导出。
此类导出对于希望在自己的日历软件中跟踪某些Meetup活动或通过程序读取活动源并自动链接到网站上的即将举行的活动非常有用,从而有效地将更多人引导至活动,并将更多潜在用户引导至Meetup。
截至2023年3月,他们已经将这些导出放在了登录之后,基本上使它们变得无用。您可以手动下载文件,但无法自动获取未来的活动。他们确实有一个API(具有糟糕的认证流程),但该API仅对付费用户开放。
在与他们的支持团队(2023年6月)进行长期交谈后,他们确认登录是故意的,但他们无法解释为什么做出这样的产品决策以及这对用户有什么好处。从那时起,我将其视为一个敌对的封闭花园,这对自由和开放的互联网造成了伤害。
我的所有集成都失败了,不仅是我。
我发现他们留下了JSON-DL元数据在页面上。此类元数据对搜索引擎和其他工具很有用,并且可以被extruct读取。这使我能够暂时修复一切,但在2023年8月,JSON-DL也从网站上消失了。
于是全面战争爆发了!我将代码移至这个单独的库,以便更容易开发、重用、贡献和监控。
许可协议
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
teemup-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dcd8b2986ac8121adab2d0d0012249bb13bf1cfa6a28a0a5b40f2496cd8ca059 |
|
MD5 | f88c38b483a82bf3a75a1bc5fecbe69e |
|
BLAKE2b-256 | 712e7cf99413c32b87d60d6e7e3f19f2eedc362befd7da463ff02d45776042b7 |
teemup-1.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b04c2bf6744d3e4ab04e06f709785de86cfa907cb3def2713995de776a0c5fd9 |
|
MD5 | 4695b70fd6628986e192cfb385d42cb4 |
|
BLAKE2b-256 | 267fac1cf79c745d4d0950509218ed091dc66438d62c3cce1d1c4f17cb684876 |