Skip to main content

A webhook server for memos

Project description

Memos Webhook Python Implementation

This is a simple webhook implementation in Python.

It implements a simple URL resource download feature. All url you-get support for command you-get https://xxxxx can be configured to download.

Quick Feel It

  1. Create a docker_compose.yaml with following contents. Replace xxxxxxxx with your memos token.

    version: "3.0"
    services:
    memos:
        networks:
        - memos
        image: neosmemo/memos:0.22.1
        container_name: memos
        ports:
        - 5230:5230
    webhook:
        image: ghcr.io/ryojerryyu/memos-webhook-py:0.3.0
        networks:
        - memos
        container_name: webhook
        environment:
        - LOG_LEVEL=debug
        - WEBHOOK_PORT=8000
        - MEMOS_HOST=memos
        - MEMOS_PORT=5230
        - MEMOS_TOKEN=xxxxxxxx
        volumes:
        - ./.download:/app/download
    
    networks:
    memos:
    
  2. Run docker-compose up -d to start the services.

  3. Access localhost:5230 , login and make sure the Memos server work. Create a webhook to http://webhook:8000/webhook . (It's for Memos server after 0.22.2. For before 0.22.1, use http://webhook:8000/webhook_old)

  4. Post a memo with contents containing a twitter url. If that tweet was attached with some image, the webhook will download them and upload to the Memo server automatically.

You can use a config file to configure what url you want to download. The default config file is config.yaml.

Config

You can use a config file by setting the environment variable CONFIG_PATH. Here is a docker_compose.yaml example:

version: "3.0"
services:
  memos:
    networks:
      - memos
    image: neosmemo/memos:0.22.1
    container_name: memos
    ports:
      - 5230:5230
  webhook:
    image: ghcr.io/ryojerryyu/memos-webhook-py:0.3.0
    networks:
      - memos
    container_name: webhook
    environment:
      - CONFIG_PATH=/app/config.yaml
    volumes:
      - ./.download:/app/download
      - ./path/to/your/local/config/file.yaml:/app/config.yaml

networks:
  memos:

You should place your config file in ./path/to/your/local/config/file.yaml and the webhook will read the config from it.

Here is an example of the configuration file: config.yaml

webhook:
  host: localhost
  port: 11100

memos:
  host: localhost
  port: 5230
  token: xxxxxxx

plugins:
  - name: download
    tag: webhook/download
    you_get_plugin:
      patterns:
        - https://twitter.com/\w+/status/\d+
        - https://x.com/\w+/status/\d+
  - name: fix_typos
    tag: task/fix_typos
    zhipu_plugin:
      api_key: xxxxxxx
      prompt: |
        You are a fix typos plugin.
        Please fix the typos in the text.

        The text is:
        ```
        {content}
        ```

And config definitionn is in config.py

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

memos_webhook-0.6.0.tar.gz (47.0 kB view details)

Uploaded Source

Built Distribution

memos_webhook-0.6.0-py3-none-any.whl (55.4 kB view details)

Uploaded Python 3

File details

Details for the file memos_webhook-0.6.0.tar.gz.

File metadata

  • Download URL: memos_webhook-0.6.0.tar.gz
  • Upload date:
  • Size: 47.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for memos_webhook-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c00274f5ec314ed1688e4476da251b14163999f5501c43df7087f7e4b82a95a5
MD5 6e68d2d750d305151e4adb5e9a3be39b
BLAKE2b-256 35192973c4e7c85bd50a8bbdc0f0a0e4a26de64d698c44ca47c76c15d4c3e2c4

See more details on using hashes here.

File details

Details for the file memos_webhook-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for memos_webhook-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9389d91c4c38bf82bb5168c2aa35e1de5b136e29b9353a29eb5399382245c1eb
MD5 ff5cd3829789e9048011cba1f2540b48
BLAKE2b-256 d36b569d448b23371a9f0559060207fc0d15fe471eee6b288c50f2a9d63e4585

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