Python Web App which indexes a telegram channel(or a chat) and serves its files for download.
- Index one or more telegram channels/chats.
- View messages and media files on the browser.
- Search through the channel/chat.
- Download media files through browser/download managers.
- Clone to local machine.
git clone https://github.com/odysseusmax/tg-index.git
cd tg-index
- Create and activate virtual environment.
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
- Install dependencies.
pip3 install -U -r requirements.txt
- Environment Variables.
Variable Name | Value |
---|---|
API_ID (required) |
Telegram api_id obtained from https://my.telegram.org/apps. |
API_HASH (required) |
Telegram api_hash obtained from https://my.telegram.org/apps. |
INDEX_SETTINGS (required) |
See the below description. |
SESSION_STRING (required) |
String obtained by running $ python3 app/generate_session_string.py . (Login with the telegram account which is a participant of the given channel (or chat). |
PORT (optional) |
Port on which app should listen to, defaults to 8080. |
HOST (optional) |
Host name on which app should listen to, defaults to 0.0.0.0. |
DEBUG (optional) |
Give true to set logging level to debug, info by default. |
BLOCK_DOWNLOADS (optional) |
Enable downloads or not. If any value is provided, downloads will be disabled. |
RESULTS_PER_PAGE (optional) |
Number of results to be returned per page defaults to 20. |
TGINDEX_USERNAME (optional) |
Username for authentication, defaults to '' . |
PASSWORD (optional) |
Password for authentication, defaults to '' . |
SHORT_URL_LEN (optional) |
Url length for aliases |
SESSION_COOKIE_LIFETIME (optional) |
Number of minutes, for which authenticated session is valid for, after which user has to login again. defaults to 60. |
SECRET_KEY (optional) |
Long string for signing the session cookies, required if authentication is enabled. |
- Setting value for
INDEX_SETTINGS
This is the general format, change the values of corresponding fields as your requirements. Remember to remove spaces.
{
"index_all": true,
"index_private":false,
"index_group": false,
"index_channel": true,
"exclude_chats": [],
"include_chats": []
}
index_all
- Whether to consider all the chats associated with the telegram account. Value should either betrue
orfalse
.index_private
- Whether to index private chats. Only considered ifindex_all
is set totrue
. Value should either betrue
orfalse
.index_group
- Whether to index group chats. Only considered ifindex_all
is set totrue
. Value should either betrue
orfalse
.index_channel
- Whether to index channels. Only considered ifindex_all
is set totrue
. Value should either betrue
orfalse
.exclude_chats
- An array/list of chat id's that should be ignored for indexing. Only considered ifindex_all
is set totrue
.include_chats
- An array/list of chat id's to index. Only considered ifindex_all
is set tofalse
.
- Run app.
python3 -m app
Contributions are welcome.
You can contact me @odysseusmax.
Code released under The GNU General Public License.