Instant View — Python и PowerShell — Telegram
Все наверное помнят мою статью про Instant View. После написания той статьи прошло достаточно много времени, но к сожалению Telegram не добавил мой шаблон в автоматический режим преобразования страницы. Поэтому пришлось отправлять ссылки в Telegram оборачивая их.
Оборачивание происходит следующим образом:
- Берем ссылку на статью https://flammlin.com/blog/2021/10/25/instant-view-python-i-powershell-telegram/
- Добавляем ее между строк:
1 |
https://t.me/iv?url= |
и завершаем:
1 |
&rhash=04e5436367155a7 |
rhash можно получить на странице создания Instant View.
Задача
Решил упростить свою задачу до скрипта, который сможет через параметр передавать таким образом ссылку в Telegram. Но необходимо будет создать бота, добавить его в чат (потребуются админские права) и уже через него отравлять ссылку.
PowerShell
Скрипт на PowerShell вышел значительно быстрее, но осталась проблема — всплывающее окно уведомление о передачи файлов cookie. Можно нажать как и да, так и нет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
param( [Parameter(ValueFromPipeline=$true)] [string] $Url ) $token = "485646506:AAG3xy_pFhYCClWcm6yG9qKNEHWvaW8" $chat_id = "6546566" # -UseBasicParsing $Site = (Invoke-WebRequest -Uri $Url -UserAgent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36") $Title = ($Site.ParsedHtml.getElementsByTagName('h1') | Where{ $_.className -eq 'post-title' } ).innerText $UrlF = "https://t.me/iv?url=" $UrlL = "&rhash=04e5436367155a7" $UrlTG = $UrlF + $Url + $UrlL $Message = "<a href=$UrlTG>$Title</a>" $text = "[$Title]($UrlTG) $Url" $payload = @{ "chat_id" = $chat_id; "text" = $text; "parse_mode" = 'Markdown'; } Invoke-WebRequest ` -Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) ` -Method Post ` -ContentType "application/json;charset=utf-8" ` -Body (ConvertTo-Json -Compress -InputObject $payload) |
Python
Скрипт на Python появился у меня из-за проблем с PowerShell на Linux. К сожалению на Linux ставится сразу 7 версия, что не подходит для скрипта выше. Для работы скрипта потребуются дополнительные библиотеки.
pip3 install beautifulsoup4
pip3 install pytelegrambotapi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import argparse import os from argparse import ArgumentParser import telebot from urllib.request import urlopen from bs4 import BeautifulSoup bot = telebot.TeleBot('485646506:AAG3xy_pFhYCClWcm6yG9qKNEHWvaW8') idusers = '6546566' parser: ArgumentParser = argparse.ArgumentParser(description='Send message') parser.add_argument('-m', default=os.environ.get('URL'), action="store", dest="Url", required=True) args = parser.parse_args() UrlF = "https://t.me/iv?url=" UrlL = "&rhash=04e5436367155a7" UrlTG = UrlF + args.Url + UrlL soup = BeautifulSoup(urlopen(args.Url), "html.parser") Title = soup.title.get_text() Header = Title.rstrip(' - Всяко разно') # Delete - Всяко разно text = "[" + Header + "]" + "(" + UrlTG + ")" + '\n' + args.Url bot.send_message(idusers, text, parse_mode= 'Markdown') |
P.S.
Скрипты написаны под шаблон сайта flammlin.com, поэтому под свой сайт их придется немного переделать. Я думаю что достаточно будет определить заголовок.