text2feature / static /js /summarizer.js
Djacon's picture
Add Youtube caption parser
c6714eb
raw
history blame
5.91 kB
// Form Divs
const form = document.getElementById("sum-form");
const sumText = document.getElementById("sum-text-div");
const sumFile = document.getElementById("sum-file-div");
const sumVideo = document.getElementById("sum-video-div");
// Form Data
const selectOption = document.getElementById("sum-type");
const sumTextInput = document.getElementById("sum-text-input");
const sumFileInput = document.getElementById("sum-file-input");
const sumVideoInput = document.getElementById("sum-video-input");
// Error Output Section
const sumError = document.getElementById("sum-err");
// Result Section
const extractText = document.getElementById("extracted-text");
const summaryText = document.getElementById("summarized-text");
const MAX_SIZE = 5000;
// In progress...
function _summarize() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://www.editpad.org/tool/tool/summarizingTool", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = `text=${extractText.value}&percnt=40&modd=1&captha=0`;
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
summaryText.value = response.content;
}
};
xhr.send(data)
return;
}
function _extractFile() {
const file = sumFileInput.files[0];
if (file.type === 'text/plain') {
const reader = new FileReader();
reader.onload = function() {
extractText.value = reader.result.slice(0, MAX_SIZE);
};
reader.readAsText(file, 'CP1251');
} else if (file.type === 'application/pdf') {
extractText.value = '';
const reader = new FileReader();
reader.onload = function (e) {
const pdfData = e.target.result;
pdfjsLib.getDocument(pdfData).promise.then(function (pdfDocument) {
for (let pageNum = 1; pageNum <= pdfDocument.numPages; pageNum++) {
pdfDocument.getPage(pageNum).then(function (pdfPage) {
pdfPage.getTextContent().then(function (textContent) {
let size = extractText.value.length;
let pageText = [];
for (const textItem of textContent.items) {
pageText.push(textItem.str);
size += textItem.str.length;
if (size > MAX_SIZE) break;
}
extractText.value += pageText.join(' ');
});
});
}
});
};
reader.readAsDataURL(file);
}
return;
}
// In progress...
function _getCaptions(src) {
return src;
}
async function summarize(event) {
event.preventDefault();
if (selectOption.value === 'sum-video' && !sumVideoInput.value.startsWith('https://www.youtube.com/watch?v=')) {
sumError.innerText = 'Invalid Youtube Link';
sumError.classList.remove('hidden');
return;
}
switch (selectOption.value) {
case 'sum-text':
len = sumTextInput.value.length
if (len < 100) {
sumError.innerText = `The text size should be at least 100 characters (${len} < 100)`;
sumError.classList.remove('hidden');
return;
}
break;
case 'sum-file':
const allowedTypes = ['application/pdf', 'text/plain'];
const file = sumFileInput.files[0];
if (!file) {
sumError.innerText = 'There is no File';
sumError.classList.remove('hidden');
return;
}
if (!allowedTypes.includes(file.type)) {
sumError.innerText = 'Not supported type (Only `.pdf` or `.txt`)';
sumError.classList.remove('hidden');
return;
}
}
sumError.classList.add('hidden');
// Here we can finally summarize data
switch (selectOption.value) {
case 'sum-text':
extractText.value = sumTextInput.value.slice(0, MAX_SIZE);
break;
case 'sum-file':
_extractFile();
summaryText.value = 'Please wait...';
await (new Promise(resolve => setTimeout(resolve, 1000)));
break;
case 'sum-video':
_getCaptions(sumVideoInput.value);
break;
}
_summarize();
}
document.addEventListener("DOMContentLoaded", function () {
selectOption.addEventListener("change", function () {
switch (selectOption.value) {
case 'sum-text':
sumText.classList.remove('hidden');
sumFile.classList.add('hidden');
sumVideo.classList.add('hidden');
sumTextInput.setAttribute("required", "");
sumVideoInput.removeAttribute("required");
break;
case 'sum-file':
sumText.classList.add('hidden');
sumFile.classList.remove('hidden');
sumVideo.classList.add('hidden');
sumTextInput.removeAttribute("required");
sumVideoInput.removeAttribute("required");
break;
case 'sum-video':
sumText.classList.add('hidden');
sumFile.classList.add('hidden');
sumVideo.classList.remove('hidden');
sumTextInput.removeAttribute("required");
sumVideoInput.setAttribute("required", "");
break;
}
sumError.classList.add('hidden');
});
});
document.addEventListener("DOMContentLoaded", function () {
var submitButton = document.getElementById("submit");
submitButton.addEventListener("click", summarize);
});