Telegram Bot For Screenshot Generation.

Overview

Screenshotit_bot

Telegram Bot For Screenshot Generation.

Description

An attempt to implement the screenshot generation of telegram files without downloading the entire file. Live version can be found here @screenshotit_bot.

Installation Guide

Prerequisites

  • FFmpeg.
  • Python3 (3.6 or higher).

Local setup

The setup given here is for a linux environment (Debian/Ubuntu).

  • Clone to local machine.
$ git clone https://github.com/odysseusmax/animated-lamp.git
$ cd animated-lamp
  • Create and activate virtual environment.
$ python3 -m venv venv
$ source venv/bin/activate
  • Install dependencies.
$ pip3 install -U -r requirements.txt

Deploy on Heroku

Press the below button to Fast deply to Heroky

Deploy

Environment Variables

Properly setup the environment variables or populate config.py with the values. Setting up environment variables is advised as some of the values are sensitive data, and should be kept secret.

  • API_ID(required) - Get your telegram API_ID from https://my.telegram.org/.
  • API_HASH(required) - Get your telegram API_HASH from https://my.telegram.org/.
  • BOT_TOKEN(required) - Obtain your bot token from Bot Father.
  • LOG_CHANNEL(required) - Log channel's id.
  • DATABASE_URL(required) - Mongodb database URI.
  • AUTH_USERS(required) - Admin(s) of the bot. User's telegram id separated by space. Atleast one id should be specified.
  • HOST(required) - Public URL of file streaming service (See Setting up Streaming Service).
  • SESSION_NAME(optional) - Name you want to call your bot's session, Eg: bot's username.
  • MAX_PROCESSES_PER_USER(optional) - Number of parallel processes each user can have, defaults to 2.
  • MAX_TRIM_DURATION(optional) - Maximum allowed video trim duration in seconds. Defaults to 600s.
  • TRACK_CHANNEL(optional) - User activity tracking channel's id. Only needed if you want to track and block any user. Disabled by default.
  • SLOW_SPEED_DELAY(optional) - Delay required between each interaction from users in seconds. Defaults to 5s.
  • TIMEOUT (optional) - Maximum time alloted to each process in seconds, after which process will be cancelled. Defaults to 1800s(30 mins).
  • DEBUG (optional) - Set some value to use DEBUG logging level. INFO by default.
  • IAM_HEADER (optional) - Authentication token for streaming service. Defaults to ''.
  • WORKER_COUNT (optional) - Number of process to be handled at a time. Defaults to 20.

Run bot

$ python3 -m bot

Now go and /start the bot. If everything went right, bot will respond with welcome message.

Setting up Streaming Service

The streaming service can be a custom version of TgFileStream, modded to work with this setup. The mod basicaly is adding a type of header based authentication and changing the endpoints. The authentication part is optional and the endpoint used here is /file/:chat_id/:message_id. Make sure to note these changes when deploying your own instance. The streaming service used for @screenshotit_bot is not related to TgFileStream and I do not plan to make it OSS.

Supported commands and functions

Commands

General commands

  • /start - Command to start bot or check whether bot is alive.
  • /settings - Command to configure bot's behavior'
  • /set_watermark - Command to add custom watermark text to screenshots. Usage: /set_watermark watermark_text.

Admin commands

Any user specified in AUTH_USERS can use these commands.

  • /status - Returns number of total users.
  • /ban_user - Command to ban any user. Usage: /ban_user user_id ban_duration ban_reason. user_id - telegram id of the user, ban_duration - ban duration in days, ban_reason - reason for ban. All 3 parameters are required.
  • /unban_user - Command to unban any banned user. Usage: /unban_user user_id. user_id - telegram id of the user. The parameter is required.
  • /banned_users - Command to view all banned users. Usage: /banned_users. This takes no parameters.
  • /broadcast - Command to broadcast some message to all users. Usage: reply /broadcast to the message you want to broadcast.

Functions

  • Screenshot Generation - Generates screenshots from telegram video files or streaming links. Number of screenshots range from 2-10.
  • Sample Video Generation - Generates sample video from telegram video files or streaming links. Video duration range from 30s to 150s. Configurable in /settings.
  • Video Trimming - Trims any telegram video files or streaming links.

Settings

In bot settings.

  • Upload Mode - Screenshot upload mode. Either as image file or as document file. Defaults to as image file.
  • Watermark - Watermark text to be embedded to screenshots. Texts upto 30 characters supported. Disabled by default.
  • Watermark Color - Font color to be used for watermark. Any of white, black, red, blue, green, yellow, orange, purple, brown, gold, silver, pink. Defaults to white.
  • Watermark Font Size - Font size to be used for watermarks. Any of small(30), medium(40), large(50). Defaults to medium.
  • Watermark Position - Watermark text's position. Defaults to bottom left.
  • Sample Video Duration - Sample video's duration. Any of 30s, 60s, 90s, 120s, 150s. Defaults to 30s.
  • Screenshot Genetation Mode - Either random or equally spaced. Defaults to equally spaced.

Contributions

Contributions are welcome.

Contact

You can contact me @odysseusmax.

Thanks

Thanks to Dan for his Pyrogram library.

Thanks to Tulir Asokan for his TgFileStream Bot.

Dependencies

  • pyrogram
  • tgcrypto
  • motor
  • dnspython
  • async-timeout
  • aiohttp

License

Code released under The GNU General Public License.

Simple screen recorder

Kooha Simple screen recorder Description Kooha is a simple screen recorder built with GTK. It allows you to record your screen and also audio from you

Dave Patrick 1.2k Jan 03, 2023
Python bindings to the Syncthing REST interface.

python-syncthing Python bindings to the Syncthing REST interface. Python API Documentation Syncthing Syncthing REST Documentation Syncthing Forums $ p

Blake VandeMerwe 64 Aug 13, 2022
Pixoo-Awesome is a tool to get more out of your Pixoo Devices.

Pixoo-Awesome is a tool to get more out of your Pixoo Devices. It uses the Pixoo-Client to connect to your Pixoo devices and send data to them. I targ

Horo 10 Oct 27, 2022
Autofilterv5 With Same more Features

Autofilterv5 With Same more Features ✨ Imbd + Index +.....

Selfie SD 8 Oct 21, 2022
Python based Algo trading bot for Nifty / Banknifty futures and options

Fully automated Alice Blue Algo Trading with Python on NSE and MCX for Nifty / Crude / Banknifty futures and options , absolutely FREE ! This algo tra

Rajesh Sivadasan 49 Dec 31, 2022
Cyber Userbot

Cyber Userbot

Irham 0 May 26, 2022
A simple telegram bot to forward files from one channel to other.

Forward_2.0 Bot to forward messages from one channel to other without admin permission in source channel. Can be used for both private and Public chan

SUBIN 56 Dec 29, 2022
Telegram bot for searching videos in your PDisk account by @AbirHasan2005

PDisk-Videos-Search A Telegram bot for searching videos in your PDisk account by @AbirHasan2005. Configs API_ID - Get from @TeleORG_Bot API_HASH - Get

Abir Hasan 39 Oct 21, 2022
This is a simple grabber written in Python which helps you to grab products from Willhaben.at

Willhaben Grabber This is a simple grabber written in Python which helps you to grab products from Willhaben.at General info The tool generates a sear

Ramo 0 Feb 16, 2022
Official implementation of DeepSportLab (a fork of OpenPifPaf)

DeepSportLab DeepSportLab: a Unified Framework for BallDetection, Player Instance Segmentationand Pose Estimation in Team Sports Scenes This paper pre

ISPGroupUCL 8 Sep 27, 2022
Hermes Bytecode Reverse Engineering Tool (Assemble/Disassemble Hermes Bytecode)

hbctool A command-line interface for disassembling and assembling the Hermes Bytecode. Since the React Native team created their own JavaScript engine

Pongsakorn Sommalai 216 Jan 03, 2023
A jokes api python module

A jokes api python module

Fayas Noushad 3 Nov 28, 2021
Official API documentation for Highrise

Highrise API The Highrise API is implemented as vanilla XML over HTTP using all four verbs (GET/POST/PUT/DELETE). Every resource, like Person, Deal, o

Basecamp 128 Dec 06, 2022
A collection of tools for managing Jira issues for the RHODS project

RHODS-Jira-Tools A collection of tools for managing Jira issues for the RHODS project move_to_qa.py This script handles transitioning a given Jira iss

Alex Corvin 1 Sep 20, 2022
Ditch Xiaomi's cloud and use a Telegram bot instead

Yi-Home_Telegram_Bot_Interface Ditch Xiaomi's cloud and use a Telegram bot instead Features Motion detection Works by monitoring a tmp file that is cr

Erli 10 Aug 18, 2022
A Discord Token Grabber/Stealer But It's in One Line of Coding

Discord-Token-Grabber-But-In-One-Line That's a Discord Token Grabber/Stealer But It's in One Line of Coding! The Name Says All 3

YoSoyAngi 2 Jan 11, 2022
批量下载抖音无水印视频

版权说明 本项目fork自Johnserf-Seed TikTokDownload。目的是为了增加个性化的功能,若想体验更多完善的功能请支持原作者的项目。 免责声明 本代码仅用于学习,下载后请勿用于商业用途。 环境要求 请检查宿主机,是否安装了python环境,并且配置了环境变量 pytho

Zhiwu Mao 44 Dec 28, 2022
ABACUS Aroio API for Webinterfaces and App-Connections

ABACUS Aroio API for Webinterfaces and App-Connections Setup Start virtual python environment if you don't have python3 running setup: $ python3 -m ve

Abacus Aroio Developer Team 1 Apr 01, 2021
This is a repository for the Duke University Cloud Computing course project on Serveless Data Engineering Pipeline. For this project, I recreated the below pipeline.

AWS Data Engineering Pipeline This is a repository for the Duke University Cloud Computing course project on Serverless Data Engineering Pipeline. For

15 Jul 28, 2021
A Python wrapper around the Twitter API.

Python Twitter A Python wrapper around the Twitter API. By the Python-Twitter Developers Introduction This library provides a pure Python interface fo

Mike Taylor 3.4k Jan 01, 2023