289 lines
34 KiB
PHP
289 lines
34 KiB
PHP
|
<?php
|
|||
|
|
|||
|
class class_LIBRARY{
|
|||
|
const url = 'http://lib.mkgtu.ru:8004/catalog/fol2'; // для ручного парсера
|
|||
|
const url_json = 'http://lib.mkgtu.ru/?task=getbooks';
|
|||
|
function __construct(){
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение литературы JSON!
|
|||
|
* @param string $disciplina
|
|||
|
* @param string $base
|
|||
|
* @param array $pages
|
|||
|
* @return array|mixed
|
|||
|
*/
|
|||
|
function get_literatura($disciplina='',$database=''){
|
|||
|
if($disciplina!='') {
|
|||
|
$disciplina = mb_strtolower($disciplina);
|
|||
|
$ddir = 'upload/libs/';
|
|||
|
if ($database != '') {
|
|||
|
$ddir = 'upload/libs/' . $database . '/';
|
|||
|
if (!file_exists($ddir)) mkdir($ddir);
|
|||
|
}
|
|||
|
$file_cache = $ddir . $disciplina . '.json';
|
|||
|
$m1 = array(' ', " ");
|
|||
|
$m2 = array(' ', ' ');
|
|||
|
$cache=false;
|
|||
|
if (file_exists($file_cache)) {
|
|||
|
$ftime = filectime($file_cache);
|
|||
|
if($ftime > ( time()-(3600*24) )) {
|
|||
|
$out = json_decode(file_get_contents($file_cache), 1);
|
|||
|
$cache=true;
|
|||
|
}
|
|||
|
}
|
|||
|
if(!$cache){
|
|||
|
$url = self::url_json . '&data=' . urlencode($disciplina) . '&database=' . $database;
|
|||
|
$html = file_get_contents($url);
|
|||
|
$html = str_replace($m1, $m2, strip_tags($html));
|
|||
|
$out = json_decode($html, 1);
|
|||
|
foreach ($out as $k => $v) {
|
|||
|
if (isset($v['URL'])) {
|
|||
|
if (strpos($v['URL'], 'http') === false) {
|
|||
|
$out[$k]['URL'] = 'http://' . $v['URL'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (count($out)) {
|
|||
|
file_put_contents($file_cache, json_encode($out, JSON_UNESCAPED_UNICODE));
|
|||
|
}
|
|||
|
}
|
|||
|
}else{
|
|||
|
$out=array();
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение ресурсов по направлению
|
|||
|
* @param $naprav
|
|||
|
* @return void
|
|||
|
*/
|
|||
|
function get_proBD($DISCIPS){
|
|||
|
//echo '<pre>'.print_r($DISCIPS,1).'</pre>'; exit();
|
|||
|
/*Array(
|
|||
|
[Заочная] => Array([uchebplan] => Array() [title] => Array([shifr] => 35.03.04 [naprav] => Агрономия )
|
|||
|
[Очная] => Array( [uchebplan] => Array() [title] => Array([shifr] => 35.03.04 [naprav] => Агрономия )
|
|||
|
)
|
|||
|
* */
|
|||
|
$shifr = ''; $naprav = '';
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $shifr = $DISCIPS['Очно-заочная']['title']['shifr']; $naprav = $DISCIPS['Очная']['title']['naprav'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $shifr = $DISCIPS['Очная']['title']['shifr']; $naprav = $DISCIPS['Очная']['title']['naprav'];
|
|||
|
if(isset($DISCIPS['Очная'])) $shifr = $DISCIPS['Очная']['title']['shifr']; $naprav = $DISCIPS['Очная']['title']['naprav'];
|
|||
|
|
|||
|
$url = 'http://lib.mkgtu.ru/index.php/napravleniya-podgotovki';
|
|||
|
$file_cache = 'upload/libs/np_'.$shifr.'.json';
|
|||
|
if(file_exists($file_cache)){
|
|||
|
$out = json_decode(file_get_contents($file_cache),1);
|
|||
|
}else {
|
|||
|
$html = file_get_contents($url);
|
|||
|
$url2 = $this->HTML_parseBD($html,$shifr);
|
|||
|
$out = $this->HTML_parseBD_step2($url2);
|
|||
|
file_put_contents($file_cache,json_encode($out));
|
|||
|
}
|
|||
|
//echo $shifr.'<br>'.$url.'<pre>'.print_r($DISCIPS,1).print_r($out,1).'</pre>';exit();
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//Находим нужную ссылку
|
|||
|
function HTML_parseBD($html,$shifr){
|
|||
|
$out=array();
|
|||
|
//echo '<pre>'.htmlspecialchars($html).'</pre>'; exit();
|
|||
|
//<h3 class="page-header item-title"><a href="/index.php/napravleniya-podgotovki/124-agroinzheneriya-35-03-06">Агроинженерия (35.03.06)</a>
|
|||
|
$pattern = '<h3 class="page-header item-title"><a href="(.*)">(.*)</a>';
|
|||
|
preg_match_all('|'.$pattern.'|isU',$html,$arr);
|
|||
|
$pages=array();
|
|||
|
if(isset($arr[2])&&count($arr[2])){
|
|||
|
foreach($arr[2] as $k => $v){
|
|||
|
$pages[]=array('name'=>trim($v),'url'=>'http://lib.mkgtu.ru'.$arr[1][$k]);
|
|||
|
}
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($pages,1).'</pre>'; exit();
|
|||
|
//Array([0] => Array([name] => Агроинженерия (35.03.06) [url] => http://lib.mkgtu.ru/index.php/napravleniya-podgotovki/124-agroinzheneriya-35-03-06 )
|
|||
|
foreach($pages as $k => $v){
|
|||
|
if(mb_strpos($v['name'],trim($shifr))){//нашли шифр
|
|||
|
$out = $v['url'];
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//Берем литературу
|
|||
|
function HTML_parseBD_step2($url){
|
|||
|
$out=array();
|
|||
|
$html = file_get_contents($url);
|
|||
|
//echo $html; exit();
|
|||
|
$pattern = '<div class="category-desc">(.*)</div>';
|
|||
|
$pattern = '<div class="category-desc">(.*)</div>.*</div>.*</div>';
|
|||
|
preg_match_all('|'.$pattern.'|isU',$html,$arr);
|
|||
|
//echo '<pre>'.print_r($arr,1).'</pre>'; exit();
|
|||
|
$what = $arr[0][0]; if(mb_strlen($arr[1][0])>mb_strlen($arr[0][0])) $what = $arr[1][0];
|
|||
|
if(isset($arr[0][0])){
|
|||
|
$text = $what;
|
|||
|
//надо определить заголовки в странице
|
|||
|
$zaga = array('Электронно-библиотечные системы','Электронные библиотеки','Архивы научных журналов','Ресурсы Интернет открытого доступа','Зарубежные ресурсы');
|
|||
|
//,'Периодические издания доступные обучающимся и сотрудникам ФГБОУ ВО МГТУ по подписке и на основании контрактов и лицензионных соглашений'
|
|||
|
$zaga_items=array();
|
|||
|
foreach ($zaga as $k => $v){
|
|||
|
$pos = strpos($text,$v);
|
|||
|
if($pos!==false) $zaga_items[$pos] = $v;
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($zaga_items,1).'</pre>'; exit();
|
|||
|
$ki=0; foreach ($zaga_items as $k => $v){
|
|||
|
if($ki) {
|
|||
|
//$starttext = $zaga_items[$ki - 1];
|
|||
|
$endtext = $v;
|
|||
|
//echo $starttext.'-'.$endtext.'<br>';
|
|||
|
$t1 = $this->getText_Megdu($text, $starttext, $endtext);// '>'.$endtext. '<'
|
|||
|
if ($t1 != '') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out[$starttext] = $arr[1];
|
|||
|
}
|
|||
|
}
|
|||
|
$starttext = $v;
|
|||
|
$ki++;
|
|||
|
}
|
|||
|
$t1 = $this->getText_Megdu($text,'>'.$endtext,'>Дата актуализации');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out[$endtext] = $arr[1];
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out,1).'</pre>'; exit();
|
|||
|
/*
|
|||
|
$t1 = $this->getText_Megdu($text,'Электронно-библиотечные системы','>Электронные библиотеки<');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out['Электронно-библиотечные системы'] = $arr[1];
|
|||
|
}
|
|||
|
$t1 = $this->getText_Megdu($text,'>Электронные библиотеки<','>Архивы научных журналов<');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out['Электронные библиотеки'] = $arr[1];
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out,1).'</pre>'; exit();
|
|||
|
$t1 = $this->getText_Megdu($text,'>Архивы научных журналов<','>Ресурсы Интернет открытого доступа');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out['Архивы научных журналов'] = $arr[1];
|
|||
|
}
|
|||
|
$t1 = $this->getText_Megdu($text,'>Ресурсы Интернет открытого доступа','>Зарубежные ресурсы<');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out['Ресурсы Интернет открытого доступа'] = $arr[1];
|
|||
|
}
|
|||
|
$t1 = $this->getText_Megdu($text,'>Зарубежные ресурсы<','>Дата актуализации');
|
|||
|
if($t1!='') {
|
|||
|
preg_match_all('|<p.*>(.*)</p>|isU', $t1, $arr);
|
|||
|
if (count($arr[1])) $out['Зарубежные ресурсы'] = $arr[1];
|
|||
|
}*/
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out,1).'</pre>'; exit();
|
|||
|
$out1=array();
|
|||
|
foreach($out as $tip => $val)
|
|||
|
foreach($val as $k => $text){
|
|||
|
$text = html_entity_decode($text);
|
|||
|
$text = str_replace(" ",' ',$text);
|
|||
|
$text = str_replace(' ',' ',$text);
|
|||
|
$text = str_replace(' ',' ',$text);
|
|||
|
$text = str_replace(' ',' ',$text);
|
|||
|
if(mb_strlen(trim(strip_tags($text)))>10) {
|
|||
|
$hrefs = $this->getText_HREF($text);
|
|||
|
$out1[$tip][$k] = array('html' => $text, 'text' => strip_tags($text), 'urls' => $hrefs);
|
|||
|
}
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out1,1).'</pre>'; exit();
|
|||
|
return $out1;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получаем текст между текстами
|
|||
|
* @param $text
|
|||
|
* @param $str1
|
|||
|
* @param $str2
|
|||
|
* @return mixed|string
|
|||
|
*/
|
|||
|
function getText_Megdu($text,$str1,$str2){
|
|||
|
$out='';
|
|||
|
preg_match_all('|'.$str1.'(.*)'.$str2.'|isU',$text,$arr);
|
|||
|
if(isset($arr[1][0])){
|
|||
|
$out = $arr[1][0];
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получаем список ссылок в тексте
|
|||
|
* @param $text
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function getText_HREF($text){
|
|||
|
$out = array();
|
|||
|
preg_match_all('|<a.*href="(.*)">|isU',$text,$arr);
|
|||
|
if(isset($arr[1])&&count($arr[1])){
|
|||
|
$out = array_unique($arr[1]);
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Получение литературы ПАРСИМ!
|
|||
|
* 000001 Электронный каталог
|
|||
|
* 000530 Учебники, учебные пособия (МГТУ) (669)
|
|||
|
* 0007AA Учебно-методические пособия, методические материалы (МГТУ) (3494)
|
|||
|
* @param string $disciplina
|
|||
|
* @param string $base
|
|||
|
* @param array $pages
|
|||
|
* @return array|mixed
|
|||
|
*/
|
|||
|
function get_literatura_parse($disciplina='',$base='000001',$pages=array()){
|
|||
|
//000001 Электронный каталог
|
|||
|
//000530 Учебники, учебные пособия (МГТУ) (669)
|
|||
|
//0007AA Учебно-методические пособия, методические материалы (МГТУ) (3494)
|
|||
|
/*BASE: 000530 FIELD: 0051 ACTION0: равно DATA0: Математика Knopka: Найти*/
|
|||
|
$file_cache = 'upload/libs/'.$disciplina.'.json';
|
|||
|
if(file_exists($file_cache)){
|
|||
|
$out = json_decode(file_get_contents($file_cache),1);
|
|||
|
}else {
|
|||
|
$html = file_get_contents(self::url . '?BASE='.$base.'&FIELD=0051&ACTION0=%D1%80%D0%B0%D0%B2%D0%BD%D0%BE&DATA0=' . $disciplina . '&Knopka=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8');
|
|||
|
$out = $this->HTML_parse($html);
|
|||
|
unset($out['pages']);
|
|||
|
file_put_contents($file_cache,json_encode($out['items']));
|
|||
|
}
|
|||
|
return $out;
|
|||
|
//http://lib.mkgtu.ru:8004/catalog/fol2?BASE=000530&FIELD=0051&ACTION0=%D1%80%D0%B0%D0%B2%D0%BD%D0%BE&DATA0=%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&Knopka=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8
|
|||
|
//http://lib.mkgtu.ru:8004/catalog/fol2?SHOW+FP126++12+-1+-1+000530
|
|||
|
//http://lib.mkgtu.ru:8004/catalog/fol2?SHOW+FP126++24+-1+-1+000530
|
|||
|
//http://lib.mkgtu.ru:8004/catalog/fol2?BASE=000001&FIELD=0051&ACTION0=%D1%80%D0%B0%D0%B2%D0%BD%D0%BE&DATA0=%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&Knopka=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8
|
|||
|
}
|
|||
|
function HTML_parse($html){
|
|||
|
$out=array();
|
|||
|
$pattern = '>\[(.*)-(.*)\]</A';
|
|||
|
preg_match_all('|'.$pattern.'|isU',$html,$arr);
|
|||
|
$pages=array();
|
|||
|
if(isset($arr[2])&&count($arr[2])){
|
|||
|
$pages=$arr[2];
|
|||
|
}
|
|||
|
$out['pages'] = $pages;
|
|||
|
$pattern = '<TABLE><TR><TD><B>(.*)<BR>(.*) (.*)<BR>(.*)</B><BR><I>(.*)</I><a href="(.*)" target=_blank>.*<img src="/img/strelki.gif.*<li';
|
|||
|
preg_match_all('|'.$pattern.'|isU',$html,$arr,PREG_SET_ORDER);
|
|||
|
foreach($arr as $k => $v){
|
|||
|
unset($v[0]);
|
|||
|
$tmp = array();
|
|||
|
foreach($v as $k1 => $v1){ $tmp[] = trim(strip_tags($v1)); }
|
|||
|
$out['items'][] = $tmp;
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out,1).'</pre>';exit();
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/*<center> 1-12 <A href="/catalog/fol2?SHOW+FP128++12+-1+-1+000530">[13-24]</A> <A href="/catalog/fol2?SHOW+FP128++24+-1+-1+000530">[25-36]</A> <A href="/catalog/fol2?SHOW+FP128++36+-1+-1+000530">[37-48]</A> <A href="/catalog/fol2?SHOW+FP128++48+-1+-1+000530">[49-60]</A> <A href="/catalog/fol2?SHOW+FP128++60+-1+-1+000530">[61-72]</A> <A href="/catalog/fol2?SHOW+FP128++72+-1+-1+000530">[73-82]</A> </center> <BR> <input type="checkbox" value="1" class="checkbox" id="selall">Выбрать все на странице<BR> <ol> <li class=ab value=1><input type=checkbox name="CHK081307000001" class="mc"> <BR>
|
|||
|
|
|||
|
<TABLE><TR><TD><B>51(07)<BR>Д 30 Демина, Т.И. (Майкопский государственный технологический университет).<BR> Математика и основы медицинской статистики : учебное пособие [Электронный ресурс] / Демина Т.И., Чуяко Е.Б. ; ФГБОУ ВО Майкоп. гос. технол. ун-т</font>. - Майкоп : МГТУ, 2020. - 158 с. - Библиогр.: с. 156-157 (13 назв.)</B><BR><I>Медицинская статистика должна быть нацелена на решение наиболее выраженных современных проблем в здоровье населения. Основными проблемами здесь, как известно, являются необходимость снижения заболеваемости, смертности и увеличения продолжительности жизни населения.</I><a href="/catalog/fol2?SHOW_ONE_BOOK+081307" target=_blank> <img src="/img/strelki.gif" width=11 height=8 border=0></a> <BR></TD></TR></TABLE> <div class="rating" id="rating_081307"> </div> <div align=right> <A HREF="http://lib.mkgtu.ru/?redirect=http%3A%2F%2Flib.mkgtu.ru%3A8002%2Flibdata.php%3Fid%3D2100052105%26DOK%3D081307%26BASE%3D000530" target=_blank> Полный текст </A></div><BR><BR>
|
|||
|
|
|||
|
<li class=ab value=2><input type=checkbox name="CHK07A8E2000001" class="mc"> <BR>
|
|||
|
|
|||
|
<TABLE><TR><TD><B>519.86(07)<BR>М 22 Мамадалиева, Л.Н. (Майкопский государственный технологический университет).<BR> Обучение математическим методам обработки экспериментальных данных в русле компетентностного подхода : учебное пособие / Л.Н. Мамадалиева, И.М. Хаконова</font>. - Майкоп : Кучеренко В.О., 2018. - 100 с. - Прил.: с. 81-100. - Библиогр.: с. 79-80 (21 назв.)</B><BR><I>Учебное пособие содержит краткие теоретические сведения о применении методов математической статистики, методические рекомендации по организации обучения математическому моделированию экспериментальных данных.</I><a href="/catalog/fol2?SHOW_ONE_BOOK+07A8E2" target=_blank> <img src="/img/strelki.gif" width=11 height=8 border=0></a> <BR></TD></TR></TABLE> <div class="rating" id="rating_07A8E2"> </div> <div align=right> <A HREF="/catalog/fol2?SHOW_DOK+07A8E2+000001" onClick='openWindow(this,"mmm")'>Сведения о наличии</A> <A HREF="http://lib.mkgtu.ru/?redirect=http%3A%2F%2Flib.mkgtu.ru%3A8002%2Flibdata.php%3Fid%3D2100048762%26DOK%3D07A8E2%26BASE%3D000530" target=_blank> Полный текст </A></div><BR><BR>
|
|||
|
|
|||
|
<li class=ab value=3><input type=checkbox name="CHK07B8BA000001" class="mc"> <BR><TABLE><TR><TD><B>51(07)<BR>Ч-96 Чуяко, Е.Б. (Майкопский государственный технологический университет).<BR> Основы математики для инженеров и экономистов : учебное пособие / Е.Б. Чуяко ; [ФГБОУ ВПО Майкоп. гос. технол. ун-т , Каф. высш. математики и систем. анализа]</font>. - Майкоп : Кучеренко В.О., 2018. - 190 с. - Библиогр.: с. 190 (9 назв.)</B><BR><I>Пособие содержит набор тестовых заданий с подробными решениями по математике, теоретические сведения и набор стандартных задач для самостоятельного решения.</I><a href="/catalog/fol2?SHOW_ONE_BOOK+07B8BA" target=_blank> <img src="/img/strelki.gif" width=11 height=8 border=0></a> <BR></TD></TR></TABLE> <div class="rating" id="rating_07B8BA"> </div> <div align=right> <A HREF="/catalog/fol2?SHOW_DOK+07B8BA+000001" onClick='openWindow(this,"mmm")'>Сведения о наличии</A> <A HREF="http://lib.mkgtu.ru/?redirect=http%3A%2F%2Flib.mkgtu.ru%3A8002%2Flibdata.php%3Fid%3D2100047763%26DOK%3D07B8BA%26BASE%3D000530" target=_blank> Полный текст </A></div><BR><BR> <li class=ab value=4><input type=checkbox name="CHK03A585000001" class="mc"> <BR><TABLE><TR><TD><B>519.2(07)<BR>К 89 Куижева, С.К. (Майкопский государственный технологический университет).<BR> Практикум по теории вероятностей и математической статистики для экономистов : учебное пособие / С.К. Куижева, Л.Ж. Паланджянц, О.П. Шевякова</font>. - Ижевск : Пермяков С.А., 2014. - 134 с. - Прил.: с. 129-132. - Библиогр.: с. 133 (9 назв.)</B><BR><I>В пособии приводится теоретический материал, предназначенный для решения типовых задач, а также задания для самостоятельной и контрольной работы.</I><a href="/catalog/fol2?SHOW_ONE_BOOK+03A585" target=_blank> <img src="/img/strelki.gif" width=11 height=8 border=0></a> <BR></TD></TR></TABLE> <div class="rating" id="rating_03A585"> </div> <div align=right> <A HREF="/catalog/fol2?SHOW_DOK+03A585+000001" onClick='openWindow(this,"mmm")'>Сведения о наличии</A> <A HREF="http://lib.mkgtu.ru/?redirect=http%3A%2F%2Flib.mkgtu.ru%3A8002%2Flibdata.php%3Fid%3D1000052984%26DOK%3D03A585%26BASE%3D000530" target=_blank> Полный текст </A></div><BR><BR> <li class=ab value=5><input type=checkbox name="CHK03A589000001" class="mc"> <BR><TABLE><TR><TD><B>51(07)<BR>Д 30 Демина, Т.И. (Майкопский государственный технологический университет). Математика. 2 семестр : учебно-методическое пособие для студентов направлений : 081100.62 "Государственное и муниципальное управление", 080200.62 "Менеджмент" / Т.И. Демина, С.К. Куижева, О.П. Шевякова</font>. - Ижевск : Пермяков С.А., 2014. - 98 с. - Прил.: с. 93-98. - Библиогр.: с. 5 (16 назв.)</B><BR><I>Пособие содержит список литературы необходимой для изучения тем курса, методические рекомендации, а также типовые задания по каждому разделу.</I><a href="/catalog/fol2?SHOW_ONE_BOOK+03A589
|
|||
|
* */
|
|||
|
}
|