GithubHelp home page GithubHelp logo

reejit / tgcalls Goto Github PK

View Code? Open in Web Editor NEW

This project forked from marshalx/tgcalls

0.0 0.0 0.0 25.84 MB

Voice chats, private incoming and outgoing calls in Telegram for Developers

Home Page: https://t.me/tgcallslib

License: GNU Lesser General Public License v3.0

CMake 6.26% C++ 32.13% Python 51.97% Shell 0.58% Dockerfile 8.34% Mako 0.72%

tgcalls's Introduction

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

Telegram WebRTC (VoIP)

from pyrogram import Client, filters
from pytgcalls import GroupCall

app = Client('pytgcalls')
group_call = GroupCall(app, 'input.raw')


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


app.run()

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

Features

  • Python solution.
  • Work with voice chats.
  • Multiply chats.
  • Payout from file.
  • Output (recording) to file.
  • Change files at runtime.
  • Stop payout/output.
  • Speaking status with levels inside and outside of VC.
  • Mute, unmute, volume control, handlers and more...

Requirements

  • Python 3.6 or higher.
  • A Telegram API key.
  • x86_64 platform and Unix system (WSL for Windows).

TODO list

  • Incoming and Outgoing calls (already there and working, but not in release).
  • Video calls (video from/to a file etc).
  • Additional things for working with ffmpeg.
  • Windows and macOS Python wheels and more...

Installing

pip3 install pytgcalls -U

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 clients. To implement the library, the code of official clients (tdesktop and android) was studied. Changes have been made to the Telegram library. All modified code is available as a subtree in this repository. The main idea of the changes is to add the ability to play from other sources (from a file, for example) and improve the sound quality by making the minimum number of code edits for a simple update. In addition to changes in the Telegram library, a minimal change was made to the WebRTC, also available as a subtree.

How to build

Also you can investigate into manylinux builds.

Documentation

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


pytgcalls
Documentation PyPi Sources

pytgcalls

This project is for the most part an example for using tgcalls Python binding together with MTProto. A Pyrogram was chosen as a library for working with MTProto. You can easily write your own implementation to work with Telethon.

Learning by example

Visit this page to discover the official examples.

Documentation

pytgcalls'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. This procedure may become easier in the future.

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.

tgcalls's People

Contributors

marshalx avatar dashezup avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.