代码片段
代码片段
这些是我在日常开发中使用的代码片段,你可以直接复制过去用!
cloudflare snippet版本的gtalk
javascript基于cloudflare snippet的tg说说
snippet
export default {
async fetch(request, env, ctx) {
return await TelgramChannelStarter(request)
}
}
const ElementSpliter = (html, StartElement) => {
const Elements = []
const ElementSpliterOnce = (html, StartElement) => {
let ElementName = [...StartElement.matchAll(/\<(?<ELENAME>[a-zA-Z0-9]+)\s/g)][0].groups.ELENAME
let ElementContent = StartElement
for (let Start = html.indexOf(StartElement) + StartElement.length; Start < html.length; Start++) {
ElementContent += html[Start]
if (ElementContent.endsWith('</' + ElementName + '>')) {
const PrefixCount = Object.keys(ElementContent.match(new RegExp('\\<' + ElementName, 'g'))).length
const SuffixCount = Object.keys(ElementContent.match(new RegExp('\\<\/' + ElementName + '(.*?)>', 'g')) || []).length
if (
PrefixCount === SuffixCount &&
PrefixCount !== 0
) {
return ElementContent
}
}
}
}
while (1) {
if (html.indexOf(StartElement) === -1) break
const SplitOnce = ElementSpliterOnce(html, StartElement)
Elements.push(SplitOnce)
html = html.replace(SplitOnce, '')
}
return Elements
}
const ChannelName = 'taluohui815'
const version = "2.1.7"
let denined = true
const deninedRegion = ["CN"]
const TelgramChannelStarter = async (request) => {
const url = new URL(request.url)
const Region = request.headers.get('cf-ipcountry')
if (!deninedRegion.includes(Region)) denined = false
const proxyUrl = url.searchParams.get('proxy')
if (!!proxyUrl) {
if (!(proxyUrl.match(/\://(.*?)\.telegram\.org/g) || proxyUrl.match(/\://(.*)\.cdn\-telegram\.org/g))) return new Response('Proxy URL is not valid')
return fetch(proxyUrl)
}
const startbefore = url.searchParams.get('startbefore')
const ChannelUrl = new URL('https://t.me/s/' + ChannelName)
if (!!startbefore) ChannelUrl.searchParams.set('before', startbefore)
const getDataFromTelegram = await fetch(ChannelUrl, {
"headers": {
"x-requested-with": "XMLHttpRequest"
},
"method": "POST"
})
.then(res => res.text())
.then(res => res
.replace(/\\n/g, '')
.replace(/\\(.)/g, '$1')
.replace(/(^\"|\"$)/g, '')
)
if (url.searchParams.get('rawHtml') === 'true') return new Response(getDataFromTelegram, {
headers: {
"content-type": "text/html;charset=UTF-8",
"Access-Control-Allow-Origin": "*"
}
})
const nextBefore = Number((getDataFromTelegram.match(/data-before="([0-9]+)"/g) || ["0"])[0].match(/[0-9]+/g))
const ChannelMessages = ElementSpliter(getDataFromTelegram, '<div class="tgme_widget_message_wrap')
let ChannelMessageData = [];
let newChannelMessageData = [];
for (let ChannelMessage of ChannelMessages) {
const MessageId = [...ChannelMessage.matchAll(/data-post\=\"(?<MID>.*?)\"/g)][0].groups.MID.split('/')[1];
let MessageText = ElementSpliter(ChannelMessage, '<div class="tgme_widget_message_text js-message_text"')[0] || '';
MessageText = MessageText.replace(/<tg-spoiler>(.*?)<\/tg-spoiler>/g, '<span class="shady"><s>$1</s></span>');
if (!MessageText.match(/\#SFCN/g) && denined) continue;
const MessagePhoto = [...ChannelMessage.matchAll(/background\-image\:url\(\'(?<URL>.*?)\'\)/g)].map(e => e.groups.URL) || [];
const getViews = [...ChannelMessage.matchAll(/<span class="tgme_widget_message_views">(?<VIEWS>.*?)<\/span>/g)][0];
const messageData = {
id: MessageId,
text: MessageText.replace(/\<div (.*?)\>/g, '').replace(/\<\/div\>/g, ''),
image: MessagePhoto,
time: new Date([...ChannelMessage.matchAll(/datetime\=\"(?<TIME>.*?)\"/g)][0].groups.TIME).getTime(),
views: getViews ? getViews.groups.VIEWS : null
};
if (messageData.text.includes("Channel") && messageData.views === null) {
continue;
}
newChannelMessageData.unshift(messageData);
}
ChannelMessageData = newChannelMessageData
return new Response(JSON.stringify({
nextBefore,
Region,
version,
ChannelMessageData
}), {
headers: {
"content-type": "application/json;charset=UTF-8",
"Access-Control-Allow-Origin": "*"
}
})
} 共 1 条,第 1 / 1 页
-浏览