Skip to content

Instantly share code, notes, and snippets.

@freelze
Last active June 19, 2018 14:36
Show Gist options
  • Save freelze/08be6601415b7542037fe07dcff5ce63 to your computer and use it in GitHub Desktop.
Save freelze/08be6601415b7542037fe07dcff5ce63 to your computer and use it in GitHub Desktop.
Scrape mangakakalot website , telegram you when the mangas update.
// reference:https://github.com/ocordova/gas-telegram-bot , https://github.com/we684123/Telegram_bot_example , http://fu7771.blogspot.com/2017/08/google-script-telegram-bot.html
// https://api.telegram.org/botKEY/setWebhook?url=https://...
var id = ""
var key = ""
var sheetID = ""
function doPost(e) {
var update = JSON.parse(e.postData.contents);
// Make sure this is update is a type message
if (update.hasOwnProperty('message')) {
var msg = update.message;
var chatId = msg.chat.id;
if (msg.text == '/start') {
var _date = new Date();
var SpreadSheet = SpreadsheetApp.openById(sheetID);
var Sheet = SpreadSheet.getSheetByName("id");
var LastRow = Sheet.getLastRow();
Sheet.getRange(LastRow+1, 1).setValue(_date);
Sheet.getRange(LastRow+1, 2).setValue(String(chatId));
}
}
}
//=================================================================
function idGroup()
{
var list=[];
var SpreadSheet = SpreadsheetApp.openById(sheetID);
var Sheet = SpreadSheet.getSheetByName("id");
var LastRow = Sheet.getLastRow();
for(i=1;i<=LastRow;i++)
{
list.push(Sheet.getRange(i, 2).getValue());
}
return list;
}
//=================================================================
function sendtext(i,data){
var H = '<b>bold</b>, <strong>bold</strong>\
<i>italic</i>, <em>italic</em>\
<a href="http://www.example.com/">inline URL</a>\
<code>inline fixed-width code</code>\
<pre>pre-formatted fixed-width code block</pre>'
var payload = {
"method": "sendMessage",
'chat_id': i,
'text': data
}
start(payload);
}
//=================================================================
function scrapeManga(mangaName) {
var url = "http://mangakakalot.com/manga/" + mangaName;
var fromText = '<div class="row"';
var toText = '</div>';
var content = UrlFetchApp.fetch(url).getContentText();
// Need to insert a library(Resources -> Library):M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV
var scraped = Parser
.data(content)
.from(fromText)
.to(toText)
.build()
var href = Parser
.data(scraped)
.from('href="')
.to('"')
.build();
var SpreadSheet = SpreadsheetApp.openById(sheetID);
var Sheet = SpreadSheet.getSheetByName(mangaName);
var LastRow = Sheet.getLastRow();
var old_href = Sheet.getRange(LastRow, 2).getValue();
var idList=[];
idList = idGroup();
if(old_href != href) // Manga Update
{
for(i=0;i<idList.length;i++)
{
sendtext(idList[0],href);
}
var d = new Date();
Sheet.getRange(LastRow + 1, 1).setValue(d);
Sheet.getRange(LastRow + 1, 2).setValue(href);
}
}
//=================================================================
function mangaName()
{
var manga_Name = ["Beastars","tomochan_wa_onnanoko","nidoume_no_jinsei_wo_isekai_de"];
for(i in manga_Name)
{
scrapeManga(manga_Name[i]);
}
}
//===================================以下是標準發送跟記下Log==================================================
function start(payload) {
var data = {
"method": "post",
"payload": payload
}
var d = new Date();
var SpreadSheet = SpreadsheetApp.openById(sheetID);
var Sheet = SpreadSheet.getSheetByName("紀錄發送的訊息");
var LastRow = Sheet.getLastRow();
Sheet.getRange(LastRow + 1, 1).setValue(d);
Sheet.getRange(LastRow + 1, 3).setValue(data);
var returned = UrlFetchApp.fetch("https://api.telegram.org/bot" + key + "/", data);
Sheet.getRange(LastRow + 1, 2).setValue(d);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment