Untitled
unknown
plain_text
4 years ago
20 kB
7
Indexable
const express = require('express');
const bodyParser = require('body-parser');
const pdfP =require('pdf2json');
const app =express();
const crypto= require('crypto');
const multer=require('multer');
const {GridFsStorage} = require('multer-gridfs-storage');
const Grid = require('gridfs-stream');
const methodOverride = require('method-override');
const getStream =require('get-stream')
const mysql = require('mysql2');
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.use(bodyParser.json());
app.use(bodyParser.raw())
app.use(bodyParser.urlencoded({ extended: true }));
app.use(methodOverride('_method'));
app.use(express.static("./files"))
const path =require('path');
const pdfParse= require("pdf-parse");
const user =require("./models/user");
const pdfjs=require("pdfjs-dist/legacy/build/pdf")
async function getContent(src, pg) {
const doc = await pdfjs.getDocument(src).promise
const page = await doc.getPage(pg)
return page.getTextContent()
}
async function getItems(src) {
const content1 = await getContent(src, 1)
const items1 = content1.items
const content2 =await getContent(src, 2)
const items2 = content2.items
const content3 = await getContent(src, 3)
const items3 = content3.items
const content4 = await getContent(src, 4)
const items4 = content4.items
const content5 = await getContent(src, 5)
const items5 = content5.items
const content6 = await getContent(src, 6)
const items6 = content6.items
const content7 = await getContent(src, 7)
const items7 = content7.items
const content8 = await getContent(src, 8)
const items8 = content8.items
const content9 = await getContent(src, 9)
const items9 = content9.items
var page1 = []
var page2 = []
var page3 = []
var page4 = []
var page5 = []
var page6 = []
var page7 = []
var page8 = []
var page9 = []
for (let i = 0; i < items1.length; i++) {
if (isThereAnyText(items1[i])) {
page1.push(items1[i].str)
}
}
for (let i = 0; i < items2.length; i++) {
if (isThereAnyText(items2[i])) {
page2.push(items2[i].str)
}
}
for (let i = 0; i < items3.length; i++) {
if (isThereAnyText(items3[i])) {
page3.push(items3[i].str)
}
}
for (let i = 0; i < items4.length; i++) {
if (isThereAnyText(items4[i])) {
page4.push(items4[i].str)
}
}
for (let i = 0; i < items5.length; i++) {
if (isThereAnyText(items5[i])) {
page5.push(items5[i].str)
}
}
for (let i = 0; i < items6.length; i++) {
if (isThereAnyText(items6[i])) {
page6.push(items6[i].str)
}
}
for (let i = 0; i < items7.length; i++) {
if (isThereAnyText(items7[i])) {
page7.push(items7[i].str)
}
}
for (let i = 0; i < items8.length; i++) {
if (isThereAnyText(items8[i])) {
page8.push(items8[i].str)
}
}
for (let i = 0; i < items9.length; i++) {
if (isThereAnyText(items9[i])) {
page9.push(items9[i].str)
}
}
let pages = []
pages.push(page1)
pages.push(page2)
pages.push(page3)
pages.push(page4)
pages.push(page5)
pages.push(page6)
pages.push(page7)
pages.push(page8)
pages.push(page9)
return pages
}
let selam = 'aaa1'
let regex1 = new RegExp(/\d/)
console.log(regex1.test(selam)); // true
console.log("afasfsda")
function isThereAnyText(item) {
let regex = new RegExp(/[a-z]/i)
let regex1 = new RegExp(/\d/)
if (regex.test(item.str) || regex1.test(item.str)) {
return true
}
return false
}
function getAllInfo(pages) {
let className = getClassName(pages[0])
let term = getTerm(pages[1])
let authorInfo = getAuthorInfo(pages[2])
let projectSummary = getProjectSummary(pages[8])
let projectTitle = getProjectTitle(pages[0])
let consultantInfo = getConsultantInfo(pages[1])
let juryInfo = getJuryInfo(pages[1])
let keywords = getKeywords(pages[8])
let allInfo = []
allInfo[0] = className
allInfo[1] = term
allInfo[2] = authorInfo
allInfo[3] = projectSummary
allInfo[4] = projectTitle
allInfo[5] = consultantInfo
allInfo[6] = juryInfo
allInfo[7] = keywords
return allInfo
}
function getClassName(page1) {
console.log(page1[3])
return page1[3]
}
function getTerm(page2) {
let x = page2[page2.length - 1]
let fallOrSpring = ''
if (x.substring(3, 5) == '01') {
fallOrSpring = 'Güz'
}
else
fallOrSpring = 'Bahar'
let year1 = 0
year1 = parseInt(x.substring(6, 10)) - 1
let year2 = String(year1)
console.log(fallOrSpring + " " + year2 + "-" + x.substring(6, 10))
let term = fallOrSpring + " " + year2 + "-" + x.substring(6, 10)
return term
}
function getAuthorInfo(page3) {
console.log(page3[page3.length - 3])
console.log(page3[page3.length - 2].substring(13, page3[page3.length - 2].length))
console.log(page3[page3.length - 3].substring(5, 6))
let educationType = ''
if (page3[page3.length - 3].substring(5, 6) == '1') {
educationType = 'Birinci Öğretim'
}
else
educationType = 'İkinci Öğretim'
let authorInfo = page3[page3.length - 2].substring(13, page3[page3.length - 2].length) + ' ' + page3[page3.length - 3] + ' ' + educationType
console.log(authorInfo)
return authorInfo
}
function getProjectSummary(page9) {
console.log(page9)
let i = 0
while (page9[i] != 'ÖZET') {
i++
}
console.log(i)
let summary = ''
let summary1 = []
i = i + 1
while (page9[i] != 'Anahtar ') {
summary1.push(page9[i])
i++
}
summary = summary1.join(' ')
console.log(summary)
return summary
}
function getProjectTitle(page1) {
console.log(page1[4])
return page1[4]
}
function getConsultantInfo(page2) {
console.log(page2[6])
return page2[6]
}
function getJuryInfo(page2) {
console.log(page2[10])
console.log(page2[15])
let x = []
x[0] = page2[10]
x[1] = page2[15]
return x
}
function getKeywords(page9) {
let i = 0
while (page9[i] != 'Kelimeler: ') {
i++
}
i++
let keywords = ''
for (i; i < page9.length; i++) {
keywords += page9[i]
}
console.log(keywords)
let keywords1 = []
keywords1 = keywords.split(', ')
keywords1[keywords1.length - 1] = keywords1[keywords1.length - 1].slice(0, -1)
console.log(keywords1[keywords1.length - 1])
console.log(keywords1)
return keywords1
}
let re;
let ty,ty1,sr,sr1,ty2,sr2;
var connection = mysql.createConnection({
connectionLimit:10,
host: 'localhost',
user: 'root',
password: '3005',
database: 'lib'
});
connection.connect(function(error){
if(error){
console.log("err")
}
else{
console.log('connected')
} })
app.listen(3000)
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'models/files');
},
filename: function (req, file, cb) {
var id = file.originalname ;
cb(null, id);
}
});
var upload = multer({ storage: storage })
app.get('/',(req,res)=>{
res.sendFile(path.join(__dirname,'index.html'));
});
app.get('/changepassword',(req,res)=>{
res.sendFile(path.join(__dirname,'pass.html'));
});
app.get('/user',(req,res)=>{
res.sendFile(path.join(__dirname,'user.html'));
});
app.get('/admin',(req,res)=>{
res.sendFile(path.join(__dirname,'admin.html'));
});
app.get('/register',(req,res)=>{
res.sendFile(path.join(__dirname,'register.html'));
});
app.get('/profiles',(req,res)=>{
res.sendFile(path.join(__dirname,'profiles.html'));
});
app.post("/user", upload.single('file'), async (req, res, next) => {
ty = req.body.ty,
ty1=req.body.ty1,
ty2=req.body.ty2,
sr=req.body.nr,
sr1=req.body.nr1,
sr2=req.body.nr2;
console.log(sr)
console.log(ty)
const file = req.file;
const allInfo = await getItems(file.destination+"/"+file.filename).then(pages => getAllInfo(pages)).catch(err=>console.log(err))
const a= await allInfo[7].length
var sql = "INSERT INTO `files`( `file_name`,`author`,`subject`,`summary`,`year`,`project_name`,`keywords`,`mentor`,`jury`,`user_name`) VALUES (?,?,?,?,?,?,?,?,?,?)";
connection.query(sql, [req.file.originalname,await allInfo[2],await allInfo[0],await allInfo[3],await allInfo[1],await allInfo[4],await allInfo[7][0]+","+await allInfo[7][1]+","+await allInfo[7][2]+","+await allInfo[7][3],await allInfo[5] ,await allInfo[6][0]+", " +await allInfo[6][1],re], function (err, result) {
if (err) {
console.log("error")
}
})
res.redirect('/user')
});
app.post("/admin", (req, res, next)=>{
ty = req.body.ty;
ty1=req.body.ty1;
ty2=req.body.ty2;
sr=req.body.nr;
sr1=req.body.nr1;
sr2=req.body.nr2;
console.log(sr)
console.log(ty)
})
app.get("/search",(req, res, next) =>{
console.log(ty)
console.log(sr)
console.log(ty)
console.log(sr)
console.log(ty)
console.log(sr)
let ac,t
var a="Author"
var b="ProjectName"
var c="Subject"
var d="Keywords"
var e="Program Year"
var f="User"
var sql = "SELECT * FROM `files` ";
connection.query(sql, (err, rows) => {
if(err){
console.log("error1")
}
else{
if(sr== a){
for(let i=0;i<rows.length;i++){
if(rows[i].author==ty ){
ac= JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== b){
for(let i=0;i<rows.length;i++){
if(rows[i].project_name==ty ){
ac= JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== c){
for(let i=0;i<rows.length;i++){
if(rows[i].subject==ty ){
ac= JSON.stringify(rows[i])
t=JSON.parse(ac)
console.log(t)
res.json(t)
} }}
else if(sr== d){
for(let i=0;i<rows.length;i++){
if(rows[i].keywords==ty ){
ac= JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== e ){
for(let i=0;i<rows.length;i++){
if(rows[i].year==ty ){
ac= JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr2==c){
for(let i=0;i<rows.length;i++){
if(rows[i].user_name==ty && rows[i].year==ty1 && rows[i].subject==ty2){
ac= JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
}
})});
app.post("/submit", (req, res, next) => {
if(req.body.password==" "&& req.body.name==" "){
return res.status(500).json({
message:"Make sure there isn't any empty field"
});
}
else if(req.body.password==""|| req.body.name==""){
return res.status(500).json({
message:"Make sure there isn't any empty field"
});
}
else{ connection.query('SELECT * FROM `user`' , (err, rows) => {
if (err) {
console.log("Error")
}
else{
console.log("success")
for(let i=0;i<rows.length;i++){
if(rows[i].username==req.body.name && rows[i].password==req.body.password && rows[i].type==req.body.type){
if (req.body.type=='admin' ) {
res.redirect('/admin')}
else if (req.body.type=='user' ) {
re=req.body.name
res.redirect('/user')
}}
else {
res.sendFile(path.join(__dirname,'msg.html'))
}} }
}) }
})
app.post("/changepassword", (req, res) => {
if(req.body.oldP==""|| req.body.username==""|| req.body.email==""||req.body.newP==""){
return res.status(500).json({
message:"Make sure there isn't any empty field"
});
}
else{
connection.query('SELECT * FROM `user`' , (err, rows) => {
for(let i=0;i<rows.length;i++){
if(rows[i].username==req.body.username && rows[i].email==req.body.email && rows[i].password==req.body.oldP && rows[i].type==req.body.type){
const query='UPDATE `user` SET `password`=? where `username`=?'
connection.query(query,[req.body.newP,rows[i].username], (err, rows) => {
if(err){
console.log("error")}
else{
console.log("success")
} })
return res.status(500).json({
message:"Password changed successfully!",})}
else{
return res.json({
message:"Information entered is not correct!",})
}
}})}})
app.post("/register", (req, res) => {
if(req.body.password==""|| req.body.username==""|| req.body.email==""){
return res.status(500).json({
message:"Make sure there isn't any empty field"
});
}
else{
connection.query('SELECT * FROM `user`' , (err, rows) => {
for(let i=0;i<rows.length;i++){
if(rows[i].email==req.body.email ){
return res.json({
message:"This email is registered!",})
}
else if( rows[i].username == req.body.username ){
return res.json({
message:"This username is not available!",})
}
else{
query='INSERT INTO `user`( `email`, `username`, `type`, `password`) VALUES (?,?,?,?)'
connection.query(query,[req.body.email,req.body.username,req.body.type,req.body.password], (err, rows) => {
if(err){
console.log("error")}
else{
console.log("success")
} })
return res.status(500).json({
message:"Account Registered Successfully!",})}
}})}})
app.get('/files1',(req,res,next)=>{
var sql= 'SELECT * FROM `files`where `user_name`=? ' ;
connection.query(sql,['user1'] ,(err, rows) => {
if (err) {
console.log("Error")
} else {
for(let i=0;i<rows.length;i++){
ac= JSON.stringify(rows)
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}})});
app.get('/files',(req,res,next)=>{
var sql= 'SELECT * FROM `files` ' ;
connection.query(sql,(err, rows) => {
if (err) {
console.log("Error")
} else {
for(let i=0;i<rows.length;i++){
ac= JSON.stringify(rows)
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}})});
app.get('/file',(req,res,next)=>{
console.log(ty)
console.log(sr)
let ac,t
var a="Author"
var b="ProjectName"
var c="Subject"
var d="Keywords"
var e="Program Year"
var f="User"
var sql= 'SELECT * FROM `files`where `user_name`=? ' ;
connection.query(sql,['user1'] ,(err, rows) => {
if (err) {
console.log("Error")
}
else{
if(sr== a){
for(let i=0;i<rows.length;i++){
if(rows[i].author==ty ){
JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== b){
for(let i=0;i<rows.length;i++){
if(rows[i].project_name==ty ){
ac.push(JSON.stringify(rows[i]))
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== c){
for(let i=0;i<rows.length;i++){
if(rows[i].subject==ty ){
JSON.stringify(rows[i])
} t=JSON.parse(ac)
console.log(sr)
console.log(sr)
console.log(sr)
res.json(t)
console.log(sr)
}}
else if(sr== d){
for(let i=0;i<rows.length;i++){
if(rows[i].keywords==ty ){
ac.push(JSON.stringify(rows[i]))
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== e && sr1==""){
for(let i=0;i<rows.length;i++){
if(rows[i].year==ty ){
ac.push(JSON.stringify(rows[i]))
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
else if(sr== e && sr1==c ){
for(let i=0;i<rows.length;i++){
if(rows[i].year==ty && rows[i].subject==ty1){
ac.push(JSON.stringify(rows[i]))
} t=JSON.parse(ac)
console.log(t)
res.json(t)
}}
}
}) })
app.get("/profile", (req, res, next) => {
var sql = "SELECT * FROM `user` ";
connection.query(sql, (err, rows) => {
if(err){
console.log("error1")
}
else {
ac= JSON.stringify(rows)
t=JSON.parse(ac)
console.log(t)
res.json(t)
}} )})
Editor is loading...