add files

This commit is contained in:
Remy Moll 2023-10-05 13:52:17 +02:00
commit f6bc6a5810
7 changed files with 2576 additions and 0 deletions

960
Klasse/index.html Executable file
View File

@ -0,0 +1,960 @@
P3
# CREATOR: GIMP PNM Filter Version 1.1
144 144
255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
145 170 208
140 140 140
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
225 232 243
90 127 182
27 79 158
11 11 11
85 85 85
227 227 227
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255

4
Klasse/jquery.js vendored Executable file

File diff suppressed because one or more lines are too long

694
Klasse/subst_001.htm Executable file
View File

@ -0,0 +1,694 @@
56, 0]
[124, 68, 0]
[26, 8, 7]
[182, 115, 0]
[133, 91, 0]
[3, 3, 3]
[56, 52, 34]
[43, 46, 28]
[182, 122, 1]
[23, 12, 0]
[241, 198, 20]
[17, 33, 37]
[221, 137, 1]
[68, 43, 0]
[71, 69, 46]
[35, 70, 82]
[234, 136, 2]
[108, 61, 0]
[47, 59, 51]
[117, 96, 20]
[93, 105, 88]
[164, 104, 0]
[13, 8, 0]
[78, 58, 15]
[252, 222, 79]
[209, 182, 34]
[51, 39, 6]
[252, 201, 0]
[97, 104, 85]
[244, 255, 255]
[98, 100, 92]
[79, 43, 9]
[127, 105, 32]
[255, 250, 151]
[147, 140, 76]
[6, 5, 2]
[211, 152, 19]
[79, 61, 0]
[183, 110, 0]
[35, 22, 0]
[16, 45, 50]
[23, 31, 23]
[232, 143, 0]
[76, 44, 0]
[0, 0, 0]
[0, 22, 33]
[113, 77, 3]
[126, 74, 1]
[32, 56, 79]
[25, 25, 0]
[12, 13, 3]
[151, 83, 1]
[21, 11, 0]
[6, 16, 14]
[183, 132, 6]
[204, 114, 0]
[61, 34, 0]
[5, 5, 3]
[18, 70, 91]
[233, 157, 0]
[110, 69, 0]
[255, 235, 0]
[167, 162, 114]
[255, 255, 197]
[160, 137, 57]
[13, 9, 1]
[255, 250, 0]
[155, 135, 70]
[208, 212, 190]
[51, 49, 34]
[22, 14, 11]
[0, 9, 19]
[238, 183, 22]
[94, 76, 20]
[3, 0, 0]
[8, 4, 1]
[255, 231, 17]
[125, 68, 0]
[3, 2, 0]
[181, 145, 68]
[2, 4, 4]
[193, 115, 1]
[34, 20, 0]
[88, 96, 77]
[6, 26, 30]
[189, 105, 2]
[68, 37, 1]
[0, 4, 4]
[1, 33, 46]
[176, 145, 0]
[118, 65, 1]
[209, 226, 238]
[251, 165, 1]
[0, 3, 4]
[147, 78, 1]
[21, 12, 0]
[36, 52, 45]
[125, 93, 31]
[168, 90, 1]
[54, 29, 0]
[1, 5, 5]
[7, 36, 45]
[174, 105, 1]
[97, 53, 0]
[67, 51, 22]
[160, 82, 8]
[12, 23, 26]
[127, 67, 1]
[10, 5, 0]
[59, 42, 20]
[1, 7, 9]
[169, 91, 1]
[43, 23, 0]
[33, 7, 0]
[1, 23, 30]
[161, 86, 1]
[82, 46, 0]
[1, 5, 6]
[2, 2, 0]
[216, 172, 71]
[117, 63, 1]
[2, 1, 0]
[255, 192, 0]
[0, 4, 5]
[148, 79, 1]
[31, 18, 0]
[80, 62, 30]
[3, 28, 33]
[163, 87, 1]
[66, 36, 1]
[1, 5, 6]
[0, 8, 16]
[108, 56, 1]
[114, 64, 0]
[106, 88, 68]
[255, 216, 0]
[1, 5, 7]
[138, 73, 1]
[19, 10, 0]
[246, 176, 0]
[10, 33, 34]
[162, 86, 0]
[52, 28, 0]
[1, 6, 8]
[24, 46, 47]
[163, 89, 1]
[108, 69, 0]
[51, 94, 106]
[255, 204, 0]
[73, 138, 156]
[131, 71, 1]
[9, 5, 0]
[22, 4, 1]
[0, 0, 3]
[160, 87, 1]
[41, 23, 0]
[85, 141, 160]
[228, 166, 0]
[171, 94, 0]
[86, 51, 0]
[0, 8, 10]
[1, 1, 3]
[255, 224, 0]
[139, 83, 1]
[2, 1, 0]
[74, 89, 85]
[0, 8, 11]
[161, 90, 1]
[29, 16, 0]
[16, 22, 13]
[24, 7, 1]
[189, 107, 1]
[66, 38, 1]
[0, 7, 12]
[2, 12, 22]
[171, 94, 1]
[121, 73, 1]
[130, 84, 15]
[2, 1, 0]
[0, 10, 12]
[157, 92, 1]
[19, 11, 0]
[244, 184, 1]
[99, 68, 9]
[196, 114, 1]
[57, 35, 0]
[1, 14, 14]
[3, 3, 0]
[191, 109, 0]
[104, 64, 0]
[56, 63, 64]
[0, 0, 0]
[140, 124, 66]
[152, 107, 5]
[9, 6, 1]
[11, 7, 2]
[105, 112, 86]
[205, 173, 38]
[44, 35, 6]
[255, 251, 45]
[48, 45, 18]
[238, 197, 57]
[89, 65, 3]
[0, 14, 17]
[15, 13, 7]
[160, 118, 18]
[138, 117, 21]
[1, 1, 0]
[2, 2, 0]
[0, 14, 18]
[176, 113, 0]
[31, 26, 6]
[33, 21, 2]
[23, 15, 3]
[215, 137, 1]
[72, 55, 0]
[1, 15, 18]
[2, 0, 0]
[231, 162, 1]
[121, 90, 0]
[130, 73, 3]
[3, 2, 0]
[150, 233, 255]
[168, 109, 1]
[18, 11, 0]
[73, 43, 1]
[139, 89, 6]
[213, 138, 1]
[57, 36, 0]
[39, 55, 54]
[5, 18, 25]
[228, 144, 1]
[104, 73, 0]
[105, 103, 86]
[2, 16, 23]
[170, 140, 105]
[153, 110, 1]
[9, 7, 0]
[2, 1, 1]
[118, 154, 163]
[197, 135, 1]
[42, 28, 0]
[166, 110, 9]
[0, 0, 0]
[234, 142, 1]
[87, 63, 0]
[2, 5, 0]
[0, 14, 20]
[133, 58, 1]
[136, 112, 1]
[1, 21, 28]
[1, 4, 5]
[43, 98, 121]
[184, 147, 1]
[29, 19, 0]
[92, 53, 1]
[3, 2, 0]
[225, 157, 1]
[70, 51, 0]
[23, 29, 18]
[0, 16, 24]
[253, 164, 1]
[118, 96, 1]
[38, 13, 7]
[0, 17, 24]
[110, 94, 62]
[168, 124, 0]
[17, 13, 0]
[25, 12, 0]
[69, 38, 0]
[212, 170, 8]
[55, 42, 0]
[255, 218, 0]
[0, 18, 25]
[245, 212, 33]
[101, 91, 15]
[255, 206, 0]
[0, 19, 26]
[121, 87, 0]
[151, 149, 59]
[7, 7, 3]
[0, 19, 26]
[255, 246, 16]
[198, 181, 18]
[40, 37, 5]
[4, 3, 0]
[1, 19, 27]
[236, 204, 12]
[84, 76, 7]
[255, 231, 13]
[1, 20, 27]
[254, 206, 0]
[133, 128, 8]
[1, 20, 29]
[0, 18, 28]
[255, 215, 0]
[182, 160, 0]
[27, 26, 3]
[227, 163, 1]
[1, 20, 25]
[223, 213, 0]
[68, 63, 6]
[255, 248, 24]
[0, 19, 28]
[254, 242, 98]
[116, 111, 24]
[1, 23, 28]
[1, 21, 30]
[163, 116, 19]
[166, 162, 118]
[16, 15, 6]
[0, 32, 28]
[6, 5, 0]
[211, 204, 91]
[53, 52, 33]
[6, 5, 0]
[0, 20, 29]
[245, 233, 26]
[99, 96, 25]
[14, 6, 1]
[1, 21, 30]
[246, 196, 1]
[148, 139, 5]
[6, 6, 1]
[1, 21, 30]
[16, 8, 1]
[196, 190, 37]
[39, 36, 5]
[2, 0, 0]
[0, 19, 28]
[235, 202, 17]
[82, 75, 6]
[20, 9, 1]
[1, 22, 29]
[255, 223, 21]
[131, 120, 9]
[1, 21, 30]
[1, 21, 30]
[23, 14, 1]
[180, 162, 14]
[26, 26, 8]
[1, 32, 31]
[0, 22, 31]
[222, 208, 38]
[66, 62, 4]
[4, 3, 0]
[0, 16, 24]
[253, 246, 117]
[114, 112, 52]
[0, 20, 27]
[0, 20, 29]
[253, 246, 141]
[163, 165, 141]
[14, 14, 10]
[1, 16, 23]
[0, 3, 4]
[209, 213, 108]
[51, 52, 28]
[0, 3, 4]
[1, 12, 19]
[243, 228, 25]
[97, 90, 13]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 4, 5]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[7, 21, 27]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[169, 134, 182]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[11, 18, 13]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[21, 8, 1]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[200, 126, 5]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[123, 78, 9]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[61, 98, 102]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[63, 42, 6]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[187, 166, 122]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[46, 48, 41]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[221, 235, 204]
[2, 0, 1]
[0, 0, 0]
[0, 0, 0]
[1, 13, 20]
[0, 0, 0]
[1, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[1, 1, 1]
[0, 0, 0]
[0, 0, 0]
[106, 166, 189]
[2, 2, 0]
[1, 0, 0]
[0, 0, 0]
[3, 35, 46]
[4, 3, 0]
[1, 1, 0]
[0, 0, 0]
[255, 205, 15]
[0, 0, 0]
[2, 2, 1]
[0, 0, 0]
[0, 0, 0]
[53, 76, 77]
[5, 4, 1]
[1, 1, 0]
[1, 0, 0]
[3, 5, 5]
[32, 17, 1]
[2, 2, 0]
[0, 0, 0]
[3, 15, 25]
[0, 0, 0]
[11, 5, 1]
[0, 0, 0]
[3, 6, 7]
[38, 75, 89]
[52, 26, 1]
[5, 2, 0]
[0, 0, 0]
[26, 40, 38]
[155, 77, 2]
[26, 13, 0]
[0, 0, 0]
[1, 13, 23]
[82, 154, 171]
[95, 46, 0]
[5, 2, 0]
[9, 20, 25]
[86, 193, 225]
[224, 204, 21]
[43, 22, 0]
[65, 133, 146]
[104, 82, 33]
[247, 253, 141]
[109, 94, 0]
[2, 0, 1]
[1, 19, 29]
[249, 247, 153]
[154, 162, 44]
[9, 9, 1]
[12, 38, 48]
[127, 233, 255]
[200, 200, 179]
[42, 39, 0]
[1, 34, 39]
[255, 241, 7]
[238, 238, 120]
[87, 87, 4]
[0, 0, 0]
[11, 49, 60]
[255, 255, 242]
[136, 135, 25]
[0, 0, 0]
[17, 14, 11]
[167, 232, 236]
[184, 184, 162]
[29, 26, 0]
[1, 13, 19]
[35, 44, 36]
[226, 226, 62]
[70, 63, 0]
[41, 93, 106]
[0, 11, 13]
[254, 254, 121]
[118, 110, 0]
[1, 0, 0]
[4, 13, 14]
[71, 108, 103]
[167, 168, 106]
[17, 13, 0]
[3, 7, 8]
[18, 46, 50]
[212, 209, 0]
[55, 41, 0]
[7, 34, 35]
[75, 57, 9]
[246, 248, 176]
[101, 85, 1]
[71, 127, 153]
[3, 6, 7]
[162, 138, 106]
[151, 151, 52]
[7, 5, 0]
[7, 26, 36]
[64, 65, 42]
[198, 198, 109]
[40, 26, 0]
[5, 15, 17]
[116, 83, 11]
[235, 230, 39]
[84, 58, 0]
[27, 21, 3]
[20, 35, 37]
[245, 207, 0]
[134, 126, 0]
[0, 0, 0]
[2, 2, 1]
[255, 209, 0]
[182, 181, 0]
[26, 15, 0]
[1, 9, 11]
[1, 21, 22]
[224, 204, 1]
[67, 38, 1]
[194, 123, 12]
[16, 24, 12]
[254, 177, 1]
[116, 96, 0]
[0, 0, 0]
[5, 12, 5]
[255, 253, 121]
[165, 144, 1]
[14, 8, 0]
[47, 61, 58]
[77, 96, 91]
[210, 179, 1]
[54, 35, 0]
[56, 45, 17]
[110, 120, 109]
[243, 140, 1]
[99, 77, 0]
[200, 122, 0]
[22, 11, 1]
[68, 64, 32]
[149, 109, 1]
[5, 3, 0]
[2, 10, 10]
[178, 113, 0]
[196, 141, 1]
[38, 22, 0]
[2, 10, 10]
[8, 42, 50]
[232, 141, 1]
[82, 54, 1]
[105, 55, 0]
[18, 12, 16]
[181, 107, 1]
[132, 91, 0]
[3, 3, 3]
[64, 54, 30]
[47, 48, 28]
[182, 114, 1]
[21, 11, 0]
[255, 255, 0]
[32, 29, 26]
[222, 139, 1]
[65, 38, 1]
[80, 75, 50]
[39, 76, 88]
[238, 142, 1]
[107, 61, 1]
[56, 72, 66]
[122, 100, 21]
[97, 109, 93]
[162, 100, 0]
[13, 7, 0]
[70, 59, 18]
[233, 195, 89]
[209, 183, 34]
[49, 38, 6]
[254, 200, 0]
[118, 118, 87]
[244, 255, 255]
[97, 98, 89]
[80, 78, 64]
[130, 107, 33]
[255, 250, 152]
[146, 138, 74]
[5, 4, 2]
[158, 115, 47]
[73, 56, 0]
[178, 105, 0]
[34, 22, 0]
[8, 34, 39]
[25, 34, 26]
[216, 124, 1]
[78, 46, 0]
[2, 3, 0]
[3, 36, 48]
[141, 81, 3]
[124, 72, 1]
[46, 103, 132]
[25, 25, 0]
[13, 14, 2]
[149, 82, 1]
[21, 11, 0]
[8, 18, 18]
[224, 170, 0]
[198, 109, 0]
[60, 34, 0]
[5, 5, 2]
[13, 59, 76]
[230, 153, 0]
[110, 69, 0]
[255, 239, 0]
[148, 145, 93]
[255, 255, 218]
[160, 137, 57]
[12, 9, 1]
[255, 247, 1]
[149, 119, 34]
[207, 213, 189]
[50, 49, 33]
[33, 29, 21]
[0, 10, 20]
[233, 179, 22]
[92, 74, 19]
[13, 36

485
Klasse/subst_002.htm Executable file
View File

@ -0,0 +1,485 @@
169, 114, 41]
[249, 160, 1]
[0, 4, 5]
[140, 75, 1]
[17, 9, 0]
[255, 237, 0]
[9, 38, 45]
[161, 86, 1]
[53, 30, 0]
[0, 6, 6]
[7, 36, 42]
[155, 84, 1]
[105, 62, 0]
[37, 66, 76]
[250, 163, 1]
[32, 86, 104]
[143, 81, 0]
[9, 4, 0]
[34, 4, 0]
[0, 5, 9]
[162, 88, 1]
[40, 24, 0]
[108, 141, 150]
[18, 40, 43]
[159, 84, 1]
[82, 47, 1]
[1, 6, 9]
[1, 3, 5]
[255, 211, 0]
[126, 71, 1]
[1, 1, 0]
[255, 193, 1]
[0, 7, 11]
[146, 78, 0]
[26, 15, 0]
[11, 23, 17]
[123, 88, 6]
[165, 88, 1]
[64, 36, 0]
[1, 6, 10]
[0, 27, 39]
[168, 96, 1]
[111, 64, 0]
[255, 205, 0]
[15, 15, 12]
[0, 9, 12]
[150, 86, 1]
[17, 10, 0]
[150, 94, 3]
[38, 53, 53]
[176, 99, 1]
[51, 29, 0]
[0, 15, 12]
[19, 9, 1]
[182, 105, 1]
[98, 58, 1]
[49, 63, 74]
[0, 0, 0]
[49, 62, 57]
[130, 74, 1]
[8, 5, 0]
[2, 2, 0]
[0, 21, 29]
[175, 101, 1]
[37, 21, 0]
[255, 243, 4]
[0, 1, 0]
[186, 103, 0]
[86, 54, 0]
[0, 11, 14]
[1, 4, 9]
[234, 200, 90]
[137, 101, 4]
[3, 31, 41]
[1, 1, 0]
[22, 39, 22]
[185, 151, 29]
[29, 23, 4]
[44, 29, 3]
[84, 67, 12]
[227, 195, 62]
[70, 52, 0]
[1, 13, 17]
[23, 18, 8]
[208, 132, 0]
[118, 102, 19]
[238, 189, 0]
[11, 7, 2]
[9, 30, 29]
[167, 117, 0]
[17, 14, 3]
[42, 24, 1]
[49, 51, 34]
[207, 134, 2]
[54, 38, 1]
[92, 169, 191]
[3, 2, 0]
[224, 155, 2]
[101, 76, 0]
[40, 20, 8]
[3, 3, 2]
[174, 137, 86]
[148, 95, 1]
[7, 6, 0]
[1, 1, 1]
[0, 36, 37]
[198, 131, 0]
[40, 25, 0]
[179, 129, 12]
[0, 0, 0]
[226, 143, 1]
[84, 63, 1]
[13, 33, 39]
[3, 16, 24]
[122, 57, 1]
[134, 99, 1]
[0, 30, 40]
[1, 2, 2]
[0, 24, 28]
[180, 108, 0]
[27, 18, 0]
[156, 91, 1]
[4, 3, 0]
[223, 141, 1]
[68, 44, 1]
[45, 76, 84]
[0, 15, 23]
[245, 152, 1]
[116, 102, 0]
[69, 36, 1]
[0, 17, 24]
[45, 49, 39]
[165, 119, 1]
[16, 11, 0]
[6, 5, 0]
[255, 197, 1]
[211, 147, 1]
[53, 38, 0]
[255, 203, 0]
[0, 16, 25]
[245, 157, 1]
[99, 84, 1]
[222, 168, 39]
[0, 17, 24]
[97, 62, 11]
[148, 108, 0]
[6, 5, 0]
[0, 17, 23]
[133, 102, 50]
[196, 179, 3]
[39, 29, 0]
[5, 4, 0]
[0, 19, 26]
[235, 204, 38]
[82, 73, 12]
[105, 105, 79]
[0, 17, 25]
[254, 203, 6]
[131, 124, 45]
[1, 22, 30]
[0, 19, 26]
[156, 156, 119]
[180, 174, 38]
[26, 23, 3]
[255, 242, 1]
[4, 3, 1]
[222, 191, 7]
[66, 60, 6]
[255, 253, 79]
[0, 18, 28]
[252, 227, 4]
[114, 106, 4]
[10, 3, 1]
[0, 19, 28]
[239, 188, 0]
[163, 160, 32]
[14, 14, 3]
[0, 28, 28]
[34, 19, 0]
[209, 193, 13]
[51, 48, 5]
[14, 4, 0]
[1, 20, 29]
[244, 235, 92]
[97, 95, 22]
[73, 40, 0]
[0, 21, 30]
[236, 158, 1]
[146, 144, 108]
[5, 5, 1]
[0, 20, 29]
[150, 86, 0]
[193, 189, 96]
[37, 36, 21]
[4, 2, 0]
[1, 21, 30]
[233, 220, 24]
[80, 80, 30]
[99, 59, 9]
[0, 20, 29]
[255, 243, 32]
[129, 124, 15]
[1, 21, 30]
[1, 21, 30]
[50, 33, 0]
[178, 165, 15]
[24, 22, 2]
[18, 39, 23]
[0, 23, 31]
[220, 203, 3]
[64, 60, 3]
[15, 6, 1]
[2, 20, 29]
[251, 239, 27]
[112, 101, 14]
[1, 24, 31]
[0, 20, 29]
[250, 206, 0]
[161, 146, 7]
[13, 12, 1]
[0, 23, 31]
[1, 12, 17]
[206, 187, 13]
[49, 46, 3]
[1, 19, 23]
[0, 20, 29]
[243, 236, 107]
[94, 94, 57]
[0, 21, 22]
[0, 20, 30]
[255, 255, 207]
[144, 146, 121]
[4, 4, 3]
[0, 17, 25]
[3, 1, 0]
[192, 196, 100]
[35, 36, 19]
[1, 6, 9]
[0, 7, 12]
[231, 217, 36]
[78, 73, 12]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[11, 3, 29]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[15, 55, 56]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 2, 3]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[3, 3, 3]
[0, 0, 0]
[0, 0, 0]
[72, 110, 129]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[34, 55, 63]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[118, 189, 216]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[255, 250, 14]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[143, 236, 255]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[178, 168, 128]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[3, 2, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[34, 50, 51]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[31, 67, 78]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[4, 1, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[6, 17, 20]
[1, 0, 0]
[0, 0, 0]
[0, 0, 0]
[12, 6, 3]
[2, 2, 0]
[1, 0, 0]
[0, 0, 0]
[255, 213, 11]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[1, 0, 0]
[2, 2, 0]
[0, 0, 0]
[0, 0, 0]
[26, 41, 38]
[4, 3, 0]
[2, 1, 0]
[0, 0, 0]
[2, 20, 29]
[0, 0, 0]
[2, 1, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[5, 4, 1]
[1, 1, 0]
[0, 0, 0]
[56, 55, 33]
[18, 8, 1]
[1, 2, 0]
[0, 0, 0]
[2, 21, 33]
[2, 0, 0]
[9, 3, 0]
[0, 0, 0]
[75, 44, 5]
[0, 0, 0]
[44, 21, 0]
[2, 1, 0]
[0, 0, 0]
[249, 191, 0]
[161, 77, 1]
[23, 11, 0]
[1, 0, 0]
[2, 39, 52]
[198, 134, 16]
[73, 37, 0]
[2, 1, 0]
[11, 35, 40]
[39, 99, 124]
[208, 171, 4]
[27, 13, 0]
[5, 44, 53]
[188, 150, 75]
[236, 241, 189]
[88, 79, 5]
[1, 1, 1]
[1, 20, 29]
[255, 255, 191]
[134, 141, 34]
[0, 0, 0]
[2, 4, 7]
[62, 132, 164]
[182, 182, 154]
[27, 25, 0]
[1, 24, 28]
[19, 48, 54]
[224, 224, 200]
[68, 67, 0]
[40, 91, 109]
[46, 102, 122]
[254, 254, 187]
[116, 116, 14]
[0, 0, 0]
[1, 7, 14]
[88, 145, 164]
[165, 165, 150]
[16, 15, 0]
[8, 18, 21]
[28, 67, 74]
[210, 210, 119]
[53, 46, 0]
[7, 39, 41]
[88, 64, 7]
[244, 245, 84]
[99, 91, 0]
[0, 0, 0]
[2, 6, 9]
[249, 238, 165]
[148, 149, 68]
[6, 5, 0]
[12, 45, 57]
[84, 134, 148]
[195, 196, 34]
[39, 29, 0]
[0, 7, 11]
[150, 103, 0]
[234, 229, 0]
[82, 78, 1]
[165, 255, 255]
[14, 54, 68]
[254, 253, 38]
[131, 130, 13]
[0, 0, 0]
[2, 2, 0]
[77, 41, 0]
[180, 180, 60]
[26, 16, 0]
[1, 8, 11]
[2, 14, 14]
[223, 195, 0]
[66, 66, 1]
[40, 46, 31]
[25, 38, 32]
[253, 255, 43]
[114, 107, 0]
[6, 2, 1]
[4, 3, 1]
[161, 104, 6]
[163, 142, 0]
[13, 8, 0]
[27, 40, 35]
[58, 81, 80]
[208, 165, 1]
[51, 42, 0]
[9, 18, 12]
[159, 123, 65]
[243, 194, 1]
[97, 67, 1]
[84, 52, 0]
[9, 6, 1]
[136, 103, 72]
[146, 94, 1]
[4, 2, 0]
[1, 5, 9]
[255, 238, 0]
[194, 126, 1]
[35, 19, 0]
[2, 10, 12]
[16, 35, 38]
[232, 158,

146
VP-distant.py Executable file
View File

@ -0,0 +1,146 @@
from requests import *
import datetime
import base64
payload = {
'action': 'login',
'username': "mollre",
'password': base64.b64decode(b"QW5uaWthMjU=").decode("utf-8"), #should be obfuscated
}
moodleLogin = "https://moodle2.dfg.fr.schule-bw.de/moodle/blocks/exa2fa/login/"
iteration=1
table=[]
aktuellerplan=""
with session() as c:
c.post(moodleLogin, data=payload)
while "<title>Fehler</title>" not in aktuellerplan:
if len(str(iteration))==1:
tabelleurl = "https://moodle2.dfg.fr.schule-bw.de/moodle/pluginfile.php/7889/mod_resource/content/7/subst_00"+str(iteration)+".htm"
else:
tabelleurl = "https://moodle2.dfg.fr.schule-bw.de/moodle/pluginfile.php/7889/mod_resource/content/7/subst_0"+str(iteration)+".htm"
iteration+=1
aktuellerplan = c.get(tabelleurl).text
table.append(aktuellerplan)
print("Download: "+"=="*iteration,end="\r")
print("")
print("Download finished")
aktuellerplan=table[:-1]
#Download of every part of the plan (saved as list)
#The following basically is the concatenuation of the lsit into working html (small modifications)
for i in range(len(aktuellerplan)-1):
pos = aktuellerplan[i].index("<font")-7
aktuellerplan[i] = aktuellerplan[i][:pos]
#removes end of html (except on the last LE)
for j in range(len(aktuellerplan)-1):
pos = aktuellerplan[j+1].index("center")+7
aktuellerplan[j+1]=aktuellerplan[j+1][pos:]
#removes beginning of html (except the first LE)
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("</style>")+8]+aktuellerplan[0][aktuellerplan[0].index("</style>")+219:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("\"mon_head\"")+21]+"<p>"+aktuellerplan[0][aktuellerplan[0].index("Runzstr. 83")+17:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("tr.odd")+20]+" #ffffff"+aktuellerplan[0][aktuellerplan[0].index("tr.odd")+28:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("tr.even")+21]+" #e3e3e3"+aktuellerplan[0][aktuellerplan[0].index("tr.even")+29:]
#removal of UNTIS Text, saves space
aktuellerplan[-1]=aktuellerplan[-1][:-285]+"<p>Last upload:"+str(datetime.datetime.now().time())+"</p>"+"</body></html>"
#optional, adds last upload time (for debugging?)
weekdays=["Montag","Dienstag","Mittwoch","Donnerstag","Freitag"]
for i in range(5):
if weekdays[i] in aktuellerplan[0]:
day=weekdays[i]
try:
nextday=weekdays[i+1]
except:
nextday=weekdays[0]
#looks for Day in title (to determine the number of elements for th 1rst and 2nd table)
aktuellerplan[0]=aktuellerplan[0][:-8]
#removing additional content (useful?)
try:
lenght_of_1st_day = int(aktuellerplan[0][aktuellerplan[0].index(day)+len(day)+21])
except:
lenght_of_1st_day = 1
#tries to determine lenght of 1rst day, might crash if >10 (2 digits), couldn't try it...
for i in range(lenght_of_1st_day-1):
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_title"):]
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_list")+397:]
if i>0:
aktuellerplan[i]=aktuellerplan[i][:aktuellerplan[i].index("/table")-1]
tabletext=""
for i in range(lenght_of_1st_day):
tabletext=tabletext+aktuellerplan[0]
del aktuellerplan[0]
#puts the LE of 1rst day onto 1 table + puts them into 1 html
for i in range(len(aktuellerplan)-1):
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_title"):]
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_list")+397:]
if i==0:
aktuellerplan[i]=aktuellerplan[i][:-8]
elif i>0:
aktuellerplan[i]=aktuellerplan[i][:aktuellerplan[i].index("/table")-1]
#same for 2nd day
for x in aktuellerplan:
tabletext=tabletext+x
try:
tabletext=tabletext[:tabletext.index("1 / ")-7]+tabletext[tabletext.index("1 / ")+6:]
except:
print("1 page for day1")
try:
tabletext=tabletext[:tabletext.index("1 / ")-7]+tabletext[tabletext.index("1 / ")+6:]
except:
print("1 page for day2")
#removes title showing (Tag1/X)
if nextday not in tabletext:
nextday=weekdays[0]
#nextday = daynow+1, but that won't work for vacations. This fixes the issue (assuming school starts on monday afterwards)
tabletext=tabletext[:tabletext.index("tr.even")+32]+"\ntd.list{width:14%;}"+tabletext[tabletext.index("tr.even")+32:]
tabletext=tabletext[:tabletext.index("<center>")]+"<table id=\"overview\" style=\"width:100%;\"><tr><td valign=\"top\" style=\"width:50%;\">"+tabletext[tabletext.index("<center>"):]
tabletext=tabletext[:tabletext.index(nextday)-34]+"</td><td valign=\"top\" style=\"width:50%;\">"+tabletext[tabletext.index(nextday)-34:]
tabletext=tabletext[:tabletext.index("<font")]+"</td></tr></table>"+tabletext[tabletext.index("<font")-2:]
#puts table for both days into another table to be able to show them both on 1 screen
tabletext=tabletext.replace("<center>","")
tabletext=tabletext.replace("</center>","")
#removes center-tags bc they distort the layout of the table
js_func="""<script>
$(function() {
var pageScan = {
speed : 40000,
loop : true,
delayRestart : 2000,
start : function(){
pageHeight = $('body').height() - window.innerHeight;
pageScan.proc(pageHeight);
},
proc : function(to){
$("body").animate(
{scrollTop: to},
pageScan.speed,
"linear",
function(){
if (pageScan.loop) {
setTimeout(function() {
window.scrollTo(0, 0);
pageScan.start();
}, pageScan.delayRestart);
}
});
}
};
pageScan.start();
});
</script>"""
tabletext = tabletext[:tabletext.index("</body>")]+js_func+tabletext[tabletext.index("</body>"):]
tabletext = tabletext[:tabletext.index("</head>")]+"<script src=\"jquery.js\"></script>"+tabletext[tabletext.index("</head>"):]
#adds js function for autoscroll (up and down)
#REQUIRES JQUERY
tabletext = tabletext[:tabletext.index("<body>")+6]+tabletext[tabletext.index("Stand"):tabletext.index("Stand")+23]+tabletext[tabletext.index("Stand")+65:]
#removes some faulty div/span content (was useless anyways)
tabletext = tabletext.replace("margin: 0;","text-align: center;")
tabletext = tabletext[:tabletext.index("table.info")+13]+" margin:auto;"+tabletext[tabletext.index("table.info")+13:]
#centers title of day
print("Conversion finished, Writing file")
with open("index.html","w") as f:
f.write(tabletext)
#alternatively: upload to FTP?

124
VP-local.py Executable file
View File

@ -0,0 +1,124 @@
from requests import *
import datetime
import glob, os
## Load local *.htm file in a list
os.chdir("Klasse")
aktuellerplan = []
for file in sorted(glob.glob("*00*.htm")):
with open(file,"r") as f:
aktuellerplan.append("".join(f.readlines()))
for i in range(len(aktuellerplan)-1):
pos = aktuellerplan[i].index("<font")-5
aktuellerplan[i] = aktuellerplan[i][:pos]
#removes end of html (except on the last LE)
for j in range(len(aktuellerplan)-1):
pos = aktuellerplan[j+1].index("center")+7
aktuellerplan[j+1]=aktuellerplan[j+1][pos:]
#removes beginning of html (except the first LE)
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("</style>")+10]+aktuellerplan[0][aktuellerplan[0].index("</style>")+219:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("\"mon_head\"")+21]+"<p>"+aktuellerplan[0][aktuellerplan[0].index("Runzstr. 83")+17:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("tr.odd")+20]+" #ffffff"+aktuellerplan[0][aktuellerplan[0].index("tr.odd")+28:]
aktuellerplan[0]=aktuellerplan[0][:aktuellerplan[0].index("tr.even")+21]+" #e3e3e3"+aktuellerplan[0][aktuellerplan[0].index("tr.even")+29:]
#removal of UNTIS Text, saves space
aktuellerplan[-1]=aktuellerplan[-1][:-285]+"<p>Last upload:"+str(datetime.datetime.now().time())+"</p>"+"</body></html>"
#optional, adds last upload time (for debugging?)
weekdays=["Montag","Dienstag","Mittwoch","Donnerstag","Freitag"]
for i in range(5):
if weekdays[i] in aktuellerplan[0]:
day=weekdays[i]
try:
nextday=weekdays[i+1]
except:
nextday=weekdays[0]
#looks for Day in title (to determine the number of elements for th 1rst and 2nd table)
aktuellerplan[0]=aktuellerplan[0][:-8]
#removing additional content (useful?)
try:
lenght_of_1st_day = int(aktuellerplan[0][aktuellerplan[0].index(day)+len(day)+21])
except:
lenght_of_1st_day = 1
#tries to determine lenght of 1rst day, might crash if >10 (2 digits), couldn't try it...
for i in range(lenght_of_1st_day-1):
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_title"):]
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_list")+397:]
if i>0:
aktuellerplan[i]=aktuellerplan[i][:aktuellerplan[i].index("/table")-1]
tabletext=""
for i in range(lenght_of_1st_day):
tabletext=tabletext+aktuellerplan[0]
del aktuellerplan[0]
#puts the LE of 1rst day onto 1 table + puts them into 1 html
for i in range(len(aktuellerplan)-1):
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_title"):]
aktuellerplan[i+1]=aktuellerplan[i+1][aktuellerplan[i+1].index("mon_list")+397:]
if i==0:
aktuellerplan[i]=aktuellerplan[i][:-8]
elif i>0:
aktuellerplan[i]=aktuellerplan[i][:aktuellerplan[i].index("/table")-1]
#same for 2nd day
for x in aktuellerplan:
tabletext=tabletext+x
try:
tabletext=tabletext[:tabletext.index("1 / ")-7]+tabletext[tabletext.index("1 / ")+6:]
except:
print("1 page for day1")
try:
tabletext=tabletext[:tabletext.index("1 / ")-7]+tabletext[tabletext.index("1 / ")+6:]
except:
print("1 page for day2")
#removes title showing (Tag1/X)
if nextday not in tabletext:
nextday=weekdays[0]
#nextday = daynow+1, but that won't work for vacations. This fixes the issue (assuming school starts on monday afterwards)
tabletext=tabletext[:tabletext.index("tr.even")+32]+"\ntd.list{width:14%;}"+tabletext[tabletext.index("tr.even")+32:]
tabletext=tabletext[:tabletext.index("<center>")]+"<table id=\"overview\" style=\"width:100%;\"><tr><td valign=\"top\" style=\"width:50%;\">"+tabletext[tabletext.index("<center>"):]
tabletext=tabletext[:tabletext.index(nextday)-34]+"</td><td valign=\"top\" style=\"width:50%;\">"+tabletext[tabletext.index(nextday)-34:]
tabletext=tabletext[:tabletext.index("<font")]+"</td></tr></table>"+tabletext[tabletext.index("<font")-2:]
#puts table for both days into another table to be able to show them both on 1 screen
tabletext=tabletext.replace("<center>","")
tabletext=tabletext.replace("</center>","")
#removes center-tags bc they distort the layout of the table
js_func="""<script>
$(function() {
var pageScan = {
speed : 40000,
loop : true,
delayRestart : 2000,
start : function(){
pageHeight = $('body').height() - window.innerHeight;
pageScan.proc(pageHeight);
},
proc : function(to){
$("body").animate(
{scrollTop: to},
pageScan.speed,
"linear",
function(){
if (pageScan.loop) {
setTimeout(function() {
window.scrollTo(0, 0);
pageScan.start();
}, pageScan.delayRestart);
}
});
}
};
pageScan.start();
});
</script>"""
tabletext = tabletext[:tabletext.index("</body>")]+js_func+tabletext[tabletext.index("</body>"):]
tabletext = tabletext[:tabletext.index("</head>")]+"<script src=\"jquery.js\"></script>"+tabletext[tabletext.index("</head>"):]
#adds js function for autoscroll (up and down)
#REQUIRES JQUERY
tabletext = tabletext[:tabletext.index("<body>")+6]+tabletext[tabletext.index("Stand"):tabletext.index("Stand")+23]+tabletext[tabletext.index("Stand")+65:]
#removes some faulty div/span content (was useless anyways)
tabletext = tabletext.replace("margin: 0;","text-align: center;")
tabletext = tabletext[:tabletext.index("table.info")+13]+" margin:auto;"+tabletext[tabletext.index("table.info")+13:]
#centers title of day
print("Conversion finished, Writing file")
with open("index.html","w") as f:
f.write(tabletext)
#alternatively: upload to FTP?

163
Vertretungsplan-Autoscroll.py Executable file
View File

@ -0,0 +1,163 @@
import re
import datetime
import glob, os
from bs4 import BeautifulSoup
def tag_content_all(content,tag_to_search):
#returns content of EVERY tag matching the criteria
html_soup = BeautifulSoup(content,'html.parser')
tag_list=[]
for tag in html_soup.find_all(re.compile(tag_to_search)):
tag_list.append(tag)
return tag_list
def tag_content_precise(content,tag_to_search,class_name):
#returns content of the tag matching the class-name (the used ones are all unique in these files)
html_soup = BeautifulSoup(content,'html.parser')
tag_content = html_soup.find_all(tag_to_search,class_=class_name)
return tag_content
##Load local *.htm file in a list
os.chdir("Klasse")
aktuellerplan_list = []
for file in sorted(glob.glob("*00*.htm")):
with open(file,"r") as f:
aktuellerplan_list.append("".join(f.readlines()))
##Get style-sheet:
style_old = str(tag_content_all(aktuellerplan_list[0],"style")[0])
style_old = style_old.replace("fad3a6","ffffff")
style_old = style_old.replace("fdecd9","e3e3e3")
#replaces bg-colors for the table
style_old = style_old.replace("</style>","")
style_new = style_old
style_new += "#overview{width:100%;}\n"
style_new += "html{font-size: 115%;}\n"
style_new += ".day{border: 2px;border-style:solid;border-collapse:collapse;width:100%;}\n"
style_new += "td.list{width:14%;}\n"
style_new += "td.day_td{vertical-align: top;width: 50%;}\n"
style_new += ".inner{\n"
style_new += " position:relative;\n"
style_new += " top:0px;\n"
style_new += "}\n"
style_new += ".outer{\n"
style_new += " overflow:hidden;\n"
style_new += "}\n"
style_new += "</style>\n"
##Gets everything inside center, ie. title, info and actual content
plan_list_inter = []
for i in aktuellerplan_list:
plan_list_inter.append(tag_content_all(i,"center"))
##Get number of LE / day:
first_title = str(tag_content_precise(str(plan_list_inter[0]),"div","mon_title"))
first_title = first_title[first_title.index(">")+1:first_title.index(">")+3]
nb_day_one = 0
for i in plan_list_inter:
i = str(tag_content_precise(str(i),"div","mon_title"))
if i[i.index(">")+1:i.index(">")+3] == first_title:
nb_day_one += 1
##Gets title of each day (weekday+type of week)
days_title_list=[]
days_title_list.append(str(tag_content_precise(str(plan_list_inter[0]),"div","mon_title")[0]))
days_title_list.append(str(tag_content_precise(str(plan_list_inter[-1]),"div","mon_title")[0]))
for i in range(len(days_title_list)):
days_title_list[i]=days_title_list[i][:days_title_list[i].index("Woche")+7]+"</div>"
##Makes two sep. lists for each day. Each LE is one part of the final table
days_table_list=[[],[]]
for j in range(nb_day_one):
days_table_list[0].append(tag_content_precise(str(plan_list_inter[j][0]),"table","mon_list"))
for j in range(nb_day_one,len(plan_list_inter)):
days_table_list[1].append(tag_content_precise(str(plan_list_inter[j][0]),"table","mon_list"))
#The sub-lists contain every appearence of "center" ->take 1rst one, ie. [0]
##Gets the info for each day
days_info_list = []
days_info_list.append(tag_content_precise(str(plan_list_inter[0][0]),"table","info"))
days_info_list.append(tag_content_precise(str(plan_list_inter[nb_day_one][0]),"table","info"))
for i in range(len(days_info_list)):
try:
days_info_list[i] = str(days_info_list[i][0])
except:
days_info_list[i] = ""
#as info is mandatory, the possible lack of info has to be handled
##Removes obsolete html on each LE (eg. the th)
for i in range(2):
old_TE = str(days_table_list[i][0][0])
new_TE = old_TE[old_TE.index("mon_list")+11:old_TE.index("/table")-1]
days_table_list[i][0]=new_TE
for j in range(1,len(days_table_list[i])):
old_TE = str(days_table_list[i][j][0])
new_TE = old_TE[old_TE.index("mon_list")+11:old_TE.index("/table")-1]
#just removing <table></table>-tag to be able to able to form a single table
len_of_TH = len(str(tag_content_precise(new_TE,"tr","list")[0]))
new_TE = new_TE[len_of_TH:]
#removes th for every LE (except first of every table)
days_table_list[i][j] = new_TE
##Concats the parts of the table to a single table (1/day)
days_str = ["",""]
for i in range(2):
for j in days_table_list[i]:
days_str[i] += str(j)
js_script="""
<script
src="http://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready( function () {
function autoScrollDown(){
$(".inner").css({top:-$(".outer").outerHeight()}) // jump back
.animate({top:0},20000,"linear", autoScrollDown); // and animate
}
function autoScrollUp(){
$(".inner").css({top:0}) // jump back
.animate({top:-$(".outer").outerHeight()},20000,"linear", autoScrollUp); // and animate
}
// fix height of outer:
$('.outer').css({maxHeight: $('.inner').height()});
// duplicate content of inner:
$('.inner').html($('.inner').html() + $('.inner').html());
autoScrollUp();
});
</script>
"""
##Compiles the final html
end_html = "<!doctype html>\n<html>\n<head>\n"
end_html += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"
end_html += style_new+"\n"
end_html += "<title>Untis Vertretungsplan</title>\n"
end_html += js_script + "\n"
end_html += "</head>\n<body>\n<div class='outer'>\n<div class='inner'><center>\n<table id='overview'>\n"
end_html += "<tr>\n<td>\n<center>\n"+days_title_list[0]+days_info_list[0]+"\n</center>\n</td>\n<td>\n<center>\n"+days_title_list[1]+days_info_list[1]+"\n</center>\n</td>\n</tr>"
end_html += "<tr>\n<td class='day_td'>\n<table class='day'>\n"
end_html += days_str[0]
end_html += "</table>\n</td>\n<td class='day_td'>\n<table class='day'>\n"
end_html += days_str[1]
end_html += "</table>\n</td>\n</tr>\n</table>\n</center>\n</div>\n</div>"
end_html += "<p>Letztes update: " + str(datetime.datetime.now().strftime("%d/%m/%y - %H:%M")) + "</p>\n"
end_html += "</body>\n</html>"
##Writes to file (located in dir. "Klasse")
with open("index.html","w") as f:
f.write(end_html)