Git Product home page Git Product logo

telegramrss's Introduction

TelegramRSS

RSS/JSON generator for telegram

Get posts from my TelegramApiServer and output them as RSS or JSON.

Features

  • Fast async amphp http server
  • Use as micro-service to access Telegram API
  • Get any public telegram posts from groups as json or RSS
  • fail2ban, RPM limits, IP blacklist
  • Full media support. Access any media from messages via direct links.

Architecture Example

Architecture Example

Installation

  1. Install docker
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh ./get-docker.sh
  2. Install and start Telegram Api Server
  3. Install and start
    git clone https://github.com/xtrime-ru/TelegramRSS.git TelegramRSS
    cd TelegramRSS
  4. cp .env.docker.example .env.docker and check settings in .env.docker: domain, ratelimit, allowed refferes, etc...
  5. Start container:
    docker compose pull
    docker compose up -d
    

Upgrade to v4

git pull
docker compose pull
cp .env.docker .env.docker.v1
cat .env.docker.example > .env.docker
#check new config and move old options from your .env.docker.v1 to new .env.docker
docker compose up -d

Additional steps

  1. Edit .env.docker if needed.
  2. Restart RSS server docker compose restart
  3. Example of Nginx config
    server {
        listen      %ip%:443 ssl;
        server_name tg.i-c-a.su;
    
        ssl_certificate      /home/admin/conf/web/ssl.tg.i-c-a.su.pem;
        ssl_certificate_key  /home/admin/conf/web/ssl.tg.i-c-a.su.key;
    
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header SERVER_PORT $server_port;
            proxy_set_header REMOTE_ADDR $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
    
            fastcgi_param REMOTE_ADDR $http_x_real_ip;
            proxy_http_version 1.1;
            proxy_set_header Connection "keep-alive";
    
            proxy_pass http://127.0.0.1:9504;
        }
    
    }
    
    Set REAL_IP_HEADER=X-Forwarded-For in .env.docker to retrieve client IP from nginx.

Examples

JSON

RSS

Media

Default address of RSS server is http://127.0.0.1:9504/

Contacts

  • Telegram: @xtrime
  • Email: alexander(at)i-c-a.su

telegramrss's People

Contributors

xtrime-ru avatar zxce3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

telegramrss's Issues

Few questions

Приветствую, есть пара вопросов.

  1. В логах вижу кучу ошибок, в telegram api server все относительно чисто
    [2021-09-04 09:09:34] TelegramRSS\Client->get: Client crashed and restarting. Resending request.
    [2021-09-04 09:09:34] TelegramRSS\Client->get: Client crashed and restarting. Resending request.
    [2021-09-04 09:09:34] TelegramRSS\Client->get: Client crashed and restarting. Resending request.

Иногда проскакивает
[2021-09-04 09:10:52] TelegramRSS\Controller->checkErrors: {
"errors": [
"Telegram client connection error"
]
}
2. "Media exceeds size limit. Size: 475135283 bytes; limit: 314572800 bytes"

А не подскажите возможно ли увеличить лимит и если да то где? В RSS или Telegram Api

Спасибо.

Перестал работать, как обновить.

Здравствуйте, 2 месяца назад всё работало, а теперь при запуске [critical] SESSION_REVOKED
Возможно, что нужно обновить, обновление это команды в заголовке Upgrade to v4? Но не помогает, помогите, пожалуйста, как это исправить?

[2024-05-19 09:30:02] [warning] Connecting to DC 2
[2024-05-19 09:30:02] [warning] Resetting session in DC 2.0...
[2024-05-19 09:30:02] [warning] Connecting to DC 2.0 via tcp://149.154.167.41:443 main DC 2,                                  via ipv4 using AbridgedStream => BufferedRawStream => DefaultStream
[2024-05-19 09:30:02] [warning] Connected to DC 2.0 via tcp://149.154.167.41:443 main DC 2,                                  via ipv4 using AbridgedStream => BufferedRawStream => DefaultStream!
[2024-05-19 09:30:03] [critical] SESSION_REVOKED
[2024-05-19 09:30:13] [error] Still missing users.getUsers, auth.logOut,  on DC 2.0, sending                                  state request
[2024-05-19 09:30:18] [critical] Reporting: Amp\TimeoutException: Request timeout in /app-ho                                 st-link/vendor/danog/madelineproto/src/MTProtoSession/AckHandler.php:125
Stack trace:
#0 /app-host-link/vendor/danog/madelineproto/src/WrappedFuture.php(59): danog\MadelineProto\                                 Connection::danog\MadelineProto\MTProtoSession\{closure}()
#1 /app-host-link/vendor/danog/madelineproto/src/MTProtoSession/CallHandler.php(92): danog\M                                 adelineProto\WrappedFuture->await()
#2 /app-host-link/vendor/danog/madelineproto/src/MTProtoTools/CallHandler.php(45): danog\Mad                                 elineProto\Connection->methodCallAsyncRead('users.getUsers', Array)
#3 /app-host-link/vendor/danog/madelineproto/src/MTProto.php(1470): danog\MadelineProto\MTPr                                 oto->methodCallAsyncRead('users.getUsers', Array)
#4 /app-host-link/vendor/danog/madelineproto/src/MTProto.php(1014): danog\MadelineProto\MTPr                                 oto->fullGetSelf()
#5 /app-host-link/vendor/danog/madelineproto/src/API.php(338): danog\MadelineProto\MTProto->                                 wakeup(Object(danog\MadelineProto\Settings), Object(danog\MadelineProto\APIWrapper))
#6 /app-host-link/vendor/danog/madelineproto/src/API.php(194): danog\MadelineProto\API->conn                                 ectToMadelineProto(Object(danog\MadelineProto\Settings))
#7 /app-host-link/src/Client.php(68): danog\MadelineProto\API->__construct('sessions/sessio.                                 ..', Object(danog\MadelineProto\Settings))
#8 /app-host-link/src/Client.php(37): TelegramApiServer\Client->addSession('session')
#9 /app-host-link/src/Server/Server.php(47): TelegramApiServer\Client->connect(Array)
#10 /app-host-link/server.php(107): TelegramApiServer\Server\Server->__construct(Array, Arra                                 y)
#11 {main}
[2024-05-19 09:30:18] [critical] Amp\TimeoutException: Request timeout in /app-host-link/ven                                 dor/danog/madelineproto/src/MTProtoSession/AckHandler.php:125
Stack trace:
#0 /app-host-link/vendor/danog/madelineproto/src/WrappedFuture.php(59): danog\MadelineProto\                                 Connection::danog\MadelineProto\MTProtoSession\{closure}()
#1 /app-host-link/vendor/danog/madelineproto/src/MTProtoSession/CallHandler.php(92): danog\M                                 adelineProto\WrappedFuture->await()
#2 /app-host-link/vendor/danog/madelineproto/src/MTProtoTools/CallHandler.php(45): danog\Mad                                 elineProto\Connection->methodCallAsyncRead('users.getUsers', Array)
#3 /app-host-link/vendor/danog/madelineproto/src/MTProto.php(1470): danog\MadelineProto\MTPr                                 oto->methodCallAsyncRead('users.getUsers', Array)
#4 /app-host-link/vendor/danog/madelineproto/src/MTProto.php(1014): danog\MadelineProto\MTPr                                 oto->fullGetSelf()
#5 /app-host-link/vendor/danog/madelineproto/src/API.php(338): danog\MadelineProto\MTProto->                                 wakeup(Object(danog\MadelineProto\Settings), Object(danog\MadelineProto\APIWrapper))
#6 /app-host-link/vendor/danog/madelineproto/src/API.php(194): danog\MadelineProto\API->conn                                 ectToMadelineProto(Object(danog\MadelineProto\Settings))
#7 /app-host-link/src/Client.php(68): danog\MadelineProto\API->__construct('sessions/sessio.                                 ..', Object(danog\MadelineProto\Settings))
#8 /app-host-link/src/Client.php(37): TelegramApiServer\Client->addSession('session')
#9 /app-host-link/src/Server/Server.php(47): TelegramApiServer\Client->connect(Array)
#10 /app-host-link/server.php(107): TelegramApiServer\Server\Server->__construct(Array, Arra                                 y)

Не загружается картинка, бесконечное открытие страницы

Здравствуйте, не подгружается картинка, если её открывать по /media/channel_name/11/preview/thumb.jpeg, то она открывается бесконечно долго и зависает. Причём та картинка, которая взята из url чужого сайта, когда у поста нету картинки, но есть ссылка, а если картинка из самого поста телеграм, то с ней всё нормально. Почему так? Подскажите, пожалуйста, как можно исправить.

Improvements

  • Disable Ban, when RPM = 0
  • Add option to return data from all channels, not only public

Logging

Enable logging on monolog

Code Review

Trouble with cache/forbidden-peers.csv

I've encountered an issue while configuring TelegramRSS.
At first, I made a request /rss/addmeto when I had no active session and got error:
No sessions available. Call /system/addSession?session=%session_name% or restart server with --session option.
Then I logged in as a bot and the following request /RSS/breakingmash responded with BOT_METHOD_INVALID.
These two results are cached in forbidden-peers.csv so all the next requests to addmeto and breakingmash answered with errors despite a correct session. I assume that there should be a way to invalidate the cache.

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.