diff --git a/.gitignore b/.gitignore index 234fb97..952bb56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ -./data +./data/* /log .env ./.log -/vendor/* \ No newline at end of file +/vendor/* +./scripts/test.php \ No newline at end of file diff --git a/data/doc.yaml b/data/doc.yaml new file mode 100644 index 0000000..4e5b556 --- /dev/null +++ b/data/doc.yaml @@ -0,0 +1,342 @@ +- + org_id: 16 + site: 'http://www.atiso.ru' +- + org_id: 26 + site: 'http://www.asu.ru' +- + org_id: 40 + site: 'http://asu.edu.ru/' +- + org_id: 53 + site: 'http://www.bsau.ru' +- + org_id: 56 + site: 'https://uust.ru/' +- + org_id: 88 + site: 'http://www.vgafk.ru' +- + org_id: 92 + site: 'http://www.vspu.ru' +- + org_id: 109 + site: 'http://voronezharts.ru' +- + org_id: 114 + site: 'http://www.viesm.vrn.ru' +- + org_id: 119 + site: 'http://www.orun.ru' +- + org_id: 148 + site: 'http://www.gasu.ru' +- + org_id: 169 + site: 'https://даггау.рф/' +- + org_id: 185 + site: 'http://dvfu.ru/' +- + org_id: 200 + site: 'http://kpfu.ru/elabuga' +- + org_id: 202 + site: 'http://eiubp.ru' +- + org_id: 205 + site: 'http://ivgpu.com' +- + org_id: 217 + site: 'http://www.inggu.ru' +- + org_id: 262 + site: 'http://www.dgunh.ru' +- + org_id: 295 + site: 'http://www.inueco.ru' +- + org_id: 307 + site: 'http://www.ieml.ru' +- + org_id: 327 + site: 'https://www.kbsu.ru' +- + org_id: 333 + site: 'http://www.kazangmu.ru' +- + org_id: 337 + site: 'http://kpfu.ru' +- + org_id: 346 + site: 'http://kchgu.ru' +- + org_id: 366 + site: 'http://www.knastu.ru' +- + org_id: 479 + site: 'http://www.linguanet.ru' +- + org_id: 489 + site: 'http://www.miigaik.ru' +- + org_id: 534 + site: 'http://nnovcons.ru' +- + org_id: 569 + site: 'http://www.omsk-osma.ru' +- + org_id: 573 + site: 'http://www.omsu.ru/page.php?id=' +- + org_id: 578 + site: 'http://www.ospu.ru' +- + org_id: 642 + site: 'http://www.muctr.ru' +- + org_id: 657 + site: 'http://www.rsatu.ru' +- + org_id: 677 + site: 'http://guap.ru/guap/main/rect_main.shtml' +- + org_id: 688 + site: 'http://ghpa.ru' +- + org_id: 693 + site: 'http://spmi.ru' +- + org_id: 695 + site: 'http://www.1spbgmu.ru' +- + org_id: 700 + site: 'http://spbu.ru' +- + org_id: 703 + site: 'http://sutd.ru' +- + org_id: 725 + site: 'http://www.sgu.ru' +- + org_id: 732 + site: www.skgmi-gtu.ru +- + org_id: 743 + site: 'http://www.sibupk.nsk.su' +- + org_id: 746 + site: www.sibit.sano.ru +- + org_id: 752 + site: 'http://sgii-smol.ru' +- + org_id: 776 + site: 'http://www.tmei.ru' +- + org_id: 779 + site: 'http://www.tsutmb.ru' +- + org_id: 783 + site: 'http://www.tvgsha.ru' +- + org_id: 790 + site: 'http://www.tltsu.ru' +- + org_id: 796 + site: 'https://tpu.ru/' +- + org_id: 807 + site: 'http://udsu.ru' +- + org_id: 808 + site: 'https://www.ulsau.ru/' +- + org_id: 822 + site: 'http://www.ursmu.ru' +- + org_id: 880 + site: 'http://mhatschool.theatre.ru' +- + org_id: 935 + site: 'https://api.nntu.ru/' +- + org_id: 983 + site: 'http://www.misaoinst.ru' +- + org_id: 1004 + site: 'http://www.stavik.ru' +- + org_id: 1012 + site: 'http://belovo.ru' +- + org_id: 1332 + site: 'http://oimsla.edu.ru' +- + org_id: 1480 + site: 'http://www.mgppu.ru' +- + org_id: 1489 + site: 'http://kuzstu-nf.ru' +- + org_id: 1567 + site: 'https://saransk2.rpa-mu.ru/' +- + org_id: 1614 + site: 'http://www.mivlgu.ru' +- + org_id: 1664 + site: 'http://www.asu.ru/structure/filials/belockuricha/' +- + org_id: 1673 + site: www.kfgumrf.ru +- + org_id: 1681 + site: 'http://krasnodar.ruc.su' +- + org_id: 1692 + site: 'http://www.atiso.ru' +- + org_id: 1698 + site: 'http://www.atiso.ru' +- + org_id: 1699 + site: 'http://www.atiso.ru' +- + org_id: 1702 + site: 'http://www.atiso.ru' +- + org_id: 1703 + site: 'http://www.atiso.ru' +- + org_id: 1704 + site: 'http://www.atiso.ru' +- + org_id: 1743 + site: 'http://zabai.ru' +- + org_id: 1744 + site: 'http://vsiep.ru' +- + org_id: 1911 + site: 'http://www.atiso.ru' +- + org_id: 1927 + site: 'http://www.mfmgutu.ru' +- + org_id: 1987 + site: 'http://www.agatu.ru' +- + org_id: 2106 + site: 'http://www.kgeu.ru' +- + org_id: 2140 + site: 'http://dvfu.ru/' +- + org_id: 2170 + site: 'https://uust.ru/if/' +- + org_id: 2186 + site: 'https://uust.ru/kumertau' +- + org_id: 2211 + site: 'http://kpfu.ru' +- + org_id: 2351 + site: 'http://lf.pstu.ru' +- + org_id: 2522 + site: 'http://www.gief.ru' +- + org_id: 2569 + site: 'https://ptz.rpa-mu.ru' +- + org_id: 2590 + site: 'http://smolsgua.ru' +- + org_id: 2609 + site: 'http://www.tisbi-chelny.ru' +- + org_id: 2787 + site: 'http://нггти.рф' +- + org_id: 2853 + site: 'http://mgutu48.ru' +- + org_id: 2888 + site: 'http://ieml.ru' +- + org_id: 2889 + site: 'http://www.ieml.ru' +- + org_id: 2952 + site: 'http://www.udsu.ru' +- + org_id: 3048 + site: 'http://www.spbiem.ru' +- + org_id: 3116 + site: 'http://dvfu.ru/' +- + org_id: 3410 + site: 'http://www.skf-bgtu.ru' +- + org_id: 3689 + site: 'http://www.imc-i.ru/' +- + org_id: 3971 + site: 'http://www.билгу.рф' +- + org_id: 4051 + site: 'http://saransk.ruc.su' +- + org_id: 4130 + site: 'http://uigps.ru/content/institut' +- + org_id: 4158 + site: www.imeder.ru +- + org_id: 4267 + site: 'http://www.msses.ru' +- + org_id: 4580 + site: 'https://www.темрюк-мгуту.рф/' +- + org_id: 5004 + site: 'http://www.uralsky-missioner.ru' +- + org_id: 5005 + site: kukiit.ru +- + org_id: 5158 + site: 'http://www.agatu.ru' +- + org_id: 10017 + site: 'http://www.atiso.ru' +- + org_id: 10022 + site: 'http://kamensk.rosnou.ru/' +- + org_id: 10039 + site: 'http://spbda.ru/' +- + org_id: 61308 + site: 'http://www.miyu.ru' +- + org_id: 61312 + site: kpds.ru +- + org_id: 61315 + site: 'https://vetacademy.pro/' +- + org_id: 61330 + site: 'https://dsnsk.ru/' +- + org_id: 61335 + site: www.bolgar.academy +- + org_id: 61341 + site: 'http://www.miu.su' +- + org_id: 61350 + site: 'https://mpda.ru/' diff --git a/data/http.yaml b/data/http.yaml new file mode 100644 index 0000000..e9fcef3 --- /dev/null +++ b/data/http.yaml @@ -0,0 +1,435 @@ +- + org_id: 3 + site: achgaa.ru +- + org_id: 18 + site: 'https://www.axu.ru' +- + org_id: 68 + site: 'https://www.bgita.ru' +- + org_id: 99 + site: 'http://molochnoe.ru' +- + org_id: 116 + site: 'http://esstu.ru/uportal/index.htm' +- + org_id: 129 + site: 'http://www.vschoolmus.ru' +- + org_id: 199 + site: 'http://www.ims-ural.ru' +- + org_id: 203 + site: 'http://www.wuiel.ru' +- + org_id: 304 + site: 'http://institut-nazran.ru' +- + org_id: 319 + site: 'http://mir.ismu.baikal.ru' +- + org_id: 355 + site: 'http://www.dksta.ru' +- + org_id: 368 + site: 'http://www.ksu.edu.ru' +- + org_id: 377 + site: 'http://www.kgii.ru' +- + org_id: 389 + site: 'http://kuzstu.ru' +- + org_id: 401 + site: 'http://www.stu.lipetsk.ru' +- + org_id: 406 + site: 'http://www.magkmusic.com' +- + org_id: 425 + site: 'http://slavinst.ru/' +- + org_id: 466 + site: 'http://www.madi.ru' +- + org_id: 541 + site: 'http://www.nggu.ru' +- + org_id: 555 + site: 'http://www.nspu.ru' +- + org_id: 592 + site: 'http://www.pnzgu.ru' +- + org_id: 639 + site: 'http://www.rgiis.ru' +- + org_id: 641 + site: 'http://www.rudn.ru/' +- + org_id: 662 + site: 'http://www.smrgaki.ru' +- + org_id: 674 + site: 'http://www.reaviz.ru' +- + org_id: 678 + site: 'http://www.spbgavm.ru' +- + org_id: 705 + site: 'http://www.gup.ru' +- + org_id: 726 + site: 'https://ноусип.рф' +- + org_id: 741 + site: 'http://www.ssga.ru' +- + org_id: 777 + site: 'http://www.rachmaninov.ru' +- + org_id: 799 + site: 'http://www.tuvsu.ru' +- + org_id: 803 + site: 'http://tsiac.ru' +- + org_id: 855 + site: 'http://www.khsu.ru' +- + org_id: 863 + site: 'http://www.chgaki.ru' +- + org_id: 875 + site: 'http://www.chgpu.edu.ru' +- + org_id: 921 + site: 'http://les-sfu.ru' +- + org_id: 934 + site: 'http://www.univermvd.ru' +- + org_id: 939 + site: 'https://www.dpi-ngtu.ru' +- + org_id: 945 + site: 'http://www.unimir-ysu.ru' +- + org_id: 947 + site: 'http://www.of.ugntu.ru/new/' +- + org_id: 948 + site: 'http://ugntu-str.ru' +- + org_id: 949 + site: 'http://www.sfugntu.ru' +- + org_id: 990 + site: 'http://orengubkin.ru/index.php?id=9' +- + org_id: 995 + site: 'http://kfngpu.ru' +- + org_id: 1003 + site: 'http://www.surikov-vuz.ru' +- + org_id: 1023 + site: 'http://www.ideka.ru' +- + org_id: 1029 + site: f-mirea.ru +- + org_id: 1041 + site: www.bronmadi.ru +- + org_id: 1045 + site: 'http://www.spbrca.ru' +- + org_id: 1046 + site: 'http://vfrta.ru' +- + org_id: 1053 + site: 'http://og-ti.ru' +- + org_id: 1059 + site: 'https://рюи.мвд.рф/' +- + org_id: 1064 + site: 'http://www.engels.ruc.su' +- + org_id: 1331 + site: 'http://vfmgua.ru' +- + org_id: 1365 + site: 'http://mgei-kaluga.ru' +- + org_id: 1412 + site: 'http://www.vimvd.ru' +- + org_id: 1414 + site: 'http://aso-ksui.ru' +- + org_id: 1436 + site: 'http://www.altai.fa.ru' +- + org_id: 1450 + site: 'http://www.bgti.ru' +- + org_id: 1451 + site: www.privlaw-ural.ru +- + org_id: 1479 + site: 'http://www.mguu.ru' +- + org_id: 1481 + site: 'http://www.procuror.spb.ru' +- + org_id: 1490 + site: 'http://belovokyzgty.ucoz.ru' +- + org_id: 1524 + site: 'http://www.omamvd.ru' +- + org_id: 1564 + site: 'http://rpa38.ru' +- + org_id: 1569 + site: 'http://www.skfrpa.ru' +- + org_id: 1571 + site: 'http://www.rpa-mu-kf.ru' +- + org_id: 1623 + site: 'http://www.pijs.ru' +- + org_id: 1706 + site: 'http://www.npi.edu' +- + org_id: 1888 + site: 'http://www.krdu-mvd.ru' +- + org_id: 1928 + site: 'http://www.vfmgutu.ru' +- + org_id: 1960 + site: 'http://gelsfedu.ru' +- + org_id: 2016 + site: 'http://www.ntimgudt.ru' +- + org_id: 2130 + site: 'http://dvf-vavt.ru' +- + org_id: 2150 + site: 'http://www.vfrsteu.ru' +- + org_id: 2160 + site: 'http://www.orenrsute.ru' +- + org_id: 2162 + site: 'http://pbrea.ru/' +- + org_id: 2166 + site: www.tula.rea.ru +- + org_id: 2204 + site: 'http://www.mf.rmat.ru' +- + org_id: 2275 + site: 'https://krasnoyarsk.gup.ru/' +- + org_id: 2276 + site: 'http://www.samara.gup.ru' +- + org_id: 2363 + site: 'http://www.smiame.ru' +- + org_id: 2472 + site: 'http://www.ufali.ru' +- + org_id: 2479 + site: 'http://www.mofmosu.ru' +- + org_id: 2530 + site: 'http://osiart.ru' +- + org_id: 2541 + site: 'http://www.ural-mvd.ru' +- + org_id: 2575 + site: 'https://ставф.крду.мвд.рф/' +- + org_id: 2644 + site: 'http://www.nshf.sfedu.ru' +- + org_id: 2709 + site: 'http://www.vbgherzen.spb.ru' +- + org_id: 2751 + site: 'http://www.bfsibguti.ru' +- + org_id: 2898 + site: 'http://www.tiugsha.ru' +- + org_id: 2901 + site: 'http://www.vf.ugtu.net' +- + org_id: 2955 + site: upi.kamensktel.ru +- + org_id: 2957 + site: 'http://www.ugtu.krasnoturinsk.org' +- + org_id: 3000 + site: 'https://смоленская-семинария.рф/' +- + org_id: 3058 + site: 'http://www.niyak.spb.ru' +- + org_id: 3070 + site: kazanriu.ru +- + org_id: 3216 + site: 'http://www.shf-sfu.ru' +- + org_id: 3325 + site: 'http://www.rfmumvd.ru' +- + org_id: 3333 + site: 'http://spbgupkirov.ru' +- + org_id: 3343 + site: 'http://www.i-mil.ru' +- + org_id: 3447 + site: 'http://wsb.raj.ru/' +- + org_id: 3451 + site: 'http://nwb.raj.ru' +- + org_id: 3453 + site: 'http://ub.raj.ru' +- + org_id: 3486 + site: 'https://zf.kai.ru/' +- + org_id: 3597 + site: 'http://www.inzaulsu.ru' +- + org_id: 3606 + site: www.ksai.ru +- + org_id: 3613 + site: 'http://www.mhpi.edu.ru' +- + org_id: 3635 + site: 'http://www.akadem74.ru' +- + org_id: 3636 + site: 'http://www.sport-ural.ru' +- + org_id: 3712 + site: 'http://вгиик.рф' +- + org_id: 3723 + site: 'http://www.oskol.vepi.ru' +- + org_id: 3735 + site: 'https://of.psuti.ru/' +- + org_id: 3770 + site: 'http://kiid.ru' +- + org_id: 3821 + site: 'https://serpukhov-varvsn.mil.ru/' +- + org_id: 3826 + site: 'http://www.academy-mozhayskogo.ru' +- + org_id: 3884 + site: аспи.рф +- + org_id: 4049 + site: 'http://www.orel.vepi.ru' +- + org_id: 4114 + site: www.skfmadi.ru +- + org_id: 4150 + site: www.eletsrosnou.ru +- + org_id: 4444 + site: 'http://www.vigps.ru' +- + org_id: 4580 + site: 'https://www.темрюк-мгуту.рф/' +- + org_id: 5007 + site: 'http://www.spbiir.ru' +- + org_id: 5023 + site: 'http://www.vggi.ru' +- + org_id: 5051 + site: 'http://www.spkvtk.ru' +- + org_id: 5121 + site: 'http://sgasu.belebey.ru' +- + org_id: 5176 + site: 'https://dahluniver.ru/' +- + org_id: 5180 + site: demo.ru +- + org_id: 10000 + site: sarpds.ru +- + org_id: 10026 + site: 'http://www.urep.ru' +- + org_id: 10028 + site: www.viam.ru +- + org_id: 61244 + site: 'http://www.reaviz.ru' +- + org_id: 61301 + site: 'https://mti.edu.ru' +- + org_id: 61304 + site: www.smolensk.ideka.ru +- + org_id: 61305 + site: www.cherkessk.ideka.ru +- + org_id: 61309 + site: 'https://mti.edu.ru' +- + org_id: 61313 + site: www.cherkessk.ideka.ru +- + org_id: 61314 + site: 'http://bf-vshni.ru/' +- + org_id: 61316 + site: www.tyumen.ideka.ru +- + org_id: 61327 + site: www/vpds.ru +- + org_id: 61329 + site: 'http://sfmgei.ru' +- + org_id: 61338 + site: www.yakutsk.ideka.ru +- + org_id: 61343 + site: www.pskov.ideka.ru +- + org_id: 61349 + site: 'http://www.nkfmgei.ru' +- + org_id: 61351 + site: perm.ideka.ru diff --git a/data/remains.yaml b/data/remains.yaml new file mode 100644 index 0000000..3a1d086 --- /dev/null +++ b/data/remains.yaml @@ -0,0 +1,1839 @@ +- + org_id: 2 + site: 'http://adygnet.ru' +- + org_id: 3 + site: achgaa.ru +- + org_id: 6 + site: 'http://www.spbguga.ru' +- + org_id: 11 + site: 'http://www.ranepa.ru' +- + org_id: 14 + site: 'http://www.vaganovaacademy.ru' +- + org_id: 18 + site: 'https://www.axu.ru' +- + org_id: 24 + site: 'http://www.agmu.ru/' +- + org_id: 25 + site: 'http://www.altstu.ru' +- + org_id: 28 + site: 'http://amursma.ru' +- + org_id: 33 + site: 'http://www.agpu.net' +- + org_id: 38 + site: 'http://www.astracons.ru' +- + org_id: 41 + site: 'http://www.astu.org' +- + org_id: 47 + site: 'http://www.voenmeh.ru' +- + org_id: 60 + site: www.bsu.edu.ru +- + org_id: 63 + site: 'http://www.pgusa.ru' +- + org_id: 66 + site: 'http://www.bgpi.ru' +- + org_id: 67 + site: 'https://www.brstu.ru/' +- + org_id: 68 + site: 'https://www.bgita.ru' +- + org_id: 69 + site: 'http://www.bgsha.com/ru/index.php' +- + org_id: 70 + site: 'http://www.brgu.ru' +- + org_id: 76 + site: 'http://www.vlgafc.ru/about/' +- + org_id: 79 + site: 'http://www.vvsu.ru' +- + org_id: 86 + site: 'https://niu.ranepa.ru/' +- + org_id: 87 + site: 'http://vlgr.ranepa.ru' +- + org_id: 91 + site: 'http://www.volgau.com' +- + org_id: 94 + site: 'http://www.volsu.ru' +- + org_id: 96 + site: 'http://serebryakovka.ru' +- + org_id: 97 + site: 'http://vgavt-nn.ru/' +- + org_id: 101 + site: 'https://vogu35.ru/' +- + org_id: 107 + site: 'http://www.vsuet.ru' +- + org_id: 108 + site: 'http://www.vsau.ru' +- + org_id: 111 + site: 'http://www.vorstu.ru' +- + org_id: 112 + site: 'http://www.vsu.ru' +- + org_id: 116 + site: 'http://esstu.ru/uportal/index.htm' +- + org_id: 121 + site: 'http://www.vgik.info' +- + org_id: 129 + site: 'http://www.vschoolmus.ru' +- + org_id: 131 + site: 'http://www.hse.ru/' +- + org_id: 134 + site: 'http://www.htvs.ru' +- + org_id: 135 + site: 'http://www.kigit.ru' +- + org_id: 149 + site: www.gorskigau.com +- + org_id: 152 + site: 'https://guu.ru/' +- + org_id: 155 + site: ippolitovka.ru +- + org_id: 156 + site: 'http://www.rgsai.ru' +- + org_id: 167 + site: 'http://www.gu-ural.ru' +- + org_id: 168 + site: 'http://www.dgma.ru' +- + org_id: 172 + site: 'https://dspu.ru/' +- + org_id: 175 + site: 'https://dviu.ranepa.ru' +- + org_id: 179 + site: 'http://www.msun.ru' +- + org_id: 181 + site: 'http://www.dv-art.ru' +- + org_id: 183 + site: 'http://www.dalrybvtuz.ru' +- + org_id: 199 + site: 'http://www.ims-ural.ru' +- + org_id: 201 + site: 'http://www.elsu.ru' +- + org_id: 203 + site: 'http://www.wuiel.ru' +- + org_id: 206 + site: 'http://isma.ivanovo.ru' +- + org_id: 211 + site: 'http://ispu.ru' +- + org_id: 219 + site: 'http://www.rgis.ru' +- + org_id: 235 + site: www.igumo.ru +- + org_id: 241 + site: 'http://www.ifl.ru' +- + org_id: 244 + site: 'http://иитэм.рф' +- + org_id: 254 + site: 'http://www.imtp.ru' +- + org_id: 279 + site: 'http://www.isi-vuz.ru' +- + org_id: 284 + site: 'http://www.socius.ru' +- + org_id: 291 + site: 'http://miuarh.ru' +- + org_id: 292 + site: 'http://www.ifip05.ru' +- + org_id: 304 + site: 'http://institut-nazran.ru' +- + org_id: 318 + site: 'http://bgu.ru/' +- + org_id: 319 + site: 'http://mir.ismu.baikal.ru' +- + org_id: 322 + site: 'http://www.istu.edu' +- + org_id: 323 + site: www.isu.ru +- + org_id: 324 + site: 'http://www.irgups.ru' +- + org_id: 326 + site: 'http://www.kbgau.ru' +- + org_id: 328 + site: 'http://www.ksavm.senet.ru' +- + org_id: 329 + site: 'http://www.kazgik.ru' +- + org_id: 331 + site: 'https://kazancons.ru/' +- + org_id: 332 + site: 'http://www.kazgau.ru' +- + org_id: 335 + site: 'http://www.kai.ru' +- + org_id: 341 + site: 'http://www.kantiana.ru' +- + org_id: 342 + site: 'http://www.kalmsu.ru' +- + org_id: 343 + site: 'https://tksu.ru/' +- + org_id: 349 + site: 'https://kemsmu.ru/' +- + org_id: 355 + site: 'http://www.dksta.ru' +- + org_id: 362 + site: 'https://gukolomna.ru/' +- + org_id: 365 + site: 'http://www.amgpgu.ru' +- + org_id: 367 + site: 'http://kgsxa.ru' +- + org_id: 368 + site: 'http://www.ksu.edu.ru' +- + org_id: 374 + site: 'https://krasgmu.ru/' +- + org_id: 376 + site: 'http://www.kgau.ru' +- + org_id: 377 + site: 'http://www.kgii.ru' +- + org_id: 378 + site: 'http://www.kspu.ru' +- + org_id: 381 + site: 'http://www.sfu-kras.ru' +- + org_id: 385 + site: 'http://kubstu.ru' +- + org_id: 389 + site: 'http://kuzstu.ru' +- + org_id: 395 + site: 'http://www.kurskmed.com' +- + org_id: 400 + site: 'http://lspu.lipetsk.ru' +- + org_id: 401 + site: 'http://www.stu.lipetsk.ru' +- + org_id: 402 + site: 'http://www.лэги48.рф' +- + org_id: 403 + site: 'http://www.litinstitut.ru' +- + org_id: 405 + site: 'http://www.magtu.ru' +- + org_id: 406 + site: 'http://www.magkmusic.com' +- + org_id: 410 + site: 'http://www.volgatech.net' +- + org_id: 419 + site: 'http://www.imi-samara.ru' +- + org_id: 420 + site: 'http://www.miep.ru' +- + org_id: 423 + site: 'http://www.svgu.ru' +- + org_id: 425 + site: 'http://slavinst.ru/' +- + org_id: 428 + site: 'http://www.mabiu.ru' +- + org_id: 429 + site: 'http://www.vivt.ru' +- + org_id: 430 + site: 'http://www.iict.ru' +- + org_id: 431 + site: 'http://uni-dubna.ru/' +- + org_id: 440 + site: 'http://www.mrsu.ru' +- + org_id: 448 + site: 'http://www.mgudt.ru' +- + org_id: 453 + site: 'http://www.balletacademy.ru' +- + org_id: 456 + site: 'http://www.msal.ru' +- + org_id: 465 + site: 'http://www.mai.ru' +- + org_id: 466 + site: 'http://www.madi.ru' +- + org_id: 471 + site: 'http://mgutm.ru' +- + org_id: 473 + site: 'http://www.mephi.ru' +- + org_id: 474 + site: 'http://www.mgimo.ru' +- + org_id: 475 + site: 'https://www.mirea.ru' +- + org_id: 480 + site: 'http://www.schnittke-mgim.ru' +- + org_id: 485 + site: 'https://www.mstuca.ru' +- + org_id: 486 + site: 'http://www.bmstu.ru' +- + org_id: 487 + site: 'http://stankin.ru' +- + org_id: 488 + site: 'http://www.msu.ru' +- + org_id: 491 + site: 'http://mgik.org' +- + org_id: 494 + site: 'http://www.mgupp.ru' +- + org_id: 506 + site: 'http://www.muiv.ru' +- + org_id: 507 + site: 'http://www.miepl.ru' +- + org_id: 508 + site: 'http://www.msmsu.ru' +- + org_id: 512 + site: 'http://мпгу.рф' +- + org_id: 517 + site: 'http://www.mtuci.ru' +- + org_id: 519 + site: 'http://www.ruc.su' +- + org_id: 523 + site: 'https://www.masu.edu.ru' +- + org_id: 527 + site: 'http://tatngpi.ru' +- + org_id: 531 + site: 'http://www.nngasu.ru' +- + org_id: 537 + site: 'http://www.nntu.ru' +- + org_id: 538 + site: 'http://www.unn.ru' +- + org_id: 541 + site: 'http://www.nggu.ru' +- + org_id: 542 + site: www.rsvpu.ru +- + org_id: 544 + site: 'http://www.novsu.ru' +- + org_id: 547 + site: 'http://www.aumsu.ru' +- + org_id: 553 + site: 'http://nsau.edu.ru' +- + org_id: 554 + site: 'http://www.ngmu.ru' +- + org_id: 555 + site: 'http://www.nspu.ru' +- + org_id: 556 + site: 'http://www.nstu.ru' +- + org_id: 557 + site: 'http://www.nsu.ru' +- + org_id: 561 + site: 'http://www.npi-tu.ru' +- + org_id: 566 + site: 'http://www.iate.obninsk.ru' +- + org_id: 572 + site: 'https://omgtu.ru/' +- + org_id: 579 + site: 'http://www.osu.ru' +- + org_id: 581 + site: 'http://www.mgogi.ru' +- + org_id: 589 + site: 'http://www.pguas.ru' +- + org_id: 592 + site: 'http://www.pnzgu.ru' +- + org_id: 594 + site: 'http://www.psma.ru' +- + org_id: 595 + site: 'http://pgsha.ru/web/today/' +- + org_id: 599 + site: 'http://pstu.ru' +- + org_id: 602 + site: 'http://glazunovcons.ru' +- + org_id: 603 + site: 'http://www.petrsu.ru' +- + org_id: 605 + site: 'http://piu.ranepa.ru' +- + org_id: 607 + site: www.psuti.ru +- + org_id: 615 + site: 'http://www.pushgu.ru' +- + org_id: 620 + site: 'https://gaugn.ru/' +- + org_id: 622 + site: 'http://www.glazunov-academy.ru' +- + org_id: 623 + site: 'http://www.gnesin-academy.ru' +- + org_id: 625 + site: 'http://www.gitis.net' +- + org_id: 628 + site: 'http://rpa-mu.ru/' +- + org_id: 630 + site: www.privlaw.ru +- + org_id: 631 + site: 'http://www.rea.ru' +- + org_id: 633 + site: 'http://www.rshu.ru' +- + org_id: 635 + site: 'http://rsmu.ru' +- + org_id: 641 + site: 'http://www.rudn.ru/' +- + org_id: 651 + site: 'http://www.rgups.ru' +- + org_id: 659 + site: 'http://www.rgatu.ru/' +- + org_id: 661 + site: 'http://www.rsu.edu.ru' +- + org_id: 662 + site: 'http://www.smrgaki.ru' +- + org_id: 664 + site: 'http://www.ssaa.ru/' +- + org_id: 668 + site: 'http://www.samsmu.ru' +- + org_id: 670 + site: 'http://www.samgtu.ru/' +- + org_id: 672 + site: 'http://www.samgups.ru' +- + org_id: 678 + site: 'http://www.spbgavm.ru' +- + org_id: 679 + site: 'http://www.spbgik.ru' +- + org_id: 680 + site: 'http://www.rgisi.ru' +- + org_id: 681 + site: 'http://www.lesgaft.spb.ru' +- + org_id: 686 + site: 'https://gpma.ru' +- + org_id: 691 + site: 'http://spbgau.ru' +- + org_id: 692 + site: 'http://www.spbgasu.ru/' +- + org_id: 696 + site: 'http://www.smtu.ru' +- + org_id: 701 + site: 'http://gumrf.ru' +- + org_id: 705 + site: 'http://www.gup.ru' +- + org_id: 707 + site: 'http://www.gukit.ru' +- + org_id: 717 + site: 'http://www.сгюа.рф' +- + org_id: 724 + site: 'http://www.sstu.ru' +- + org_id: 726 + site: 'https://ноусип.рф' +- + org_id: 730 + site: 'http://uriu.ranepa.ru' +- + org_id: 736 + site: 'http://siu.ranepa.ru' +- + org_id: 737 + site: 'http://www.sibsau.ru' +- + org_id: 739 + site: 'https://www.sibsutis.ru' +- + org_id: 741 + site: 'http://www.ssga.ru' +- + org_id: 747 + site: 'http://www.sibup.ru' +- + org_id: 751 + site: 'http://www.smolgmu.ru' +- + org_id: 753 + site: 'http://www.sgafkst.ru' +- + org_id: 754 + site: 'http://www.smolgu.ru/' +- + org_id: 756 + site: 'http://www.fa.ru/fil/smolensk' +- + org_id: 763 + site: 'http://www.stgmu.ru' +- + org_id: 765 + site: 'http://www.ncfu.ru' +- + org_id: 771 + site: 'http://www.surgpu.ru' +- + org_id: 775 + site: '' +- + org_id: 777 + site: 'http://www.rachmaninov.ru' +- + org_id: 778 + site: 'http://www.tstu.ru' +- + org_id: 781 + site: 'https://www.tisbi.ru/' +- + org_id: 782 + site: 'https://tvgmu.ru/' +- + org_id: 784 + site: 'http://www.tstu.tver.ru' +- + org_id: 794 + site: 'http://www.tspu.edu.ru' +- + org_id: 795 + site: 'http://tsu.ru' +- + org_id: 798 + site: 'http://tsu.tula.ru' +- + org_id: 799 + site: 'http://www.tuvsu.ru' +- + org_id: 803 + site: 'http://tsiac.ru' +- + org_id: 809 + site: 'http://www.ulspu.ru' +- + org_id: 810 + site: 'http://www.ulstu.ru' +- + org_id: 811 + site: 'http://ulsu.ru' +- + org_id: 812 + site: 'http://www.uvauga.ru' +- + org_id: 818 + site: 'http://ui.ranepa.ru' +- + org_id: 820 + site: 'http://www.uralgufk.ru' +- + org_id: 821 + site: 'http://www.usaaa.ru' +- + org_id: 826 + site: 'http://www.urgau.ru' +- + org_id: 830 + site: www.rsvpu.ru +- + org_id: 831 + site: 'http://urfu.ru/ru/' +- + org_id: 847 + site: 'http://www.ugtu.net' +- + org_id: 848 + site: 'http://www.fa.ru/Pages/home.aspx' +- + org_id: 851 + site: 'http://www.hgiik.ru' +- + org_id: 852 + site: 'http://dvgafk.com' +- + org_id: 855 + site: 'http://www.khsu.ru' +- + org_id: 860 + site: 'http://www.chelsma.ru' +- + org_id: 863 + site: 'http://www.chgaki.ru' +- + org_id: 865 + site: 'http://www.susu.ru' +- + org_id: 866 + site: 'https://www.csu.ru' +- + org_id: 867 + site: 'http://uyrgii.ru' +- + org_id: 868 + site: 'http://www.chsu.ru' +- + org_id: 870 + site: 'http://www.chesu.ru' +- + org_id: 875 + site: 'http://www.chgpu.edu.ru' +- + org_id: 887 + site: 'http://www.sakhgu.ru' +- + org_id: 894 + site: 'https://ysmu.ru' +- + org_id: 898 + site: 'http://www.ystu.ru' +- + org_id: 917 + site: www.batp.ru +- + org_id: 919 + site: 'http://www.sksi.ru' +- + org_id: 921 + site: 'http://les-sfu.ru' +- + org_id: 922 + site: 'http://www.mgutu.info' +- + org_id: 929 + site: 'http://www.mephi.ru' +- + org_id: 930 + site: 'http://www.sstu.ru' +- + org_id: 933 + site: 'http://nti.urfu.ru' +- + org_id: 934 + site: 'http://www.univermvd.ru' +- + org_id: 939 + site: 'https://www.dpi-ngtu.ru' +- + org_id: 940 + site: 'http://www.rubinst.ru' +- + org_id: 945 + site: 'http://www.unimir-ysu.ru' +- + org_id: 947 + site: 'http://www.of.ugntu.ru/new/' +- + org_id: 948 + site: 'http://ugntu-str.ru' +- + org_id: 949 + site: 'http://www.sfugntu.ru' +- + org_id: 953 + site: 'http://www.mephi.ru' +- + org_id: 969 + site: 'https://sbor.spbstu.ru/' +- + org_id: 989 + site: 'http://www.npi-tu.ru' +- + org_id: 990 + site: 'http://orengubkin.ru/index.php?id=9' +- + org_id: 993 + site: 'http://if-mstuca.ru/site/' +- + org_id: 995 + site: 'http://kfngpu.ru' +- + org_id: 997 + site: 'http://www.immf.ru' +- + org_id: 1002 + site: 'http://alsivuz.ru' +- + org_id: 1003 + site: 'http://www.surikov-vuz.ru' +- + org_id: 1007 + site: 'http://www.mephi.ru' +- + org_id: 1020 + site: 'http://www.idnk.ru' +- + org_id: 1023 + site: 'http://www.ideka.ru' +- + org_id: 1025 + site: 'http://www.sli.komi.com' +- + org_id: 1026 + site: 'http://sf-misis.ru' +- + org_id: 1032 + site: 'http://www.bf.pstu.ru' +- + org_id: 1041 + site: www.bronmadi.ru +- + org_id: 1045 + site: 'http://www.spbrca.ru' +- + org_id: 1046 + site: 'http://vfrta.ru' +- + org_id: 1048 + site: 'http://www.sibsiu.ru' +- + org_id: 1051 + site: 'http://nirhtu.ru' +- + org_id: 1052 + site: 'http://esi.irk.ru' +- + org_id: 1053 + site: 'http://og-ti.ru' +- + org_id: 1056 + site: 'http://www.volgograd.ruc.su' +- + org_id: 1059 + site: 'https://рюи.мвд.рф/' +- + org_id: 1064 + site: 'http://www.engels.ruc.su' +- + org_id: 1065 + site: 'http://www.ruc.su' +- + org_id: 1311 + site: www.vladimir.fa.ru +- + org_id: 1316 + site: 'http://www.kursk.fa.ru?' +- + org_id: 1317 + site: www.lipetsk.fa.ru +- + org_id: 1319 + site: www.orel.fa.ru +- + org_id: 1320 + site: 'http://www.penza.fa.ru' +- + org_id: 1322 + site: 'http://www.tula.fa.ru' +- + org_id: 1323 + site: 'http://www.fa.ru/fil/ufa' +- + org_id: 1324 + site: 'http://www.fa.ru/fil/chelyabinsk/' +- + org_id: 1325 + site: 'http://www.fa.ru' +- + org_id: 1327 + site: 'http://www.novoross.fa.ru/' +- + org_id: 1330 + site: 'http://www.msalkirov.ru' +- + org_id: 1331 + site: 'http://vfmgua.ru' +- + org_id: 1362 + site: 'http://www.nfmgei.ru' +- + org_id: 1363 + site: 'http://mgei.kirov.ru' +- + org_id: 1365 + site: 'http://mgei-kaluga.ru' +- + org_id: 1383 + site: 'http://anapa.rgsu.net/' +- + org_id: 1403 + site: mirea.ru +- + org_id: 1405 + site: 'http://www.kti.ru' +- + org_id: 1406 + site: 'http://hse.ru' +- + org_id: 1412 + site: 'http://www.vimvd.ru' +- + org_id: 1414 + site: 'http://aso-ksui.ru' +- + org_id: 1433 + site: 'http://www.sfu-kras.ru' +- + org_id: 1436 + site: 'http://www.altai.fa.ru' +- + org_id: 1437 + site: 'http://www.fa.ru/fil/krasnodar/' +- + org_id: 1451 + site: www.privlaw-ural.ru +- + org_id: 1475 + site: 'http://www.namvd.ru' +- + org_id: 1477 + site: 'http://www.krags.ru' +- + org_id: 1479 + site: 'http://www.mguu.ru' +- + org_id: 1481 + site: 'http://www.procuror.spb.ru' +- + org_id: 1485 + site: '' +- + org_id: 1490 + site: 'http://belovokyzgty.ucoz.ru' +- + org_id: 1494 + site: 'http://afkras.ru' +- + org_id: 1524 + site: 'http://www.omamvd.ru' +- + org_id: 1527 + site: 'http://www.hse.ru/' +- + org_id: 1528 + site: 'http://www.hse.ru/' +- + org_id: 1529 + site: 'http://www.skf-mtusi.ru' +- + org_id: 1552 + site: 'http://www.brgu.ru' +- + org_id: 1562 + site: www.rgups.ru +- + org_id: 1563 + site: 'http://lawacademy.spb.ru' +- + org_id: 1564 + site: 'http://rpa38.ru' +- + org_id: 1566 + site: 'http://sarrpa.ru' +- + org_id: 1569 + site: 'http://www.skfrpa.ru' +- + org_id: 1571 + site: 'http://www.rpa-mu-kf.ru' +- + org_id: 1583 + site: 'http://www.bfsgu.ru' +- + org_id: 1607 + site: 'http://perm.ranepa.ru' +- + org_id: 1610 + site: 'http://kurg.ranepa.ru' +- + org_id: 1611 + site: 'http://www.orn.ranepa.ru' +- + org_id: 1618 + site: 'https://www.csu.ru' +- + org_id: 1619 + site: 'http://www.ifrgufk.ru' +- + org_id: 1623 + site: 'http://www.pijs.ru' +- + org_id: 1662 + site: 'http://www.rb.asu.ru' +- + org_id: 1677 + site: 'http://samara.mgpu.ru' +- + org_id: 1700 + site: 'http://www.atso.ru' +- + org_id: 1701 + site: 'http://www.orenfil-atiso.ru/index.php' +- + org_id: 1706 + site: 'http://www.npi.edu' +- + org_id: 1707 + site: 'http://www.amti.ru' +- + org_id: 1772 + site: 'http://www.mrsu.ru/' +- + org_id: 1773 + site: 'http://www.gfi.edu.ru/' +- + org_id: 1814 + site: 'https://astr.ranepa.ru/' +- + org_id: 1826 + site: 'http://www.miu-iv.ru' +- + org_id: 1832 + site: 'http://iems.ru' +- + org_id: 1845 + site: 'http://usinskvuz.ru' +- + org_id: 1883 + site: 'http://nf.vvsu.ru' +- + org_id: 1884 + site: 'http://b-artem.vvsu.ru/ ' +- + org_id: 1888 + site: 'http://www.krdu-mvd.ru' +- + org_id: 1906 + site: www.bsu.edu.ru +- + org_id: 1909 + site: 'http://www.balakovo.sgap.ru' +- + org_id: 1910 + site: 'http://www.af.sgap.ru' +- + org_id: 1928 + site: 'http://www.vfmgutu.ru' +- + org_id: 1932 + site: 'http://blk.ranepa.ru' +- + org_id: 1933 + site: 'https://tmb.ranepa.ru/' +- + org_id: 1947 + site: 'http://www.apu.fsin.su' +- + org_id: 1960 + site: 'http://gelsfedu.ru' +- + org_id: 1993 + site: 'https://dvgups-sakh.ru/' +- + org_id: 2016 + site: 'http://www.ntimgudt.ru' +- + org_id: 2020 + site: 'http://www.vherzen.ru' +- + org_id: 2103 + site: 'http://www.muiv.ru' +- + org_id: 2104 + site: 'http://www.muiv.ru' +- + org_id: 2130 + site: 'http://dvf-vavt.ru' +- + org_id: 2136 + site: 'http://br.ranepa.ru/new.php' +- + org_id: 2142 + site: 'https://cheb.ranepa.ru/' +- + org_id: 2149 + site: 'http://www.csu.ru' +- + org_id: 2150 + site: 'http://www.vfrsteu.ru' +- + org_id: 2151 + site: 'https://рэу.рф/structure/filials/voronezh/' +- + org_id: 2152 + site: ivanovo.rea.ru +- + org_id: 2160 + site: 'http://www.orenrsute.ru' +- + org_id: 2161 + site: 'https://рэу.рф/structure/filials/permskiy-institut-filial-reu-im-gv-plehanova/' +- + org_id: 2162 + site: 'http://pbrea.ru/' +- + org_id: 2166 + site: www.tula.rea.ru +- + org_id: 2184 + site: 'http://www.hasdgu.ru' +- + org_id: 2204 + site: 'http://www.mf.rmat.ru' +- + org_id: 2219 + site: 'http://ski.ranepa.ru' +- + org_id: 2274 + site: 'http://bfknitu.com/' +- + org_id: 2275 + site: 'https://krasnoyarsk.gup.ru/' +- + org_id: 2276 + site: 'http://www.samara.gup.ru' +- + org_id: 2280 + site: 'http://volog.ranepa.ru' +- + org_id: 2281 + site: 'http://vbr.ranepa.ru' +- + org_id: 2282 + site: 'http://iv.ranepa.ru' +- + org_id: 2283 + site: 'http://klg.ranepa.ru' +- + org_id: 2284 + site: 'http://www.ranepa.ru/' +- + org_id: 2285 + site: 'http://www.novgor.ranepa.ru' +- + org_id: 2286 + site: 'https://krl.ranepa.ru/' +- + org_id: 2289 + site: 'http://www.tver.ranepa.ru' +- + org_id: 2291 + site: 'http://мпгу.рф' +- + org_id: 2293 + site: 'http://мпгу.рф' +- + org_id: 2297 + site: 'http://мпгу.рф' +- + org_id: 2305 + site: 'https://vlad.ranepa.ru' +- + org_id: 2306 + site: 'http://vrn.ranepa.ru' +- + org_id: 2339 + site: 'http://www.susu-nv.ru/' +- + org_id: 2345 + site: 'http://vgavt-nn.ru/' +- + org_id: 2349 + site: 'http://vgavt-nn.ru/' +- + org_id: 2350 + site: 'https://www.vgavt-nn.ru' +- + org_id: 2352 + site: 'http://www.pnipu.ru' +- + org_id: 2361 + site: 'https://barnaul.spbume.ru/' +- + org_id: 2363 + site: 'http://www.smiame.ru' +- + org_id: 2370 + site: 'http://www.mai.ru/education/vzlet/' +- + org_id: 2382 + site: www.tih.kubsu.ru +- + org_id: 2389 + site: 'http://ufa.ruc.su' +- + org_id: 2390 + site: 'http://www.pk.ruc.su' +- + org_id: 2430 + site: 'http://viepp.ru' +- + org_id: 2472 + site: 'http://www.ufali.ru' +- + org_id: 2479 + site: 'http://www.mofmosu.ru' +- + org_id: 2493 + site: 'http://www.anapauniver.ru' +- + org_id: 2524 + site: 'http://sportacadem.ru' +- + org_id: 2526 + site: www.pushkin.institute +- + org_id: 2528 + site: 'http://www.vepi.ru' +- + org_id: 2530 + site: 'http://osiart.ru' +- + org_id: 2532 + site: 'http://vipe.fsin.su' +- + org_id: 2541 + site: 'http://www.ural-mvd.ru' +- + org_id: 2573 + site: 'http://www.sbmpei.ru' +- + org_id: 2575 + site: 'https://ставф.крду.мвд.рф/' +- + org_id: 2620 + site: 'http://www.rudn.ru/' +- + org_id: 2644 + site: 'http://www.nshf.sfedu.ru' +- + org_id: 2654 + site: 'http://lip.ranepa.ru' +- + org_id: 2655 + site: 'http://www.smol.ranepa.ru' +- + org_id: 2709 + site: 'http://www.vbgherzen.spb.ru' +- + org_id: 2733 + site: 'http://www.origt.ru' +- + org_id: 2742 + site: 'https://mgusit.mossport.ru/' +- + org_id: 2743 + site: 'http://www.agiki.ru' +- + org_id: 2744 + site: www.vfmadi.ru +- + org_id: 2751 + site: 'http://www.bfsibguti.ru' +- + org_id: 2856 + site: 'http://www.mephi.ru' +- + org_id: 2857 + site: 'http://www.mephi.ru' +- + org_id: 2896 + site: 'http://www.eeip.ru' +- + org_id: 2898 + site: 'http://www.tiugsha.ru' +- + org_id: 2901 + site: 'http://www.vf.ugtu.net' +- + org_id: 2902 + site: 'http://www.msei.ru' +- + org_id: 2955 + site: upi.kamensktel.ru +- + org_id: 2957 + site: 'http://www.ugtu.krasnoturinsk.org' +- + org_id: 2958 + site: 'http://www.urfu.ru' +- + org_id: 2974 + site: i-eu.ru +- + org_id: 3000 + site: 'https://смоленская-семинария.рф/' +- + org_id: 3011 + site: 'http://www.kf-rmat.ru' +- + org_id: 3019 + site: 'http://mgutm.ru' +- + org_id: 3043 + site: 'http://www.fa.ru/fil/kaluga' +- + org_id: 3055 + site: 'http://isea.bratsk.ru' +- + org_id: 3058 + site: 'http://www.niyak.spb.ru' +- + org_id: 3066 + site: 'http://www.mephi.ru' +- + org_id: 3070 + site: kazanriu.ru +- + org_id: 3112 + site: www.noironline.ru +- + org_id: 3188 + site: 'http://giep-rgeu.ru/' +- + org_id: 3207 + site: 'http://мпгу.рф' +- + org_id: 3214 + site: 'http://www.nfbgu.ru' +- + org_id: 3216 + site: 'http://www.shf-sfu.ru' +- + org_id: 3261 + site: www.tib.tomsk.ru +- + org_id: 3294 + site: 'http://uni-dubna.ru/' +- + org_id: 3295 + site: 'http://uni-dubna.ru/' +- + org_id: 3296 + site: 'http://uni-dubna.ru/' +- + org_id: 3303 + site: 'https://stav.ranepa.ru/' +- + org_id: 3325 + site: 'http://www.rfmumvd.ru' +- + org_id: 3326 + site: 'http://www.smolensk.ruc.su' +- + org_id: 3333 + site: 'http://spbgupkirov.ru' +- + org_id: 3338 + site: 'http://vfrmat.ru' +- + org_id: 3343 + site: 'http://www.i-mil.ru' +- + org_id: 3362 + site: 'http://www.magtu.ru' +- + org_id: 3381 + site: 'http://sfvstu.ru' +- + org_id: 3430 + site: 'http://www.mspi.edu.ru' +- + org_id: 3447 + site: 'http://wsb.raj.ru/' +- + org_id: 3451 + site: 'http://nwb.raj.ru' +- + org_id: 3453 + site: 'http://ub.raj.ru' +- + org_id: 3486 + site: 'https://zf.kai.ru/' +- + org_id: 3506 + site: 'http://rfei.ru/' +- + org_id: 3512 + site: 'https://rostov.rpa-mu.ru' +- + org_id: 3524 + site: '' +- + org_id: 3540 + site: 'http://www.art-gzhel.ru' +- + org_id: 3580 + site: 'http://rosnoudm.ru/' +- + org_id: 3597 + site: 'http://www.inzaulsu.ru' +- + org_id: 3606 + site: www.ksai.ru +- + org_id: 3613 + site: 'http://www.mhpi.edu.ru' +- + org_id: 3615 + site: 'http://www.fa.ru/fil/omsk/about/Pages/default.aspx' +- + org_id: 3633 + site: 'https://khv.rpa-mu.ru/' +- + org_id: 3635 + site: 'http://www.akadem74.ru' +- + org_id: 3636 + site: 'http://www.sport-ural.ru' +- + org_id: 3639 + site: 'http://www.reu32.ru' +- + org_id: 3651 + site: 'https://www.irgups.ru/krizht/' +- + org_id: 3652 + site: 'https://www.irgups.ru/zabizht/' +- + org_id: 3669 + site: 'http://ul.ranepa.ru' +- + org_id: 3671 + site: 'http://mosumvd.com' +- + org_id: 3696 + site: '' +- + org_id: 3698 + site: 'https://izh.rpa-mu.ru/' +- + org_id: 3699 + site: 'http://www.kazanrpa.ru' +- + org_id: 3712 + site: 'http://вгиик.рф' +- + org_id: 3723 + site: 'http://www.oskol.vepi.ru' +- + org_id: 3735 + site: 'https://of.psuti.ru/' +- + org_id: 3739 + site: 'http://inisk.ru' +- + org_id: 3770 + site: 'http://kiid.ru' +- + org_id: 3775 + site: 'http://ngiei.ru' +- + org_id: 3792 + site: '' +- + org_id: 3804 + site: '' +- + org_id: 3816 + site: '' +- + org_id: 3817 + site: '' +- + org_id: 3821 + site: 'https://serpukhov-varvsn.mil.ru/' +- + org_id: 3826 + site: 'http://www.academy-mozhayskogo.ru' +- + org_id: 3871 + site: 'https://sevastopol.rea.ru' +- + org_id: 3884 + site: аспи.рф +- + org_id: 3891 + site: 'http://mgutu-vf.ru' +- + org_id: 3901 + site: '' +- + org_id: 3917 + site: 'https://bf.cchgeu.ru/' +- + org_id: 3922 + site: www.kfbupk.ru +- + org_id: 3926 + site: 'http://dzr.ranepa.ru' +- + org_id: 3927 + site: 'http://www.ranepa.ru/' +- + org_id: 3932 + site: '' +- + org_id: 3943 + site: 'http://www.penzgtu.ru' +- + org_id: 3962 + site: 'http://www.kizht.ru' +- + org_id: 3964 + site: 'http://www.pizht.ru' +- + org_id: 3969 + site: '' +- + org_id: 4008 + site: 'http://www.sfi.ru' +- + org_id: 4026 + site: 'http://www.gifip.ru' +- + org_id: 4049 + site: 'http://www.orel.vepi.ru' +- + org_id: 4054 + site: 'http://www.bwmi.ru' +- + org_id: 4088 + site: 'http://tula.ranepa.ru' +- + org_id: 4090 + site: '' +- + org_id: 4105 + site: 'http://www.spbau.ru' +- + org_id: 4109 + site: 'http://www.kaliningrad.ruc.su' +- + org_id: 4111 + site: 'http://www.krv.ranepa.ru' +- + org_id: 4114 + site: www.skfmadi.ru +- + org_id: 4115 + site: 'http://www.muiv.ru' +- + org_id: 4150 + site: www.eletsrosnou.ru +- + org_id: 4164 + site: 'http://artershov.ru' +- + org_id: 4211 + site: 'http://www.ranepa.ru/' +- + org_id: 4226 + site: 'http://www.unn.ru/cdo/Dzerzhinsk.html' +- + org_id: 4227 + site: 'http://www.unn.ru/cdo/Pavlovo.html' +- + org_id: 4274 + site: 'http://vgifk.ru' +- + org_id: 4287 + site: '' +- + org_id: 4296 + site: www.oivt-sguwt.ru +- + org_id: 4305 + site: 'http://budfilsgpi.ru' +- + org_id: 4373 + site: 'http://iuifagprf.ru' +- + org_id: 4387 + site: 'http://www.fa.ru/fil/vladik' +- + org_id: 4392 + site: 'http://www.fa.ru/fil/spb/Pages/Home.aspx' +- + org_id: 4424 + site: 'https://zf.ranepa.ru/' +- + org_id: 4444 + site: 'http://www.vigps.ru' +- + org_id: 4448 + site: 'http://sibigps.ru' +- + org_id: 4507 + site: 'http://sgpizh.ru' +- + org_id: 4595 + site: 'http://www.viti-mephi.ru' +- + org_id: 4646 + site: 'http://www.pskgu.ru' +- + org_id: 4648 + site: 'http://dimpku.ru/' +- + org_id: 4676 + site: 'https://iptdnn.ru/' +- + org_id: 4683 + site: 'http://sar.reaviz.ru' +- + org_id: 5007 + site: 'http://www.spbiir.ru' +- + org_id: 5017 + site: 'http://www.vsiem.ru' +- + org_id: 5023 + site: 'http://www.vggi.ru' +- + org_id: 5025 + site: 'http://kgmtu.ru' +- + org_id: 5026 + site: pravinst.ru +- + org_id: 5029 + site: 'http://www.mai.ru/education/strela/' +- + org_id: 5031 + site: 'https://www.filialpskovgu.ru/' +- + org_id: 5041 + site: 'http://www.ranepa.ru/' +- + org_id: 5049 + site: 'http://irkvgik.ru' +- + org_id: 5050 + site: 'http://www.vgik.info' +- + org_id: 5051 + site: 'http://www.spkvtk.ru' +- + org_id: 5060 + site: '' +- + org_id: 5065 + site: 'http://www.muiv.ru' +- + org_id: 5098 + site: 'http://kgmtu.ru' +- + org_id: 5116 + site: 'https://orel.ranepa.ru/' +- + org_id: 5121 + site: 'http://sgasu.belebey.ru' +- + org_id: 5122 + site: www.mgimo.ru +- + org_id: 5135 + site: www.samgups.ru +- + org_id: 5140 + site: 'https://www.ranepa.ru/' +- + org_id: 5151 + site: 'http://www.unn.ru/cdo/Balakhna.html' +- + org_id: 5159 + site: '' +- + org_id: 5165 + site: 'https://www.pgups.ru' +- + org_id: 5166 + site: 'http://lnau.su/' +- + org_id: 5167 + site: '' +- + org_id: 5169 + site: '' +- + org_id: 5171 + site: '' +- + org_id: 5172 + site: 'https://nvpk-mephi.ru/' +- + org_id: 5175 + site: 'http://donnu.ru' +- + org_id: 5176 + site: 'https://dahluniver.ru/' +- + org_id: 5180 + site: demo.ru +- + org_id: 10000 + site: sarpds.ru +- + org_id: 10004 + site: 'https://www.skoltech.ru' +- + org_id: 10007 + site: www.samgups.ru +- + org_id: 10016 + site: www.rgups.ru +- + org_id: 10026 + site: 'http://www.urep.ru' +- + org_id: 10028 + site: www.viam.ru +- + org_id: 10029 + site: 'https://sochi.rpa-mu.ru' +- + org_id: 10031 + site: www.nifru.ru +- + org_id: 10040 + site: 'https://innopolis.university/' +- + org_id: 10042 + site: 'http://www.bmstu.ru' +- + org_id: 61241 + site: 'http://sevsu.ru' +- + org_id: 61261 + site: 'http://www.skitu.ru' +- + org_id: 61268 + site: 'http://www.lilgu.luga.ru' +- + org_id: 61296 + site: 'http://lipetsk.vepi.ru' +- + org_id: 61298 + site: 'https://kazpds.ru/' +- + org_id: 61300 + site: 'https://www.pgups.ru' +- + org_id: 61301 + site: 'https://mti.edu.ru' +- + org_id: 61303 + site: 'http://mpgu.su' +- + org_id: 61304 + site: www.smolensk.ideka.ru +- + org_id: 61305 + site: www.cherkessk.ideka.ru +- + org_id: 61306 + site: 'https://miiimel.ru/' +- + org_id: 61309 + site: 'https://mti.edu.ru' +- + org_id: 61311 + site: 'http://mpgu.su' +- + org_id: 61313 + site: www.cherkessk.ideka.ru +- + org_id: 61314 + site: 'http://bf-vshni.ru/' +- + org_id: 61316 + site: www.tyumen.ideka.ru +- + org_id: 61317 + site: 'https://sarov.msu.ru/' +- + org_id: 61319 + site: 'https://ussur.vvsu.ru/' +- + org_id: 61323 + site: 'http://rossosh.vepi.ru' +- + org_id: 61325 + site: 'https://fedoskino-vshni.ru' +- + org_id: 61327 + site: www/vpds.ru +- + org_id: 61329 + site: 'http://sfmgei.ru' +- + org_id: 61331 + site: 'https://lomonosov.lengu.ru' +- + org_id: 61332 + site: 'https://gf.misis.ru/' +- + org_id: 61334 + site: www.epds.ru +- + org_id: 61336 + site: 'https://www.ompds.ru/' +- + org_id: 61337 + site: 'https://kerch.kipu-rc.ru/' +- + org_id: 61338 + site: www.yakutsk.ideka.ru +- + org_id: 61340 + site: 'https://siriusuniversity.ru/' +- + org_id: 61343 + site: www.pskov.ideka.ru +- + org_id: 61351 + site: perm.ideka.ru +- + org_id: 61352 + site: 'https://mitu.msk.ru/' +- + org_id: 61355 + site: 'http://www.anoimei.ru' diff --git a/data/sites.yaml b/data/sites.yaml new file mode 100644 index 0000000..0bce916 --- /dev/null +++ b/data/sites.yaml @@ -0,0 +1,3726 @@ +- + org_id: 2 + site: 'http://adygnet.ru' +- + org_id: 3 + site: achgaa.ru +- + org_id: 6 + site: 'http://www.spbguga.ru' +- + org_id: 7 + site: 'https://amchs.ru/' +- + org_id: 11 + site: 'http://www.ranepa.ru' +- + org_id: 14 + site: 'http://www.vaganovaacademy.ru' +- + org_id: 16 + site: 'http://www.atiso.ru' +- + org_id: 18 + site: 'https://www.axu.ru' +- + org_id: 22 + site: 'http://www.asau.ru' +- + org_id: 23 + site: 'http://www.agik22.ru' +- + org_id: 24 + site: 'http://www.agmu.ru/' +- + org_id: 25 + site: 'http://www.altstu.ru' +- + org_id: 26 + site: 'http://www.asu.ru' +- + org_id: 27 + site: 'http://www.agni-rt.ru' +- + org_id: 28 + site: 'http://amursma.ru' +- + org_id: 29 + site: 'http://www.amursu.ru/index.php?lang=ru' +- + org_id: 30 + site: 'http://www.angtu.ru' +- + org_id: 33 + site: 'http://www.agpu.net' +- + org_id: 34 + site: 'http://www.agsi.ru' +- + org_id: 36 + site: 'http://www.nsmu.ru' +- + org_id: 37 + site: 'http://narfu.ru' +- + org_id: 38 + site: 'http://www.astracons.ru' +- + org_id: 39 + site: 'http://astgmu.ru/' +- + org_id: 40 + site: 'http://asu.edu.ru/' +- + org_id: 41 + site: 'http://www.astu.org' +- + org_id: 42 + site: 'https://www.aucu.ru' +- + org_id: 47 + site: 'http://www.voenmeh.ru' +- + org_id: 51 + site: 'https://www.altspu.ru' +- + org_id: 52 + site: 'http://www.bagsurb.ru' +- + org_id: 53 + site: 'http://www.bsau.ru' +- + org_id: 54 + site: 'http://www.bashgmu.ru' +- + org_id: 55 + site: 'http://bspu.ru/' +- + org_id: 56 + site: 'https://uust.ru/' +- + org_id: 57 + site: 'http://bsaa.edu.ru' +- + org_id: 58 + site: 'http://www.bstu.ru' +- + org_id: 59 + site: 'http://www.bukep.ru' +- + org_id: 60 + site: www.bsu.edu.ru +- + org_id: 62 + site: 'http://www2.bigpi.biysk.ru/wwwsite/news.php' +- + org_id: 63 + site: 'http://www.pgusa.ru' +- + org_id: 64 + site: 'http://www.birsk.ru' +- + org_id: 65 + site: 'http://www.bgpu.ru/index.jsp' +- + org_id: 66 + site: 'http://www.bgpi.ru' +- + org_id: 67 + site: 'https://www.brstu.ru/' +- + org_id: 68 + site: 'https://www.bgita.ru' +- + org_id: 69 + site: 'http://www.bgsha.com/ru/index.php' +- + org_id: 70 + site: 'http://www.brgu.ru' +- + org_id: 71 + site: 'http://www.tu-bryansk.ru/' +- + org_id: 72 + site: 'http://www.bgsha.ru' +- + org_id: 73 + site: 'http://www.bsu.ru' +- + org_id: 75 + site: 'http://www.vgsa.ru' +- + org_id: 76 + site: 'http://www.vlgafc.ru/about/' +- + org_id: 78 + site: 'https://tgmu.ru/' +- + org_id: 79 + site: 'http://www.vvsu.ru' +- + org_id: 80 + site: 'http://www.viu-online.ru' +- + org_id: 82 + site: 'http://www.vlsu.ru' +- + org_id: 86 + site: 'https://niu.ranepa.ru/' +- + org_id: 87 + site: 'http://vlgr.ranepa.ru' +- + org_id: 88 + site: 'http://www.vgafk.ru' +- + org_id: 90 + site: 'http://www.volgmed.ru' +- + org_id: 91 + site: 'http://www.volgau.com' +- + org_id: 92 + site: 'http://www.vspu.ru' +- + org_id: 93 + site: 'http://www.vstu.ru' +- + org_id: 94 + site: 'http://www.volsu.ru' +- + org_id: 96 + site: 'http://serebryakovka.ru' +- + org_id: 97 + site: 'http://vgavt-nn.ru/' +- + org_id: 99 + site: 'http://molochnoe.ru' +- + org_id: 101 + site: 'https://vogu35.ru/' +- + org_id: 105 + site: 'http://www.vglta.vrn.ru' +- + org_id: 106 + site: 'http://vsmaburdenko.ru' +- + org_id: 107 + site: 'http://www.vsuet.ru' +- + org_id: 108 + site: 'http://www.vsau.ru' +- + org_id: 109 + site: 'http://voronezharts.ru' +- + org_id: 110 + site: 'http://www.vspu.ac.ru' +- + org_id: 111 + site: 'http://www.vorstu.ru' +- + org_id: 112 + site: 'http://www.vsu.ru' +- + org_id: 114 + site: 'http://www.viesm.vrn.ru' +- + org_id: 115 + site: 'http://www.vsgaki.ru' +- + org_id: 116 + site: 'http://esstu.ru/uportal/index.htm' +- + org_id: 118 + site: 'http://www.vegu.ru' +- + org_id: 119 + site: 'http://www.orun.ru' +- + org_id: 120 + site: 'http://www.vavt.ru' +- + org_id: 121 + site: 'http://www.vgik.info' +- + org_id: 129 + site: 'http://www.vschoolmus.ru' +- + org_id: 131 + site: 'http://www.hse.ru/' +- + org_id: 133 + site: 'http://shepkinskoe.ru' +- + org_id: 134 + site: 'http://www.htvs.ru' +- + org_id: 135 + site: 'http://www.kigit.ru' +- + org_id: 142 + site: 'http://www.vgsha.info/' +- + org_id: 144 + site: 'http://www.vyatsu.ru' +- + org_id: 147 + site: 'http://ggpi.org/news.php' +- + org_id: 148 + site: 'http://www.gasu.ru' +- + org_id: 149 + site: www.gorskigau.com +- + org_id: 150 + site: 'http://www.gubkin.ru' +- + org_id: 151 + site: 'http://rguts.ru' +- + org_id: 152 + site: 'https://guu.ru/' +- + org_id: 155 + site: ippolitovka.ru +- + org_id: 156 + site: 'http://www.rgsai.ru' +- + org_id: 157 + site: 'http://www.guz.ru' +- + org_id: 158 + site: 'http://www.gstou.ru' +- + org_id: 166 + site: www.gitr.ru +- + org_id: 167 + site: 'http://www.gu-ural.ru' +- + org_id: 168 + site: 'http://www.dgma.ru' +- + org_id: 169 + site: 'https://даггау.рф/' +- + org_id: 172 + site: 'https://dspu.ru/' +- + org_id: 173 + site: 'http://dstu.ru' +- + org_id: 174 + site: 'http://www.dgu.ru' +- + org_id: 175 + site: 'https://dviu.ranepa.ru' +- + org_id: 179 + site: 'http://www.msun.ru' +- + org_id: 180 + site: 'http://dalgau.ru' +- + org_id: 181 + site: 'http://www.dv-art.ru' +- + org_id: 182 + site: 'http://www.fesmu.ru' +- + org_id: 183 + site: 'http://www.dalrybvtuz.ru' +- + org_id: 185 + site: 'http://dvfu.ru/' +- + org_id: 186 + site: 'http://www.dvgups.ru' +- + org_id: 191 + site: 'https://www.daok-derbent.ru' +- + org_id: 192 + site: 'http://dipacademy.ru/' +- + org_id: 193 + site: 'http://www.sssu.ru' +- + org_id: 194 + site: 'http://dongau.ru' +- + org_id: 195 + site: 'http://www.donstu.ru' +- + org_id: 198 + site: 'http://www.egti.ru' +- + org_id: 199 + site: 'http://www.ims-ural.ru' +- + org_id: 200 + site: 'http://kpfu.ru/elabuga' +- + org_id: 201 + site: 'http://www.elsu.ru' +- + org_id: 202 + site: 'http://eiubp.ru' +- + org_id: 203 + site: 'http://www.wuiel.ru' +- + org_id: 205 + site: 'http://ivgpu.com' +- + org_id: 206 + site: 'http://isma.ivanovo.ru' +- + org_id: 207 + site: 'http://ivgsha.ru' +- + org_id: 209 + site: www.isuct.ru +- + org_id: 210 + site: 'http://ivanovo.ac.ru' +- + org_id: 211 + site: 'http://ispu.ru' +- + org_id: 214 + site: 'http://www.igma.ru' +- + org_id: 215 + site: 'http://www.izhgsha.ru' +- + org_id: 216 + site: 'http://www.istu.ru' +- + org_id: 217 + site: 'http://www.inggu.ru' +- + org_id: 219 + site: 'http://www.rgis.ru' +- + org_id: 235 + site: www.igumo.ru +- + org_id: 241 + site: 'http://www.ifl.ru' +- + org_id: 242 + site: 'http://www.mfua.ru' +- + org_id: 244 + site: 'http://иитэм.рф' +- + org_id: 253 + site: 'http://www.iile.ru' +- + org_id: 254 + site: 'http://www.imtp.ru' +- + org_id: 255 + site: 'http://imes.su' +- + org_id: 261 + site: 'http://www.mosgu.ru/abit/index.php' +- + org_id: 262 + site: 'http://www.dgunh.ru' +- + org_id: 279 + site: 'http://www.isi-vuz.ru' +- + org_id: 283 + site: 'http://www.isgz.ru' +- + org_id: 284 + site: 'http://www.socius.ru' +- + org_id: 291 + site: 'http://miuarh.ru' +- + org_id: 292 + site: 'http://www.ifip05.ru' +- + org_id: 294 + site: 'http://www.spbume.ru' +- + org_id: 295 + site: 'http://www.inueco.ru' +- + org_id: 296 + site: 'http://piubp.ru/ ' +- + org_id: 297 + site: 'http://www.iubip.ru' +- + org_id: 304 + site: 'http://institut-nazran.ru' +- + org_id: 307 + site: 'http://www.ieml.ru' +- + org_id: 317 + site: 'http://irsau.ru' +- + org_id: 318 + site: 'http://bgu.ru/' +- + org_id: 319 + site: 'http://mir.ismu.baikal.ru' +- + org_id: 322 + site: 'http://www.istu.edu' +- + org_id: 323 + site: www.isu.ru +- + org_id: 324 + site: 'http://www.irgups.ru' +- + org_id: 325 + site: www.ishim.utmn.ru +- + org_id: 326 + site: 'http://www.kbgau.ru' +- + org_id: 327 + site: 'https://www.kbsu.ru' +- + org_id: 328 + site: 'http://www.ksavm.senet.ru' +- + org_id: 329 + site: 'http://www.kazgik.ru' +- + org_id: 330 + site: 'http://www.kgasu.ru' +- + org_id: 331 + site: 'https://kazancons.ru/' +- + org_id: 332 + site: 'http://www.kazgau.ru' +- + org_id: 333 + site: 'http://www.kazangmu.ru' +- + org_id: 335 + site: 'http://www.kai.ru' +- + org_id: 336 + site: 'http://www.kstu.ru' +- + org_id: 337 + site: 'http://kpfu.ru' +- + org_id: 340 + site: 'http://www.klgtu.ru' +- + org_id: 341 + site: 'http://www.kantiana.ru' +- + org_id: 342 + site: 'http://www.kalmsu.ru' +- + org_id: 343 + site: 'https://tksu.ru/' +- + org_id: 345 + site: 'http://kamgu.ru' +- + org_id: 346 + site: 'http://kchgu.ru' +- + org_id: 347 + site: 'https://ncsa.ru/' +- + org_id: 349 + site: 'https://kemsmu.ru/' +- + org_id: 350 + site: 'http://www.kemguki.ru' +- + org_id: 351 + site: 'http://www.kemsu.ru/Page/Main' +- + org_id: 353 + site: 'http://www.kirovgma.ru' +- + org_id: 355 + site: 'http://www.dksta.ru' +- + org_id: 362 + site: 'https://gukolomna.ru/' +- + org_id: 365 + site: 'http://www.amgpgu.ru' +- + org_id: 366 + site: 'http://www.knastu.ru' +- + org_id: 367 + site: 'http://kgsxa.ru' +- + org_id: 368 + site: 'http://www.ksu.edu.ru' +- + org_id: 370 + site: 'https://kgik1966.ru/' +- + org_id: 374 + site: 'https://krasgmu.ru/' +- + org_id: 376 + site: 'http://www.kgau.ru' +- + org_id: 377 + site: 'http://www.kgii.ru' +- + org_id: 378 + site: 'http://www.kspu.ru' +- + org_id: 381 + site: 'http://www.sfu-kras.ru' +- + org_id: 383 + site: www.kgufkst.ru +- + org_id: 384 + site: www.ksma.ru +- + org_id: 385 + site: 'http://kubstu.ru' +- + org_id: 386 + site: 'http://www.kubsau.ru' +- + org_id: 387 + site: 'http://www.kubsu.ru' +- + org_id: 389 + site: 'http://kuzstu.ru' +- + org_id: 392 + site: 'http://www.kgsu.ru' +- + org_id: 394 + site: 'http://www.kgsha.ru' +- + org_id: 395 + site: 'http://www.kurskmed.com' +- + org_id: 396 + site: 'http://kursksu.ru' +- + org_id: 397 + site: 'http://www.swsu.ru' +- + org_id: 399 + site: 'http://www.lengu.ru' +- + org_id: 400 + site: 'http://lspu.lipetsk.ru' +- + org_id: 401 + site: 'http://www.stu.lipetsk.ru' +- + org_id: 402 + site: 'http://www.лэги48.рф' +- + org_id: 403 + site: 'http://www.litinstitut.ru' +- + org_id: 405 + site: 'http://www.magtu.ru' +- + org_id: 406 + site: 'http://www.magkmusic.com' +- + org_id: 408 + site: 'http://www.mkgtu.ru' +- + org_id: 410 + site: 'http://www.volgatech.net' +- + org_id: 411 + site: 'http://www.marsu.ru' +- + org_id: 412 + site: 'http://www.taom.ru' +- + org_id: 416 + site: 'http://www.ibi.spb.ru' +- + org_id: 419 + site: 'http://www.imi-samara.ru' +- + org_id: 420 + site: 'http://www.miep.ru' +- + org_id: 423 + site: 'http://www.svgu.ru' +- + org_id: 425 + site: 'http://slavinst.ru/' +- + org_id: 426 + site: 'http://www.interun.ru' +- + org_id: 427 + site: 'http://www.mubint.ru' +- + org_id: 428 + site: 'http://www.mabiu.ru' +- + org_id: 429 + site: 'http://www.vivt.ru' +- + org_id: 430 + site: 'http://www.iict.ru' +- + org_id: 431 + site: 'http://uni-dubna.ru/' +- + org_id: 433 + site: 'http://www.mirbis.ru' +- + org_id: 436 + site: 'http://www.mgau.ru/#&panel1-3' +- + org_id: 439 + site: 'http://www.mordgpi.ru' +- + org_id: 440 + site: 'http://www.mrsu.ru' +- + org_id: 445 + site: 'http://mospolytech.ru/' +- + org_id: 446 + site: 'http://www.mgavm.ru' +- + org_id: 448 + site: 'http://www.mgudt.ru' +- + org_id: 451 + site: 'http://www.mgafk.ru' +- + org_id: 453 + site: 'http://www.balletacademy.ru' +- + org_id: 454 + site: 'https://mgri.ru/' +- + org_id: 456 + site: 'http://www.msal.ru' +- + org_id: 457 + site: 'http://mosconsv.ru' +- + org_id: 458 + site: 'https://www.sechenov.ru/' +- + org_id: 460 + site: www.timacad.ru +- + org_id: 461 + site: 'http://www.marhi.ru' +- + org_id: 464 + site: 'http://www.mgpu.ru' +- + org_id: 465 + site: 'http://www.mai.ru' +- + org_id: 466 + site: 'http://www.madi.ru' +- + org_id: 471 + site: 'http://mgutm.ru' +- + org_id: 473 + site: 'http://www.mephi.ru' +- + org_id: 474 + site: 'http://www.mgimo.ru' +- + org_id: 475 + site: 'https://www.mirea.ru' +- + org_id: 476 + site: 'http://www.misis.ru' +- + org_id: 478 + site: 'http://www.miet.ru' +- + org_id: 479 + site: 'http://www.linguanet.ru' +- + org_id: 480 + site: 'http://www.schnittke-mgim.ru' +- + org_id: 483 + site: 'http://www.rgsu.net' +- + org_id: 484 + site: 'http://www.mgsu.ru' +- + org_id: 485 + site: 'https://www.mstuca.ru' +- + org_id: 486 + site: 'http://www.bmstu.ru' +- + org_id: 487 + site: 'http://stankin.ru' +- + org_id: 488 + site: 'http://www.msu.ru' +- + org_id: 489 + site: 'http://www.miigaik.ru' +- + org_id: 491 + site: 'http://mgik.org' +- + org_id: 494 + site: 'http://www.mgupp.ru' +- + org_id: 497 + site: 'http://www.miit.ru' +- + org_id: 499 + site: 'http://www.mghpu.ru' +- + org_id: 500 + site: 'http://mgei.ru' +- + org_id: 502 + site: 'http://mggeu.ru/' +- + org_id: 506 + site: 'http://www.muiv.ru' +- + org_id: 507 + site: 'http://www.miepl.ru' +- + org_id: 508 + site: 'http://www.msmsu.ru' +- + org_id: 512 + site: 'http://мпгу.рф' +- + org_id: 513 + site: guppros.ru +- + org_id: 514 + site: 'http://www.mpsu.ru' +- + org_id: 517 + site: 'http://www.mtuci.ru' +- + org_id: 519 + site: 'http://www.ruc.su' +- + org_id: 520 + site: 'http://mipt.ru/' +- + org_id: 521 + site: 'http://www.noumei.ru' +- + org_id: 522 + site: 'http://www.mpei.ru/mainpage.asp' +- + org_id: 523 + site: 'https://www.masu.edu.ru' +- + org_id: 524 + site: 'http://www.mstu.edu.ru' +- + org_id: 526 + site: 'http://maem.ru' +- + org_id: 527 + site: 'http://tatngpi.ru' +- + org_id: 528 + site: 'http://www.nibmoscow.ru' +- + org_id: 531 + site: 'http://www.nngasu.ru' +- + org_id: 532 + site: 'https://pimunn.ru/' +- + org_id: 533 + site: 'http://www.nnsaa.ru' +- + org_id: 534 + site: 'http://nnovcons.ru' +- + org_id: 535 + site: 'http://www.lunn.ru' +- + org_id: 536 + site: 'http://www.mininuniver.ru' +- + org_id: 537 + site: 'http://www.nntu.ru' +- + org_id: 538 + site: 'http://www.unn.ru' +- + org_id: 541 + site: 'http://www.nggu.ru' +- + org_id: 542 + site: www.rsvpu.ru +- + org_id: 544 + site: 'http://www.novsu.ru' +- + org_id: 545 + site: 'https://кгпи.рф/' +- + org_id: 547 + site: 'http://www.aumsu.ru' +- + org_id: 548 + site: 'https://www.ssuwt.ru/' +- + org_id: 549 + site: 'http://www.sibstrin.ru' +- + org_id: 550 + site: www.nsuem.ru +- + org_id: 551 + site: www.nsuada.ru +- + org_id: 552 + site: 'http://www.nsglinka.ru' +- + org_id: 553 + site: 'http://nsau.edu.ru' +- + org_id: 554 + site: 'http://www.ngmu.ru' +- + org_id: 555 + site: 'http://www.nspu.ru' +- + org_id: 556 + site: 'http://www.nstu.ru' +- + org_id: 557 + site: 'http://www.nsu.ru' +- + org_id: 560 + site: 'http://www.ngma.su' +- + org_id: 561 + site: 'http://www.npi-tu.ru' +- + org_id: 562 + site: 'http://www.norvuz.ru/index.php?lang=ru' +- + org_id: 565 + site: www.сгти.рф +- + org_id: 566 + site: 'http://www.iate.obninsk.ru' +- + org_id: 568 + site: www.omgups.ru +- + org_id: 569 + site: 'http://www.omsk-osma.ru' +- + org_id: 570 + site: 'http://omgau.ru' +- + org_id: 571 + site: 'http://www.omgpu.ru' +- + org_id: 572 + site: 'https://omgtu.ru/' +- + org_id: 573 + site: 'http://www.omsu.ru/page.php?id=' +- + org_id: 576 + site: 'http://www.orgma.ru' +- + org_id: 577 + site: 'http://orensau.ru' +- + org_id: 578 + site: 'http://www.ospu.ru' +- + org_id: 579 + site: 'http://www.osu.ru' +- + org_id: 581 + site: 'http://www.mgogi.ru' +- + org_id: 582 + site: 'http://www.orelsau.ru' +- + org_id: 583 + site: 'http://www.ogiik.orel.ru' +- + org_id: 585 + site: 'http://oreluniver.ru/' +- + org_id: 589 + site: 'http://www.pguas.ru' +- + org_id: 590 + site: 'http://pgsha.penza.net/' +- + org_id: 592 + site: 'http://www.pnzgu.ru' +- + org_id: 594 + site: 'http://www.psma.ru' +- + org_id: 595 + site: 'http://pgsha.ru/web/today/' +- + org_id: 596 + site: 'http://www.pfa.ru' +- + org_id: 597 + site: 'http://www.psiac.ru' +- + org_id: 598 + site: 'http://pspu.ru/university' +- + org_id: 599 + site: 'http://pstu.ru' +- + org_id: 600 + site: 'http://www.psu.ru' +- + org_id: 602 + site: 'http://glazunovcons.ru' +- + org_id: 603 + site: 'http://www.petrsu.ru' +- + org_id: 604 + site: 'http://www.kamchatgtu.ru' +- + org_id: 605 + site: 'http://piu.ranepa.ru' +- + org_id: 607 + site: www.psuti.ru +- + org_id: 610 + site: 'http://pstgu.ru' +- + org_id: 612 + site: 'http://www.primacad.ru' +- + org_id: 615 + site: 'http://www.pushgu.ru' +- + org_id: 616 + site: 'http://www.pmedpharm.ru' +- + org_id: 617 + site: 'https://pgu.ru/' +- + org_id: 618 + site: 'http://www.rosi-edu.ru' +- + org_id: 620 + site: 'https://gaugn.ru/' +- + org_id: 622 + site: 'http://www.glazunov-academy.ru' +- + org_id: 623 + site: 'http://www.gnesin-academy.ru' +- + org_id: 625 + site: 'http://www.gitis.net' +- + org_id: 626 + site: 'http://www.sportedu.ru/' +- + org_id: 627 + site: 'http://www.rmat.ru' +- + org_id: 628 + site: 'http://rpa-mu.ru/' +- + org_id: 629 + site: 'https://academy.customs.gov.ru/' +- + org_id: 630 + site: www.privlaw.ru +- + org_id: 631 + site: 'http://www.rea.ru' +- + org_id: 632 + site: 'http://www.rgazu.ru' +- + org_id: 633 + site: 'http://www.rshu.ru' +- + org_id: 634 + site: 'http://www.rsuh.ru' +- + org_id: 635 + site: 'http://rsmu.ru' +- + org_id: 637 + site: www.herzen.spb.ru +- + org_id: 639 + site: 'http://www.rgiis.ru' +- + org_id: 640 + site: www.rosnou.ru +- + org_id: 641 + site: 'http://www.rudn.ru/' +- + org_id: 642 + site: 'http://www.muctr.ru' +- + org_id: 643 + site: 'http://rostcons.ru' +- + org_id: 644 + site: 'https://rsue.ru/' +- + org_id: 648 + site: 'http://rostgmu.ru' +- + org_id: 650 + site: 'http://www.sfedu.ru' +- + org_id: 651 + site: 'http://www.rgups.ru' +- + org_id: 656 + site: 'http://www.rhga.ru' +- + org_id: 657 + site: 'http://www.rsatu.ru' +- + org_id: 658 + site: 'http://www.rsreu.ru' +- + org_id: 659 + site: 'http://www.rgatu.ru/' +- + org_id: 660 + site: 'http://www.rzgmu.ru' +- + org_id: 661 + site: 'http://www.rsu.edu.ru' +- + org_id: 662 + site: 'http://www.smrgaki.ru' +- + org_id: 664 + site: 'http://www.ssaa.ru/' +- + org_id: 665 + site: 'http://www.sseu.ru' +- + org_id: 667 + site: 'http://www.ssau.ru' +- + org_id: 668 + site: 'http://www.samsmu.ru' +- + org_id: 669 + site: 'http://www.pgsga.ru' +- + org_id: 670 + site: 'http://www.samgtu.ru/' +- + org_id: 672 + site: 'http://www.samgups.ru' +- + org_id: 674 + site: 'http://www.reaviz.ru' +- + org_id: 677 + site: 'http://guap.ru/guap/main/rect_main.shtml' +- + org_id: 678 + site: 'http://www.spbgavm.ru' +- + org_id: 679 + site: 'http://www.spbgik.ru' +- + org_id: 680 + site: 'http://www.rgisi.ru' +- + org_id: 681 + site: 'http://www.lesgaft.spb.ru' +- + org_id: 684 + site: 'http://www.conservatory.ru' +- + org_id: 685 + site: 'http://szgmu.ru' +- + org_id: 686 + site: 'https://gpma.ru' +- + org_id: 687 + site: 'http://www.spcpa.ru' +- + org_id: 688 + site: 'http://ghpa.ru' +- + org_id: 689 + site: 'http://spbftu.ru' +- + org_id: 690 + site: 'http://www.artsacademy.ru' +- + org_id: 691 + site: 'http://spbgau.ru' +- + org_id: 692 + site: 'http://www.spbgasu.ru/' +- + org_id: 693 + site: 'http://spmi.ru' +- + org_id: 694 + site: 'http://www.ifmo.ru' +- + org_id: 695 + site: 'http://www.1spbgmu.ru' +- + org_id: 696 + site: 'http://www.smtu.ru' +- + org_id: 697 + site: 'http://www.spbstu.ru/' +- + org_id: 698 + site: 'http://technolog.edu.ru/ru/' +- + org_id: 700 + site: 'http://spbu.ru' +- + org_id: 701 + site: 'http://gumrf.ru' +- + org_id: 702 + site: 'http://sut.ru' +- + org_id: 703 + site: 'http://sutd.ru' +- + org_id: 704 + site: 'http://www.eltech.ru' +- + org_id: 705 + site: 'http://www.gup.ru' +- + org_id: 707 + site: 'http://www.gukit.ru' +- + org_id: 712 + site: 'http://www.psysocwork.ru' +- + org_id: 714 + site: 'http://unecon.ru' +- + org_id: 717 + site: 'http://www.сгюа.рф' +- + org_id: 718 + site: 'http://www.sarcons.ru/' +- + org_id: 719 + site: www.sgau.ru +- + org_id: 722 + site: 'http://www.sgmu.ru' +- + org_id: 724 + site: 'http://www.sstu.ru' +- + org_id: 725 + site: 'http://www.sgu.ru' +- + org_id: 726 + site: 'https://ноусип.рф' +- + org_id: 727 + site: 'https://spb.ranepa.ru/' +- + org_id: 730 + site: 'http://uriu.ranepa.ru' +- + org_id: 731 + site: 'http://www.skgii.ru' +- + org_id: 732 + site: www.skgmi-gtu.ru +- + org_id: 734 + site: 'http://sogma.ru' +- + org_id: 735 + site: 'http://www.nosu.ru' +- + org_id: 736 + site: 'http://siu.ranepa.ru' +- + org_id: 737 + site: 'http://www.sibsau.ru' +- + org_id: 738 + site: 'http://www.stu.ru' +- + org_id: 739 + site: 'https://www.sibsutis.ru' +- + org_id: 740 + site: www.sibsport.ru +- + org_id: 741 + site: 'http://www.ssga.ru' +- + org_id: 743 + site: 'http://www.sibupk.nsk.su' +- + org_id: 744 + site: 'http://www.sibadi.org' +- + org_id: 745 + site: 'http://www.ssmu.ru' +- + org_id: 746 + site: www.sibit.sano.ru +- + org_id: 747 + site: 'http://www.sibup.ru' +- + org_id: 751 + site: 'http://www.smolgmu.ru' +- + org_id: 752 + site: 'http://sgii-smol.ru' +- + org_id: 753 + site: 'http://www.sgafkst.ru' +- + org_id: 754 + site: 'http://www.smolgu.ru/' +- + org_id: 756 + site: 'http://www.fa.ru/fil/smolensk' +- + org_id: 757 + site: 'http://www.sgsha.ru' +- + org_id: 759 + site: 'http://www.solgpi.ru' +- + org_id: 761 + site: 'http://www.sutr.ru' +- + org_id: 763 + site: 'http://www.stgmu.ru' +- + org_id: 764 + site: 'http://www.stgau.ru' +- + org_id: 765 + site: 'http://www.ncfu.ru' +- + org_id: 771 + site: 'http://www.surgpu.ru' +- + org_id: 772 + site: 'http://www.surgu.ru' +- + org_id: 773 + site: 'http://www.syktsu.ru' +- + org_id: 774 + site: 'http://tgpi.ru' +- + org_id: 775 + site: '' +- + org_id: 776 + site: 'http://www.tmei.ru' +- + org_id: 777 + site: 'http://www.rachmaninov.ru' +- + org_id: 778 + site: 'http://www.tstu.ru' +- + org_id: 779 + site: 'http://www.tsutmb.ru' +- + org_id: 781 + site: 'https://www.tisbi.ru/' +- + org_id: 782 + site: 'https://tvgmu.ru/' +- + org_id: 783 + site: 'http://www.tvgsha.ru' +- + org_id: 784 + site: 'http://www.tstu.tver.ru' +- + org_id: 785 + site: 'http://university.tversu.ru' +- + org_id: 787 + site: 'https://institute.vshp.online/' +- + org_id: 790 + site: 'http://www.tltsu.ru' +- + org_id: 791 + site: 'http://www.tusur.ru' +- + org_id: 792 + site: 'http://www.tsuab.ru' +- + org_id: 794 + site: 'http://www.tspu.edu.ru' +- + org_id: 795 + site: 'http://tsu.ru' +- + org_id: 796 + site: 'https://tpu.ru/' +- + org_id: 797 + site: 'https://www.tsput.ru/' +- + org_id: 798 + site: 'http://tsu.tula.ru' +- + org_id: 799 + site: 'http://www.tuvsu.ru' +- + org_id: 801 + site: 'http://www.tyumsmu.ru' +- + org_id: 802 + site: 'http://www.tsaa.ru' +- + org_id: 803 + site: 'http://tsiac.ru' +- + org_id: 804 + site: 'http://www.tyuiu.ru' +- + org_id: 805 + site: 'http://www.utmn.ru' +- + org_id: 807 + site: 'http://udsu.ru' +- + org_id: 808 + site: 'https://www.ulsau.ru/' +- + org_id: 809 + site: 'http://www.ulspu.ru' +- + org_id: 810 + site: 'http://www.ulstu.ru' +- + org_id: 811 + site: 'http://ulsu.ru' +- + org_id: 812 + site: 'http://www.uvauga.ru' +- + org_id: 818 + site: 'http://ui.ranepa.ru' +- + org_id: 819 + site: 'https://www.usurt.ru/' +- + org_id: 820 + site: 'http://www.uralgufk.ru' +- + org_id: 821 + site: 'http://www.usaaa.ru' +- + org_id: 822 + site: 'http://www.ursmu.ru' +- + org_id: 823 + site: 'http://uralconsv.org/' +- + org_id: 824 + site: 'http://www.usfeu.ru' +- + org_id: 825 + site: 'http://www.usma.ru' +- + org_id: 826 + site: 'http://www.urgau.ru' +- + org_id: 827 + site: 'http://www.usla.ru' +- + org_id: 828 + site: 'http://юургау.рф' +- + org_id: 829 + site: 'http://uspu.ru' +- + org_id: 830 + site: www.rsvpu.ru +- + org_id: 831 + site: 'http://urfu.ru/ru/' +- + org_id: 833 + site: 'http://www.usue.ru' +- + org_id: 837 + site: 'http://www.uifr.ru' +- + org_id: 838 + site: 'https://urauver.ru/' +- + org_id: 845 + site: 'http://www.rusoil.net' +- + org_id: 846 + site: 'http://www.ufaart.ru' +- + org_id: 847 + site: 'http://www.ugtu.net' +- + org_id: 848 + site: 'http://www.fa.ru/Pages/home.aspx' +- + org_id: 850 + site: 'http://www.ael.ru' +- + org_id: 851 + site: 'http://www.hgiik.ru' +- + org_id: 852 + site: 'http://dvgafk.com' +- + org_id: 854 + site: 'http://pnu.edu.ru/ru/' +- + org_id: 855 + site: 'http://www.khsu.ru' +- + org_id: 859 + site: 'https://chgafkis.ru/' +- + org_id: 860 + site: 'http://www.chelsma.ru' +- + org_id: 861 + site: 'https://midis.ru/' +- + org_id: 863 + site: 'http://www.chgaki.ru' +- + org_id: 864 + site: 'http://www.cspu.ru' +- + org_id: 865 + site: 'http://www.susu.ru' +- + org_id: 866 + site: 'https://www.csu.ru' +- + org_id: 867 + site: 'http://uyrgii.ru' +- + org_id: 868 + site: 'http://www.chsu.ru' +- + org_id: 869 + site: 'http://www.chspu.ru' +- + org_id: 870 + site: 'http://www.chesu.ru' +- + org_id: 871 + site: 'https://www.chitgma.ru' +- + org_id: 873 + site: 'http://www.zabgu.ru' +- + org_id: 874 + site: 'http://academy21.ru' +- + org_id: 875 + site: 'http://www.chgpu.edu.ru' +- + org_id: 876 + site: 'http://www.chuvsu.ru/default.php' +- + org_id: 877 + site: 'http://shgpi.edu.ru' +- + org_id: 880 + site: 'http://mhatschool.theatre.ru' +- + org_id: 881 + site: 'http://sspu.ru' +- + org_id: 885 + site: 'http://urgi.info' +- + org_id: 887 + site: 'http://www.sakhgu.ru' +- + org_id: 893 + site: 'http://s-vfu.ru' +- + org_id: 894 + site: 'https://ysmu.ru' +- + org_id: 895 + site: 'http://www.yaragrovuz.ru' +- + org_id: 896 + site: www.yspu.org +- + org_id: 897 + site: 'http://www.theatrins-yar.ru/' +- + org_id: 898 + site: 'http://www.ystu.ru' +- + org_id: 899 + site: 'http://www.uniyar.ac.ru' +- + org_id: 905 + site: www.imsit.ru +- + org_id: 917 + site: www.batp.ru +- + org_id: 919 + site: 'http://www.sksi.ru' +- + org_id: 921 + site: 'http://les-sfu.ru' +- + org_id: 922 + site: 'http://www.mgutu.info' +- + org_id: 929 + site: 'http://www.mephi.ru' +- + org_id: 930 + site: 'http://www.sstu.ru' +- + org_id: 931 + site: 'http://www.hiik.ru' +- + org_id: 932 + site: 'https://chirt.usurt.ru/' +- + org_id: 933 + site: 'http://nti.urfu.ru' +- + org_id: 934 + site: 'http://www.univermvd.ru' +- + org_id: 935 + site: 'https://api.nntu.ru/' +- + org_id: 937 + site: 'http://www.bti.secna.ru' +- + org_id: 939 + site: 'https://www.dpi-ngtu.ru' +- + org_id: 940 + site: 'http://www.rubinst.ru' +- + org_id: 942 + site: 'http://nti.s-vfu.ru' +- + org_id: 945 + site: 'http://www.unimir-ysu.ru' +- + org_id: 947 + site: 'http://www.of.ugntu.ru/new/' +- + org_id: 948 + site: 'http://ugntu-str.ru' +- + org_id: 949 + site: 'http://www.sfugntu.ru' +- + org_id: 953 + site: 'http://www.mephi.ru' +- + org_id: 954 + site: 'https://sfsamgtu.ru' +- + org_id: 969 + site: 'https://sbor.spbstu.ru/' +- + org_id: 983 + site: 'http://www.misaoinst.ru' +- + org_id: 989 + site: 'http://www.npi-tu.ru' +- + org_id: 990 + site: 'http://orengubkin.ru/index.php?id=9' +- + org_id: 992 + site: www.rizp.ru +- + org_id: 993 + site: 'http://if-mstuca.ru/site/' +- + org_id: 994 + site: 'http://www.rfmstuca.ru' +- + org_id: 995 + site: 'http://kfngpu.ru' +- + org_id: 997 + site: 'http://www.immf.ru' +- + org_id: 1000 + site: 'https://www.miu-edu.ru' +- + org_id: 1002 + site: 'http://alsivuz.ru' +- + org_id: 1003 + site: 'http://www.surikov-vuz.ru' +- + org_id: 1004 + site: 'http://www.stavik.ru' +- + org_id: 1005 + site: 'https://kf.spbgau.ru/' +- + org_id: 1007 + site: 'http://www.mephi.ru' +- + org_id: 1012 + site: 'http://belovo.ru' +- + org_id: 1020 + site: 'http://www.idnk.ru' +- + org_id: 1022 + site: 'http://www.iga.ru' +- + org_id: 1023 + site: 'http://www.ideka.ru' +- + org_id: 1024 + site: 'http://tara.omgpu.ru' +- + org_id: 1025 + site: 'http://www.sli.komi.com' +- + org_id: 1026 + site: 'http://sf-misis.ru' +- + org_id: 1029 + site: f-mirea.ru +- + org_id: 1032 + site: 'http://www.bf.pstu.ru' +- + org_id: 1039 + site: 'http://uti.tpu.ru' +- + org_id: 1041 + site: www.bronmadi.ru +- + org_id: 1043 + site: www.lfsibgu.ru +- + org_id: 1044 + site: vf-pgups.ru +- + org_id: 1045 + site: 'http://www.spbrca.ru' +- + org_id: 1046 + site: 'http://vfrta.ru' +- + org_id: 1047 + site: 'http://donrta.customs.gov.ru' +- + org_id: 1048 + site: 'http://www.sibsiu.ru' +- + org_id: 1051 + site: 'http://nirhtu.ru' +- + org_id: 1052 + site: 'http://esi.irk.ru' +- + org_id: 1053 + site: 'http://og-ti.ru' +- + org_id: 1054 + site: 'https://synergy.ru/' +- + org_id: 1056 + site: 'http://www.volgograd.ruc.su' +- + org_id: 1059 + site: 'https://рюи.мвд.рф/' +- + org_id: 1063 + site: 'http://www.izhevsk.ruc.su' +- + org_id: 1064 + site: 'http://www.engels.ruc.su' +- + org_id: 1065 + site: 'http://www.ruc.su' +- + org_id: 1311 + site: www.vladimir.fa.ru +- + org_id: 1316 + site: 'http://www.kursk.fa.ru?' +- + org_id: 1317 + site: www.lipetsk.fa.ru +- + org_id: 1319 + site: www.orel.fa.ru +- + org_id: 1320 + site: 'http://www.penza.fa.ru' +- + org_id: 1322 + site: 'http://www.tula.fa.ru' +- + org_id: 1323 + site: 'http://www.fa.ru/fil/ufa' +- + org_id: 1324 + site: 'http://www.fa.ru/fil/chelyabinsk/' +- + org_id: 1325 + site: 'http://www.fa.ru' +- + org_id: 1327 + site: 'http://www.novoross.fa.ru/' +- + org_id: 1330 + site: 'http://www.msalkirov.ru' +- + org_id: 1331 + site: 'http://vfmgua.ru' +- + org_id: 1332 + site: 'http://oimsla.edu.ru' +- + org_id: 1333 + site: 'http://www.chuvsu.ru' +- + org_id: 1361 + site: 'http://vfmgei.ru' +- + org_id: 1362 + site: 'http://www.nfmgei.ru' +- + org_id: 1363 + site: 'http://mgei.kirov.ru' +- + org_id: 1364 + site: 'http://szfmgei.ru' +- + org_id: 1365 + site: 'http://mgei-kaluga.ru' +- + org_id: 1368 + site: 'http://www.nvr-mgei.ru' +- + org_id: 1369 + site: 'http://www.cfmgei.ru' +- + org_id: 1383 + site: 'http://anapa.rgsu.net/' +- + org_id: 1403 + site: mirea.ru +- + org_id: 1404 + site: 'http://volpi.ru' +- + org_id: 1405 + site: 'http://www.kti.ru' +- + org_id: 1406 + site: 'http://hse.ru' +- + org_id: 1412 + site: 'http://www.vimvd.ru' +- + org_id: 1414 + site: 'http://aso-ksui.ru' +- + org_id: 1415 + site: 'http://www.mrsei.ru' +- + org_id: 1433 + site: 'http://www.sfu-kras.ru' +- + org_id: 1436 + site: 'http://www.altai.fa.ru' +- + org_id: 1437 + site: 'http://www.fa.ru/fil/krasnodar/' +- + org_id: 1442 + site: 'http://nti.ncfu.ru' +- + org_id: 1445 + site: 'http://pfncfu.ru' +- + org_id: 1450 + site: 'http://www.bgti.ru' +- + org_id: 1451 + site: www.privlaw-ural.ru +- + org_id: 1470 + site: www.e-stankin.ru +- + org_id: 1471 + site: krasnodar.rea.ru +- + org_id: 1475 + site: 'http://www.namvd.ru' +- + org_id: 1477 + site: 'http://www.krags.ru' +- + org_id: 1478 + site: 'http://www.lawacademy.ru' +- + org_id: 1479 + site: 'http://www.mguu.ru' +- + org_id: 1480 + site: 'http://www.mgppu.ru' +- + org_id: 1481 + site: 'http://www.procuror.spb.ru' +- + org_id: 1485 + site: '' +- + org_id: 1486 + site: 'http://www.prk.kuzstu.ru' +- + org_id: 1487 + site: 'http://kuzstu.su/index.php/university.html' +- + org_id: 1489 + site: 'http://kuzstu-nf.ru' +- + org_id: 1490 + site: 'http://belovokyzgty.ucoz.ru' +- + org_id: 1494 + site: 'http://afkras.ru' +- + org_id: 1524 + site: 'http://www.omamvd.ru' +- + org_id: 1527 + site: 'http://www.hse.ru/' +- + org_id: 1528 + site: 'http://www.hse.ru/' +- + org_id: 1529 + site: 'http://www.skf-mtusi.ru' +- + org_id: 1530 + site: 'http://www.vvfmtuci.ru' +- + org_id: 1552 + site: 'http://www.brgu.ru' +- + org_id: 1553 + site: 'http://www.dstu.ru' +- + org_id: 1562 + site: www.rgups.ru +- + org_id: 1563 + site: 'http://lawacademy.spb.ru' +- + org_id: 1564 + site: 'http://rpa38.ru' +- + org_id: 1566 + site: 'http://sarrpa.ru' +- + org_id: 1567 + site: 'https://saransk2.rpa-mu.ru/' +- + org_id: 1569 + site: 'http://www.skfrpa.ru' +- + org_id: 1570 + site: 'http://tula.rpa-mu.ru' +- + org_id: 1571 + site: 'http://www.rpa-mu-kf.ru' +- + org_id: 1583 + site: 'http://www.bfsgu.ru' +- + org_id: 1585 + site: 'http://narhoz-chita.ru' +- + org_id: 1604 + site: kaluga.timacad.ru +- + org_id: 1606 + site: 'http://chel.ranepa.ru' +- + org_id: 1607 + site: 'http://perm.ranepa.ru' +- + org_id: 1610 + site: 'http://kurg.ranepa.ru' +- + org_id: 1611 + site: 'http://www.orn.ranepa.ru' +- + org_id: 1614 + site: 'http://www.mivlgu.ru' +- + org_id: 1617 + site: 'http://МПИ.РФ' +- + org_id: 1618 + site: 'https://www.csu.ru' +- + org_id: 1619 + site: 'http://www.ifrgufk.ru' +- + org_id: 1622 + site: 'http://www.uisi.ru' +- + org_id: 1623 + site: 'http://www.pijs.ru' +- + org_id: 1626 + site: 'http://kg.mfua.ru' +- + org_id: 1627 + site: 'http://orsk.mfua.ru' +- + org_id: 1628 + site: 'http://www.kr.mfua.ru' +- + org_id: 1648 + site: 'http://www.mebik.ru' +- + org_id: 1649 + site: www.tyuiu.ru +- + org_id: 1652 + site: www.tyuiu.ru +- + org_id: 1653 + site: 'https://www.tyuiu.ru/branches/nizhnevartovsk/' +- + org_id: 1655 + site: www.tyuiu.ru +- + org_id: 1662 + site: 'http://www.rb.asu.ru' +- + org_id: 1664 + site: 'http://www.asu.ru/structure/filials/belockuricha/' +- + org_id: 1666 + site: 'http://www.udgutura.ru' +- + org_id: 1672 + site: 'http://www.vfgumrf.ru' +- + org_id: 1673 + site: www.kfgumrf.ru +- + org_id: 1677 + site: 'http://samara.mgpu.ru' +- + org_id: 1678 + site: 'http://artacademy.perm.ru' +- + org_id: 1679 + site: 'https://sibay-uunit.ru/' +- + org_id: 1681 + site: 'http://krasnodar.ruc.su' +- + org_id: 1682 + site: 'https://lki-lipetsk.ru/' +- + org_id: 1686 + site: sfmai.ru +- + org_id: 1692 + site: 'http://www.atiso.ru' +- + org_id: 1694 + site: 'http://www.ufabist.ru' +- + org_id: 1698 + site: 'http://www.atiso.ru' +- + org_id: 1699 + site: 'http://www.atiso.ru' +- + org_id: 1700 + site: 'http://www.atso.ru' +- + org_id: 1701 + site: 'http://www.orenfil-atiso.ru/index.php' +- + org_id: 1702 + site: 'http://www.atiso.ru' +- + org_id: 1703 + site: 'http://www.atiso.ru' +- + org_id: 1704 + site: 'http://www.atiso.ru' +- + org_id: 1705 + site: 'http://yaratiso.ru' +- + org_id: 1706 + site: 'http://www.npi.edu' +- + org_id: 1707 + site: 'http://www.amti.ru' +- + org_id: 1709 + site: kf.bmstu.ru +- + org_id: 1721 + site: 'http://www.tuapse.rshu.ru' +- + org_id: 1729 + site: 'http://vis2.ru' +- + org_id: 1732 + site: 'http://www.stis.su' +- + org_id: 1743 + site: 'http://zabai.ru' +- + org_id: 1744 + site: 'http://vsiep.ru' +- + org_id: 1745 + site: www.mkgtu.ru +- + org_id: 1772 + site: 'http://www.mrsu.ru/' +- + org_id: 1773 + site: 'http://www.gfi.edu.ru/' +- + org_id: 1775 + site: 'http://www.vfistu.ru/' +- + org_id: 1776 + site: 'http://politehvpo.ru/' +- + org_id: 1795 + site: 'http://дрти.рф' +- + org_id: 1814 + site: 'https://astr.ranepa.ru/' +- + org_id: 1826 + site: 'http://www.miu-iv.ru' +- + org_id: 1830 + site: 'http://www.iwtsedov.ru' +- + org_id: 1832 + site: 'http://iems.ru' +- + org_id: 1845 + site: 'http://usinskvuz.ru' +- + org_id: 1872 + site: 'http://www.unecon.ru' +- + org_id: 1881 + site: 'https://agubel.ru' +- + org_id: 1883 + site: 'http://nf.vvsu.ru' +- + org_id: 1884 + site: 'http://b-artem.vvsu.ru/ ' +- + org_id: 1888 + site: 'http://www.krdu-mvd.ru' +- + org_id: 1892 + site: 'http://uifbguep.ru' +- + org_id: 1894 + site: 'http://www.iga.ru' +- + org_id: 1906 + site: www.bsu.edu.ru +- + org_id: 1909 + site: 'http://www.balakovo.sgap.ru' +- + org_id: 1910 + site: 'http://www.af.sgap.ru' +- + org_id: 1911 + site: 'http://www.atiso.ru' +- + org_id: 1927 + site: 'http://www.mfmgutu.ru' +- + org_id: 1928 + site: 'http://www.vfmgutu.ru' +- + org_id: 1932 + site: 'http://blk.ranepa.ru' +- + org_id: 1933 + site: 'https://tmb.ranepa.ru/' +- + org_id: 1947 + site: 'http://www.apu.fsin.su' +- + org_id: 1951 + site: 'http://tf.rsatu.ru' +- + org_id: 1952 + site: 'http://www.lawacademy.ru' +- + org_id: 1953 + site: 'http://www.lawacademy.ru' +- + org_id: 1956 + site: 'http://www.lawacademy.ru' +- + org_id: 1957 + site: 'http://nf-pgu.ru' +- + org_id: 1960 + site: 'http://gelsfedu.ru' +- + org_id: 1977 + site: 'http://www.n-l-i.ru/' +- + org_id: 1987 + site: 'http://www.agatu.ru' +- + org_id: 1989 + site: 'http://www.dvgups.ru/amur-izt/' +- + org_id: 1990 + site: 'http://www.dvgups.ru' +- + org_id: 1993 + site: 'https://dvgups-sakh.ru/' +- + org_id: 2008 + site: 'http://www.dgu-izberbash.ru' +- + org_id: 2009 + site: 'http://kizdgu.ru' +- + org_id: 2011 + site: 'http://dguderbent.ru/' +- + org_id: 2016 + site: 'http://www.ntimgudt.ru' +- + org_id: 2019 + site: 'https://insagro.sursau.ru/' +- + org_id: 2020 + site: 'http://www.vherzen.ru' +- + org_id: 2027 + site: 'http://vgi2.volsu.ru' +- + org_id: 2033 + site: 'http://tpi.donstu.ru' +- + org_id: 2046 + site: 'http://kiu39.ru' +- + org_id: 2055 + site: 'http://www.polytech21.ru' +- + org_id: 2063 + site: 'https://rimsou.ru' +- + org_id: 2065 + site: 'https://polytech-kolomna.ru' +- + org_id: 2072 + site: 'http://tshi.tomsk.ru/' +- + org_id: 2073 + site: 'https://www.siblu.ru/' +- + org_id: 2074 + site: 'http://www.jurac.ru' +- + org_id: 2078 + site: 'http://narfu.ru/kf/' +- + org_id: 2080 + site: 'http://www.narfu.ru/' +- + org_id: 2083 + site: 'http://www.dstu.ru' +- + org_id: 2103 + site: 'http://www.muiv.ru' +- + org_id: 2104 + site: 'http://www.muiv.ru' +- + org_id: 2106 + site: 'http://www.kgeu.ru' +- + org_id: 2108 + site: 'http://www.vostok.kai.ru' +- + org_id: 2112 + site: 'http://www.spig.spb.ru' +- + org_id: 2130 + site: 'http://dvf-vavt.ru' +- + org_id: 2136 + site: 'http://br.ranepa.ru/new.php' +- + org_id: 2140 + site: 'http://dvfu.ru/' +- + org_id: 2142 + site: 'https://cheb.ranepa.ru/' +- + org_id: 2149 + site: 'http://www.csu.ru' +- + org_id: 2150 + site: 'http://www.vfrsteu.ru' +- + org_id: 2151 + site: 'https://рэу.рф/structure/filials/voronezh/' +- + org_id: 2152 + site: ivanovo.rea.ru +- + org_id: 2160 + site: 'http://www.orenrsute.ru' +- + org_id: 2161 + site: 'https://рэу.рф/structure/filials/permskiy-institut-filial-reu-im-gv-plehanova/' +- + org_id: 2162 + site: 'http://pbrea.ru/' +- + org_id: 2166 + site: www.tula.rea.ru +- + org_id: 2170 + site: 'https://uust.ru/if/' +- + org_id: 2184 + site: 'http://www.hasdgu.ru' +- + org_id: 2186 + site: 'https://uust.ru/kumertau' +- + org_id: 2204 + site: 'http://www.mf.rmat.ru' +- + org_id: 2211 + site: 'http://kpfu.ru' +- + org_id: 2219 + site: 'http://ski.ranepa.ru' +- + org_id: 2273 + site: 'http://www.nchti.ru' +- + org_id: 2274 + site: 'http://bfknitu.com/' +- + org_id: 2275 + site: 'https://krasnoyarsk.gup.ru/' +- + org_id: 2276 + site: 'http://www.samara.gup.ru' +- + org_id: 2280 + site: 'http://volog.ranepa.ru' +- + org_id: 2281 + site: 'http://vbr.ranepa.ru' +- + org_id: 2282 + site: 'http://iv.ranepa.ru' +- + org_id: 2283 + site: 'http://klg.ranepa.ru' +- + org_id: 2284 + site: 'http://www.ranepa.ru/' +- + org_id: 2285 + site: 'http://www.novgor.ranepa.ru' +- + org_id: 2286 + site: 'https://krl.ranepa.ru/' +- + org_id: 2289 + site: 'http://www.tver.ranepa.ru' +- + org_id: 2291 + site: 'http://мпгу.рф' +- + org_id: 2293 + site: 'http://мпгу.рф' +- + org_id: 2297 + site: 'http://мпгу.рф' +- + org_id: 2305 + site: 'https://vlad.ranepa.ru' +- + org_id: 2306 + site: 'http://vrn.ranepa.ru' +- + org_id: 2312 + site: 'http://www.ksti.su' +- + org_id: 2322 + site: 'http://www.rgutis05.ru' +- + org_id: 2336 + site: 'https://www.miass.susu.ru/' +- + org_id: 2338 + site: 'http://www.zb.susu.ru/' +- + org_id: 2339 + site: 'http://www.susu-nv.ru/' +- + org_id: 2345 + site: 'http://vgavt-nn.ru/' +- + org_id: 2349 + site: 'http://vgavt-nn.ru/' +- + org_id: 2350 + site: 'https://www.vgavt-nn.ru' +- + org_id: 2351 + site: 'http://lf.pstu.ru' +- + org_id: 2352 + site: 'http://www.pnipu.ru' +- + org_id: 2361 + site: 'https://barnaul.spbume.ru/' +- + org_id: 2363 + site: 'http://www.smiame.ru' +- + org_id: 2370 + site: 'http://www.mai.ru/education/vzlet/' +- + org_id: 2377 + site: www.arm.kubsu.ru +- + org_id: 2380 + site: www.nvr.kubsu.ru/new +- + org_id: 2382 + site: www.tih.kubsu.ru +- + org_id: 2389 + site: 'http://ufa.ruc.su' +- + org_id: 2390 + site: 'http://www.pk.ruc.su' +- + org_id: 2392 + site: 'http://www.vladimir.ruc.su' +- + org_id: 2417 + site: 'http://www.atidstu.ru' +- + org_id: 2420 + site: 'http://www.vuit.ru' +- + org_id: 2430 + site: 'http://viepp.ru' +- + org_id: 2440 + site: 'http://strbsu.ru' +- + org_id: 2472 + site: 'http://www.ufali.ru' +- + org_id: 2479 + site: 'http://www.mofmosu.ru' +- + org_id: 2486 + site: www.rosnou.ru +- + org_id: 2493 + site: 'http://www.anapauniver.ru' +- + org_id: 2508 + site: www.miu-sochi.ru +- + org_id: 2512 + site: 'https://rgup.ru/' +- + org_id: 2522 + site: 'http://www.gief.ru' +- + org_id: 2523 + site: 'http://www.sspi.ru' +- + org_id: 2524 + site: 'http://sportacadem.ru' +- + org_id: 2526 + site: www.pushkin.institute +- + org_id: 2528 + site: 'http://www.vepi.ru' +- + org_id: 2530 + site: 'http://osiart.ru' +- + org_id: 2532 + site: 'http://vipe.fsin.su' +- + org_id: 2541 + site: 'http://www.ural-mvd.ru' +- + org_id: 2551 + site: 'http://nieup.ru/' +- + org_id: 2569 + site: 'https://ptz.rpa-mu.ru' +- + org_id: 2571 + site: 'http://www.ieac.ru' +- + org_id: 2572 + site: 'http://www.vfmei.ru' +- + org_id: 2573 + site: 'http://www.sbmpei.ru' +- + org_id: 2575 + site: 'https://ставф.крду.мвд.рф/' +- + org_id: 2580 + site: 'http://www.raa.ru' +- + org_id: 2590 + site: 'http://smolsgua.ru' +- + org_id: 2608 + site: 'http://www.almet-tisbi.ru' +- + org_id: 2609 + site: 'http://www.tisbi-chelny.ru' +- + org_id: 2620 + site: 'http://www.rudn.ru/' +- + org_id: 2644 + site: 'http://www.nshf.sfedu.ru' +- + org_id: 2646 + site: 'https://nf.misis.ru/' +- + org_id: 2650 + site: 'http://www.yiwt.ru' +- + org_id: 2654 + site: 'http://lip.ranepa.ru' +- + org_id: 2655 + site: 'http://www.smol.ranepa.ru' +- + org_id: 2656 + site: 'http://www.ifguap.ru' +- + org_id: 2658 + site: 'http://tf.omgau.ru' +- + org_id: 2709 + site: 'http://www.vbgherzen.spb.ru' +- + org_id: 2710 + site: www.herzen.spb.ru +- + org_id: 2713 + site: 'http://www.yaroslavl.mfua.ru' +- + org_id: 2724 + site: 'http://rsue.ru/kf/index.aspx' +- + org_id: 2728 + site: 'http://mfrgeu.ru/' +- + org_id: 2733 + site: 'http://www.origt.ru' +- + org_id: 2738 + site: 'http://www.kagms.ru' +- + org_id: 2740 + site: 'http://chgiki.ru' +- + org_id: 2742 + site: 'https://mgusit.mossport.ru/' +- + org_id: 2743 + site: 'http://www.agiki.ru' +- + org_id: 2744 + site: www.vfmadi.ru +- + org_id: 2751 + site: 'http://www.bfsibguti.ru' +- + org_id: 2781 + site: 'http://bgiik.ru/' +- + org_id: 2787 + site: 'http://нггти.рф' +- + org_id: 2853 + site: 'http://mgutu48.ru' +- + org_id: 2856 + site: 'http://www.mephi.ru' +- + org_id: 2857 + site: 'http://www.mephi.ru' +- + org_id: 2864 + site: 'http://www.oihps.ru' +- + org_id: 2888 + site: 'http://ieml.ru' +- + org_id: 2889 + site: 'http://www.ieml.ru' +- + org_id: 2896 + site: 'http://www.eeip.ru' +- + org_id: 2898 + site: 'http://www.tiugsha.ru' +- + org_id: 2901 + site: 'http://www.vf.ugtu.net' +- + org_id: 2902 + site: 'http://www.msei.ru' +- + org_id: 2904 + site: 'http://www.vuz-gsi.ru' +- + org_id: 2907 + site: WWW.obe.ru +- + org_id: 2934 + site: 'http://pavlovsky.rgsu.net/' +- + org_id: 2945 + site: 'http://www.imef.ru' +- + org_id: 2952 + site: 'http://www.udsu.ru' +- + org_id: 2955 + site: upi.kamensktel.ru +- + org_id: 2957 + site: 'http://www.ugtu.krasnoturinsk.org' +- + org_id: 2958 + site: 'http://www.urfu.ru' +- + org_id: 2974 + site: i-eu.ru +- + org_id: 2980 + site: unitech-mo.ru +- + org_id: 2991 + site: 'http://www.инупбт.рф' +- + org_id: 3000 + site: 'https://смоленская-семинария.рф/' +- + org_id: 3011 + site: 'http://www.kf-rmat.ru' +- + org_id: 3013 + site: zpit.org +- + org_id: 3019 + site: 'http://mgutm.ru' +- + org_id: 3038 + site: 'http://www.ugrasu.ru' +- + org_id: 3043 + site: 'http://www.fa.ru/fil/kaluga' +- + org_id: 3048 + site: 'http://www.spbiem.ru' +- + org_id: 3055 + site: 'http://isea.bratsk.ru' +- + org_id: 3058 + site: 'http://www.niyak.spb.ru' +- + org_id: 3061 + site: 'http://hmgma.ru/' +- + org_id: 3066 + site: 'http://www.mephi.ru' +- + org_id: 3067 + site: 'http://www.tti-mephi.ru' +- + org_id: 3070 + site: kazanriu.ru +- + org_id: 3085 + site: 'http://www.rmat.pskov.ru' +- + org_id: 3112 + site: www.noironline.ru +- + org_id: 3116 + site: 'http://dvfu.ru/' +- + org_id: 3125 + site: 'http://www.sseu.ru/' +- + org_id: 3164 + site: 'http://www.rggu.ru' +- + org_id: 3188 + site: 'http://giep-rgeu.ru/' +- + org_id: 3190 + site: 'http://znamensk.asu.edu.ru' +- + org_id: 3207 + site: 'http://мпгу.рф' +- + org_id: 3214 + site: 'http://www.nfbgu.ru' +- + org_id: 3216 + site: 'http://www.shf-sfu.ru' +- + org_id: 3244 + site: 'http://alf-kai.ru' +- + org_id: 3249 + site: 'https://chelny.kai.ru/' +- + org_id: 3261 + site: www.tib.tomsk.ru +- + org_id: 3264 + site: www.omga.su +- + org_id: 3294 + site: 'http://uni-dubna.ru/' +- + org_id: 3295 + site: 'http://uni-dubna.ru/' +- + org_id: 3296 + site: 'http://uni-dubna.ru/' +- + org_id: 3303 + site: 'https://stav.ranepa.ru/' +- + org_id: 3325 + site: 'http://www.rfmumvd.ru' +- + org_id: 3326 + site: 'http://www.smolensk.ruc.su' +- + org_id: 3333 + site: 'http://spbgupkirov.ru' +- + org_id: 3334 + site: 'http://alt.ranepa.ru' +- + org_id: 3338 + site: 'http://vfrmat.ru' +- + org_id: 3343 + site: 'http://www.i-mil.ru' +- + org_id: 3362 + site: 'http://www.magtu.ru' +- + org_id: 3367 + site: www.rosnou.ru +- + org_id: 3374 + site: 'http://www.synergy.ru' +- + org_id: 3381 + site: 'http://sfvstu.ru' +- + org_id: 3396 + site: 'http://www.skgi.ru' +- + org_id: 3408 + site: 'http://www.gfbgtu.ru' +- + org_id: 3410 + site: 'http://www.skf-bgtu.ru' +- + org_id: 3430 + site: 'http://www.mspi.edu.ru' +- + org_id: 3445 + site: 'https://esb.rgup.ru/' +- + org_id: 3446 + site: 'https://feb.rgup.ru/' +- + org_id: 3447 + site: 'http://wsb.raj.ru/' +- + org_id: 3448 + site: 'http://kb.rgup.ru/' +- + org_id: 3449 + site: 'https://vrb.rgup.ru/' +- + org_id: 3450 + site: 'https://rb.rgup.ru/' +- + org_id: 3451 + site: 'http://nwb.raj.ru' +- + org_id: 3452 + site: 'http://ncb.rgup.ru/' +- + org_id: 3453 + site: 'http://ub.raj.ru' +- + org_id: 3454 + site: 'http://www.cb.rgup.ru' +- + org_id: 3455 + site: 'http://mgeitver.ru' +- + org_id: 3456 + site: 'http://www.skf-mgei.ru' +- + org_id: 3468 + site: 'http://oreluniver.ru/' +- + org_id: 3469 + site: 'http://www.bifk.ru/' +- + org_id: 3484 + site: 'http://www.lawacademy.ru' +- + org_id: 3486 + site: 'https://zf.kai.ru/' +- + org_id: 3496 + site: 'http://www.lawacademy.ru' +- + org_id: 3506 + site: 'http://rfei.ru/' +- + org_id: 3512 + site: 'https://rostov.rpa-mu.ru' +- + org_id: 3524 + site: '' +- + org_id: 3537 + site: 'http://www.lawacademy.ru' +- + org_id: 3540 + site: 'http://www.art-gzhel.ru' +- + org_id: 3543 + site: 'http://www.udgum.ru' +- + org_id: 3546 + site: 'http://www.lfkai.ru' +- + org_id: 3557 + site: www.miep.edu.ru +- + org_id: 3559 + site: 'http://spi-vuz.ru' +- + org_id: 3580 + site: 'http://rosnoudm.ru/' +- + org_id: 3597 + site: 'http://www.inzaulsu.ru' +- + org_id: 3598 + site: 'http://vf.misis.ru' +- + org_id: 3606 + site: www.ksai.ru +- + org_id: 3608 + site: 'http://www.lawacademy.ru' +- + org_id: 3613 + site: 'http://www.mhpi.edu.ru' +- + org_id: 3615 + site: 'http://www.fa.ru/fil/omsk/about/Pages/default.aspx' +- + org_id: 3618 + site: 'http://biub.ru' +- + org_id: 3623 + site: 'http://bepi-edu.ru' +- + org_id: 3626 + site: 'http://www.psi.perm.ru' +- + org_id: 3633 + site: 'https://khv.rpa-mu.ru/' +- + org_id: 3634 + site: 'http://www.mgsu.ru' +- + org_id: 3635 + site: 'http://www.akadem74.ru' +- + org_id: 3636 + site: 'http://www.sport-ural.ru' +- + org_id: 3639 + site: 'http://www.reu32.ru' +- + org_id: 3651 + site: 'https://www.irgups.ru/krizht/' +- + org_id: 3652 + site: 'https://www.irgups.ru/zabizht/' +- + org_id: 3653 + site: 'http://www.tolgas.ru' +- + org_id: 3654 + site: www.sgpi.ru +- + org_id: 3669 + site: 'http://ul.ranepa.ru' +- + org_id: 3671 + site: 'http://mosumvd.com' +- + org_id: 3673 + site: 'http://kubmi.ru' +- + org_id: 3689 + site: 'http://www.imc-i.ru/' +- + org_id: 3696 + site: '' +- + org_id: 3698 + site: 'https://izh.rpa-mu.ru/' +- + org_id: 3699 + site: 'http://www.kazanrpa.ru' +- + org_id: 3712 + site: 'http://вгиик.рф' +- + org_id: 3723 + site: 'http://www.oskol.vepi.ru' +- + org_id: 3735 + site: 'https://of.psuti.ru/' +- + org_id: 3739 + site: 'http://inisk.ru' +- + org_id: 3746 + site: 'http://www.dstu.ru' +- + org_id: 3756 + site: 'http://kiep.ucoz.ru/' +- + org_id: 3758 + site: 'https://j-univer.ru/' +- + org_id: 3769 + site: 'http://www.mosi.ru' +- + org_id: 3770 + site: 'http://kiid.ru' +- + org_id: 3775 + site: 'http://ngiei.ru' +- + org_id: 3782 + site: 'http://www.volbi.ru' +- + org_id: 3792 + site: '' +- + org_id: 3804 + site: '' +- + org_id: 3816 + site: '' +- + org_id: 3817 + site: '' +- + org_id: 3821 + site: 'https://serpukhov-varvsn.mil.ru/' +- + org_id: 3826 + site: 'http://www.academy-mozhayskogo.ru' +- + org_id: 3842 + site: 'https://tobolsk.utmn.ru/' +- + org_id: 3851 + site: www.sevgmu.ru +- + org_id: 3871 + site: 'https://sevastopol.rea.ru' +- + org_id: 3884 + site: аспи.рф +- + org_id: 3889 + site: 'http://kf.osu.ru' +- + org_id: 3891 + site: 'http://mgutu-vf.ru' +- + org_id: 3901 + site: '' +- + org_id: 3917 + site: 'https://bf.cchgeu.ru/' +- + org_id: 3918 + site: 'http://www.vg.mfua.ru' +- + org_id: 3922 + site: www.kfbupk.ru +- + org_id: 3926 + site: 'http://dzr.ranepa.ru' +- + org_id: 3927 + site: 'http://www.ranepa.ru/' +- + org_id: 3932 + site: '' +- + org_id: 3940 + site: 'http://www.vshni.ru' +- + org_id: 3941 + site: 'http://www.vshni.ru' +- + org_id: 3943 + site: 'http://www.penzgtu.ru' +- + org_id: 3955 + site: www.sev.msu.ru +- + org_id: 3960 + site: 'http://www.inpsycho.ru' +- + org_id: 3961 + site: 'http://www.usurt.ru/ru/data/index2.phtml?cat=14_5' +- + org_id: 3962 + site: 'http://www.kizht.ru' +- + org_id: 3963 + site: 'http://www.usurt.ru/ru/data/index3.phtml?cat=7_4' +- + org_id: 3964 + site: 'http://www.pizht.ru' +- + org_id: 3969 + site: '' +- + org_id: 3971 + site: 'http://www.билгу.рф' +- + org_id: 3985 + site: 'http://www.chgifkis.ru' +- + org_id: 3986 + site: 'http://mitu-masi.ru' +- + org_id: 4002 + site: www.kifei.ru +- + org_id: 4008 + site: 'http://www.sfi.ru' +- + org_id: 4023 + site: 'http://klin.rgsu.net/' +- + org_id: 4026 + site: 'http://www.gifip.ru' +- + org_id: 4034 + site: 'http://www.ngti.ru' +- + org_id: 4049 + site: 'http://www.orel.vepi.ru' +- + org_id: 4051 + site: 'http://saransk.ruc.su' +- + org_id: 4052 + site: 'http://www.cheb.ruc.su' +- + org_id: 4054 + site: 'http://www.bwmi.ru' +- + org_id: 4057 + site: niddesign.ru +- + org_id: 4088 + site: 'http://tula.ranepa.ru' +- + org_id: 4090 + site: '' +- + org_id: 4101 + site: 'http://www.festu.khv.ru' +- + org_id: 4105 + site: 'http://www.spbau.ru' +- + org_id: 4109 + site: 'http://www.kaliningrad.ruc.su' +- + org_id: 4111 + site: 'http://www.krv.ranepa.ru' +- + org_id: 4114 + site: www.skfmadi.ru +- + org_id: 4115 + site: 'http://www.muiv.ru' +- + org_id: 4130 + site: 'http://uigps.ru/content/institut' +- + org_id: 4148 + site: www.тиуб.рф +- + org_id: 4150 + site: www.eletsrosnou.ru +- + org_id: 4156 + site: 'http://www.stirzn.ru' +- + org_id: 4158 + site: www.imeder.ru +- + org_id: 4164 + site: 'http://artershov.ru' +- + org_id: 4165 + site: 'http://www.asou-mo.ru' +- + org_id: 4172 + site: 'http://www.nes.ru' +- + org_id: 4211 + site: 'http://www.ranepa.ru/' +- + org_id: 4218 + site: 'http://www.iga.ru' +- + org_id: 4224 + site: 'http://www.arz.unn.ru/' +- + org_id: 4226 + site: 'http://www.unn.ru/cdo/Dzerzhinsk.html' +- + org_id: 4227 + site: 'http://www.unn.ru/cdo/Pavlovo.html' +- + org_id: 4250 + site: 'https://bhi.spb.ru/' +- + org_id: 4254 + site: 'http://www.dvik.info' +- + org_id: 4267 + site: 'http://www.msses.ru' +- + org_id: 4274 + site: 'http://vgifk.ru' +- + org_id: 4287 + site: '' +- + org_id: 4296 + site: www.oivt-sguwt.ru +- + org_id: 4305 + site: 'http://budfilsgpi.ru' +- + org_id: 4306 + site: 'http://www.yesspi.ru' +- + org_id: 4322 + site: 'http://еаси.екатеринбург.рф' +- + org_id: 4371 + site: 'http://www.7480040.ru' +- + org_id: 4372 + site: 'http://ineup.ru/' +- + org_id: 4373 + site: 'http://iuifagprf.ru' +- + org_id: 4387 + site: 'http://www.fa.ru/fil/vladik' +- + org_id: 4392 + site: 'http://www.fa.ru/fil/spb/Pages/Home.aspx' +- + org_id: 4413 + site: 'http://nik.ugrasu.ru/' +- + org_id: 4424 + site: 'https://zf.ranepa.ru/' +- + org_id: 4444 + site: 'http://www.vigps.ru' +- + org_id: 4448 + site: 'http://sibigps.ru' +- + org_id: 4507 + site: 'http://sgpizh.ru' +- + org_id: 4580 + site: 'https://www.темрюк-мгуту.рф/' +- + org_id: 4595 + site: 'http://www.viti-mephi.ru' +- + org_id: 4616 + site: 'http://www.medinstitut.org' +- + org_id: 4621 + site: 'https://www.s-vfu.ru' +- + org_id: 4646 + site: 'http://www.pskgu.ru' +- + org_id: 4648 + site: 'http://dimpku.ru/' +- + org_id: 4676 + site: 'https://iptdnn.ru/' +- + org_id: 4683 + site: 'http://sar.reaviz.ru' +- + org_id: 5002 + site: 'http://daggum.ru' +- + org_id: 5004 + site: 'http://www.uralsky-missioner.ru' +- + org_id: 5005 + site: kukiit.ru +- + org_id: 5007 + site: 'http://www.spbiir.ru' +- + org_id: 5012 + site: 'http://www.sgla.ru' +- + org_id: 5017 + site: 'http://www.vsiem.ru' +- + org_id: 5018 + site: 'http://academy.andriaka.ru/; academy-andria' +- + org_id: 5023 + site: 'http://www.vggi.ru' +- + org_id: 5024 + site: 'http://raikin-school.com' +- + org_id: 5025 + site: 'http://kgmtu.ru' +- + org_id: 5026 + site: pravinst.ru +- + org_id: 5028 + site: www.eduugmk.com +- + org_id: 5029 + site: 'http://www.mai.ru/education/strela/' +- + org_id: 5031 + site: 'https://www.filialpskovgu.ru/' +- + org_id: 5041 + site: 'http://www.ranepa.ru/' +- + org_id: 5043 + site: 'http://www.vshni.ru' +- + org_id: 5046 + site: 'http://www.mgau.ru' +- + org_id: 5049 + site: 'http://irkvgik.ru' +- + org_id: 5050 + site: 'http://www.vgik.info' +- + org_id: 5051 + site: 'http://www.spkvtk.ru' +- + org_id: 5060 + site: '' +- + org_id: 5065 + site: 'http://www.muiv.ru' +- + org_id: 5088 + site: 'http://synergy.ru' +- + org_id: 5091 + site: 'http://sofmgri.ru/ru/' +- + org_id: 5093 + site: 'http://www.cfuv.ru/' +- + org_id: 5094 + site: 'http://www.cfuv.ru/' +- + org_id: 5095 + site: 'http://www.cfuv.ru/' +- + org_id: 5096 + site: 'http://www.cfuv.ru/' +- + org_id: 5097 + site: crb.rgup.ru +- + org_id: 5098 + site: 'http://kgmtu.ru' +- + org_id: 5099 + site: 'http://nf.samgtu.ru/' +- + org_id: 5116 + site: 'https://orel.ranepa.ru/' +- + org_id: 5121 + site: 'http://sgasu.belebey.ru' +- + org_id: 5122 + site: www.mgimo.ru +- + org_id: 5123 + site: www.kipu-rc.ru +- + org_id: 5126 + site: 'https://www.arcticsu.ru/' +- + org_id: 5127 + site: smolensk.rea.ru +- + org_id: 5135 + site: www.samgups.ru +- + org_id: 5140 + site: 'https://www.ranepa.ru/' +- + org_id: 5146 + site: 'https://kfilial.mggeu.ru/' +- + org_id: 5151 + site: 'http://www.unn.ru/cdo/Balakhna.html' +- + org_id: 5158 + site: 'http://www.agatu.ru' +- + org_id: 5159 + site: '' +- + org_id: 5165 + site: 'https://www.pgups.ru' +- + org_id: 5166 + site: 'http://lnau.su/' +- + org_id: 5167 + site: '' +- + org_id: 5168 + site: 'https://ivanteevka.mospolytech.ru/' +- + org_id: 5169 + site: '' +- + org_id: 5171 + site: '' +- + org_id: 5172 + site: 'https://nvpk-mephi.ru/' +- + org_id: 5175 + site: 'http://donnu.ru' +- + org_id: 5176 + site: 'https://dahluniver.ru/' +- + org_id: 5180 + site: demo.ru +- + org_id: 10000 + site: sarpds.ru +- + org_id: 10004 + site: 'https://www.skoltech.ru' +- + org_id: 10006 + site: мос-ити.рф +- + org_id: 10007 + site: www.samgups.ru +- + org_id: 10011 + site: 'http://ueu.crimea.ru' +- + org_id: 10016 + site: www.rgups.ru +- + org_id: 10017 + site: 'http://www.atiso.ru' +- + org_id: 10018 + site: 'http://oreluniver.ru/' +- + org_id: 10022 + site: 'http://kamensk.rosnou.ru/' +- + org_id: 10026 + site: 'http://www.urep.ru' +- + org_id: 10028 + site: www.viam.ru +- + org_id: 10029 + site: 'https://sochi.rpa-mu.ru' +- + org_id: 10031 + site: www.nifru.ru +- + org_id: 10034 + site: 'http://oreluniver.ru/' +- + org_id: 10039 + site: 'http://spbda.ru/' +- + org_id: 10040 + site: 'https://innopolis.university/' +- + org_id: 10042 + site: 'http://www.bmstu.ru' +- + org_id: 10046 + site: www.tatk.ru +- + org_id: 61241 + site: 'http://sevsu.ru' +- + org_id: 61244 + site: 'http://www.reaviz.ru' +- + org_id: 61248 + site: 'http://www.cfuv.ru/' +- + org_id: 61261 + site: 'http://www.skitu.ru' +- + org_id: 61263 + site: 'https://donampa.ru/' +- + org_id: 61265 + site: 'https://donntu.ru/' +- + org_id: 61268 + site: 'http://www.lilgu.luga.ru' +- + org_id: 61294 + site: 'http://www.mosap.ru' +- + org_id: 61295 + site: 'https://www.podolsk-ssi.ru/' +- + org_id: 61296 + site: 'http://lipetsk.vepi.ru' +- + org_id: 61297 + site: 'https://ispring.institute/' +- + org_id: 61298 + site: 'https://kazpds.ru/' +- + org_id: 61299 + site: 'http://sf-mgei.ru' +- + org_id: 61300 + site: 'https://www.pgups.ru' +- + org_id: 61301 + site: 'https://mti.edu.ru' +- + org_id: 61302 + site: 'https://altay-seminary.ru/' +- + org_id: 61303 + site: 'http://mpgu.su' +- + org_id: 61304 + site: www.smolensk.ideka.ru +- + org_id: 61305 + site: www.cherkessk.ideka.ru +- + org_id: 61306 + site: 'https://miiimel.ru/' +- + org_id: 61307 + site: kpds42.ru +- + org_id: 61308 + site: 'http://www.miyu.ru' +- + org_id: 61309 + site: 'https://mti.edu.ru' +- + org_id: 61310 + site: 'https://ouep.ru' +- + org_id: 61311 + site: 'http://mpgu.su' +- + org_id: 61312 + site: kpds.ru +- + org_id: 61313 + site: www.cherkessk.ideka.ru +- + org_id: 61314 + site: 'http://bf-vshni.ru/' +- + org_id: 61315 + site: 'https://vetacademy.pro/' +- + org_id: 61316 + site: www.tyumen.ideka.ru +- + org_id: 61317 + site: 'https://sarov.msu.ru/' +- + org_id: 61318 + site: 'https://rgu-tver.ru/' +- + org_id: 61319 + site: 'https://ussur.vvsu.ru/' +- + org_id: 61320 + site: www.doctorantura.ru +- + org_id: 61321 + site: 'http://www.tamds.ru' +- + org_id: 61322 + site: ppds.ru +- + org_id: 61323 + site: 'http://rossosh.vepi.ru' +- + org_id: 61324 + site: 'http://mgei-volga.ru' +- + org_id: 61325 + site: 'https://fedoskino-vshni.ru' +- + org_id: 61326 + site: vhutein.ru +- + org_id: 61327 + site: www/vpds.ru +- + org_id: 61328 + site: 'https://sdamp.ru//' +- + org_id: 61329 + site: 'http://sfmgei.ru' +- + org_id: 61330 + site: 'https://dsnsk.ru/' +- + org_id: 61331 + site: 'https://lomonosov.lengu.ru' +- + org_id: 61332 + site: 'https://gf.misis.ru/' +- + org_id: 61333 + site: 'http://bel-seminaria.ru/' +- + org_id: 61334 + site: www.epds.ru +- + org_id: 61335 + site: www.bolgar.academy +- + org_id: 61336 + site: 'https://www.ompds.ru/' +- + org_id: 61337 + site: 'https://kerch.kipu-rc.ru/' +- + org_id: 61338 + site: www.yakutsk.ideka.ru +- + org_id: 61339 + site: 'https://nupds.ru' +- + org_id: 61340 + site: 'https://siriusuniversity.ru/' +- + org_id: 61341 + site: 'http://www.miu.su' +- + org_id: 61342 + site: 'http://mdab.ru/' +- + org_id: 61343 + site: www.pskov.ideka.ru +- + org_id: 61344 + site: 'http://kalugads.ru/' +- + org_id: 61345 + site: 'https://eusp.org' +- + org_id: 61346 + site: 'https://spbreaviz.ru' +- + org_id: 61347 + site: 'http://www.klinmgei.ru' +- + org_id: 61348 + site: 'https://seminariapenza.ru/' +- + org_id: 61349 + site: 'http://www.nkfmgei.ru' +- + org_id: 61350 + site: 'https://mpda.ru/' +- + org_id: 61351 + site: perm.ideka.ru +- + org_id: 61352 + site: 'https://mitu.msk.ru/' +- + org_id: 61353 + site: 'http://www.kgsu.ru' +- + org_id: 61354 + site: 'http://orends.ru/' +- + org_id: 61355 + site: 'http://www.anoimei.ru' diff --git a/data/specs.yaml b/data/specs.yaml new file mode 100644 index 0000000..ec83c55 --- /dev/null +++ b/data/specs.yaml @@ -0,0 +1,3324 @@ +- + spec_id: 3201 + spec_code: 01.03.01 +- + spec_id: 3202 + spec_code: 01.03.02 +- + spec_id: 3203 + spec_code: 01.03.03 +- + spec_id: 3204 + spec_code: 01.03.04 +- + spec_id: 3676 + spec_code: 01.03.05 +- + spec_id: 3476 + spec_code: 01.04.01 +- + spec_id: 3477 + spec_code: 01.04.02 +- + spec_id: 3478 + spec_code: 01.04.03 +- + spec_id: 3479 + spec_code: 01.04.04 +- + spec_id: 3679 + spec_code: 01.04.05 +- + spec_id: 3380 + spec_code: 01.05.01 +- + spec_id: 3205 + spec_code: 02.03.01 +- + spec_id: 3206 + spec_code: 02.03.02 +- + spec_id: 3207 + spec_code: 02.03.03 +- + spec_id: 3480 + spec_code: 02.04.01 +- + spec_id: 3481 + spec_code: 02.04.02 +- + spec_id: 3482 + spec_code: 02.04.03 +- + spec_id: 3208 + spec_code: 03.03.01 +- + spec_id: 3209 + spec_code: 03.03.02 +- + spec_id: 3210 + spec_code: 03.03.03 +- + spec_id: 3483 + spec_code: 03.04.01 +- + spec_id: 3484 + spec_code: 03.04.02 +- + spec_id: 3485 + spec_code: 03.04.03 +- + spec_id: 3381 + spec_code: 03.05.01 +- + spec_id: 5060 + spec_code: 03.05.02 +- + spec_id: 3211 + spec_code: 04.03.01 +- + spec_id: 3212 + spec_code: 04.03.02 +- + spec_id: 3486 + spec_code: 04.04.01 +- + spec_id: 3487 + spec_code: 04.04.02 +- + spec_id: 3382 + spec_code: 04.05.01 +- + spec_id: 3682 + spec_code: 05.01.01 +- + spec_id: 2962 + spec_code: 05.02.01 +- + spec_id: 2963 + spec_code: 05.02.02 +- + spec_id: 2964 + spec_code: 05.02.03 +- + spec_id: 3213 + spec_code: 05.03.01 +- + spec_id: 3214 + spec_code: 05.03.02 +- + spec_id: 3215 + spec_code: 05.03.03 +- + spec_id: 3216 + spec_code: 05.03.04 +- + spec_id: 3217 + spec_code: 05.03.05 +- + spec_id: 3218 + spec_code: 05.03.06 +- + spec_id: 3488 + spec_code: 05.04.01 +- + spec_id: 3489 + spec_code: 05.04.02 +- + spec_id: 3490 + spec_code: 05.04.03 +- + spec_id: 3491 + spec_code: 05.04.04 +- + spec_id: 3492 + spec_code: 05.04.05 +- + spec_id: 3493 + spec_code: 05.04.06 +- + spec_id: 3219 + spec_code: 06.03.01 +- + spec_id: 3220 + spec_code: 06.03.02 +- + spec_id: 3494 + spec_code: 06.04.01 +- + spec_id: 3495 + spec_code: 06.04.02 +- + spec_id: 3383 + spec_code: 06.05.01 +- + spec_id: 2965 + spec_code: 07.02.01 +- + spec_id: 3221 + spec_code: 07.03.01 +- + spec_id: 3222 + spec_code: 07.03.02 +- + spec_id: 3223 + spec_code: 07.03.03 +- + spec_id: 3224 + spec_code: 07.03.04 +- + spec_id: 3496 + spec_code: 07.04.01 +- + spec_id: 3497 + spec_code: 07.04.02 +- + spec_id: 3498 + spec_code: 07.04.03 +- + spec_id: 3499 + spec_code: 07.04.04 +- + spec_id: 3683 + spec_code: 08.01.01 +- + spec_id: 3684 + spec_code: 08.01.02 +- + spec_id: 3685 + spec_code: 08.01.03 +- + spec_id: 3686 + spec_code: 08.01.04 +- + spec_id: 3687 + spec_code: 08.01.05 +- + spec_id: 3688 + spec_code: 08.01.06 +- + spec_id: 3689 + spec_code: 08.01.07 +- + spec_id: 3690 + spec_code: 08.01.08 +- + spec_id: 3691 + spec_code: 08.01.09 +- + spec_id: 3692 + spec_code: 08.01.10 +- + spec_id: 3693 + spec_code: 08.01.11 +- + spec_id: 3694 + spec_code: 08.01.12 +- + spec_id: 3695 + spec_code: 08.01.13 +- + spec_id: 3696 + spec_code: 08.01.14 +- + spec_id: 3697 + spec_code: 08.01.15 +- + spec_id: 3698 + spec_code: 08.01.16 +- + spec_id: 3699 + spec_code: 08.01.17 +- + spec_id: 3700 + spec_code: 08.01.18 +- + spec_id: 3701 + spec_code: 08.01.19 +- + spec_id: 3702 + spec_code: 08.01.20 +- + spec_id: 3703 + spec_code: 08.01.21 +- + spec_id: 3704 + spec_code: 08.01.22 +- + spec_id: 3705 + spec_code: 08.01.23 +- + spec_id: 3706 + spec_code: 08.01.24 +- + spec_id: 3707 + spec_code: 08.01.25 +- + spec_id: 3708 + spec_code: 08.01.26 +- + spec_id: 5596 + spec_code: 08.01.27 +- + spec_id: 5597 + spec_code: 08.01.28 +- + spec_id: 5598 + spec_code: 08.01.29 +- + spec_id: 5599 + spec_code: 08.01.30 +- + spec_id: 5600 + spec_code: 08.01.31 +- + spec_id: 2966 + spec_code: 08.02.01 +- + spec_id: 2967 + spec_code: 08.02.02 +- + spec_id: 2968 + spec_code: 08.02.03 +- + spec_id: 2969 + spec_code: 08.02.04 +- + spec_id: 2970 + spec_code: 08.02.05 +- + spec_id: 2971 + spec_code: 08.02.06 +- + spec_id: 2972 + spec_code: 08.02.07 +- + spec_id: 2973 + spec_code: 08.02.08 +- + spec_id: 2974 + spec_code: 08.02.09 +- + spec_id: 2975 + spec_code: 08.02.10 +- + spec_id: 3674 + spec_code: 08.02.11 +- + spec_id: 5565 + spec_code: 08.02.12 +- + spec_id: 5566 + spec_code: 08.02.13 +- + spec_id: 5567 + spec_code: 08.02.14 +- + spec_id: 3225 + spec_code: 08.03.01 +- + spec_id: 3500 + spec_code: 08.04.01 +- + spec_id: 3384 + spec_code: 08.05.01 +- + spec_id: 3386 + spec_code: 08.05.02 +- + spec_id: 3709 + spec_code: 09.01.01 +- + spec_id: 3710 + spec_code: 09.01.02 +- + spec_id: 3711 + spec_code: 09.01.03 +- + spec_id: 5601 + spec_code: 09.01.04 +- + spec_id: 5602 + spec_code: 09.01.05 +- + spec_id: 2976 + spec_code: 09.02.01 +- + spec_id: 2977 + spec_code: 09.02.02 +- + spec_id: 2978 + spec_code: 09.02.03 +- + spec_id: 2979 + spec_code: 09.02.04 +- + spec_id: 2980 + spec_code: 09.02.05 +- + spec_id: 5032 + spec_code: 09.02.06 +- + spec_id: 5033 + spec_code: 09.02.07 +- + spec_id: 5568 + spec_code: 09.02.08 +- + spec_id: 3226 + spec_code: 09.03.01 +- + spec_id: 3227 + spec_code: 09.03.02 +- + spec_id: 3228 + spec_code: 09.03.03 +- + spec_id: 3229 + spec_code: 09.03.04 +- + spec_id: 3501 + spec_code: 09.04.01 +- + spec_id: 3502 + spec_code: 09.04.02 +- + spec_id: 3503 + spec_code: 09.04.03 +- + spec_id: 3504 + spec_code: 09.04.04 +- + spec_id: 3663 + spec_code: 09.05.01 +- + spec_id: 2981 + spec_code: 10.02.01 +- + spec_id: 2982 + spec_code: 10.02.02 +- + spec_id: 2983 + spec_code: 10.02.03 +- + spec_id: 5034 + spec_code: 10.02.04 +- + spec_id: 5035 + spec_code: 10.02.05 +- + spec_id: 3230 + spec_code: 10.03.01 +- + spec_id: 3505 + spec_code: 10.04.01 +- + spec_id: 3387 + spec_code: 10.05.01 +- + spec_id: 3388 + spec_code: 10.05.02 +- + spec_id: 3389 + spec_code: 10.05.03 +- + spec_id: 3390 + spec_code: 10.05.04 +- + spec_id: 3391 + spec_code: 10.05.05 +- + spec_id: 3666 + spec_code: 10.05.06 +- + spec_id: 3667 + spec_code: 10.05.07 +- + spec_id: 3712 + spec_code: 11.01.01 +- + spec_id: 3713 + spec_code: 11.01.02 +- + spec_id: 3714 + spec_code: 11.01.03 +- + spec_id: 3715 + spec_code: 11.01.04 +- + spec_id: 3716 + spec_code: 11.01.05 +- + spec_id: 3717 + spec_code: 11.01.06 +- + spec_id: 3718 + spec_code: 11.01.07 +- + spec_id: 3719 + spec_code: 11.01.08 +- + spec_id: 3720 + spec_code: 11.01.09 +- + spec_id: 3721 + spec_code: 11.01.10 +- + spec_id: 3722 + spec_code: 11.01.11 +- + spec_id: 3723 + spec_code: 11.01.12 +- + spec_id: 3724 + spec_code: 11.01.13 +- + spec_id: 2984 + spec_code: 11.02.01 +- + spec_id: 2985 + spec_code: 11.02.02 +- + spec_id: 2986 + spec_code: 11.02.03 +- + spec_id: 2987 + spec_code: 11.02.04 +- + spec_id: 2988 + spec_code: 11.02.05 +- + spec_id: 2989 + spec_code: 11.02.06 +- + spec_id: 2990 + spec_code: 11.02.07 +- + spec_id: 2991 + spec_code: 11.02.08 +- + spec_id: 2992 + spec_code: 11.02.09 +- + spec_id: 2993 + spec_code: 11.02.10 +- + spec_id: 2994 + spec_code: 11.02.11 +- + spec_id: 2995 + spec_code: 11.02.12 +- + spec_id: 2996 + spec_code: 11.02.13 +- + spec_id: 2997 + spec_code: 11.02.14 +- + spec_id: 5036 + spec_code: 11.02.15 +- + spec_id: 5037 + spec_code: 11.02.16 +- + spec_id: 5569 + spec_code: 11.02.17 +- + spec_id: 5570 + spec_code: 11.02.18 +- + spec_id: 3231 + spec_code: 11.03.01 +- + spec_id: 3232 + spec_code: 11.03.02 +- + spec_id: 3233 + spec_code: 11.03.03 +- + spec_id: 3234 + spec_code: 11.03.04 +- + spec_id: 3506 + spec_code: 11.04.01 +- + spec_id: 3507 + spec_code: 11.04.02 +- + spec_id: 3508 + spec_code: 11.04.03 +- + spec_id: 3509 + spec_code: 11.04.04 +- + spec_id: 3392 + spec_code: 11.05.01 +- + spec_id: 3393 + spec_code: 11.05.02 +- + spec_id: 3664 + spec_code: 11.05.04 +- + spec_id: 3725 + spec_code: 12.01.01 +- + spec_id: 3726 + spec_code: 12.01.02 +- + spec_id: 3727 + spec_code: 12.01.03 +- + spec_id: 3728 + spec_code: 12.01.04 +- + spec_id: 3729 + spec_code: 12.01.05 +- + spec_id: 3730 + spec_code: 12.01.06 +- + spec_id: 3731 + spec_code: 12.01.07 +- + spec_id: 3732 + spec_code: 12.01.08 +- + spec_id: 3733 + spec_code: 12.01.09 +- + spec_id: 2998 + spec_code: 12.02.01 +- + spec_id: 2999 + spec_code: 12.02.02 +- + spec_id: 3000 + spec_code: 12.02.03 +- + spec_id: 3001 + spec_code: 12.02.04 +- + spec_id: 3002 + spec_code: 12.02.05 +- + spec_id: 3003 + spec_code: 12.02.06 +- + spec_id: 3004 + spec_code: 12.02.07 +- + spec_id: 3005 + spec_code: 12.02.08 +- + spec_id: 5038 + spec_code: 12.02.09 +- + spec_id: 5039 + spec_code: 12.02.10 +- + spec_id: 3235 + spec_code: 12.03.01 +- + spec_id: 3236 + spec_code: 12.03.02 +- + spec_id: 3237 + spec_code: 12.03.03 +- + spec_id: 3238 + spec_code: 12.03.04 +- + spec_id: 3239 + spec_code: 12.03.05 +- + spec_id: 3510 + spec_code: 12.04.01 +- + spec_id: 3511 + spec_code: 12.04.02 +- + spec_id: 3512 + spec_code: 12.04.03 +- + spec_id: 3513 + spec_code: 12.04.04 +- + spec_id: 3514 + spec_code: 12.04.05 +- + spec_id: 3394 + spec_code: 12.05.01 +- + spec_id: 3734 + spec_code: 13.01.01 +- + spec_id: 3735 + spec_code: 13.01.02 +- + spec_id: 3736 + spec_code: 13.01.03 +- + spec_id: 3737 + spec_code: 13.01.04 +- + spec_id: 3738 + spec_code: 13.01.05 +- + spec_id: 3739 + spec_code: 13.01.06 +- + spec_id: 3740 + spec_code: 13.01.07 +- + spec_id: 3741 + spec_code: 13.01.08 +- + spec_id: 3742 + spec_code: 13.01.09 +- + spec_id: 3743 + spec_code: 13.01.10 +- + spec_id: 3744 + spec_code: 13.01.11 +- + spec_id: 3745 + spec_code: 13.01.12 +- + spec_id: 3746 + spec_code: 13.01.13 +- + spec_id: 3747 + spec_code: 13.01.14 +- + spec_id: 3006 + spec_code: 13.02.01 +- + spec_id: 3007 + spec_code: 13.02.02 +- + spec_id: 3008 + spec_code: 13.02.03 +- + spec_id: 3009 + spec_code: 13.02.04 +- + spec_id: 3010 + spec_code: 13.02.05 +- + spec_id: 3011 + spec_code: 13.02.06 +- + spec_id: 3012 + spec_code: 13.02.07 +- + spec_id: 3013 + spec_code: 13.02.08 +- + spec_id: 3014 + spec_code: 13.02.09 +- + spec_id: 3015 + spec_code: 13.02.10 +- + spec_id: 3016 + spec_code: 13.02.11 +- + spec_id: 3240 + spec_code: 13.03.01 +- + spec_id: 3241 + spec_code: 13.03.02 +- + spec_id: 3242 + spec_code: 13.03.03 +- + spec_id: 3515 + spec_code: 13.04.01 +- + spec_id: 3516 + spec_code: 13.04.02 +- + spec_id: 3517 + spec_code: 13.04.03 +- + spec_id: 3670 + spec_code: 13.05.01 +- + spec_id: 3665 + spec_code: 13.05.02 +- + spec_id: 3017 + spec_code: 14.02.01 +- + spec_id: 3018 + spec_code: 14.02.02 +- + spec_id: 3019 + spec_code: 14.02.03 +- + spec_id: 3243 + spec_code: 14.03.01 +- + spec_id: 3244 + spec_code: 14.03.02 +- + spec_id: 3518 + spec_code: 14.04.01 +- + spec_id: 3519 + spec_code: 14.04.02 +- + spec_id: 3395 + spec_code: 14.05.01 +- + spec_id: 3396 + spec_code: 14.05.02 +- + spec_id: 3397 + spec_code: 14.05.03 +- + spec_id: 3661 + spec_code: 14.05.04 +- + spec_id: 3748 + spec_code: 15.01.01 +- + spec_id: 3749 + spec_code: 15.01.02 +- + spec_id: 3750 + spec_code: 15.01.03 +- + spec_id: 3751 + spec_code: 15.01.04 +- + spec_id: 3752 + spec_code: 15.01.05 +- + spec_id: 3753 + spec_code: 15.01.06 +- + spec_id: 3754 + spec_code: 15.01.07 +- + spec_id: 3755 + spec_code: 15.01.08 +- + spec_id: 3756 + spec_code: 15.01.09 +- + spec_id: 3757 + spec_code: 15.01.10 +- + spec_id: 3758 + spec_code: 15.01.11 +- + spec_id: 3759 + spec_code: 15.01.12 +- + spec_id: 3760 + spec_code: 15.01.13 +- + spec_id: 3761 + spec_code: 15.01.14 +- + spec_id: 3762 + spec_code: 15.01.15 +- + spec_id: 3763 + spec_code: 15.01.16 +- + spec_id: 3764 + spec_code: 15.01.17 +- + spec_id: 3765 + spec_code: 15.01.18 +- + spec_id: 3766 + spec_code: 15.01.19 +- + spec_id: 3767 + spec_code: 15.01.20 +- + spec_id: 3768 + spec_code: 15.01.21 +- + spec_id: 3769 + spec_code: 15.01.22 +- + spec_id: 3770 + spec_code: 15.01.23 +- + spec_id: 3771 + spec_code: 15.01.24 +- + spec_id: 3772 + spec_code: 15.01.25 +- + spec_id: 3773 + spec_code: 15.01.26 +- + spec_id: 3774 + spec_code: 15.01.27 +- + spec_id: 3775 + spec_code: 15.01.28 +- + spec_id: 3776 + spec_code: 15.01.29 +- + spec_id: 3777 + spec_code: 15.01.30 +- + spec_id: 3778 + spec_code: 15.01.31 +- + spec_id: 3779 + spec_code: 15.01.32 +- + spec_id: 3780 + spec_code: 15.01.33 +- + spec_id: 3781 + spec_code: 15.01.34 +- + spec_id: 3782 + spec_code: 15.01.35 +- + spec_id: 3783 + spec_code: 15.01.36 +- + spec_id: 3020 + spec_code: 15.02.01 +- + spec_id: 3021 + spec_code: 15.02.02 +- + spec_id: 3022 + spec_code: 15.02.03 +- + spec_id: 3023 + spec_code: 15.02.04 +- + spec_id: 3024 + spec_code: 15.02.05 +- + spec_id: 3025 + spec_code: 15.02.06 +- + spec_id: 3026 + spec_code: 15.02.07 +- + spec_id: 3027 + spec_code: 15.02.08 +- + spec_id: 3675 + spec_code: 15.02.09 +- + spec_id: 5030 + spec_code: 15.02.10 +- + spec_id: 5042 + spec_code: 15.02.11 +- + spec_id: 5043 + spec_code: 15.02.12 +- + spec_id: 5044 + spec_code: 15.02.13 +- + spec_id: 5045 + spec_code: 15.02.14 +- + spec_id: 5046 + spec_code: 15.02.15 +- + spec_id: 5571 + spec_code: 15.02.16 +- + spec_id: 3245 + spec_code: 15.03.01 +- + spec_id: 3246 + spec_code: 15.03.02 +- + spec_id: 3247 + spec_code: 15.03.03 +- + spec_id: 3248 + spec_code: 15.03.04 +- + spec_id: 3249 + spec_code: 15.03.05 +- + spec_id: 3250 + spec_code: 15.03.06 +- + spec_id: 3520 + spec_code: 15.04.01 +- + spec_id: 3521 + spec_code: 15.04.02 +- + spec_id: 3522 + spec_code: 15.04.03 +- + spec_id: 3523 + spec_code: 15.04.04 +- + spec_id: 3524 + spec_code: 15.04.05 +- + spec_id: 3525 + spec_code: 15.04.06 +- + spec_id: 3398 + spec_code: 15.05.01 +- + spec_id: 3251 + spec_code: 16.03.01 +- + spec_id: 3252 + spec_code: 16.03.02 +- + spec_id: 3253 + spec_code: 16.03.03 +- + spec_id: 3526 + spec_code: 16.04.01 +- + spec_id: 3527 + spec_code: 16.04.02 +- + spec_id: 3528 + spec_code: 16.04.03 +- + spec_id: 3399 + spec_code: 16.05.01 +- + spec_id: 3254 + spec_code: 17.03.01 +- + spec_id: 3529 + spec_code: 17.04.01 +- + spec_id: 3400 + spec_code: 17.05.01 +- + spec_id: 3401 + spec_code: 17.05.02 +- + spec_id: 3402 + spec_code: 17.05.03 +- + spec_id: 5427 + spec_code: 17.05.04 +- + spec_id: 3784 + spec_code: 18.01.01 +- + spec_id: 3785 + spec_code: 18.01.02 +- + spec_id: 3786 + spec_code: 18.01.03 +- + spec_id: 3787 + spec_code: 18.01.04 +- + spec_id: 3788 + spec_code: 18.01.05 +- + spec_id: 3789 + spec_code: 18.01.06 +- + spec_id: 3790 + spec_code: 18.01.07 +- + spec_id: 3791 + spec_code: 18.01.08 +- + spec_id: 3792 + spec_code: 18.01.09 +- + spec_id: 3793 + spec_code: 18.01.10 +- + spec_id: 3794 + spec_code: 18.01.11 +- + spec_id: 3795 + spec_code: 18.01.12 +- + spec_id: 3796 + spec_code: 18.01.13 +- + spec_id: 3797 + spec_code: 18.01.14 +- + spec_id: 3798 + spec_code: 18.01.15 +- + spec_id: 3799 + spec_code: 18.01.16 +- + spec_id: 3800 + spec_code: 18.01.17 +- + spec_id: 3801 + spec_code: 18.01.18 +- + spec_id: 3802 + spec_code: 18.01.19 +- + spec_id: 3803 + spec_code: 18.01.20 +- + spec_id: 3804 + spec_code: 18.01.21 +- + spec_id: 3805 + spec_code: 18.01.22 +- + spec_id: 3806 + spec_code: 18.01.23 +- + spec_id: 3807 + spec_code: 18.01.24 +- + spec_id: 3808 + spec_code: 18.01.25 +- + spec_id: 3809 + spec_code: 18.01.26 +- + spec_id: 3810 + spec_code: 18.01.27 +- + spec_id: 3811 + spec_code: 18.01.28 +- + spec_id: 3812 + spec_code: 18.01.29 +- + spec_id: 3813 + spec_code: 18.01.30 +- + spec_id: 3814 + spec_code: 18.01.31 +- + spec_id: 3815 + spec_code: 18.01.32 +- + spec_id: 3816 + spec_code: 18.01.33 +- + spec_id: 3028 + spec_code: 18.02.01 +- + spec_id: 3029 + spec_code: 18.02.02 +- + spec_id: 3030 + spec_code: 18.02.03 +- + spec_id: 3031 + spec_code: 18.02.04 +- + spec_id: 3032 + spec_code: 18.02.05 +- + spec_id: 3033 + spec_code: 18.02.06 +- + spec_id: 3034 + spec_code: 18.02.07 +- + spec_id: 3035 + spec_code: 18.02.08 +- + spec_id: 3036 + spec_code: 18.02.09 +- + spec_id: 3037 + spec_code: 18.02.10 +- + spec_id: 3038 + spec_code: 18.02.11 +- + spec_id: 5047 + spec_code: 18.02.12 +- + spec_id: 5048 + spec_code: 18.02.13 +- + spec_id: 3255 + spec_code: 18.03.01 +- + spec_id: 3256 + spec_code: 18.03.02 +- + spec_id: 3530 + spec_code: 18.04.01 +- + spec_id: 3531 + spec_code: 18.04.02 +- + spec_id: 3403 + spec_code: 18.05.01 +- + spec_id: 3404 + spec_code: 18.05.02 +- + spec_id: 3817 + spec_code: 19.01.01 +- + spec_id: 3818 + spec_code: 19.01.02 +- + spec_id: 3819 + spec_code: 19.01.03 +- + spec_id: 3820 + spec_code: 19.01.04 +- + spec_id: 3821 + spec_code: 19.01.05 +- + spec_id: 3822 + spec_code: 19.01.06 +- + spec_id: 3823 + spec_code: 19.01.07 +- + spec_id: 3824 + spec_code: 19.01.08 +- + spec_id: 3825 + spec_code: 19.01.09 +- + spec_id: 3826 + spec_code: 19.01.10 +- + spec_id: 3827 + spec_code: 19.01.11 +- + spec_id: 3828 + spec_code: 19.01.12 +- + spec_id: 3829 + spec_code: 19.01.13 +- + spec_id: 3830 + spec_code: 19.01.14 +- + spec_id: 3831 + spec_code: 19.01.15 +- + spec_id: 3832 + spec_code: 19.01.16 +- + spec_id: 3833 + spec_code: 19.01.17 +- + spec_id: 5603 + spec_code: 19.01.18 +- + spec_id: 5604 + spec_code: 19.01.19 +- + spec_id: 5605 + spec_code: 19.01.20 +- + spec_id: 3039 + spec_code: 19.02.01 +- + spec_id: 3040 + spec_code: 19.02.02 +- + spec_id: 3041 + spec_code: 19.02.03 +- + spec_id: 3042 + spec_code: 19.02.04 +- + spec_id: 3043 + spec_code: 19.02.05 +- + spec_id: 3044 + spec_code: 19.02.06 +- + spec_id: 3045 + spec_code: 19.02.07 +- + spec_id: 3046 + spec_code: 19.02.08 +- + spec_id: 3047 + spec_code: 19.02.09 +- + spec_id: 3048 + spec_code: 19.02.10 +- + spec_id: 5572 + spec_code: 19.02.11 +- + spec_id: 5573 + spec_code: 19.02.12 +- + spec_id: 5574 + spec_code: 19.02.13 +- + spec_id: 5575 + spec_code: 19.02.14 +- + spec_id: 5576 + spec_code: 19.02.15 +- + spec_id: 3257 + spec_code: 19.03.01 +- + spec_id: 3258 + spec_code: 19.03.02 +- + spec_id: 3259 + spec_code: 19.03.03 +- + spec_id: 3260 + spec_code: 19.03.04 +- + spec_id: 3532 + spec_code: 19.04.01 +- + spec_id: 3533 + spec_code: 19.04.02 +- + spec_id: 3534 + spec_code: 19.04.03 +- + spec_id: 3535 + spec_code: 19.04.04 +- + spec_id: 3536 + spec_code: 19.04.05 +- + spec_id: 3834 + spec_code: 20.01.01 +- + spec_id: 3049 + spec_code: 20.02.01 +- + spec_id: 3050 + spec_code: 20.02.02 +- + spec_id: 3051 + spec_code: 20.02.03 +- + spec_id: 3052 + spec_code: 20.02.04 +- + spec_id: 5577 + spec_code: 20.02.05 +- + spec_id: 5578 + spec_code: 20.02.06 +- + spec_id: 3261 + spec_code: 20.03.01 +- + spec_id: 3262 + spec_code: 20.03.02 +- + spec_id: 3537 + spec_code: 20.04.01 +- + spec_id: 3538 + spec_code: 20.04.02 +- + spec_id: 3405 + spec_code: 20.05.01 +- + spec_id: 3835 + spec_code: 21.01.01 +- + spec_id: 3836 + spec_code: 21.01.02 +- + spec_id: 3837 + spec_code: 21.01.03 +- + spec_id: 3838 + spec_code: 21.01.04 +- + spec_id: 3839 + spec_code: 21.01.05 +- + spec_id: 3840 + spec_code: 21.01.06 +- + spec_id: 3841 + spec_code: 21.01.07 +- + spec_id: 3842 + spec_code: 21.01.08 +- + spec_id: 3843 + spec_code: 21.01.09 +- + spec_id: 3844 + spec_code: 21.01.10 +- + spec_id: 3845 + spec_code: 21.01.11 +- + spec_id: 3846 + spec_code: 21.01.12 +- + spec_id: 3847 + spec_code: 21.01.13 +- + spec_id: 3848 + spec_code: 21.01.14 +- + spec_id: 3849 + spec_code: 21.01.15 +- + spec_id: 3850 + spec_code: 21.01.16 +- + spec_id: 3053 + spec_code: 21.02.01 +- + spec_id: 3054 + spec_code: 21.02.02 +- + spec_id: 3055 + spec_code: 21.02.03 +- + spec_id: 3056 + spec_code: 21.02.04 +- + spec_id: 3057 + spec_code: 21.02.05 +- + spec_id: 3058 + spec_code: 21.02.06 +- + spec_id: 3059 + spec_code: 21.02.07 +- + spec_id: 3060 + spec_code: 21.02.08 +- + spec_id: 3061 + spec_code: 21.02.09 +- + spec_id: 3062 + spec_code: 21.02.10 +- + spec_id: 3063 + spec_code: 21.02.11 +- + spec_id: 3064 + spec_code: 21.02.12 +- + spec_id: 3065 + spec_code: 21.02.13 +- + spec_id: 3066 + spec_code: 21.02.14 +- + spec_id: 3067 + spec_code: 21.02.15 +- + spec_id: 3068 + spec_code: 21.02.16 +- + spec_id: 3069 + spec_code: 21.02.17 +- + spec_id: 3070 + spec_code: 21.02.18 +- + spec_id: 5579 + spec_code: 21.02.19 +- + spec_id: 5580 + spec_code: 21.02.20 +- + spec_id: 3263 + spec_code: 21.03.01 +- + spec_id: 3264 + spec_code: 21.03.02 +- + spec_id: 3265 + spec_code: 21.03.03 +- + spec_id: 3539 + spec_code: 21.04.01 +- + spec_id: 3540 + spec_code: 21.04.02 +- + spec_id: 3541 + spec_code: 21.04.03 +- + spec_id: 3406 + spec_code: 21.05.01 +- + spec_id: 3407 + spec_code: 21.05.02 +- + spec_id: 3408 + spec_code: 21.05.03 +- + spec_id: 3409 + spec_code: 21.05.04 +- + spec_id: 3410 + spec_code: 21.05.05 +- + spec_id: 3662 + spec_code: 21.05.06 +- + spec_id: 3851 + spec_code: 22.01.01 +- + spec_id: 3852 + spec_code: 22.01.02 +- + spec_id: 3853 + spec_code: 22.01.03 +- + spec_id: 3854 + spec_code: 22.01.04 +- + spec_id: 3855 + spec_code: 22.01.05 +- + spec_id: 3856 + spec_code: 22.01.06 +- + spec_id: 3857 + spec_code: 22.01.07 +- + spec_id: 3858 + spec_code: 22.01.08 +- + spec_id: 3859 + spec_code: 22.01.09 +- + spec_id: 3860 + spec_code: 22.01.10 +- + spec_id: 3071 + spec_code: 22.02.01 +- + spec_id: 3072 + spec_code: 22.02.02 +- + spec_id: 3073 + spec_code: 22.02.03 +- + spec_id: 3074 + spec_code: 22.02.04 +- + spec_id: 3075 + spec_code: 22.02.05 +- + spec_id: 3076 + spec_code: 22.02.06 +- + spec_id: 3077 + spec_code: 22.02.07 +- + spec_id: 3266 + spec_code: 22.03.01 +- + spec_id: 3267 + spec_code: 22.03.02 +- + spec_id: 3542 + spec_code: 22.04.01 +- + spec_id: 3543 + spec_code: 22.04.02 +- + spec_id: 3861 + spec_code: 23.01.01 +- + spec_id: 3862 + spec_code: 23.01.02 +- + spec_id: 3863 + spec_code: 23.01.03 +- + spec_id: 3864 + spec_code: 23.01.04 +- + spec_id: 3865 + spec_code: 23.01.05 +- + spec_id: 3866 + spec_code: 23.01.06 +- + spec_id: 3867 + spec_code: 23.01.07 +- + spec_id: 3868 + spec_code: 23.01.08 +- + spec_id: 3869 + spec_code: 23.01.09 +- + spec_id: 3870 + spec_code: 23.01.10 +- + spec_id: 3871 + spec_code: 23.01.11 +- + spec_id: 3872 + spec_code: 23.01.12 +- + spec_id: 3873 + spec_code: 23.01.13 +- + spec_id: 3874 + spec_code: 23.01.14 +- + spec_id: 3875 + spec_code: 23.01.15 +- + spec_id: 3876 + spec_code: 23.01.16 +- + spec_id: 3877 + spec_code: 23.01.17 +- + spec_id: 3078 + spec_code: 23.02.01 +- + spec_id: 3079 + spec_code: 23.02.02 +- + spec_id: 3080 + spec_code: 23.02.03 +- + spec_id: 3081 + spec_code: 23.02.04 +- + spec_id: 3082 + spec_code: 23.02.05 +- + spec_id: 3083 + spec_code: 23.02.06 +- + spec_id: 5049 + spec_code: 23.02.07 +- + spec_id: 3268 + spec_code: 23.03.01 +- + spec_id: 3269 + spec_code: 23.03.02 +- + spec_id: 3270 + spec_code: 23.03.03 +- + spec_id: 3544 + spec_code: 23.04.01 +- + spec_id: 3545 + spec_code: 23.04.02 +- + spec_id: 3546 + spec_code: 23.04.03 +- + spec_id: 3411 + spec_code: 23.05.01 +- + spec_id: 3412 + spec_code: 23.05.02 +- + spec_id: 3413 + spec_code: 23.05.03 +- + spec_id: 3414 + spec_code: 23.05.04 +- + spec_id: 3415 + spec_code: 23.05.05 +- + spec_id: 3385 + spec_code: 23.05.06 +- + spec_id: 3878 + spec_code: 24.01.01 +- + spec_id: 3879 + spec_code: 24.01.02 +- + spec_id: 3880 + spec_code: 24.01.03 +- + spec_id: 3881 + spec_code: 24.01.04 +- + spec_id: 3084 + spec_code: 24.02.01 +- + spec_id: 3085 + spec_code: 24.02.02 +- + spec_id: 3086 + spec_code: 24.02.03 +- + spec_id: 3271 + spec_code: 24.03.01 +- + spec_id: 3272 + spec_code: 24.03.02 +- + spec_id: 3273 + spec_code: 24.03.03 +- + spec_id: 3274 + spec_code: 24.03.04 +- + spec_id: 3275 + spec_code: 24.03.05 +- + spec_id: 3547 + spec_code: 24.04.01 +- + spec_id: 3548 + spec_code: 24.04.02 +- + spec_id: 3549 + spec_code: 24.04.03 +- + spec_id: 3550 + spec_code: 24.04.04 +- + spec_id: 3551 + spec_code: 24.04.05 +- + spec_id: 3416 + spec_code: 24.05.01 +- + spec_id: 3417 + spec_code: 24.05.02 +- + spec_id: 3418 + spec_code: 24.05.03 +- + spec_id: 3419 + spec_code: 24.05.04 +- + spec_id: 3420 + spec_code: 24.05.05 +- + spec_id: 3421 + spec_code: 24.05.06 +- + spec_id: 3422 + spec_code: 24.05.07 +- + spec_id: 3087 + spec_code: 25.02.01 +- + spec_id: 3088 + spec_code: 25.02.02 +- + spec_id: 3089 + spec_code: 25.02.03 +- + spec_id: 3090 + spec_code: 25.02.04 +- + spec_id: 3091 + spec_code: 25.02.05 +- + spec_id: 5050 + spec_code: 25.02.06 +- + spec_id: 5051 + spec_code: 25.02.07 +- + spec_id: 5052 + spec_code: 25.02.08 +- + spec_id: 5581 + spec_code: 25.02.09 +- + spec_id: 3276 + spec_code: 25.03.01 +- + spec_id: 3277 + spec_code: 25.03.02 +- + spec_id: 3278 + spec_code: 25.03.03 +- + spec_id: 3279 + spec_code: 25.03.04 +- + spec_id: 3552 + spec_code: 25.04.01 +- + spec_id: 3553 + spec_code: 25.04.02 +- + spec_id: 3554 + spec_code: 25.04.03 +- + spec_id: 3555 + spec_code: 25.04.04 +- + spec_id: 3423 + spec_code: 25.05.01 +- + spec_id: 3424 + spec_code: 25.05.02 +- + spec_id: 3425 + spec_code: 25.05.03 +- + spec_id: 3426 + spec_code: 25.05.04 +- + spec_id: 3427 + spec_code: 25.05.05 +- + spec_id: 3882 + spec_code: 26.01.01 +- + spec_id: 3883 + spec_code: 26.01.02 +- + spec_id: 3884 + spec_code: 26.01.03 +- + spec_id: 3885 + spec_code: 26.01.04 +- + spec_id: 3886 + spec_code: 26.01.05 +- + spec_id: 3887 + spec_code: 26.01.06 +- + spec_id: 3888 + spec_code: 26.01.07 +- + spec_id: 3889 + spec_code: 26.01.08 +- + spec_id: 3890 + spec_code: 26.01.09 +- + spec_id: 3891 + spec_code: 26.01.10 +- + spec_id: 3892 + spec_code: 26.01.11 +- + spec_id: 3893 + spec_code: 26.01.12 +- + spec_id: 3894 + spec_code: 26.01.13 +- + spec_id: 3092 + spec_code: 26.02.01 +- + spec_id: 3093 + spec_code: 26.02.02 +- + spec_id: 3094 + spec_code: 26.02.03 +- + spec_id: 3095 + spec_code: 26.02.04 +- + spec_id: 3096 + spec_code: 26.02.05 +- + spec_id: 3097 + spec_code: 26.02.06 +- + spec_id: 3280 + spec_code: 26.03.01 +- + spec_id: 3281 + spec_code: 26.03.02 +- + spec_id: 5171 + spec_code: 26.03.03 +- + spec_id: 3556 + spec_code: 26.04.01 +- + spec_id: 3557 + spec_code: 26.04.02 +- + spec_id: 3428 + spec_code: 26.05.01 +- + spec_id: 3429 + spec_code: 26.05.02 +- + spec_id: 3430 + spec_code: 26.05.03 +- + spec_id: 3431 + spec_code: 26.05.04 +- + spec_id: 3432 + spec_code: 26.05.05 +- + spec_id: 3433 + spec_code: 26.05.06 +- + spec_id: 3434 + spec_code: 26.05.07 +- + spec_id: 5606 + spec_code: 27.01.01 +- + spec_id: 3098 + spec_code: 27.02.01 +- + spec_id: 3099 + spec_code: 27.02.02 +- + spec_id: 3100 + spec_code: 27.02.03 +- + spec_id: 3101 + spec_code: 27.02.04 +- + spec_id: 3102 + spec_code: 27.02.05 +- + spec_id: 5053 + spec_code: 27.02.06 +- + spec_id: 5031 + spec_code: 27.02.07 +- + spec_id: 3282 + spec_code: 27.03.01 +- + spec_id: 3283 + spec_code: 27.03.02 +- + spec_id: 3284 + spec_code: 27.03.03 +- + spec_id: 3285 + spec_code: 27.03.04 +- + spec_id: 3286 + spec_code: 27.03.05 +- + spec_id: 3558 + spec_code: 27.04.01 +- + spec_id: 3559 + spec_code: 27.04.02 +- + spec_id: 3560 + spec_code: 27.04.03 +- + spec_id: 3561 + spec_code: 27.04.04 +- + spec_id: 3562 + spec_code: 27.04.05 +- + spec_id: 3563 + spec_code: 27.04.06 +- + spec_id: 3564 + spec_code: 27.04.07 +- + spec_id: 3565 + spec_code: 27.04.08 +- + spec_id: 3435 + spec_code: 27.05.01 +- + spec_id: 5563 + spec_code: 27.05.02 +- + spec_id: 3287 + spec_code: 28.03.01 +- + spec_id: 3288 + spec_code: 28.03.02 +- + spec_id: 3289 + spec_code: 28.03.03 +- + spec_id: 3566 + spec_code: 28.04.01 +- + spec_id: 3567 + spec_code: 28.04.02 +- + spec_id: 3568 + spec_code: 28.04.03 +- + spec_id: 3569 + spec_code: 28.04.04 +- + spec_id: 3895 + spec_code: 29.01.01 +- + spec_id: 3896 + spec_code: 29.01.02 +- + spec_id: 3897 + spec_code: 29.01.03 +- + spec_id: 3898 + spec_code: 29.01.04 +- + spec_id: 3899 + spec_code: 29.01.05 +- + spec_id: 3900 + spec_code: 29.01.06 +- + spec_id: 3901 + spec_code: 29.01.07 +- + spec_id: 3902 + spec_code: 29.01.08 +- + spec_id: 3903 + spec_code: 29.01.09 +- + spec_id: 3904 + spec_code: 29.01.10 +- + spec_id: 3905 + spec_code: 29.01.11 +- + spec_id: 3906 + spec_code: 29.01.12 +- + spec_id: 3907 + spec_code: 29.01.13 +- + spec_id: 3908 + spec_code: 29.01.14 +- + spec_id: 3909 + spec_code: 29.01.15 +- + spec_id: 3910 + spec_code: 29.01.16 +- + spec_id: 3911 + spec_code: 29.01.17 +- + spec_id: 3912 + spec_code: 29.01.18 +- + spec_id: 3913 + spec_code: 29.01.19 +- + spec_id: 3914 + spec_code: 29.01.20 +- + spec_id: 3915 + spec_code: 29.01.21 +- + spec_id: 3916 + spec_code: 29.01.22 +- + spec_id: 3917 + spec_code: 29.01.23 +- + spec_id: 3918 + spec_code: 29.01.24 +- + spec_id: 3919 + spec_code: 29.01.25 +- + spec_id: 3920 + spec_code: 29.01.26 +- + spec_id: 3921 + spec_code: 29.01.27 +- + spec_id: 3922 + spec_code: 29.01.28 +- + spec_id: 3923 + spec_code: 29.01.29 +- + spec_id: 3924 + spec_code: 29.01.30 +- + spec_id: 3103 + spec_code: 29.02.01 +- + spec_id: 3104 + spec_code: 29.02.02 +- + spec_id: 3105 + spec_code: 29.02.03 +- + spec_id: 3106 + spec_code: 29.02.04 +- + spec_id: 3107 + spec_code: 29.02.05 +- + spec_id: 3108 + spec_code: 29.02.06 +- + spec_id: 3109 + spec_code: 29.02.07 +- + spec_id: 3110 + spec_code: 29.02.08 +- + spec_id: 5054 + spec_code: 29.02.09 +- + spec_id: 5582 + spec_code: 29.02.10 +- + spec_id: 3290 + spec_code: 29.03.01 +- + spec_id: 3291 + spec_code: 29.03.02 +- + spec_id: 3292 + spec_code: 29.03.03 +- + spec_id: 3293 + spec_code: 29.03.04 +- + spec_id: 3294 + spec_code: 29.03.05 +- + spec_id: 3570 + spec_code: 29.04.01 +- + spec_id: 3571 + spec_code: 29.04.02 +- + spec_id: 3572 + spec_code: 29.04.03 +- + spec_id: 3573 + spec_code: 29.04.04 +- + spec_id: 3574 + spec_code: 29.04.05 +- + spec_id: 3436 + spec_code: 30.05.01 +- + spec_id: 3437 + spec_code: 30.05.02 +- + spec_id: 3438 + spec_code: 30.05.03 +- + spec_id: 3111 + spec_code: 31.02.01 +- + spec_id: 3112 + spec_code: 31.02.02 +- + spec_id: 3113 + spec_code: 31.02.03 +- + spec_id: 3114 + spec_code: 31.02.04 +- + spec_id: 3115 + spec_code: 31.02.05 +- + spec_id: 3116 + spec_code: 31.02.06 +- + spec_id: 3439 + spec_code: 31.05.01 +- + spec_id: 3440 + spec_code: 31.05.02 +- + spec_id: 3441 + spec_code: 31.05.03 +- + spec_id: 5061 + spec_code: 31.05.04 +- + spec_id: 3117 + spec_code: 32.02.01 +- + spec_id: 3575 + spec_code: 32.04.01 +- + spec_id: 3442 + spec_code: 32.05.01 +- + spec_id: 3118 + spec_code: 33.02.01 +- + spec_id: 3680 + spec_code: 33.04.01 +- + spec_id: 3443 + spec_code: 33.05.01 +- + spec_id: 3925 + spec_code: 34.01.01 +- + spec_id: 3119 + spec_code: 34.02.01 +- + spec_id: 3120 + spec_code: 34.02.02 +- + spec_id: 3295 + spec_code: 34.03.01 +- + spec_id: 5181 + spec_code: 34.04.01 +- + spec_id: 3926 + spec_code: 35.01.01 +- + spec_id: 3927 + spec_code: 35.01.02 +- + spec_id: 3928 + spec_code: 35.01.03 +- + spec_id: 3929 + spec_code: 35.01.04 +- + spec_id: 3930 + spec_code: 35.01.05 +- + spec_id: 3931 + spec_code: 35.01.06 +- + spec_id: 3932 + spec_code: 35.01.07 +- + spec_id: 3933 + spec_code: 35.01.08 +- + spec_id: 3934 + spec_code: 35.01.09 +- + spec_id: 3935 + spec_code: 35.01.10 +- + spec_id: 3936 + spec_code: 35.01.11 +- + spec_id: 3937 + spec_code: 35.01.12 +- + spec_id: 3938 + spec_code: 35.01.13 +- + spec_id: 3939 + spec_code: 35.01.14 +- + spec_id: 3940 + spec_code: 35.01.15 +- + spec_id: 3941 + spec_code: 35.01.16 +- + spec_id: 3942 + spec_code: 35.01.17 +- + spec_id: 3943 + spec_code: 35.01.18 +- + spec_id: 3944 + spec_code: 35.01.19 +- + spec_id: 3945 + spec_code: 35.01.20 +- + spec_id: 3946 + spec_code: 35.01.21 +- + spec_id: 3947 + spec_code: 35.01.22 +- + spec_id: 3948 + spec_code: 35.01.23 +- + spec_id: 3949 + spec_code: 35.01.24 +- + spec_id: 5607 + spec_code: 35.01.25 +- + spec_id: 5608 + spec_code: 35.01.26 +- + spec_id: 5609 + spec_code: 35.01.27 +- + spec_id: 5610 + spec_code: 35.01.28 +- + spec_id: 5611 + spec_code: 35.01.29 +- + spec_id: 5612 + spec_code: 35.01.30 +- + spec_id: 3121 + spec_code: 35.02.01 +- + spec_id: 3122 + spec_code: 35.02.02 +- + spec_id: 3123 + spec_code: 35.02.03 +- + spec_id: 3124 + spec_code: 35.02.04 +- + spec_id: 3125 + spec_code: 35.02.05 +- + spec_id: 3126 + spec_code: 35.02.06 +- + spec_id: 3127 + spec_code: 35.02.07 +- + spec_id: 3128 + spec_code: 35.02.08 +- + spec_id: 3129 + spec_code: 35.02.09 +- + spec_id: 3130 + spec_code: 35.02.10 +- + spec_id: 3131 + spec_code: 35.02.11 +- + spec_id: 3132 + spec_code: 35.02.12 +- + spec_id: 3133 + spec_code: 35.02.13 +- + spec_id: 3134 + spec_code: 35.02.14 +- + spec_id: 3135 + spec_code: 35.02.15 +- + spec_id: 5055 + spec_code: 35.02.16 +- + spec_id: 5583 + spec_code: 35.02.17 +- + spec_id: 3296 + spec_code: 35.03.01 +- + spec_id: 3297 + spec_code: 35.03.02 +- + spec_id: 3298 + spec_code: 35.03.03 +- + spec_id: 3299 + spec_code: 35.03.04 +- + spec_id: 3300 + spec_code: 35.03.05 +- + spec_id: 3301 + spec_code: 35.03.06 +- + spec_id: 3302 + spec_code: 35.03.07 +- + spec_id: 3303 + spec_code: 35.03.08 +- + spec_id: 3304 + spec_code: 35.03.09 +- + spec_id: 3305 + spec_code: 35.03.10 +- + spec_id: 3677 + spec_code: 35.03.11 +- + spec_id: 3576 + spec_code: 35.04.01 +- + spec_id: 3577 + spec_code: 35.04.02 +- + spec_id: 3578 + spec_code: 35.04.03 +- + spec_id: 3579 + spec_code: 35.04.04 +- + spec_id: 3580 + spec_code: 35.04.05 +- + spec_id: 3581 + spec_code: 35.04.06 +- + spec_id: 3582 + spec_code: 35.04.07 +- + spec_id: 3583 + spec_code: 35.04.08 +- + spec_id: 3584 + spec_code: 35.04.09 +- + spec_id: 3681 + spec_code: 35.04.10 +- + spec_id: 3950 + spec_code: 36.01.01 +- + spec_id: 3951 + spec_code: 36.01.02 +- + spec_id: 3952 + spec_code: 36.01.03 +- + spec_id: 3136 + spec_code: 36.02.01 +- + spec_id: 3137 + spec_code: 36.02.02 +- + spec_id: 3306 + spec_code: 36.03.01 +- + spec_id: 3307 + spec_code: 36.03.02 +- + spec_id: 3585 + spec_code: 36.04.01 +- + spec_id: 3586 + spec_code: 36.04.02 +- + spec_id: 3444 + spec_code: 36.05.01 +- + spec_id: 3308 + spec_code: 37.03.01 +- + spec_id: 3309 + spec_code: 37.03.02 +- + spec_id: 3587 + spec_code: 37.04.01 +- + spec_id: 3588 + spec_code: 37.04.02 +- + spec_id: 3445 + spec_code: 37.05.01 +- + spec_id: 3446 + spec_code: 37.05.02 +- + spec_id: 3953 + spec_code: 38.01.01 +- + spec_id: 3954 + spec_code: 38.01.02 +- + spec_id: 3955 + spec_code: 38.01.03 +- + spec_id: 3138 + spec_code: 38.02.01 +- + spec_id: 3139 + spec_code: 38.02.02 +- + spec_id: 3140 + spec_code: 38.02.03 +- + spec_id: 3141 + spec_code: 38.02.04 +- + spec_id: 3142 + spec_code: 38.02.05 +- + spec_id: 3143 + spec_code: 38.02.06 +- + spec_id: 3144 + spec_code: 38.02.07 +- + spec_id: 3310 + spec_code: 38.03.01 +- + spec_id: 3311 + spec_code: 38.03.02 +- + spec_id: 3312 + spec_code: 38.03.03 +- + spec_id: 3313 + spec_code: 38.03.04 +- + spec_id: 3314 + spec_code: 38.03.05 +- + spec_id: 3315 + spec_code: 38.03.06 +- + spec_id: 3316 + spec_code: 38.03.07 +- + spec_id: 3672 + spec_code: 38.03.10 +- + spec_id: 3589 + spec_code: 38.04.01 +- + spec_id: 3590 + spec_code: 38.04.02 +- + spec_id: 3591 + spec_code: 38.04.03 +- + spec_id: 3592 + spec_code: 38.04.04 +- + spec_id: 3593 + spec_code: 38.04.05 +- + spec_id: 3594 + spec_code: 38.04.06 +- + spec_id: 3595 + spec_code: 38.04.07 +- + spec_id: 3596 + spec_code: 38.04.08 +- + spec_id: 3597 + spec_code: 38.04.09 +- + spec_id: 3673 + spec_code: 38.04.10 +- + spec_id: 3447 + spec_code: 38.05.01 +- + spec_id: 3448 + spec_code: 38.05.02 +- + spec_id: 3956 + spec_code: 39.01.01 +- + spec_id: 3145 + spec_code: 39.02.01 +- + spec_id: 3146 + spec_code: 39.02.02 +- + spec_id: 5584 + spec_code: 39.02.03 +- + spec_id: 3317 + spec_code: 39.03.01 +- + spec_id: 3318 + spec_code: 39.03.02 +- + spec_id: 3319 + spec_code: 39.03.03 +- + spec_id: 3598 + spec_code: 39.04.01 +- + spec_id: 3599 + spec_code: 39.04.02 +- + spec_id: 3600 + spec_code: 39.04.03 +- + spec_id: 3147 + spec_code: 40.02.01 +- + spec_id: 3148 + spec_code: 40.02.02 +- + spec_id: 3149 + spec_code: 40.02.03 +- + spec_id: 5585 + spec_code: 40.02.04 +- + spec_id: 3320 + spec_code: 40.03.01 +- + spec_id: 3601 + spec_code: 40.04.01 +- + spec_id: 3449 + spec_code: 40.05.01 +- + spec_id: 3450 + spec_code: 40.05.02 +- + spec_id: 3451 + spec_code: 40.05.03 +- + spec_id: 3678 + spec_code: 40.05.04 +- + spec_id: 3321 + spec_code: 41.03.01 +- + spec_id: 3322 + spec_code: 41.03.02 +- + spec_id: 3323 + spec_code: 41.03.03 +- + spec_id: 3324 + spec_code: 41.03.04 +- + spec_id: 3325 + spec_code: 41.03.05 +- + spec_id: 3326 + spec_code: 41.03.06 +- + spec_id: 3602 + spec_code: 41.04.01 +- + spec_id: 3603 + spec_code: 41.04.02 +- + spec_id: 3604 + spec_code: 41.04.03 +- + spec_id: 3605 + spec_code: 41.04.04 +- + spec_id: 3606 + spec_code: 41.04.05 +- + spec_id: 5182 + spec_code: 41.04.06 +- + spec_id: 3957 + spec_code: 42.01.01 +- + spec_id: 3150 + spec_code: 42.02.01 +- + spec_id: 3151 + spec_code: 42.02.02 +- + spec_id: 3327 + spec_code: 42.03.01 +- + spec_id: 3328 + spec_code: 42.03.02 +- + spec_id: 3329 + spec_code: 42.03.03 +- + spec_id: 3330 + spec_code: 42.03.04 +- + spec_id: 3331 + spec_code: 42.03.05 +- + spec_id: 3607 + spec_code: 42.04.01 +- + spec_id: 3608 + spec_code: 42.04.02 +- + spec_id: 3609 + spec_code: 42.04.03 +- + spec_id: 3610 + spec_code: 42.04.04 +- + spec_id: 3611 + spec_code: 42.04.05 +- + spec_id: 3958 + spec_code: 43.01.01 +- + spec_id: 3959 + spec_code: 43.01.02 +- + spec_id: 3960 + spec_code: 43.01.03 +- + spec_id: 3961 + spec_code: 43.01.04 +- + spec_id: 3962 + spec_code: 43.01.05 +- + spec_id: 3963 + spec_code: 43.01.06 +- + spec_id: 3964 + spec_code: 43.01.07 +- + spec_id: 3965 + spec_code: 43.01.08 +- + spec_id: 3966 + spec_code: 43.01.09 +- + spec_id: 3152 + spec_code: 43.02.01 +- + spec_id: 3153 + spec_code: 43.02.02 +- + spec_id: 3154 + spec_code: 43.02.03 +- + spec_id: 3155 + spec_code: 43.02.04 +- + spec_id: 3156 + spec_code: 43.02.05 +- + spec_id: 3157 + spec_code: 43.02.06 +- + spec_id: 3158 + spec_code: 43.02.07 +- + spec_id: 3159 + spec_code: 43.02.08 +- + spec_id: 3160 + spec_code: 43.02.09 +- + spec_id: 3161 + spec_code: 43.02.10 +- + spec_id: 3162 + spec_code: 43.02.11 +- + spec_id: 5056 + spec_code: 43.02.12 +- + spec_id: 5057 + spec_code: 43.02.13 +- + spec_id: 5058 + spec_code: 43.02.14 +- + spec_id: 5059 + spec_code: 43.02.15 +- + spec_id: 5586 + spec_code: 43.02.16 +- + spec_id: 5587 + spec_code: 43.02.17 +- + spec_id: 3332 + spec_code: 43.03.01 +- + spec_id: 3333 + spec_code: 43.03.02 +- + spec_id: 3334 + spec_code: 43.03.03 +- + spec_id: 3612 + spec_code: 43.04.01 +- + spec_id: 3613 + spec_code: 43.04.02 +- + spec_id: 3614 + spec_code: 43.04.03 +- + spec_id: 3163 + spec_code: 44.02.01 +- + spec_id: 3164 + spec_code: 44.02.02 +- + spec_id: 3165 + spec_code: 44.02.03 +- + spec_id: 3166 + spec_code: 44.02.04 +- + spec_id: 3167 + spec_code: 44.02.05 +- + spec_id: 3168 + spec_code: 44.02.06 +- + spec_id: 3335 + spec_code: 44.03.01 +- + spec_id: 3336 + spec_code: 44.03.02 +- + spec_id: 3337 + spec_code: 44.03.03 +- + spec_id: 3338 + spec_code: 44.03.04 +- + spec_id: 3339 + spec_code: 44.03.05 +- + spec_id: 3615 + spec_code: 44.04.01 +- + spec_id: 3616 + spec_code: 44.04.02 +- + spec_id: 3617 + spec_code: 44.04.03 +- + spec_id: 3618 + spec_code: 44.04.04 +- + spec_id: 3452 + spec_code: 44.05.01 +- + spec_id: 3340 + spec_code: 45.03.01 +- + spec_id: 3341 + spec_code: 45.03.02 +- + spec_id: 3342 + spec_code: 45.03.03 +- + spec_id: 3343 + spec_code: 45.03.04 +- + spec_id: 3619 + spec_code: 45.04.01 +- + spec_id: 3620 + spec_code: 45.04.02 +- + spec_id: 3621 + spec_code: 45.04.03 +- + spec_id: 3622 + spec_code: 45.04.04 +- + spec_id: 3453 + spec_code: 45.05.01 +- + spec_id: 3967 + spec_code: 46.01.01 +- + spec_id: 3968 + spec_code: 46.01.02 +- + spec_id: 3969 + spec_code: 46.01.03 +- + spec_id: 3169 + spec_code: 46.02.01 +- + spec_id: 3344 + spec_code: 46.03.01 +- + spec_id: 3345 + spec_code: 46.03.02 +- + spec_id: 3346 + spec_code: 46.03.03 +- + spec_id: 5172 + spec_code: 46.03.04 +- + spec_id: 3623 + spec_code: 46.04.01 +- + spec_id: 3624 + spec_code: 46.04.02 +- + spec_id: 3625 + spec_code: 46.04.03 +- + spec_id: 5183 + spec_code: 46.04.04 +- + spec_id: 3347 + spec_code: 47.03.01 +- + spec_id: 3348 + spec_code: 47.03.02 +- + spec_id: 3349 + spec_code: 47.03.03 +- + spec_id: 3626 + spec_code: 47.04.01 +- + spec_id: 3627 + spec_code: 47.04.02 +- + spec_id: 3628 + spec_code: 47.04.03 +- + spec_id: 3350 + spec_code: 48.03.01 +- + spec_id: 3629 + spec_code: 48.04.01 +- + spec_id: 3170 + spec_code: 49.02.01 +- + spec_id: 3171 + spec_code: 49.02.02 +- + spec_id: 5588 + spec_code: 49.02.03 +- + spec_id: 3351 + spec_code: 49.03.01 +- + spec_id: 3352 + spec_code: 49.03.02 +- + spec_id: 3353 + spec_code: 49.03.03 +- + spec_id: 5428 + spec_code: 49.03.04 +- + spec_id: 3630 + spec_code: 49.04.01 +- + spec_id: 3631 + spec_code: 49.04.02 +- + spec_id: 3632 + spec_code: 49.04.03 +- + spec_id: 3172 + spec_code: 50.02.01 +- + spec_id: 3354 + spec_code: 50.03.01 +- + spec_id: 3355 + spec_code: 50.03.02 +- + spec_id: 3356 + spec_code: 50.03.03 +- + spec_id: 3357 + spec_code: 50.03.04 +- + spec_id: 3633 + spec_code: 50.04.01 +- + spec_id: 3634 + spec_code: 50.04.02 +- + spec_id: 3635 + spec_code: 50.04.03 +- + spec_id: 3636 + spec_code: 50.04.04 +- + spec_id: 3173 + spec_code: 51.02.01 +- + spec_id: 3174 + spec_code: 51.02.02 +- + spec_id: 3175 + spec_code: 51.02.03 +- + spec_id: 3358 + spec_code: 51.03.01 +- + spec_id: 3359 + spec_code: 51.03.02 +- + spec_id: 3360 + spec_code: 51.03.03 +- + spec_id: 3361 + spec_code: 51.03.04 +- + spec_id: 3362 + spec_code: 51.03.05 +- + spec_id: 3363 + spec_code: 51.03.06 +- + spec_id: 3637 + spec_code: 51.04.01 +- + spec_id: 3638 + spec_code: 51.04.02 +- + spec_id: 3639 + spec_code: 51.04.03 +- + spec_id: 3640 + spec_code: 51.04.04 +- + spec_id: 3641 + spec_code: 51.04.05 +- + spec_id: 3642 + spec_code: 51.04.06 +- + spec_id: 3454 + spec_code: 51.05.01 +- + spec_id: 3176 + spec_code: 52.02.01 +- + spec_id: 3177 + spec_code: 52.02.02 +- + spec_id: 3178 + spec_code: 52.02.03 +- + spec_id: 3179 + spec_code: 52.02.04 +- + spec_id: 3180 + spec_code: 52.02.05 +- + spec_id: 3364 + spec_code: 52.03.01 +- + spec_id: 3365 + spec_code: 52.03.02 +- + spec_id: 3366 + spec_code: 52.03.03 +- + spec_id: 3367 + spec_code: 52.03.04 +- + spec_id: 3368 + spec_code: 52.03.05 +- + spec_id: 3369 + spec_code: 52.03.06 +- + spec_id: 3643 + spec_code: 52.04.01 +- + spec_id: 3644 + spec_code: 52.04.02 +- + spec_id: 3645 + spec_code: 52.04.03 +- + spec_id: 3455 + spec_code: 52.05.01 +- + spec_id: 3456 + spec_code: 52.05.02 +- + spec_id: 3457 + spec_code: 52.05.03 +- + spec_id: 3458 + spec_code: 52.05.04 +- + spec_id: 5613 + spec_code: 53.01.01 +- + spec_id: 3181 + spec_code: 53.02.01 +- + spec_id: 3182 + spec_code: 53.02.02 +- + spec_id: 3183 + spec_code: 53.02.03 +- + spec_id: 3184 + spec_code: 53.02.04 +- + spec_id: 3185 + spec_code: 53.02.05 +- + spec_id: 3186 + spec_code: 53.02.06 +- + spec_id: 3187 + spec_code: 53.02.07 +- + spec_id: 3188 + spec_code: 53.02.08 +- + spec_id: 3189 + spec_code: 53.02.09 +- + spec_id: 3370 + spec_code: 53.03.01 +- + spec_id: 3371 + spec_code: 53.03.02 +- + spec_id: 3372 + spec_code: 53.03.03 +- + spec_id: 3373 + spec_code: 53.03.04 +- + spec_id: 3374 + spec_code: 53.03.05 +- + spec_id: 3375 + spec_code: 53.03.06 +- + spec_id: 3646 + spec_code: 53.04.01 +- + spec_id: 3647 + spec_code: 53.04.02 +- + spec_id: 3648 + spec_code: 53.04.03 +- + spec_id: 3649 + spec_code: 53.04.04 +- + spec_id: 3650 + spec_code: 53.04.05 +- + spec_id: 3651 + spec_code: 53.04.06 +- + spec_id: 3459 + spec_code: 53.05.01 +- + spec_id: 3460 + spec_code: 53.05.02 +- + spec_id: 3461 + spec_code: 53.05.03 +- + spec_id: 3462 + spec_code: 53.05.04 +- + spec_id: 3463 + spec_code: 53.05.05 +- + spec_id: 3464 + spec_code: 53.05.06 +- + spec_id: 3465 + spec_code: 53.05.07 +- + spec_id: 3970 + spec_code: 54.01.01 +- + spec_id: 3971 + spec_code: 54.01.02 +- + spec_id: 3972 + spec_code: 54.01.03 +- + spec_id: 3973 + spec_code: 54.01.04 +- + spec_id: 3974 + spec_code: 54.01.05 +- + spec_id: 3975 + spec_code: 54.01.06 +- + spec_id: 3976 + spec_code: 54.01.07 +- + spec_id: 3977 + spec_code: 54.01.08 +- + spec_id: 3978 + spec_code: 54.01.09 +- + spec_id: 3979 + spec_code: 54.01.10 +- + spec_id: 3980 + spec_code: 54.01.11 +- + spec_id: 3981 + spec_code: 54.01.12 +- + spec_id: 3982 + spec_code: 54.01.13 +- + spec_id: 3983 + spec_code: 54.01.14 +- + spec_id: 3984 + spec_code: 54.01.15 +- + spec_id: 3985 + spec_code: 54.01.16 +- + spec_id: 3986 + spec_code: 54.01.17 +- + spec_id: 3987 + spec_code: 54.01.18 +- + spec_id: 3988 + spec_code: 54.01.19 +- + spec_id: 3989 + spec_code: 54.01.20 +- + spec_id: 3190 + spec_code: 54.02.01 +- + spec_id: 3191 + spec_code: 54.02.02 +- + spec_id: 3192 + spec_code: 54.02.03 +- + spec_id: 3193 + spec_code: 54.02.04 +- + spec_id: 3194 + spec_code: 54.02.05 +- + spec_id: 3195 + spec_code: 54.02.06 +- + spec_id: 3196 + spec_code: 54.02.07 +- + spec_id: 3197 + spec_code: 54.02.08 +- + spec_id: 3376 + spec_code: 54.03.01 +- + spec_id: 3377 + spec_code: 54.03.02 +- + spec_id: 3378 + spec_code: 54.03.03 +- + spec_id: 3379 + spec_code: 54.03.04 +- + spec_id: 5179 + spec_code: 54.03.05 +- + spec_id: 3652 + spec_code: 54.04.01 +- + spec_id: 3653 + spec_code: 54.04.02 +- + spec_id: 3654 + spec_code: 54.04.03 +- + spec_id: 3655 + spec_code: 54.04.04 +- + spec_id: 5184 + spec_code: 54.04.05 +- + spec_id: 3466 + spec_code: 54.05.01 +- + spec_id: 3467 + spec_code: 54.05.02 +- + spec_id: 3468 + spec_code: 54.05.03 +- + spec_id: 3469 + spec_code: 54.05.04 +- + spec_id: 3470 + spec_code: 54.05.05 +- + spec_id: 3990 + spec_code: 55.01.01 +- + spec_id: 3198 + spec_code: 55.02.01 +- + spec_id: 3199 + spec_code: 55.02.02 +- + spec_id: 5589 + spec_code: 55.02.03 +- + spec_id: 3471 + spec_code: 55.05.01 +- + spec_id: 3472 + spec_code: 55.05.02 +- + spec_id: 3473 + spec_code: 55.05.03 +- + spec_id: 3474 + spec_code: 55.05.04 +- + spec_id: 3475 + spec_code: 55.05.05 +- + spec_id: 3671 + spec_code: 56.05.02 +- + spec_id: 5564 + spec_code: 56.05.07 +- + spec_id: 3200 + spec_code: 57.02.01 +- + spec_id: 5180 + spec_code: 58.03.01 +- + spec_id: 5185 + spec_code: 58.04.01 diff --git a/scripts/contingent_parser.php b/scripts/contingent_parser.php index 58c0567..021a153 100644 --- a/scripts/contingent_parser.php +++ b/scripts/contingent_parser.php @@ -1,8 +1,8 @@ getSitesFromLog('sites-http.log'); $sites = $manager->getSites(); -// $sites = Yaml::parse(file_get_contents(dirname(__FILE__) ."/sites.yaml")); $start = 0; $end = count($sites); -// $start = 0; $end = (int)(count($sites) / 2); -// $start = (int)(count($sites) / 2); $end = count($sites); - for ($i = $start; $i < $end; $i++) { Printer::print(++$i . ". ", Color::GREEN); $manager->collectData($sites[--$i]); } Printer::println(); -try { - if (!file_exists(Repository::FILE_ADD_RECORDING)) { - throw new Exception( - "Файл " . Repository::FILE_ADD_RECORDING - . " не обнаружен. Дозапись в базу не требуется" - ); - } - - $contingent = Yaml::parse( - file_get_contents(SVEDEN_PARSER . '/' . Repository::FILE_ADD_RECORDING) - ); - $databaseFacade = new ContingentRepository(); - $databaseFacade->insert($contingent); - - Printer::println("Дозапись выполнена!", Color::BLUE); -} catch (\Exception $e) { - Printer::println($e->getMessage(), Color::RED); - exit(0); -} \ No newline at end of file +if (!file_exists(Repository::FILE_ADD_RECORDING)) { + Printer::println("Файл " . Repository::FILE_ADD_RECORDING . " не обнаружен. Дозапись в базу не требуется"); + exit; +} +$contingent = Yaml::parse(file_get_contents(SVEDEN_PARSER . '/' . Repository::FILE_ADD_RECORDING)); +(new ContingentRepository())->insert($contingent); +Printer::println("Дозапись выполнена!", Color::BLUE); diff --git a/scripts/convert_log_yaml.php b/scripts/convert_log_yaml.php new file mode 100644 index 0000000..16bba99 --- /dev/null +++ b/scripts/convert_log_yaml.php @@ -0,0 +1,19 @@ + (int)$site[0], + 'site' => trim($site[1]), + ]; +} + +$yaml = Yaml::dump($sites); +file_put_contents($filePath, $yaml); \ No newline at end of file diff --git a/scripts/counter.php b/scripts/counter.php new file mode 100644 index 0000000..c4d13a4 --- /dev/null +++ b/scripts/counter.php @@ -0,0 +1,28 @@ +getSites(); +Printer::println("All: " . count($allOrg), Color::GREEN); +$inDB = (new PriemRepository())->universities(); +Printer::println("In DB: " . count($inDB), Color::GREEN); +$docs = Yaml::parse(file_get_contents(SVEDEN_PARSER . "/data/doc.yaml")); +Printer::println("Docs: " . count($docs), Color::GREEN); +$remains = array_values(array_filter($allOrg, function($var) { + global $inDB, $docs; + return !in_array($var['org_id'], array_merge($inDB, array_column($docs, 'org_id'))); +})); +Printer::println("Remains: " . count($remains), Color::RED); +print_r($remains); + +$yaml = Yaml::dump($remains); +file_put_contents(SVEDEN_PARSER . "/data/remains.yaml", $yaml); + diff --git a/scripts/employees_parser.php b/scripts/employees_parser.php new file mode 100644 index 0000000..ecf03fe --- /dev/null +++ b/scripts/employees_parser.php @@ -0,0 +1,54 @@ +getSites(); +// $sites = Yaml::parse(file_get_contents(SVEDEN_PARSER . "/data/remains.yaml")); + +$start = 0; $end = count($sites); + +for ($i = $start; $i < $end; $i++) { + try { + Printer::print(++$i . ". ", Color::GREEN); + $manager->collectData($sites[--$i]); + } catch (HtmlException $e) { + $e->write($sites[$i]); + file_put_contents(SVEDEN_PARSER . '/log/doc.log', implode(' ', $sites[$i]) . PHP_EOL, FILE_APPEND); + } catch (\Exception $e) { + Printer::println($e->getMessage(), Color::RED); + } +} +Printer::println(); + +try { + if (!file_exists(Repository::FILE_ADD_RECORDING)) { + throw new Exception("Файл " . Repository::FILE_ADD_RECORDING . " не обнаружен. Дозапись в базу не требуется"); + } + + $employees = Yaml::parse(file_get_contents(Repository::FILE_ADD_RECORDING)); + $repository = new EmployeesRepository(); + $repository->insert($employees); + + Printer::println("Дозапись выполнена!", Color::BLUE); +} catch (\Exception $e) { + Printer::println($e->getMessage(), Color::RED); +} \ No newline at end of file diff --git a/scripts/priem_parser.php b/scripts/priem_parser.php index b4a2754..c628d17 100644 --- a/scripts/priem_parser.php +++ b/scripts/priem_parser.php @@ -1,46 +1,54 @@ getSites(); -// $sites = Yaml::parse(file_get_contents(dirname(__FILE__) ."/sites.yaml")); +// $sites = $manager->getSites(); +// $sites = Yaml::parse(file_get_contents(SVEDEN_PARSER . "/data/remains.yaml")); $start = 0; $end = count($sites); -// $start = 0; $end = (int)(count($sites) / 2); -// $start = (int)(count($sites) / 2); $end = count($sites); for ($i = $start; $i < $end; $i++) { - Printer::print(++$i . ". ", Color::GREEN); - $manager->collectData($sites[--$i]); + try { + Printer::print(++$i . ". ", Color::GREEN); + $manager->collectData($sites[--$i]); + } catch (HtmlException $e) { + $e->write($sites[$i]); + file_put_contents(SVEDEN_PARSER . '/log/doc.log', implode(' ', $sites[$i]) . PHP_EOL, FILE_APPEND); + } catch (\Exception $e) { + Printer::println($e->getMessage(), Color::RED); + } } Printer::println(); try { if (!file_exists(Repository::FILE_ADD_RECORDING)) { - throw new Exception( - "Файл " . Repository::FILE_ADD_RECORDING - . " не обнаружен. Дозапись в базу не требуется" - ); + throw new Exception("Файл " . Repository::FILE_ADD_RECORDING . " не обнаружен. Дозапись в базу не требуется"); } - $priem = Yaml::parse( - file_get_contents(SVEDEN_PARSER . '/' . Repository::FILE_ADD_RECORDING) - ); - $databaseFacade = new PriemRepository(); - $databaseFacade->insert($priem); + $priem = Yaml::parse(file_get_contents(Repository::FILE_ADD_RECORDING)); + $repository = new PriemRepository(); + $repository->insert($priem); - Printer::println("Дозапись выполнена!", Color::BLUE); + Printer::println("Дозапись выполнена!", Color::BLUE); } catch (\Exception $e) { Printer::println($e->getMessage(), Color::RED); - exit(0); } \ No newline at end of file diff --git a/scripts/test.php b/scripts/test.php new file mode 100644 index 0000000..57bd1c8 --- /dev/null +++ b/scripts/test.php @@ -0,0 +1,116 @@ +getHashs(410)); +// echo $rep->getCountRecords() . PHP_EOL; + +$dataInBase = [ + [ + 'spec_code' => '09.03.03', + 'spec_name' => 'Прикладная информатика', + 'edu_level' => 'Высшее образование - бакалавриат', + 'edu_forms' => 'Очная', + 'contingent' => 25, + 'spec_id' => 3228, + 'org_id' => 61297, + 'is_actual' => 1, + 'change_date' => '2024-10-25 10:10:10', + ], + [ + 'spec_code' => '09.03.03', + 'spec_name' => 'Прикладная информатика', + 'edu_level' => 'Высшее образование - бакалавриат', + 'edu_forms' => 'Очная', + 'contingent' => 21, + 'spec_id' => 3228, + 'org_id' => 61297, + 'is_actual' => 1, + 'change_date' => '2024-10-25 10:10:10', + ], +]; +// Printer::println("DATABASE", Color::GREEN); +Printer::print_r($dataInBase, Color::GREEN); + +$hashsMD5 = []; + + +array_multisort($dataInBase); +print_r($dataInBase); +exit; +foreach ($dataInBase as &$con) { + + +} +// echo 'HASHS' . PHP_EOL; +// print_r($hashsMD5); + +$dataInSite = [ + [ + 'spec_code' => '09.03.03', + 'spec_name' => 'Прикладная информатика', + 'edu_level' => 'Высшее образование - бакалавриат', + 'edu_forms' => 'Очная', + 'contingent' => 26, + 'spec_id' => 3228, + 'org_id' => 61297, + ], + [ + 'spec_code' => '09.03.04', + 'spec_name' => 'Программная инженерия', + 'edu_level' => 'Высшее образование - бакалавриат', + 'edu_forms' => 'Очная', + 'contingent' => 51, + 'spec_id' => 3229, + 'org_id' => 61297, + ], + [ + 'spec_code' => '09.03.01', + 'spec_name' => 'Информатика и вычислительная техника', + 'edu_level' => 'Высшее образование - бакалавриат', + 'edu_forms' => 'Очная', + 'contingent' => 34, + 'spec_id' => 3222, + 'org_id' => 61297, + ] +]; +Printer::println("VUZ", Color::BLUE); +Printer::print_r($dataInSite, Color::BLUE); +uasort($dataInSite, fn ($a, $b) => $a['spec_code'] <=> $b['spec_code']); + +Printer::print_r($dataInSite, Color::RED); + +$countDB = count($dataInBase); +$string = ''; +for ($i = 0; $i < count($dataInSite); $i++) { + $string .= implode(' ', $dataInSite[$i]); + // if (!in_array($hash, array_column($hashsMD5, 'data_hash'))) { + // if ($i < $countDB) { + // $dataInBase[$i]['is_actual'] = 0; + // } + // if (!isset($hashsMD5[$i])) { + // $hashsMD5[$i] = [ + // 'org_id' => 61297, + // 'sveden_table' => ContingentRepository::TABLE, + // 'data_hash' => $hash, + // ]; + // } else { + // $hashsMD5[$i]['data_hash'] = $hash; + // // } + // $dataInSite[$i]['is_actual'] = true; + // $dataInSite[$i]['change_date'] = date('Y-m-d H:i:s'); + // $dataInBase[] = $dataInSite[$i]; + // } +} +$hash = md5($string); +echo $hash . PHP_EOL; +// Printer::println("DATABASE", Color::GREEN); +// Printer::print_r($dataInBase, Color::GREEN); +// Printer::println("HASHS"); +// Printer::print_r($hashsMD5); \ No newline at end of file diff --git a/scripts/test_client.php b/scripts/test_client.php new file mode 100644 index 0000000..4c4b74f --- /dev/null +++ b/scripts/test_client.php @@ -0,0 +1,27 @@ +getContentOfSite('http://marsu.ru', [], '/sveden/education'); +// // $curl = new CurlHelper('https://www.rgiis.ru/sveden/education/', []); +// // $html = $curl->getContent(); +// // echo $html; +// $parser = new PriemParser($html); +// $data = $parser->getDataTable(); + +// (new ContingentService())->getData(html) +// print_r($data); +// // print_r(); +// (new ContingentRepository())->save($data); +$manager = new ContingentManager(); +$manager->collectData(['org_id' => 411, 'site' => 'http://marsu.ru']); \ No newline at end of file diff --git a/sql/create_table_sveden_eduacation_employees.sql b/sql/create_table_sveden_eduacation_employees.sql new file mode 100644 index 0000000..a7a37d0 --- /dev/null +++ b/sql/create_table_sveden_eduacation_employees.sql @@ -0,0 +1,8 @@ +CREATE TABLE sveden_education_employees ( + id INT DEFAULT AUTO_INCREMENT NOT NULL PRIMARY KEY, + org_id INT NULL, + fio TEXT NOT NULL COMMENT 'ФИО', + disciplines TEXT NOT NULL COMMENT 'Дисциплины', + update_date TIMESTAMP NOT NULL COMMENT 'Дата изменений', + is_actual BOOLEAN NOT NULL COMMENT 'Действительность данных' +); \ No newline at end of file diff --git a/sql/create_table_sveden_education_contingent.sql b/sql/create_table_sveden_education_contingent.sql index 7992f73..aabbf28 100644 --- a/sql/create_table_sveden_education_contingent.sql +++ b/sql/create_table_sveden_education_contingent.sql @@ -6,5 +6,8 @@ CREATE TABLE sveden_education_contingent( spec_name TEXT NULL COMMENT 'Наименование', edu_level TEXT NULL COMMENT 'Уровень образования', edu_forms TEXT NULL COMMENT 'Формы обучения', - contingent INT NOT NULL COMMENT 'Общая численность обучающихся' + contingent INT NOT NULL COMMENT 'Общая численность обучающихся', + data_hash VARCHAR(32) NOT NULL COMMENT 'Хэш записи', + update_date TIMESTAMP NOT NULL COMMENT 'Дата последних изменений', + is_actual BOOLEAN NOT NULL COMMENT 'Действительность данных' ); \ No newline at end of file diff --git a/sql/create_table_sveden_education_hashes.sql b/sql/create_table_sveden_education_hashes.sql new file mode 100644 index 0000000..a5d1fae --- /dev/null +++ b/sql/create_table_sveden_education_hashes.sql @@ -0,0 +1,6 @@ +CREATE TABLE sveden_education_hashes ( + id INT + org_id INT + data_hash VARCHAR(32) + sveden_table ENUM +); \ No newline at end of file diff --git a/sql/create_table_sveden_education_priem.sql b/sql/create_table_sveden_education_priem.sql new file mode 100644 index 0000000..0876f94 --- /dev/null +++ b/sql/create_table_sveden_education_priem.sql @@ -0,0 +1,15 @@ +CREATE TABLE sveden_education_priem( + id SERIAL NOT NULL PRIMARY KEY, + org_id INT NULL, + spec_id INT NULL, + spec_code VARCHAR(100) NULL COMMENT 'Код', + spec_name TEXT NULL COMMENT 'Наименование', + edu_level TEXT NULL COMMENT 'Уровень образования', + edu_forms TEXT NULL COMMENT 'Формы обучения', + contingent INT NOT NULL COMMENT 'Общая численность' + budget INT NOT NULL COMMENT 'Число бюджетных мест', + avg_score FLOAT NOT NULL COMMENT 'Средняя сумма баллов', + data_hash VARCHAR(32) NOT NULL COMMENT 'Хэш записи', + update_date TIMESTAMP NOT NULL COMMENT 'Дата последних изменений', + is_actual BOOLEAN NOT NULL COMMENT 'Действительность данных' +); \ No newline at end of file diff --git a/src/Color.php b/src/Color.php index 8db79c7..da6b921 100644 --- a/src/Color.php +++ b/src/Color.php @@ -8,6 +8,7 @@ enum Color : string case RED = "\033[91m"; case BLUE = "\033[94m"; case YELLOW = "\033[33m"; + case ORANGE = "\033[48m"; public function tostring(): string { diff --git a/src/ContingentParser/ContingentManager.php b/src/ContingentParser/ContingentManager.php index 477c870..01ecd51 100644 --- a/src/ContingentParser/ContingentManager.php +++ b/src/ContingentParser/ContingentManager.php @@ -1,5 +1,5 @@ allowInsertDb = false; $this->repository = new ContingentRepository(); $this->service = new ContingentService(); } @@ -30,57 +32,46 @@ final class ContingentManager extends Manager } list('org_id' => $orgId, 'site' => $url) = $site; $url = UrlBuilder::build($url); - Printer::println(implode(' ', $site), Color::GREEN); + Printer::println($orgId . ' ' . $url, Color::GREEN); - $html = $this->httpClient->getContentOfSite( - $url, - $site, - 'sveden/education/' - ); + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI); if (!$html) { return; } - $uri = $this->service->getLink($html); Printer::println($uri, Color::YELLOW); - - if ($uri) { - $pattern = '/^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/'; - if (preg_match($pattern, $uri)) { - $html = $this->httpClient->getContentOfSite( - $uri, - $site - ); - } else if (UrlBuilder::checkUri($uri)) { - if (0 === strpos($uri, '/')) { - $html = $this->httpClient->getContentOfSite( - $url, - $site, - $uri - ); - } else { - $html = $this->httpClient->getContentOfSite( - $url, - $site, - "sveden/education/$uri" - ); - } - - } - } - // Получаем данные таблицы численности + $contingent = $this->service->getData( $html, $this->repository->specialties(), $orgId ); - - if ($contingent - && $this->service->isValidData($contingent) - ) { + Printer::print_r($contingent, Color::BLUE); + if (!$contingent && $uri) { + if (UrlBuilder::isUrl($uri) && UrlBuilder::checkUri($uri)) { + $html = $this->httpClient->getContentOfSite($uri, $site); + } else if (UrlBuilder::checkUri($uri)) { + if (UrlBuilder::slashIsFirst($uri)) { + $html = $this->httpClient->getContentOfSite($url, $site, $uri); + } else { + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI."/$uri"); + } + } else { + // throw new HtmlException("Data in Document"); + return; + } + // Получаем данные таблицы приема + $contingent = $this->service->getData( + $html, + $this->repository->specialties(), + $orgId + ); + } + Printer::print_r($contingent, Color::BLUE); + if ($contingent && $this->service->isValidData($contingent) && $this->repository instanceof ContingentRepository) { // Заносим в базу Printer::print_r($contingent, Color::BLUE); - // $this->repository->insert($contingent); + $this->repository->save($contingent); } else { Printer::println("No result", Color::RED); $this->htmlLogger->log("$orgId $url"); diff --git a/src/ContingentParser/ContingentRepository.php b/src/ContingentParser/ContingentRepository.php index 4d7c1ce..693c00c 100644 --- a/src/ContingentParser/ContingentRepository.php +++ b/src/ContingentParser/ContingentRepository.php @@ -1,11 +1,88 @@ getCountRecords() + } + public function getHash(int $orgId): string + { + $sql = "SELECT data_hash FROM " . self::TABLE_HASH . " WHERE org_id = :v1 AND sveden_table = :v2"; + return $this->opendata->select($sql, [$orgId, self::TABLE])[0]; + } + + public function getCountRecords(int $orgId = 0): int + { + if ($orgId) { + $sql = "SELECT COUNT(*) FROM " . self::TABLE . " WHERE org_id = :v1"; + return $this->opendata->select($sql, [$orgId])[0]['COUNT(*)']; + } else { + $sql = "SELECT COUNT(*) FROM " . self::TABLE; + return $this->opendata->select($sql)[0]['COUNT(*)']; + } + } + + public function save(array $data): void + { + $orgId = $data[0]['org_id']; + $hashOrg = $this->getHash($orgId); // получить хэши + $string = ''; + array_multisort($data); + foreach ($data as $dt) { + $string .= implode('', $dt); + } + $hashData = md5($string); + if ($hashOrg === $hashData) { + Printer::println("Данные организации ". $orgId . " не изменились"); + return; + } + // сброс is_actual в базе для :org_id + $this->resetIsActual($orgId); + // добавить данные в таблицу + // $this->insert($data); + // обновить таблицу хэшей + $this->updateHash($orgId, $hashData); + } + + public function updateHash(int $orgId, string $hash): void + { + $sql = "UPDATE " . self::TABLE_HASH ." SET data_hash = :v1 WHERE org_id = :v2 AND sven_table = :v3"; + $this->opendata->update($sql, [$hash, $orgId, self::TABLE]); + } + + public function resetIsActual(int $orgId): void + { + $sql = "UPDATE " . self::TABLE . " SET is_actual = :v1 WHERE org_id = :v2"; + $this->opendata->update($sql, [0, $orgId]); + } + protected function getUniversities(): array + { + /* + SELECT DISTINCT org_id FROM sveden_education_contingent + */ + $builder = new GenericBuilder(); + $query = $builder->select() + ->setTable(self::TABLE) + ->setColumns(['org_id']) + ->where() + ->greaterThan('org_id', 0) + ->end(); + $sql = $builder->write($query); + $sql = preg_replace("/ WHERE.*/", '', $sql); + $sql = preg_replace('/SELECT/', 'SELECT DISTINCT', $sql); + $universities = $this->opendata->select($sql); + + return array_column($universities, 'org_id'); + } /** * Внесение данных численности обучающихся в базу данных opendata * @param array $data @@ -25,7 +102,7 @@ final class ContingentRepository extends Repository $countAtributes = count($data[0]); $size = $countAtributes * (count($data) - 1); $query = $builder->insert() - ->setTable('sveden_education_contingent') + ->setTable(self::TABLE) ->setValues( $data[0] ); @@ -37,7 +114,5 @@ final class ContingentRepository extends Repository $sql = preg_replace('/\)\s*VALUES\s*/', ') VALUES ', $sql); $sql = preg_replace('/\)\s*\(/', '), (', $sql); $this->opendata->insert($sql, $data); - } - - + } } \ No newline at end of file diff --git a/src/ContingentParser/ContingentRow.php b/src/ContingentParser/ContingentRow.php index 1816730..e529989 100644 --- a/src/ContingentParser/ContingentRow.php +++ b/src/ContingentParser/ContingentRow.php @@ -1,5 +1,5 @@ execute(); + $this->logger->log("Запрос SELECT выполнен успешно!"); $array = $stmt->fetchAll(PDO::FETCH_ASSOC); + } catch (PDOException $e) { $message = "Ошибка запроса: " . $e->getMessage(); $this->logger->log($message); @@ -93,7 +95,7 @@ final class Database $size += count($param); } $stmt->execute(); - $this->logger->log("Запрос выполнен успешно!"); + $this->logger->log("Запрос INSERT выполнен успешно!"); } catch (PDOException $e) { $message = "Ошибка запроса:" . $e->getMessage(); $this->logger->log($message); @@ -122,8 +124,8 @@ final class Database for ($i = 0; $i < $count; $i++) { $stmt->bindParam(":v".($i+1), $params[$i]); } - // $stmt->execute(); - $this->logger->log("Запрос выполнен успешно!"); + $stmt->execute(); + $this->logger->log("Запрос UPDATE выполнен успешно!"); } catch (PDOException $e) { $message = "Ошибка запроса:" . $e->getMessage(); $this->logger->log($message); diff --git a/src/EmployeesParser/EmployeesManager.php b/src/EmployeesParser/EmployeesManager.php new file mode 100644 index 0000000..bf05fdd --- /dev/null +++ b/src/EmployeesParser/EmployeesManager.php @@ -0,0 +1,74 @@ +allowInsertDb = false; + $this->repository = new EmployeesRepository(); + $this->service = new EmployeesService(); + } + public function collectData(array $site): void + { + if ($this->isExit($site)) { + throw new \Exception("This org in db"); + } + list('org_id' => $orgId, 'site' => $url) = $site; + $url = UrlBuilder::build($url); + Printer::println(implode(' ', $site), Color::GREEN); + + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI); + if (!$html) { + return; + // throw new HttpEception("") + } + $uri = $this->service->getLink($html); + Printer::println($uri, Color::YELLOW); + + $employees = $this->service->getData( + $html, + $this->repository->specialties(), + $orgId + ); + + if (!$employees && $uri) { + if (UrlBuilder::isUrl($uri) && UrlBuilder::checkUri($uri)) { + $html = $this->httpClient->getContentOfSite($uri, $site); + } else if (UrlBuilder::checkUri($uri)) { + if (UrlBuilder::slashIsFirst($uri)) { + $html = $this->httpClient->getContentOfSite($url, $site, $uri); + } else { + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI."/$uri"); + } + } else { + throw new HtmlException("Data in Document"); + } + // Получаем данные таблицы приема + $employees = $this->service->getData( + $html, + $this->repository->specialties(), + $orgId + ); + } + + if ($employees && $this->service->isValidData($employees) ) { + // Заносим в базу + Printer::print_r($employees, Color::BLUE); + // $this->repository->insert($employees); + } else { + Printer::println("No result", Color::RED); + $this->htmlLogger->log("$orgId $url"); + } + Printer::println(); + } +} \ No newline at end of file diff --git a/src/EmployeesParser/EmployeesRepository.php b/src/EmployeesParser/EmployeesRepository.php new file mode 100644 index 0000000..2a789d8 --- /dev/null +++ b/src/EmployeesParser/EmployeesRepository.php @@ -0,0 +1,61 @@ +select() + // ->setTable(self::TABLE) + // ->setColumns(['org_id']) + // ->where() + // ->greaterThan('org_id', 0) + // ->end(); + // $sql = $builder->write($query); + // $sql = preg_replace("/ WHERE.*/", '', $sql); + // $sql = preg_replace('/SELECT/', 'SELECT DISTINCT', $sql); + // $universities = $this->opendata->select($sql); + + // return array_column($universities, 'org_id'); + return []; + } + public function insert(array $data): void + { + /* + INSERT INTO sveden_education_priem + (org_id, spec_id, spec_code, spec_name, edu_level, edu_forms, contingent, budget, avg_score) + VALUES + (:v1, :v2, :v3, :v4, :v5, :v6, :v7, :v8, :v9) + ... + */ + $builder = new GenericBuilder(); + $countAtributes = count($data[0]); + $size = $countAtributes * (count($data) - 1); + $query = $builder->insert() + ->setTable(self::TABLE) + ->setValues( + $data[0] + ); + $sql = $builder->write($query); + for ($i = $countAtributes; $i <= $size;) { + $sql .= " (:v".(++$i).", :v".(++$i).", :v".(++$i).", :v" + .(++$i).", :v".(++$i).", :v".(++$i).", :v".(++$i). ", :v".(++$i).", :v".(++$i).")\n"; + } + $sql = preg_replace('/\)\s*VALUES\s*/', ') VALUES ', $sql); + $sql = preg_replace('/\)\s*\(/', '), (', $sql); + + $this->opendata->insert($sql, $data); + } +} \ No newline at end of file diff --git a/src/EmployeesParser/EmployeesRow.php b/src/EmployeesParser/EmployeesRow.php new file mode 100644 index 0000000..5d2b1a6 --- /dev/null +++ b/src/EmployeesParser/EmployeesRow.php @@ -0,0 +1,21 @@ +fio = trim($fio); + $this->disciplines = trim($disciplines); + } + + public function getData(): array + { + return [ + 'fio' => $this->fio, + 'disciplines' => $this->disciplines, + ]; + } +} \ No newline at end of file diff --git a/src/EmployeesParser/EmployeesService.php b/src/EmployeesParser/EmployeesService.php new file mode 100644 index 0000000..efc8142 --- /dev/null +++ b/src/EmployeesParser/EmployeesService.php @@ -0,0 +1,25 @@ +getDataTable(); + $this->addOrgId($employees, $orgId); + + return $employees; + } + public function isValidData(array $data): bool + { + return true; + } +} \ No newline at end of file diff --git a/src/Exception/HtmlException.php b/src/Exception/HtmlException.php new file mode 100644 index 0000000..a5f773e --- /dev/null +++ b/src/Exception/HtmlException.php @@ -0,0 +1,22 @@ +logger = new HtmlLogger(SVEDEN_PARSER . "/log/html.log"); + parent::__construct($message, $code, $previous); + } + + public function write(array $site): void + { + $this->logger->log(implode(' ', $site) . ' ' . $this->getMessage()); + Printer::println($this->getMessage(), Color::RED); + } +} \ No newline at end of file diff --git a/src/Exception/HttpException.php b/src/Exception/HttpException.php new file mode 100644 index 0000000..71b0a1c --- /dev/null +++ b/src/Exception/HttpException.php @@ -0,0 +1,8 @@ +url); if ($this->countRedirect < self::MAX_REDIRECT) { curl_setopt($this->curl, CURLOPT_URL, $this->url); $html = curl_exec($this->curl); diff --git a/src/Http/HttpClient.php b/src/Http/HttpClient.php index 9aea187..e0973af 100644 --- a/src/Http/HttpClient.php +++ b/src/Http/HttpClient.php @@ -7,23 +7,18 @@ use GuzzleHttp\Client; use GuzzleHttp\TransferStats; final class HttpClient -{ - private array $config; - +{ /** * Обработка численности обучающихся * @param string $url URL сайта * @param array $site Идентификатор организации, и базовый URL * @return string|bool */ - public function getContentOfSite( - string $url, - array $site, - string $uri = '' - ): string|bool { + public function getContentOfSite(string $url, array $site, string $uri = ''): string|bool + { try { $client = $this->createClient($url); - if ($uri !== '') { + if (!$uri && !UrlBuilder::isPath($url)) { // Запрос по базовому uri $response = $client->get('', [ 'on_stats' => function (TransferStats $stats) use (&$redirectUrl) { @@ -46,6 +41,7 @@ final class HttpClient } catch (\Exception $e) { $message = $e->getCode() ? "HTTP-code: " . $e->getCode() : "Error cURL"; Printer::println($message, Color::RED); + // $url = UrlBuilder::addUri($url, $uri); $html = $this->handleException($url, $site); } finally { return $html; @@ -75,8 +71,8 @@ final class HttpClient */ private function createClient(string $url): Client { - $this->config = $this->config() + ["base_uri" => $url]; - return new Client($this->config); + $config = $this->config() + ["base_uri" => $url]; + return new Client($config); } /** * Конфигурация клиента diff --git a/src/Http/UrlBuilder.php b/src/Http/UrlBuilder.php index d01258e..bed0780 100644 --- a/src/Http/UrlBuilder.php +++ b/src/Http/UrlBuilder.php @@ -1,8 +1,10 @@ 'Loop Detected', 509 => 'Bandwidth Limit Exceeded', 510 => 'Not Extended', - 511 => 'Network Authentication Required' + 511 => 'Network Authentication Required', + 522 => 'Connection Timed Out', ); public function log(string $message, int $httpCode = null): void { @@ -62,8 +63,7 @@ final class HttpLogger extends Logger $logMessage = "[$date] $message\n"; file_put_contents($this->path, $logMessage, FILE_APPEND); } else { - $logMessage = "[$date] $message " - .self::ARR_HTTP_STATUS_CODE[$httpCode]."\n"; + $logMessage = "[$date] $message " . self::ARR_HTTP_STATUS_CODE[$httpCode]."\n"; file_put_contents($this->path, $logMessage, FILE_APPEND); } } diff --git a/src/Manager.php b/src/Manager.php index 6d4713b..6777d92 100644 --- a/src/Manager.php +++ b/src/Manager.php @@ -6,6 +6,7 @@ use SvedenParser\Logger\HtmlLogger; abstract class Manager { + protected bool $allowInsertDb; protected Service $service; protected Repository $repository; protected HttpClient $httpClient; @@ -17,7 +18,7 @@ abstract class Manager $this->htmlLogger = new HtmlLogger(SVEDEN_PARSER . '/log/html.log'); } - abstract function collectData(array $site): void; + abstract public function collectData(array $site): void; /** * Получить массив сайтов @@ -44,8 +45,8 @@ abstract class Manager return true; } // Уже в базе - if (in_array($site['org_id'], $this->repository->universities())) { - // return true; + if ($this->allowInsertDb && $this->allowInsertDb && in_array($site['org_id'], $this->repository->universities())) { + return true; } return false; } diff --git a/src/ContingentParser/ContingentParser.php b/src/Parser/ContingentParser.php similarity index 95% rename from src/ContingentParser/ContingentParser.php rename to src/Parser/ContingentParser.php index f627395..c8aa037 100644 --- a/src/ContingentParser/ContingentParser.php +++ b/src/Parser/ContingentParser.php @@ -3,10 +3,9 @@ * Парсер информации об образовательной организации * с её сайта с использованием микроразметки */ -namespace SvedenParser\ContingentParser; +namespace SvedenParser\Parser; use SvedenParser\Color; -use SvedenParser\Parser; use SvedenParser\Printer; final class ContingentParser extends Parser { @@ -24,7 +23,7 @@ final class ContingentParser extends Parser { if (empty($this->xpath)) return []; - $data = $this->parse(); + $data = $this->parse(''); $records = []; if ($data == null) return []; @@ -55,7 +54,7 @@ final class ContingentParser extends Parser return $records; } - protected function parse(): array + protected function parse(string $_): array { $data = []; foreach (self::FIELDS as $field => $tag) { diff --git a/src/Parser/EmployeesParser.php b/src/Parser/EmployeesParser.php new file mode 100644 index 0000000..1404967 --- /dev/null +++ b/src/Parser/EmployeesParser.php @@ -0,0 +1,66 @@ + ["span", "td"], + "teachingDiscipline" => ["span", "td"] + ]; + + public function getDataTable(): array + { + if (!$this->xpath) return []; + + $data = $this->parse(''); + if (!$data) return []; + $records = []; + $equal = $data['fio']->length; + foreach ($data as $field) { + if ($field->length == 0 || $field->length != $equal) { + return []; + } + } + for ($i = 0; $i < $data['fio']->length; $i++) { + try { + $employessRow = new EmployeesRow( + $data['fio']->item($i)->textContent, + $data['teachingDiscipline']->item($i)->textContent, + ); + $records[] = $employessRow->getData(); + } catch (\Exception $e) { + Printer::println($e->getMessage(), Color::RED); + } + } + return $records; + } + + protected function parse(string $_): array + { + $data = []; + foreach (self::FIELDS as $field => $tag) { + $span = $this->xpath->query(self::TEMPLATE . $tag[0] . "[@itemprop=\"$field\"]"); + $td = $this->xpath->query(self::TEMPLATE . $tag[1] . "[@itemprop=\"$field\"]"); + $data[$field] = $span->length > $td->length ? $span : $td; + } + return $data; + } + + public function getLink(): string + { + // $needle = "Информация о численности обучающихся"; + // $data = $this->dom->getElementsByTagName('a'); + // for ($i = 0; $i < $data->length; $i++) { + // $haystack = $data->item($i)->textContent; + // $isInformationOfContingent = strpos($haystack, $needle) !== false; + // if ($isInformationOfContingent) { + // return $data->item($i)->getAttribute('href'); + // } + // } + return ''; + } +} \ No newline at end of file diff --git a/src/Parser.php b/src/Parser/Parser.php similarity index 88% rename from src/Parser.php rename to src/Parser/Parser.php index 20f1af9..b3e127c 100644 --- a/src/Parser.php +++ b/src/Parser/Parser.php @@ -1,6 +1,5 @@ dom = new \DOMDocument( encoding: self::ENCODING ); - if (empty($html)) { + libxml_use_internal_errors(true); + if (!$html) { $this->xpath = null; } else { $this->setEncoding($html); $this->dom->loadHTML($html); $this->xpath = new \DOMXPath($this->dom); + libxml_clear_errors(); } } @@ -38,6 +38,6 @@ abstract class Parser } abstract public function getDataTable(): array; - abstract protected function parse(): array; + abstract protected function parse(string $tag): array; abstract public function getLink(): string; } \ No newline at end of file diff --git a/src/Parser/PriemParser.php b/src/Parser/PriemParser.php new file mode 100644 index 0000000..7b96934 --- /dev/null +++ b/src/Parser/PriemParser.php @@ -0,0 +1,99 @@ +xpath) return []; + + $data = []; + foreach (self::FIELDS as $tag) { + $data = $data ? $data : $this->parse($tag); + } + + if (!$data) return []; + + $records = []; + foreach ($data as $record) { + try { + $priemRow = new PriemRow( + $record['eduCode'] ?? '', + $record['eduName'] ?? '', + $record['eduLevel'] ?? '', + $record['eduForm'], + $record['score'], + [ + $record['numberBF'], + $record['numberBR'], + $record['numberBM'], + $record['numberP'], + ], + ); + $records[] = $priemRow->getData(); + } catch (\Exception $e) { + Printer::println($e->getMessage(), Color::RED); + } + + } + + return $records; + } + protected function parse(string $tag): array + { + $data = []; + $commonData = []; + $rows = $this->xpath->query(self::TEMPLATE); + + foreach ($rows as $row) { + $cells = $this->xpath->query($tag, $row); + $rowData = []; + + foreach ($cells as $cell) { + $itemprop = $cell->getAttribute('itemprop'); + $rowData[$itemprop] = $cell->nodeValue; + } + + if (array_key_exists('eduCode', $rowData)) { + $commonData = [ + 'eduCode' => $rowData['eduCode'] ?? '', + 'eduName' => $rowData['eduName'] ?? '', + 'eduLevel' => $rowData['eduLevel'] ?? '', + ]; + } + + $data[] = array_merge($commonData, [ + 'eduForm' => $rowData['eduForm'] ?? '', + 'numberBF' => $rowData['numberBF'] ?? '', + 'numberBR' => $rowData['numberBR'] ?? '', + 'numberBM' => $rowData['numberBM'] ?? '', + 'numberP' => $rowData['numberP'] ?? '', + 'score' => $rowData['score'] ?? '', + ]); + } + + return $data; + } + + public function getLink(): string + { + $needle = "Информация о результатах приема"; + $data = $this->dom->getElementsByTagName('a'); + for ($i = 0; $i < $data->length; $i++) { + $haystack = $data->item($i)->textContent; + $isInformationOfContingent = strpos($haystack, $needle) !== false; + if ($isInformationOfContingent) { + return $data->item($i)->getAttribute('href'); + } + } + return ''; + } +} \ No newline at end of file diff --git a/src/PriemParser/PriemManager.php b/src/PriemParser/PriemManager.php index c8d54a4..79d3136 100644 --- a/src/PriemParser/PriemManager.php +++ b/src/PriemParser/PriemManager.php @@ -1,6 +1,7 @@ allowInsertDb = true; $this->repository = new PriemRepository(); $this->service = new PriemService(); } public function collectData(array $site): void { if ($this->isExit($site)) { - return; + throw new \Exception("This org in db"); } list('org_id' => $orgId, 'site' => $url) = $site; $url = UrlBuilder::build($url); Printer::println(implode(' ', $site), Color::GREEN); - $html = $this->httpClient->getContentOfSite( - $url, - $site, - 'sveden/education/' - ); + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI); if (!$html) { return; + // throw new HttpEception("") } - $uri = $this->service->getLink($html); Printer::println($uri, Color::YELLOW); - - if ($uri) { - $pattern = '/^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/'; - if (preg_match($pattern, $uri)) { - $html = $this->httpClient->getContentOfSite( - $uri, - $site - ); - } else if (UrlBuilder::checkUri($uri)) { - if (0 === strpos($uri, '/')) { - $html = $this->httpClient->getContentOfSite( - $url, - $site, - $uri - ); - } else { - $html = $this->httpClient->getContentOfSite( - $url, - $site, - "sveden/education/$uri" - ); - } - - } - } - // Получаем данные таблицы приема + $priem = $this->service->getData( $html, $this->repository->specialties(), $orgId ); + var_dump((bool)$priem); - if ($priem - && $this->service->isValidData($priem) - ) { + if (!$priem && $uri) { + if (UrlBuilder::isUrl($uri) && UrlBuilder::checkUri($uri)) { + $html = $this->httpClient->getContentOfSite($uri, $site); + } else if (UrlBuilder::checkUri($uri)) { + if (UrlBuilder::slashIsFirst($uri)) { + $html = $this->httpClient->getContentOfSite($url, $site, $uri); + } else { + $html = $this->httpClient->getContentOfSite($url, $site, self::TEMPLATE_URI."/$uri"); + } + } else { + throw new HtmlException("Data in Document"); + } + // Получаем данные таблицы приема + $priem = $this->service->getData( + $html, + $this->repository->specialties(), + $orgId + ); + } + var_dump($this->service->isValidData($priem)); + echo $priem && $this->service->isValidData($priem); + if ($priem && $this->service->isValidData($priem) ) { // Заносим в базу Printer::print_r($priem, Color::BLUE); - // $this->repository->insert($contingent); + $this->repository->insert($priem); } else { Printer::println("No result", Color::RED); $this->htmlLogger->log("$orgId $url"); diff --git a/src/PriemParser/PriemParser.php b/src/PriemParser/PriemParser.php deleted file mode 100644 index e7dae62..0000000 --- a/src/PriemParser/PriemParser.php +++ /dev/null @@ -1,97 +0,0 @@ - "td", - "eduName" => "td", - "eduLevel" => "td", - "eduForm" => "td", - "numberBF" => "td", - "numberBR" => "td", - "numberBM" => "td", - "numberP" => "td", - "score" => "td" - ]; - public function getDataTable(): array - { - if (!$this->xpath) return []; - - $data = $this->parse(); - $records = []; - if (!$data) return []; - - $equal = $data['eduName']->length; - foreach ($data as $field) { - if ($field->length == 0) { - return []; - } - if ($field->length != $equal) { - return []; - } - } - for ($i = 0; $i < $data['eduCode']->length; $i++) { - try { - $contingentRow = new PriemRow( - $data['eduCode']->item($i)->textContent, - $data['eduName']->item($i)->textContent, - $data['eduLevel']->item($i)->textContent, - $data['eduForm']->item($i)->textContent, - $data['score']->item($i)->textContent, - [ - $data['numberBF']->item($i)->textContent, - $data['numberBR']->item($i)->textContent, - $data['numberBM']->item($i)->textContent, - $data['numberP']->item($i)->textContent, - ], - ); - $records[] = $contingentRow->getData(); - } catch (\Exception $e) { - Printer::println($e->getMessage(), Color::RED); - } - - } - return $records; - } - protected function parse(): array - { - $data = []; - foreach (self::FIELDS as $field => $tag) { - if (!is_array($tag)) { - $data[$field] = $this->xpath->query( - self::TEMPLATE . $tag . "[@itemprop=\"$field\"]" - ); - } else { - // $th = $this->xpath->query( - // self::TEMPLATE . $tag[0] . "[@itemprop=\"$field\"]" - // ); - // $td = $this->xpath->query( - // self::TEMPLATE . $tag[1] . "[@itemprop=\"$field\"]" - // ); - // $data[$field] = $th->length > $td->length ? $th : $td; - } - } - return $data; - } - - public function getLink(): string - { - $needle = "Информация о результатах приёма"; - $data = $this->dom->getElementsByTagName('a'); - for ($i = 0; $i < $data->length; $i++) { - $haystack = $data->item($i)->textContent; - $isInformationOfContingent = strpos($haystack, $needle) !== false; - if ($isInformationOfContingent) { - return $data->item($i)->getAttribute('href'); - } - } - return ''; - } -} \ No newline at end of file diff --git a/src/PriemParser/PriemRepository.php b/src/PriemParser/PriemRepository.php index 621e5e4..7566657 100644 --- a/src/PriemParser/PriemRepository.php +++ b/src/PriemParser/PriemRepository.php @@ -1,11 +1,68 @@ opendata->select($sql); + } + /** + * Извлечение id вузов, занесенных в базу opendata + * @return array + */ + protected function getUniversities(): array + { + /* + SELECT DISTINCT org_id FROM sveden_education_priem + */ + $builder = new GenericBuilder(); + $query = $builder->select() + ->setTable(self::TABLE) + ->setColumns(['org_id']) + ->where() + ->greaterThan('org_id', 0) + ->end(); + $sql = $builder->write($query); + $sql = preg_replace("/ WHERE.*/", '', $sql); + $sql = preg_replace('/SELECT/', 'SELECT DISTINCT', $sql); + $universities = $this->opendata->select($sql); + + return array_column($universities, 'org_id'); + } public function insert(array $data): void { - + /* + INSERT INTO sveden_education_priem + (org_id, spec_id, spec_code, spec_name, edu_level, edu_forms, contingent, budget, avg_score) + VALUES + (:v1, :v2, :v3, :v4, :v5, :v6, :v7, :v8, :v9) + ... + */ + $builder = new GenericBuilder(); + $countAtributes = count($data[0]); + $size = $countAtributes * (count($data) - 1); + $query = $builder->insert() + ->setTable(self::TABLE) + ->setValues( + $data[0] + ); + $sql = $builder->write($query); + for ($i = $countAtributes; $i <= $size;) { + $sql .= " (:v".(++$i).", :v".(++$i).", :v".(++$i).", :v" + .(++$i).", :v".(++$i).", :v".(++$i).", :v".(++$i). ", :v".(++$i).", :v".(++$i).")\n"; + } + $sql = preg_replace('/\)\s*VALUES\s*/', ') VALUES ', $sql); + $sql = preg_replace('/\)\s*\(/', '), (', $sql); + + $this->opendata->insert($sql, $data); } } \ No newline at end of file diff --git a/src/PriemParser/PriemRow.php b/src/PriemParser/PriemRow.php index dabb49b..86d8c40 100644 --- a/src/PriemParser/PriemRow.php +++ b/src/PriemParser/PriemRow.php @@ -14,14 +14,14 @@ class PriemRow string $avgScore, array $contingent, ) { - if ($avgScore < 0) { + if ((float)$avgScore < 0) { throw new \Exception('Недействительная средняя сумма набранных баллов обучающихся!'); } $this->eduCode = trim($eduCode); $this->eduName = trim($eduName); $this->eduLevel = trim($eduLevel); $this->eduForm = trim($eduForm); - $this->avgScore = (float)str_replace(',', '.', $avgScore); + $this->avgScore = (float)str_replace(',', '.', $avgScore ); $this->calcContingent($contingent); } @@ -33,7 +33,7 @@ class PriemRow 'edu_level' => $this->eduLevel, 'edu_forms'=> $this->eduForm, 'avg_score' => $this->avgScore, - 'contongent' => $this->all, + 'contingent' => $this->all, 'budget' => $this->budget, ]; } diff --git a/src/PriemParser/PriemService.php b/src/PriemParser/PriemService.php index 63e9005..332eb90 100644 --- a/src/PriemParser/PriemService.php +++ b/src/PriemParser/PriemService.php @@ -1,5 +1,6 @@ getDataTable(); - $this->addSpecId($contingent, $specialties); - $this->addOrgId($contingent, $orgId); + $priem = $parser->getDataTable(); + $this->addSpecId($priem, $specialties); + $this->addOrgId($priem, $orgId); - return $contingent; + return $priem; } /** - * Проверка на валидность записи примема - * @param array $contingent Массив численности по специальностям + * Проверка на валидность записи приема + * @param array $priem Массив численности по специальностям * @return bool */ - public function isValidData(array $contingent): bool + public function isValidData(array $priem): bool { - $count = 1; - // foreach ($contingent as $value) { - // $count += $value['contingent']; - // } - return $count ? true : false; + $countScore = 0; + $countContingent = 0; + foreach ($priem as $value) { + $countScore += $value['avg_score']; + $countContingent += $value['contingent']; + } + return $countScore || $countContingent ? true : false; } public function getLink(string $html): string diff --git a/src/Printer.php b/src/Printer.php index 906a3a0..8d0eb77 100644 --- a/src/Printer.php +++ b/src/Printer.php @@ -9,10 +9,8 @@ final class Printer * @param \SvedenParser\Color $color Цвет * @return void */ - public static function print( - string $text = '', - Color $color = Color::WHITE - ): void { + public static function print(string $text = '', Color $color = Color::WHITE): void + { print($color->tostring().$text.Color::WHITE->tostring()); } /** @@ -21,10 +19,8 @@ final class Printer * @param \SvedenParser\Color $color Цвет * @return void */ - public static function println( - string $text = '', - Color $color = Color::WHITE - ): void { + public static function println(string $text = '', Color $color = Color::WHITE): void + { print($color->tostring().$text.Color::WHITE->tostring()); print(PHP_EOL); } @@ -34,12 +30,18 @@ final class Printer * @param \SvedenParser\Color $color Цвет * @return void */ - public static function print_r( - mixed $value, - Color $color = Color::WHITE - ): void { + public static function print_r(mixed $value, Color $color = Color::WHITE): void + { print($color->tostring()); print_r($value); print(Color::WHITE->tostring()); } + + public static function dd(mixed $value): void + { + print(Color::ORANGE->tostring()); + var_dump($value); + print(Color::WHITE->tostring()); + exit; + } } diff --git a/src/Repository.php b/src/Repository.php index ed5013d..5885fa4 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -10,6 +10,7 @@ abstract class Repository protected Database $opendata; protected Database $niimko; public const FILE_ADD_RECORDING = Database::FILE_ADD_RECORDING; + public const TABLE_HASH = 'hashs'; protected array $specialties; protected array $universities; @@ -20,6 +21,8 @@ abstract class Repository $this->specialties = $this->getSpecialties(); $this->universities = $this->getUniversities(); } + abstract protected function getUniversities(): array; + abstract public function getHash(int $orgId): string; /** * Извлечение URL сайтов из базы данных niimko * @return array @@ -119,29 +122,6 @@ abstract class Repository return $specialties; } - /** - * Извлечение id вузов, занесенных в базу opendata - * @return array - */ - private function getUniversities(): array - { - /* - SELECT DISTINCT org_id FROM sveden_education_contingent - */ - $builder = new GenericBuilder(); - $query = $builder->select() - ->setTable('sveden_education_contingent') - ->setColumns(['org_id']) - ->where() - ->greaterThan('org_id', 0) - ->end(); - $sql = $builder->write($query); - $sql = preg_replace("/ WHERE.*/", '', $sql); - $sql = preg_replace('/SELECT/', 'SELECT DISTINCT', $sql); - $universities = $this->opendata->select($sql); - - return array_column($universities, 'org_id'); - } /** * Обновление сайтов в базе данных niimko * @param array $params diff --git a/src/Service.php b/src/Service.php index 923cad8..4d46968 100644 --- a/src/Service.php +++ b/src/Service.php @@ -5,26 +5,26 @@ abstract class Service { /** * Добавить идентификатор специальности в запись численности - * @param array $contingent Массив численности по специальностям + * @param array $data Массив численности по специальностям * @param array $specialties Массив специальностей * @return void */ - protected function addSpecId(array &$contingent, array $specialties): void + protected function addSpecId(array &$data, array $specialties): void { $specIdMap = array_column($specialties, 'spec_id', 'spec_code'); - foreach ($contingent as $key => $con) { - $contingent[$key]['spec_id'] = $specIdMap[$con['spec_code']] ?? null; + foreach ($data as $key => $con) { + $data[$key]['spec_id'] = $specIdMap[$con['spec_code']] ?? null; } } /** * Добавить идентификатор организации в запись численности - * @param array $contingent Массив численности по специальностям + * @param array $data Массив численности по специальностям * @param int $orgId Идентифиактор организации * @return void */ - protected function addOrgId(array &$contingent, int $orgId): void + protected function addOrgId(array &$data, int $orgId): void { - foreach ($contingent as &$con) { + foreach ($data as &$con) { $con['org_id'] = $orgId; } } diff --git a/sveden_parser b/sveden_parser new file mode 160000 index 0000000..b09a3f3 --- /dev/null +++ b/sveden_parser @@ -0,0 +1 @@ +Subproject commit b09a3f3b740dcd0f8f08c9ffac9c9caedc0b8a78