Skip to main content

Velar - A Library Encode And Decode With Keyword.

Project description

tgcalls
Voice chats, private incoming and outgoing calls in Telegram for Developers
Examples Documentation Channel Chat

Telegram WebRTC (VoIP) Mentioned in Awesome Telegram Calls

This project consists of two main parts: tgcalls, velar. The first is a C++ Python extension. The second uses the extension along with MTProto and provides high level SDK. All together, it allows you to create userbots that can record and broadcast in voice chats, make and receive private calls.

Fipper's snippet

from fipper import Client, filters
from fipper.utils import MAX_CHANNEL_ID

from velar import GroupCallFactory

app = Client('velar')
group_call = GroupCallFactory(app).get_file_group_call('input.raw')


@group_call.on_network_status_changed
async def on_network_changed(context, is_connected):
    chat_id = MAX_CHANNEL_ID - context.full_chat.id
    if is_connected:
        await app.send_message(chat_id, 'Successfully joined!')
    else:
        await app.send_message(chat_id, 'Disconnected from voice chat..')


@app.on_message(filters.outgoing & filters.command('join'))
async def join_handler(_, message):
    await group_call.start(message.chat.id)


app.run()

Telethon's snippet

from telethon import TelegramClient, events

from velar import GroupCallFactory

app = TelegramClient('velar', api_id, api_hash).start()
group_call_factory = GroupCallFactory(app, GroupCallFactory.MTPROTO_CLIENT_TYPE.TELETHON)
group_call = group_call_factory.get_file_group_call('input.raw')


@app.on(events.NewMessage(outgoing=True, pattern=r'^/join$'))
async def join_handler(event):
    chat = await event.get_chat()
    await group_call.start(chat.id)

app.run_until_disconnected()

Features

  • Python solution.
  • Prebuilt wheels for macOS, Linux and Windows.
  • Supporting popular MTProto libraries: Fipper, Telethon.
  • Abstract class to implement own MTProto bridge.
  • Work with voice chats in channels and chats.
  • Multiply voice chats (example).
  • System of custom handlers on events.
  • Join as channels or chats.
  • Join using invite (speaker) links.
  • Speaking status with voice activity detection.
  • Mute/unmute, pause/resume, stop/play, volume control and more...

Available sources of input/output data transfers

Note: All audio data is transmitted in PCM 16 bit, 48k. Example how to convert files using FFmpeg.

Requirements

TODO list

  • Incoming and Outgoing private calls (already there and working, but not in the release version).
  • Group Video Calls and more...

Installing

For Fipper

pip3 install -U velar[pyrogram]

For Telethon

pip3 install -U velar[telethon]

tgcalls
PyPi Sources

tgcalls

The first part of the project is C++ extensions for Python. Pybind11 was used to write it. Binding occurs to the tgcalls library by Telegram, which is used in all official clients. To implement the binding, the code of Telegram Desktop and Telegram Android was studied. Changes have been made to the Telegram library. All modified code is available as a subtree in this repository. The main ideas of the changes is to improve the sound quality and to add ability to work with third party audio device modules. In addition, this binding implemented custom audio modules. These modules are allowing transfer audio data directly from Python via bytes, transfer and control the playback/recording of a file or a virtual system device.

How to build

Short answer for Linux:

git clone git@github.com:MarshalX/tgcalls.git --recursive
cd tgcalls

For x86_64:

docker-compose up tgcalls_x86_64

For AArch64 (ARM64):

docker-compose up tgcalls_aarch64

Python wheels will be available in dist folder in root of tgcalls.

More info:

Also, you can investigate into manylinux GitHub Actions builds.

Documentation

Temporarily, instead of documentation, you can use an example along with MTProto.


velar
Documentation PyPi Sources

velar

This project is implementation of using tgcalls Python binding together with MTProto. By default, this library are supports Fipper and Telethon clients for working with Telegram Mobile Protocol. You can write your own implementation of abstract class to work with other libraries.

Learning by example

Visit this page to discover the official examples.

Documentation

velar's documentation lives at tgcalls.org.

Audio file formats

RAW files are now used. You will have to convert to this format yourself using ffmpeg. The example how to transcode files from a code is available here.

From mp3 to raw (to play in voice chat):

ffmpeg -i input.mp3 -f s16le -ac 2 -ar 48000 -acodec pcm_s16le input.raw

From raw to mp3 (files with recordings):

ffmpeg -f s16le -ac 2 -ar 48000 -acodec pcm_s16le -i output.raw clear_output.mp3

For playout live stream you can use this one:

ffmpeg -y -i http://stream2.cnmns.net/hope-mp3 -f s16le -ac 2 -ar 48000 -acodec pcm_s16le input.raw

For YouTube videos and live streams you can use youtube-dl:

ffmpeg -i "$(youtube-dl -x -g "https://youtu.be/xhXq9BNndhw")" -f s16le -ac 2 -ar 48000 -acodec pcm_s16le input.raw

And set input.raw as input filename.


Getting help

You can get help in several ways:

Contributing

Contributions of all sizes are welcome.

Special thanks to

License

You may copy, distribute and modify the software provided that modifications are described and licensed for free under LGPL-3. Derivatives works (including modifications or anything statically linked to the library) can only be redistributed under LGPL-3, but applications that use the library don't have to be.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

velar-0.0.1-cp312-cp312-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.12

velar-0.0.1-cp311-cp311-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.11

velar-0.0.1-cp310-cp310-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.10

velar-0.0.1-cp39-cp39-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.9

velar-0.0.1-cp38-cp38-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.8

velar-0.0.1-cp37-cp37m-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.7m

File details

Details for the file velar-0.0.1-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6afce8ca01f3a7fe4013e232bca706db72aa74997617918324e53a218277e2ae
MD5 a98fbb852c15a4dc724fbed237b990ad
BLAKE2b-256 7658e1910627dfa07a3ca3d57a88d305f94275482ffd091cc06d4257a9d27238

See more details on using hashes here.

File details

Details for the file velar-0.0.1-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5979575592db6cd70d9bf83a69708c4ae8563e25dce9bf15aef4801a683e7292
MD5 248f875a3d651d090fa655387a230de6
BLAKE2b-256 503ab649380a5ff4a254ed606b690c916e82ca6acb25716fb1ce2202e774fe35

See more details on using hashes here.

File details

Details for the file velar-0.0.1-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 560c289849393b5ec64825da3bc65026e36c235e3ce476c48072863ea3a25ac8
MD5 fccb92a0b802e7f9b5053640c773cb86
BLAKE2b-256 401b4c6e725125b00be1acd4a2d4eef9f8d3722e929349ae7ce847f0ad02652a

See more details on using hashes here.

File details

Details for the file velar-0.0.1-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a11f70eca55787dca0ccb35fe44c5de45945056e86d623516151b9e0fd65a48c
MD5 4a34ce276751785a875b634b82adc4aa
BLAKE2b-256 ca05169626723f8767c095f075ff7d017fc55aaf2190b6a2182c41d91f2282c5

See more details on using hashes here.

File details

Details for the file velar-0.0.1-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9655ddf216c372f42f36145aab8bcdc9b5f264f5a04e7288794aaf5e5e52f69
MD5 06e831cccb104d0034b582a020cba0b6
BLAKE2b-256 8e630bcfa417ff717690d2a00443646c60af40403526f3fefc3f5f2ffa09e03b

See more details on using hashes here.

File details

Details for the file velar-0.0.1-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for velar-0.0.1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4de9dbc330d7abb06e94a753f355067c05eb6528d0eafd359e12ee35bfa8a67a
MD5 59d4dc055364d4bf8d771b2384526d9c
BLAKE2b-256 f3450c2dc2e73bcca3594c27a57efbf4b8c64b179db6076c40570c82f135ca2d

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