WeChat SDK for Python

Overview
  ___       __   _______   ________  ___  ___  ________  _________  ________  ___    ___
 |\  \     |\  \|\  ___ \ |\   ____\|\  \|\  \|\   __  \|\___   ___\\   __  \|\  \  /  /|
 \ \  \    \ \  \ \   __/|\ \  \___|\ \  \\\  \ \  \|\  \|___ \  \_\ \  \|\  \ \  \/  / /
  \ \  \  __\ \  \ \  \_|/_\ \  \    \ \   __  \ \   __  \   \ \  \ \ \   ____\ \    / /
   \ \  \|\__\_\  \ \  \_|\ \ \  \____\ \  \ \  \ \  \ \  \   \ \  \ \ \  \___|\/  /  /
    \ \____________\ \_______\ \_______\ \__\ \__\ \__\ \__\   \ \__\ \ \__\ __/  / /
     \|____________|\|_______|\|_______|\|__|\|__|\|__|\|__|    \|__|  \|__||\___/ /
                                                                            \|___|/

Financial Contributors on Open Collective GitHub Actions codecov.io Documentation Status PyPI Downloads Reviewed by Hound

微信(WeChat) 公众平台第三方 Python SDK。

v1.x: 【阅读文档】 【快速入门】 master: 【阅读文档】 【快速入门】

功能特性

  1. 普通公众平台被动响应和主动调用 API
  2. 企业微信 API
  3. 微信支付 API
  4. 第三方平台代公众号调用接口 API
  5. 小程序云开发 API

安装

推荐使用 pip 进行安装:

pip install wechatpy

升级版本:

pip install -U wechatpy

使用示例

使用示例参见 examples

贡献代码

请阅读 贡献代码指南

支持项目

如果觉得本项目对您有帮助,请考虑捐赠支持项目开发

问题反馈

我们主要使用 GitHub issues 进行问题追踪和反馈。

QQ 群:176596300

wechatpy QQ 群

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

This work is released under the MIT license. A copy of the license is provided in the LICENSE file.

Comments
  • 微信开放平台

    微信开放平台

    作者可以看看有没有可能转成新的方式

    | | 原先方式 | 新方式(登录授权) | | --- | --- | --- | | 公众号是否需要提供appid和appsecret | 需要 | 不需要 | | 公众号是否需要配置服务器url和token | 需要 | 不需要 | | 可接入几个第三方开发服务 | 1个 | 5个(消息与菜单权限集只能授权给一家) |

    https://open.weixin.qq.com/cgi-bin/frame?t=home/wx_plugin_tmpl&lang=zh_CN https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

    help wanted feature 主动调用 
    opened by iblogc 32
  • wechatpy 2.0 的一些想法

    wechatpy 2.0 的一些想法

    wehctapy 已经在我们的项目中用了几个月,确实方便了我们很多。

    但也有些用的别扭的地方。慢慢的也产生了一些想法。希望和你交流一下。

    出现此想法的原因

    • 在项目中使用时,感觉现有些接口比较难用。
    • 接口返回数据是纯 json,而非对象
    • 只支持官方操作
    • 不够对象化
    • 发布时非接口类功能缺失
    • 没有对接 python 常用框架

    改进方向:易用性功能性

    接口返回数据是纯 json,而非对象

    这在项目中还要做各种处理,这种处理放在业务中意义不大,浪费精力,适合放到本库中。提供一下接口会更好: 做法:将微信中的概念变成对象,将接口变成对象的方法,方法返回对象实例。对象实例提供各种数据格式的转化能力。

    follower_manager =   wechat_client.get_manager('fellower')
    # 获取所有关注者
    followers = follower_manager.get()
    # 获取单个关注者
    follower =   wechat_client.fellowers.get(name='nickname')
    # 修改
    follower.nickname = 'another_name'
    follower.sex = ’女'
    follower.save()
    
    shakearound_manager =   wechat_client.get_manager('shakearound')
    page_manager = shakearound_manager.get_manager('page')
    all_pages = page_manager.get()
    page = page_manager.get(page_id)
    new_page = page_manager.add(title, description, url, icon_url, mark='')
    new_page.json()
    new_page.xml()
    

    只支持官方操作

    可以在官方操作的基础上封装常用操作,这样更方便使用

    不够对象化

    wechat_client = WechatClient(app_id, app_secret)
    

    实例化之后,就可以检查wechat_client可调用的对象(底层接口),没有权限时,抛出异常; 所有操作以面向对象的方式使用,屏蔽 http 层。

    发布时非接口类功能缺失

    发布项目时,经常需要额外开发。比如验证 token,开放平台的基本测试等,可以在库中实现。节省调用者开发时间。

    没有对接 python 常用框架

    多数情况下微信对象需要本地保存,如果能对象 django ORM、SqlAlchemy ORM 等数据库模型,会大大增加我们项目的友好度。比如 Django 中

    from wechatpy.decorators import bind_model
    from wechatpy.models import Fellower
    from django.db import models
    
    @bind_model(Fellower)
    class WechatFellower(models.Model):
         name = models.CharField(...)
    

    这样就把 wechatpy 中的模型和 Django 的模型关联了。

    wechat_fellower = WechatFellower.objects.get(name='xxx')
    wechat_fellower.name = 'another_name'
    wechat_fellower.save()
    

    在完成 django 模型功能(保存到数据库)的同时,也完成了和微信接口的交互。

    下面是 wechatpy 2.0 架构: 2015-12-29 13 09 16

    1. 我们可以通过 python 内置的 http 库或者 requests 等第三方库封装对微信 http 接口的调用
    2. 在此基础上,将微信概念对象化,将接口变成这些对象的操作,并可以提供非官方操作。
    3. 提供一种机制(微信对象适配层),可以将这些对象和一些常用 python 库的数据模型关联。

    绿色部分将是新 wechatpy 对外提供的功能。当微信接口变化时,我们修改黄色部分即可。

    这个想法还不够细致。如果你对这个改进方向认可,我们可以就此多想一想​细节。

    enhancement help wanted 
    opened by hunter007 29
  • 企业号我用这代码回调没反应啊

    企业号我用这代码回调没反应啊

    from __future__ import absolute_import, unicode_literals
    from flask import Flask, request, abort, make_response
    from wechatpy.enterprise.crypto import WeChatCrypto
    from wechatpy.exceptions import InvalidSignatureException
    from wechatpy.enterprise.exceptions import InvalidCorpIdException
    from wechatpy.enterprise import parse_message, create_reply
    
    
    TOKEN = '123456'
    EncodingAESKey = ''
    CorpId = ''
    
    app = Flask(__name__)
    
    
    @app.route('/wechat', methods=['GET', 'POST'])
    def wechat():
        signature = request.args.get('msg_signature', '')
        timestamp = request.args.get('timestamp', '')
        nonce = request.args.get('nonce', '')
    
        crypto = WeChatCrypto(TOKEN, EncodingAESKey, CorpId)
        if request.method == 'GET':
            echo_str = request.args.get('echostr', '')
            try:
                echo_str = crypto.check_signature(
                    signature,
                    timestamp,
                    nonce,
                    echo_str
                )
            except InvalidSignatureException:
                abort(403)
            return echo_str
        else:
            try:
                msg = crypto.decrypt_message(
                    request.data,
                    signature,
                    timestamp,
                    nonce
                )
            except (InvalidSignatureException, InvalidCorpIdException):
                abort(403)
            msg = parse_message(msg)
            if msg.type == 'text':
                reply = create_reply(msg.content, msg).render()
            else:
                reply = create_reply('Can not handle this for now', msg).render()
            res = make_response(crypto.encrypt_message(reply, nonce, timestamp))
            res.headers['Content-Type'] = 'application/xml'
            return res
    
    
    if __name__ == '__main__':
        app.run('127.0.0.1', 5001, debug=True)
    
    bug question 
    opened by imcncer 27
  • 第三方平台API问题:component_verify_ticket

    第三方平台API问题:component_verify_ticket

    signature=c542a4b4fd72edd17d42aa7ed579877c925656aa&timestamp=1467073346&nonce=225678664&encrypt_type=aes&msg_signature=c6f76e0bdcfe547bc803f191eae24f2c788fccb2

    收到微信服务器的参数是这些,但是调用接口需要的参数:

    cache_component_verify_ticket(self, msg, signature, timestamp, nonce)
    

    和微信服务器传递过来的参数不符合,另外InfoType还有下面两种情况:

    <InfoType>unauthorized</InfoType>
    
    <InfoType>authorized</InfoType>
    

    来自微信公众平台接口说明 InfoType也有不同的类型,个人感觉需要

    from wechatpy import parse_message
    

    经过类似parse_message的处理,判断不同类型进行不同处理。

    目前接口: 直接调用返回:Error code: -40001, message: Invalid signature

    主动调用 T: 第三方平台 
    opened by zdianjiang 21
  • 微信支付接口无法创建订单

    微信支付接口无法创建订单

    部分代码:

    app_id = 'wxbbxxxxxxxxxxx'
    user_info = session.get('user_info')
    pay=WeChatPay(app_id,'7wH6oUxxxxxxxxxxxxx','133xxxxxxx'')
        try:
            result=pay.order.create('JSAPI',u'U盘A款',5800, 'http://www.abc.com/jsapi_result/',user_info['openid'])
        except Exception as e:
            current_app.logger.debug(e)
    

    每次到pay.order.create都异常,却没捕捉到东西:Error code: None, message: None

    question T: 微信支付 
    opened by openpython 20
  • 关于扫带参二维码返回“该公众号暂时无法提供服务,请稍后再试  ”的疑问

    关于扫带参二维码返回“该公众号暂时无法提供服务,请稍后再试 ”的疑问

    现象描述: 同代码在公众测试平台中扫码后能准确返回ok字段,在实际认证的服务号当中,同样返回ok字段,但是会额外显示“该公众号暂时无法提供服务,请稍后再试 ”的提示。 测试过直接返回空字段,同样有错误提示。

    @app.route('/wechat', methods=['GET', 'POST'])
    def wechat():
        signature = request.args.get('signature', '')
        timestamp = request.args.get('timestamp', '')
        nonce = request.args.get('nonce', '')
        encrypt_type = request.args.get('encrypt_type', 'raw')
        msg_signature = request.args.get('msg_signature', '')
        try:
            check_signature(TOKEN, signature, timestamp, nonce)
        except InvalidSignatureException:
            abort(403)
        if request.method == 'GET':
            echo_str = request.args.get('echostr', '')
            return echo_str
        print request
        # POST request
        if encrypt_type == 'raw':
            # plaintext mode
            msg = parse_message(request.data)
            if msg.type == 'text':
                reply = create_reply(msg.content, msg)
            elif msg.type == 'event':
                if msg.event == 'subscribe_scan' or msg.event == 'scan':
                    reply=create_reply('ok',msg)
                else:
    		 reply = create_reply('ok2', msg)
            else:
                reply = create_reply('ok3', msg)
        else:
            reply = create_reply('ok4', msg)
        return reply.render()
    if __name__ == '__main__':
        app.run('0.0.0.0', 80,debug=True, use_reloader=False)
    
    invalid question 被动响应 
    opened by amiden 19
  • 继承了 WeChatClient,但是 __new__ 并没有正确的执行

    继承了 WeChatClient,但是 __new__ 并没有正确的执行

    Hi, 我继承了 WeChatClient,重写了 init,access_token,fetch_access_token 这三个方法,但是我发现 BaseWeChatClient 的 new 并没有正确的执行,导致 api._client 为 None

    我尝试在继承的类中手动执行 WeChatClient.new 也没有用

    enhancement question 
    opened by cloverstd 17
  • 退款时报错 SSLError

    退款时报错 SSLError

    问题描述 (Description)

    调用退款功能的时候报错

    配置信息 (Environment/Version)

    • OS Mac

    • Python 3.6

    • wechatpy 1.8.13

    报错信息

    Error handling request Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 677, in urlopen chunked=chunked, File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 381, in _make_request self._validate_conn(conn) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 976, in validate_conn conn.connect() File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connection.py", line 370, in connect ssl_context=context, File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/util/ssl.py", line 365, in ssl_wrap_socket context.load_cert_chain(certfile, keyfile) ssl.SSLError: [SSL] PEM lib (_ssl.c:3401) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/adapters.py", line 449, in send timeout=timeout File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/connectionpool.py", line 725, in urlopen method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/urllib3/util/retry.py", line 439, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.mch.weixin.qq.com', port=443): Max retries exceeded with url: /secapi/pay/refund (Caused by SSLError(SSLError(336445449, '[SSL] PEM lib (_ssl.c:3401)'),)) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 381, in start resp = await self._request_handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_app.py", line 310, in _handle resp = await handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 88, in impl return await handler(request) File "/Users/wuyazi/italki/mississippi/src/middlewares/error.py", line 11, in middleware_handler response = await handler(request) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/aiohttp/web_urldispatcher.py", line 741, in _iter resp = await method() File "/Users/wuyazi/italki/mississippi/src/common/validate.py", line 31, in wrapper return await func(self, *args, **kwargs) File "/Users/wuyazi/italki/mississippi/src/apis/refund.py", line 35, in post fee_type=params.get('fee_type', 'CNY')) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/api/refund.py", line 43, in apply return self._post('secapi/pay/refund', data=data) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/base.py", line 18, in _post return self._client.post(url, **kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/init.py", line 193, in post **kwargs File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/wechatpy/pay/init.py", line 138, in _request **kwargs File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/sessions.py", line 530, in request resp = self.send(prep, **send_kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/sessions.py", line 643, in send r = adapter.send(request, **kwargs) File "/Users/wuyazi/.local/share/virtualenvs/mississippi-uec03K_7/lib/python3.6/site-packages/requests/adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='api.mch.weixin.qq.com', port=443): Max retries exceeded with url: /secapi/pay/refund (Caused by SSLError(SSLError(336445449, '[SSL] PEM lib (_ssl.c:3401)'),))

    question T: 微信支付 
    opened by wuyazi 14
  • Looking for maintainers

    Looking for maintainers

    You will be given write access to this repository.

    Requirements:

    1. Understand advanced Python techniques (mostly meta-programming).
    2. Understand wechatpy's internal design.
    help wanted 
    opened by messense 14
  • fix json decode

    fix json decode

    我这边有一个用户资料是这样的 {"subscribe":1,"openid":"*","nickname":"monk","sex":1,"language":"zh_CN","city":"Y'Qt","province":"SN¬","country":"","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/ajNVdqHZLLBGnfR2C0W8cSLBbkeQASsMaSQsOKPwL9vIGr1Zen9zj9Jwibt06kpicNvH1NU7uWFZQ8rG4CrPD7uA\/0","subscribe_time":1376237570,"unionid":"*","remark":"","groupid":0,"tagid_list":[]}

    其中 province 字段最后一个字符的 unicode 是 172 ,无法正常 decode,需要加 strict 参数。

    image

    代码中其他地方也可能有这种问题。

    enhancement 主动调用 
    opened by faceair 14
  • 图文消息回复时图文个数一直在递增

    图文消息回复时图文个数一直在递增

    if isinstance(message, TextMessage):
                print u'文本消息'
                reply = ArticlesReply(message=message)
                reply.add_article({
                    'title': '猫',
                    'description': '描述文字……',
                    'image': 'http://a.hiphotos.baidu.com/image/w%3D310/sign=595a29f639c79f3d8fe1e2318aa0cdbc/43a7d933c895d1433d2c882a71f082025aaf0764.jpg',
                    'url': 'http://www.baidu.com'
                })
                return HttpResponse(reply, mimetype='application/javascript')
    

    20150514160140435

    bug 被动响应 
    opened by iblogc 14
  • 创建小程序码接口添加是否校验路径和打开的小程序版本参数

    创建小程序码接口添加是否校验路径和打开的小程序版本参数

    check_path :检 查 page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但 page 有数量上限(60000个)请勿滥用

    env_version : 要打开的小程序版本。正式版为 release,体验版为 trial,开发版为 develop

    opened by PPTing 0
  • 【企业微信】批量获取审批单号 get_approval_info 过滤参数少了s

    【企业微信】批量获取审批单号 get_approval_info 过滤参数少了s

    问题描述 (Description)

    【企业微信】批量获取审批单号 get_approval_info 过滤参数少了s,造成过滤失效 data = optionaldict( {"starttime": str(start_time), "endtime": str(end_time), "cursor": cursor, "size": size, "filter": filters} ) data = optionaldict( {"starttime": str(start_time), "endtime": str(end_time), "cursor": cursor, "size": size, "filters": filters} )

    bug 
    opened by gbguanbo 0
  • 【企业微信】日历/日程 更新返回无id字段导致引起KeyError

    【企业微信】日历/日程 更新返回无id字段导致引起KeyError

    问题描述 (Description)

    【企业微信】客户端调用 日历/日程 更新接口,会因为HTTP响应无id字段导致引起KeyError

    配置信息 (Environment/Version)

    • OS:Linux

    • Python:3.10

    • wechatpy:2.0.0a26

    重现步骤 (Reproducing)

    调用 企业微信客户端的 schedule.update 或 calendar.update 方法

    报错栈

    2022-08-24T03:18:41.222417319Z File "/usr/local/lib/python3.10/site-packages/wechatpy/work/client/api/calendar.py", line 65, in update 2022-08-24T03:18:41.222419103Z return self._post("oa/calendar/update", data=data, result_processor=op.itemgetter("cal_id")) 2022-08-24T03:18:41.222420855Z File "/usr/local/lib/python3.10/site-packages/wechatpy/client/api/base.py", line 18, in _post 2022-08-24T03:18:41.222422599Z return self._client.post(url, **kwargs) 2022-08-24T03:18:41.222424197Z File "/usr/local/lib/python3.10/site-packages/wechatpy/client/base.py", line 142, in post 2022-08-24T03:18:41.222426174Z return self._request(method="post", url_or_endpoint=url, **kwargs) 2022-08-24T03:18:41.222431709Z File "/usr/local/lib/python3.10/site-packages/wechatpy/client/base.py", line 90, in _request 2022-08-24T03:18:41.222433399Z return self._handle_result(res, method, url, result_processor, **kwargs) 2022-08-24T03:18:41.222435054Z File "/usr/local/lib/python3.10/site-packages/wechatpy/client/base.py", line 136, in _handle_result 2022-08-24T03:18:41.222436723Z return result if not result_processor else result_processor(result) 2022-08-24T03:18:41.222438452Z KeyError: 'cal_id'

    bug 
    opened by pppobear 1
Releases(v1.8.14)
Owner
wechatpy
微信开放平台 Python SDK
wechatpy
An open-source Discord Bot Project based on programming!

An open-source Discord Bot Project based on programming!

Vladimer Moore 2 Aug 22, 2022
Decode the Ontario proof of vaccination QR code

Decode the contents of the Ontario Proof of Vaccination (the "Smart Health Card QR Code") Output This is from my QR code, hopefully fully redacted alt

Wesley Ellis 4 Oct 22, 2021
An Anime Themed Fast And Safe Group Managing Bot.

Ξ L I N Λ 👸 A Powerful, Smart And Simple Group Manager bot Avaiilable a latest version as Ξ L I N Λ 👸 on Telegram Self-hosting (For Devs) vps # Inst

7 Nov 12, 2022
Twitter feed of newly published articles in Limnology

limnopapers Code to monitor limnology RSS feeds and tweet new articles. Scope The keywords and journal choices herein aim to focus on limnology (the s

7 Dec 20, 2022
企业微信消息推送的python封装接口,让你轻松用python实现对企业微信的消息推送

👋 corpwechat-bot是一个python封装的企业机器人&应用消息推送库,通过企业微信提供的api实现。 利用本库,你可以轻松地实现从服务器端发送一条文本、图片、视频、markdown等等消息到你的微信手机端,而不依赖于其他的第三方应用,如ServerChan。 如果喜欢该项目,记得给个

Chaopeng 161 Jan 06, 2023
Python client library for Postmark API

Postmarker Python client library for Postmark API. Gitter: https://gitter.im/Stranger6667/postmarker Installation Postmarker can be obtained with pip:

Dmitry Dygalo 109 Dec 13, 2022
Azure Neural Speech Service TTS

Written in Python using the Azure Speech SDK. App.py provides an easy way to create an Text-To-Speech request to Azure Speech and download the wav file. Azure Neural Voices Text-To-Speech enables flu

Rodney 4 Dec 14, 2022
Import Notion Tasks to

Notion-to-Google-Calendar (1 way) Import Notion Tasks to Google Calendar NO MORE UPDATES WILL BE MADE TO THIS REPO. Attention has been put on a 2-way

12 Aug 11, 2022
VC-Music , Playing music without bot.

VC-Userbot A Telegram Userbot to play or streaming Audio and Video songs / files in Telegram Voice Chats. It's made with PyTgCalls and Pyrogram Requir

RioProjectX 8 Aug 04, 2022
With this program you can work English & Turkish

1 - How Can I Work This? You must have Python compilers in order to run this program. First of all, download the compiler in the link. Compiler 2 - Do

Mustafa Bahadır Doğrusöz 3 Aug 07, 2021
This repository will be a draft of a package about the latest total marine fish production in Indonesia. Data will be collected from PIPP (Pusat Informasi Pelabuhan Perikanan).

indomarinefish This package will give us information about the latest total marine fish production in Indonesia. The Name of the fish is written in In

1 Oct 13, 2021
Example-bot-discord - Example bot discord xD

example-python-bot-discord Clone this repository Grab a token on Discord's devel

Amitminer 1 Mar 14, 2022
You cant check for conflicts until course enrolment actually opens. I wanted to do it earlier.

AcornICS I noticed that Acorn it does not let you check if a timetable is valid based on the enrollment cart, it also does not let you visualize it ea

Isidor Kaplan 2 Sep 16, 2021
Free & open source API service for obtaining information about +9600 universities worldwide.

Free & open source API service for obtaining information about +9600 universities worldwide.

Yagiz Degirmenci 57 Nov 04, 2022
Um painel de consultas completo, com metodos atualizados.

Meu pix para eu comprar um café :D "25ef499b-d184-4aa1-9797-0a294be40d83" Painel-de-Consultas Completo. Feito por JOESTAR-TEAM Painel de consultas Com

Dio brando 10 Nov 19, 2021
checks anilist for available usernames (200rq/s)

Anilist checker Running the program Set a path to the extracted files Install the packages with pip install -r req.txt Run the script by typing python

gxzs 1 Oct 13, 2021
Sentiment Analysis web app using Streamlit - American Airlines Tweets

Analyse des sentiments à partir des Tweets L'application est développée par Streamlit L'analyse sentimentale est effectuée sur l'ensemble de données d

Abida Hassan 2 Feb 04, 2022
SQS + Lambda를 활용한 문자 메시지 및 이메일, Voice call 호출을 간단하게 구현하는 serverless 템플릿

AWS SQS With Lambda notification 서버 구축을 위한 Poc TODO serverless를 통해 sqs 관련 리소스(람다, sqs) 배포 가능한 템플릿 작성 및 배포 poc차원에서 간단한 rest api 호출을 통한 sqs fifo 큐에 메시지

김세환 4 Aug 08, 2021
A site devoted to celebrating to matching books with readers and readers with books. Inspired by the Readers' Advisory process in library science, Literati, and Stitch Fix.

Welcome to Readers' Advisory Greetings, fellow book enthusiasts! Visit Readers' Advisory! Menu Technologies Key Features Database Schema Front End Rou

jane martin 6 Dec 12, 2021