Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 0 additions & 27 deletions README.md

This file was deleted.

24 changes: 24 additions & 0 deletions ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#TUGAS MATA KULIAH II4050 PPLS#

- NIM : 18212010
- Name : Taufiq Akbar Rosyadi
- GitHub ID : taufiqrosyadi

##Requirements :##
1. Cheerio
2. Express

##How To Deploy :#
1. Open command prompt
2. Go to directory
3. Install dependencies use command : node install
4. Execute the program use command : node index.js

##How To Run##
1. Open command prompt
2. Go to directory
3. run : npm start
3. Open Web Browser
4. Request with : localhost:5000/ps=[kodeprodi]&kode=[kodematakuliah]&kelas=[kelas]
example :
localhost:5000/ps=182&kode=II2111&kelas=01
96 changes: 96 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
var express = require('express');
var request = require('request');
var cheerio = require('cheerio');
var six = express();

six.set('port', (process.env.PORT || 5000));

six.use(express.static(__dirname + '/public'));

six.set('views', __dirname + '/views');
six.set('view engine', 'ejs');

six.get('/', function(req, res){
kodematkul = req.query.kode;
prodi = req.query.ps;
kelas = req.query.kelas;

url = 'https://six.akademik.itb.ac.id/publik/'
urlkelas = 'daftarkelas.php?ps='+prodi+'&semester=1&tahun=2015&th_kur=2013'

console.log(kodematkul);
console.log(prodi);
console.log(url+urlkelas);

request (url+urlkelas,function(error, response, html){
if (!error && response.statusCode == 200) {
//masuk ke halaman untuk memilih program studi
var $ = cheerio.load(html);
var text = '';

//memasukan seluruh informasi mata kuliah ke dalam array text
$('ol').children('li').each(function(index){
var text = $(this).contents().filter(function(){
return this.nodeType==3;
})[0].nodeValue;


//membandingkan kode matakuliah yang dicari dengan yang ada dalam array
if(text.substr(0, text.indexOf(" ")).toLowerCase() === kodematkul.toLowerCase()){
urlkelas = $(this).find('ul > li:nth-child('+kelas.substr(1,1)+') > a').attr('href');

console.log(urlkelas);

request(url+urlkelas, function(error, response, html){
//masuk ke halaman untuk memilih kelas
var $ = cheerio.load(html);
text = $('pre').text();

metadata_regex = /(.*?)\n(?:Program Studi\s\s:\s)(.*)\n(?:Semester\s\s:\s)(.{1})(?:\/)(.*)\n\n(?:Kode\/Mata Kuliah\s:\s)(.{6})(?:\s\/\s)(.*)(?:,)(\s.)(?:\sSKS)\n(?:No\.\sKelas\/Dosen\s\s:\s)(.{2})(?:\s\/\s)(.*)\n\n(?:-----------------------------------------------------------)\n(?:No\. NIM NAMA)\n(?:-----------------------------------------------------------)\n(?:.\n*)*\n(?:-----------------------------------------------------------)\n(?:Total\sPeserta\s=\s)(.{2})/g;
nim_regex = /([\d]{8}) (.*)/g;

var result = metadata_regex.exec(text);

var infoMatkul = {};

//retrieve informasi di header
infoMatkul['fakultas'] = result[1];
infoMatkul['prodi'] = result[2];
infoMatkul['semester'] = result[3];
infoMatkul['tahun'] = result[4];
infoMatkul['kode'] = result[5];
infoMatkul['matakuliah'] = result[6];
infoMatkul['sks'] = result[7];
infoMatkul['kelas'] = result[8];
infoMatkul['dosen'] = result[9];
infoMatkul['jumlahpeserta'] = result[10];
infoMatkul['peserta'] = [];

//retrieve informasi nama dan nim
do {
match = nim_regex.exec(text);
if (match){
infoMatkul['peserta'].push({
nim: match[1],
nama:match[2].trim()
});
}
}
while(match);
res.send(infoMatkul);
})
}
})
}
else if(!error && response.statusCode==404){
res.status(404).send("Mata kuliah"+kodematkul+"tidak ditemukan");
}
else if(response.statusCode==500){
res.status(500).send("Server error");
}
})
});

six.listen(six.get('port'), function() {
console.log('Node app is running on port', six.get('port'));
});
10 changes: 10 additions & 0 deletions node_modules/cheerio/.jshintrc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions node_modules/cheerio/.npmignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions node_modules/cheerio/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

47 changes: 47 additions & 0 deletions node_modules/cheerio/CONTRIBUTING.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading