added logo

This commit is contained in:
Hellow 2023-02-22 17:56:52 +01:00
parent 33b1efc2ed
commit 20977c0208
19 changed files with 413 additions and 38 deletions

BIN
assets/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

BIN
assets/logos/.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

BIN
assets/logos/00.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
assets/logos/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

76
assets/logos/01.svg Normal file
View File

@ -0,0 +1,76 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4965 7890 c-800 -37 -1523 -349 -2220 -960 -398 -349 -585 -575
-740 -895 -186 -381 -255 -705 -255 -1187 l0 -170 -31 7 c-16 4 -57 4 -90 0
l-59 -7 0 -46 c0 -26 7 -85 16 -132 32 -182 33 -172 -25 -256 -84 -120 -144
-270 -172 -427 -19 -116 -7 -352 25 -477 126 -486 561 -875 1080 -965 192 -33
458 -14 628 44 270 93 516 298 632 529 75 150 106 265 106 404 0 221 -64 380
-230 566 -256 287 -315 365 -382 509 -71 151 -81 208 -82 458 -1 207 1 226 26
322 27 103 90 244 147 327 56 80 154 168 237 212 93 49 184 72 354 87 l125 12
3 40 c5 73 -8 80 -150 78 -189 -2 -303 -33 -465 -124 -224 -126 -412 -428
-445 -713 -11 -97 -4 -324 13 -441 29 -193 116 -405 226 -552 22 -28 99 -118
173 -200 210 -233 261 -314 281 -445 24 -155 -6 -312 -94 -483 -54 -106 -197
-252 -312 -319 -177 -103 -317 -145 -515 -153 -202 -8 -362 24 -547 112 -140
66 -228 128 -339 239 -187 187 -278 396 -291 661 -11 242 60 492 169 595 32
30 101 64 176 86 42 12 62 23 61 34 0 8 -15 53 -33 100 -28 72 -37 85 -56 85
-24 0 -33 -11 -50 -57 -20 -57 -68 -20 -94 71 -9 31 -16 72 -16 89 0 32 0 32
50 32 l50 0 0 40 c0 32 5 43 29 61 l29 21 6 147 c11 255 40 516 73 645 84 337
221 619 423 869 58 72 181 197 233 237 39 31 36 11 -24 -121 -106 -239 -174
-489 -198 -729 -6 -58 -14 -124 -17 -147 l-5 -43 83 0 83 0 2 28 c6 87 48 350
69 434 102 408 382 841 719 1111 444 356 1004 562 1620 597 534 30 1027 -72
1505 -310 599 -298 964 -752 1090 -1355 25 -121 41 -502 22 -514 -7 -4 30 -5
81 -3 50 2 94 6 97 9 3 3 5 102 4 221 0 153 -6 251 -18 331 -17 110 -74 358
-95 414 -6 15 -7 27 -2 27 16 0 150 -148 223 -246 171 -231 272 -434 347 -701
66 -234 95 -428 76 -502 -7 -31 -8 -64 -2 -101 4 -30 11 -131 15 -225 l7 -170
70 -1 c135 -3 125 1 125 -41 0 -46 -25 -142 -40 -157 -6 -6 -53 -11 -113 -12
l-102 -1 -7 -49 c-4 -27 -9 -63 -13 -80 -5 -30 -5 -30 71 -54 89 -28 144 -72
205 -162 98 -143 139 -280 139 -459 0 -169 -28 -286 -105 -439 -162 -321 -435
-531 -787 -606 -126 -27 -362 -24 -493 5 -220 50 -383 138 -531 285 -108 109
-156 188 -188 312 -21 80 -20 225 0 317 32 139 97 245 300 488 186 221 240
310 307 502 l32 92 0 290 0 290 -33 95 c-18 52 -61 154 -97 225 -103 207 -209
316 -400 410 -144 72 -238 90 -460 88 -194 -1 -215 -7 -215 -62 0 -28 5 -43
18 -49 9 -5 82 -12 162 -16 235 -10 349 -41 485 -131 143 -95 243 -219 308
-383 57 -141 70 -223 70 -412 -1 -406 -86 -608 -406 -972 -117 -133 -170 -220
-215 -350 -116 -340 24 -729 352 -976 76 -58 249 -149 342 -180 209 -71 469
-85 697 -38 279 57 494 174 699 377 257 256 378 540 378 889 0 103 -5 146 -25
225 -39 157 -123 300 -221 380 l-45 37 21 36 c33 56 78 302 61 331 -5 7 -41
17 -81 22 -40 5 -75 11 -78 14 -2 2 -6 35 -8 72 -22 403 -38 538 -89 728 -152
580 -405 994 -886 1447 -188 177 -268 241 -496 398 -389 269 -901 464 -1397
535 -99 14 -425 36 -486 33 -14 -1 -97 -4 -185 -8z"/>
<path d="M2446 5430 c-70 -11 -124 -41 -200 -111 -74 -68 -120 -161 -142 -289
-52 -305 58 -798 216 -960 71 -73 124 -95 230 -95 107 0 172 27 231 94 114
129 143 301 137 811 l-3 305 -28 57 c-35 72 -110 140 -183 168 -66 24 -175 33
-258 20z m186 -340 c34 -42 39 -83 41 -385 1 -211 -1 -244 -16 -272 -35 -66
-122 -92 -175 -54 -58 41 -67 88 -66 346 1 248 8 353 28 380 32 44 146 35 188
-15z"/>
<path d="M7603 5430 c-118 -24 -229 -113 -266 -216 -37 -99 -47 -568 -17 -779
45 -314 174 -465 398 -465 96 0 158 27 225 99 76 82 111 169 148 377 30 167
34 565 6 664 -68 240 -261 366 -494 320z m153 -331 c31 -25 64 -116 75 -204
13 -106 5 -336 -15 -410 -40 -153 -118 -198 -196 -116 -56 59 -72 114 -78 271
-2 75 0 171 7 215 6 44 13 106 17 137 7 75 38 121 84 128 38 6 84 -3 106 -21z"/>
<path d="M4219 5372 c-199 -52 -323 -212 -364 -468 -6 -38 -4 -42 23 -53 65
-27 107 7 172 136 61 123 123 183 212 208 104 28 199 18 293 -30 41 -21 96
-60 122 -87 54 -54 76 -60 96 -22 29 56 -11 153 -93 228 -104 94 -296 131
-461 88z"/>
<path d="M5739 5278 c-135 -48 -216 -116 -250 -211 -13 -37 -13 -40 10 -58 37
-30 74 -25 105 16 15 19 51 47 79 62 45 23 65 27 142 27 76 0 97 -3 135 -23
113 -60 165 -112 263 -266 42 -65 73 -81 122 -61 58 24 50 47 -96 286 -112
185 -190 238 -359 247 -70 3 -96 0 -151 -19z"/>
<path d="M7247 5166 c-5 -15 -6 -31 -3 -34 8 -8 18 25 14 45 -3 13 -6 10 -11
-11z"/>
<path d="M4626 4169 c-50 -8 -86 -37 -114 -90 -20 -37 -23 -54 -18 -104 21
-232 161 -450 350 -544 175 -88 392 -92 571 -11 185 84 323 271 355 482 19
127 -9 233 -67 256 -30 13 -1008 22 -1077 11z m928 -169 c35 -13 40 -45 21
-121 -35 -134 -108 -240 -196 -284 -65 -33 -172 -48 -309 -43 -100 4 -122 8
-166 31 -89 45 -160 146 -189 269 -22 94 -20 137 8 148 30 12 799 13 831 0z"/>
<path d="M9980 552 c0 -4 21 -28 46 -52 55 -53 55 -40 2 19 -38 41 -48 48 -48
33z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
assets/logos/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

80
assets/logos/02.svg Normal file
View File

@ -0,0 +1,80 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4784 8535 c-695 -66 -1296 -270 -1819 -616 -369 -245 -627 -477
-843 -763 -304 -402 -461 -948 -479 -1666 -9 -352 13 -581 82 -850 40 -156 61
-215 117 -323 55 -105 114 -169 194 -208 61 -30 69 -32 148 -27 179 12 320
123 356 281 8 38 6 64 -15 154 -14 59 -32 140 -41 178 -8 39 -21 95 -29 125
-41 165 -50 270 -50 565 0 261 3 309 28 480 30 214 28 242 -24 293 -41 40
-146 68 -312 84 -70 6 -127 15 -127 20 0 15 102 293 139 378 79 183 209 386
348 546 129 147 379 360 588 501 124 83 234 147 242 139 3 -3 -21 -36 -54 -73
-178 -203 -321 -426 -411 -643 -110 -265 -152 -484 -153 -804 -1 -338 43 -569
166 -877 56 -138 108 -235 192 -357 83 -119 95 -148 137 -323 54 -224 163
-505 223 -574 50 -57 102 -69 147 -34 46 36 34 86 -63 252 -65 113 -88 182
-107 332 -17 133 -20 142 -164 445 -148 313 -197 440 -250 650 -42 169 -60
311 -60 480 0 575 268 1118 733 1488 260 206 635 354 1060 418 142 21 566 26
722 9 323 -36 644 -133 905 -273 180 -96 322 -205 481 -368 464 -478 615
-1159 402 -1809 -22 -66 -78 -191 -142 -315 -275 -536 -251 -481 -271 -620
-10 -69 -28 -177 -40 -240 -27 -146 -37 -342 -20 -394 15 -47 51 -64 87 -41
73 49 164 319 184 549 17 208 39 271 158 461 197 313 285 530 342 845 31 167
34 543 6 685 -82 408 -210 682 -470 1005 -47 58 -83 107 -81 109 1 2 21 -7 43
-20 22 -13 77 -46 123 -73 324 -190 683 -538 883 -856 91 -145 268 -561 247
-582 -4 -3 -60 -16 -125 -27 -175 -31 -300 -80 -364 -141 -29 -26 -29 -54 -2
-190 64 -330 65 -751 3 -1081 -8 -46 -32 -145 -51 -219 -42 -157 -47 -246 -19
-329 20 -58 68 -118 120 -151 106 -65 273 -77 372 -27 140 71 251 273 328 592
55 229 76 429 76 725 0 991 -288 1664 -949 2213 -577 481 -1339 795 -2151 887
-154 18 -537 21 -696 5z"/>
<path d="M5963 4946 c-158 -51 -243 -191 -243 -398 0 -160 41 -281 122 -359
55 -53 99 -71 178 -72 55 -2 76 3 132 31 119 58 236 210 254 329 14 95 -50
278 -130 370 -72 82 -220 129 -313 99z m376 -302 c58 -49 66 -147 14 -198 -34
-34 -74 -34 -113 2 -57 50 -60 140 -8 193 36 36 67 37 107 3z"/>
<path d="M4089 4943 c-49 -8 -133 -66 -166 -116 -43 -64 -53 -102 -60 -224 -5
-91 -3 -110 21 -186 32 -103 76 -171 140 -214 126 -86 260 -73 354 33 73 82
97 158 97 310 0 121 0 121 -39 198 -51 101 -114 158 -203 186 -63 19 -88 22
-144 13z m-91 -294 c84 -29 79 -157 -8 -219 -65 -46 -110 -3 -113 107 -2 74 8
97 48 113 28 12 37 12 73 -1z"/>
<path d="M2585 3875 c-183 -29 -311 -98 -360 -194 -44 -88 -42 -163 6 -190 35
-20 65 -10 156 53 107 73 131 84 220 103 158 32 281 14 698 -102 301 -84 366
-93 423 -60 65 39 64 70 -5 146 -45 49 -65 58 -272 116 -516 143 -650 163
-866 128z"/>
<path d="M7350 3874 c-174 -23 -417 -78 -635 -145 -71 -22 -172 -49 -223 -59
-52 -10 -96 -21 -99 -24 -3 -3 -9 -24 -13 -48 -11 -57 7 -91 60 -112 74 -29
165 -17 465 63 295 79 375 94 505 94 82 1 131 -4 171 -16 58 -18 151 -69 188
-104 12 -11 38 -29 57 -39 31 -17 37 -17 62 -4 36 21 72 76 72 112 0 70 -68
167 -148 211 -77 42 -192 68 -317 72 -60 2 -126 1 -145 -1z"/>
<path d="M5404 3765 c-207 -147 -263 -172 -364 -162 -77 8 -129 33 -235 111
-86 63 -129 85 -142 73 -13 -13 50 -118 103 -170 82 -83 160 -119 277 -125
150 -8 252 32 350 137 70 75 111 171 73 171 -8 0 -36 -16 -62 -35z"/>
<path d="M3981 3144 c-266 -178 -442 -186 -926 -41 -302 91 -455 97 -612 23
-157 -75 -251 -214 -222 -330 21 -83 76 -225 110 -284 100 -170 378 -370 654
-471 376 -137 757 -167 1102 -86 278 66 504 187 689 370 108 107 176 197 239
316 25 49 51 91 56 95 16 9 31 -9 94 -111 196 -316 448 -516 810 -641 336
-117 740 -122 1125 -14 297 84 533 213 711 389 164 163 221 269 222 416 1 66
-4 90 -25 135 -78 168 -302 263 -558 237 -41 -4 -156 -30 -255 -57 -223 -62
-311 -79 -446 -87 -183 -10 -352 31 -554 135 l-98 50 -22 -24 c-40 -44 -49
-77 -30 -117 29 -63 136 -154 230 -198 114 -54 192 -70 367 -76 177 -7 282 9
503 72 280 81 392 93 508 54 106 -35 157 -84 157 -151 0 -51 -59 -145 -134
-215 -226 -211 -559 -347 -961 -393 -216 -24 -499 5 -699 72 -314 105 -535
288 -671 556 -42 84 -31 81 -206 56 -100 -14 -118 -14 -186 0 -41 9 -79 16
-84 16 -5 0 -22 -30 -39 -66 -112 -249 -373 -466 -681 -568 -355 -118 -819
-76 -1207 109 -284 136 -425 272 -474 458 -11 41 -10 52 3 75 33 60 129 94
259 95 83 0 151 -15 325 -68 353 -109 499 -125 706 -75 157 38 305 134 365
236 23 39 24 48 14 78 -13 41 -47 86 -63 86 -7 0 -50 -25 -96 -56z"/>
<path d="M10020 505 c24 -25 49 -45 54 -45 6 0 -10 20 -34 45 -24 25 -49 45
-54 45 -6 0 10 -20 34 -45z"/>
<path d="M9946 522 c-3 -5 17 -30 43 -56 33 -32 51 -44 56 -36 4 7 -10 29 -36
56 -44 45 -54 50 -63 36z"/>
<path d="M9891 430 c-48 -35 -92 -113 -74 -131 17 -17 59 -2 102 36 41 37 76
99 66 115 -12 19 -52 10 -94 -20z"/>
<path d="M9746 322 c-3 -5 17 -30 43 -56 33 -32 51 -44 56 -36 4 7 -10 29 -36
56 -44 45 -54 50 -63 36z"/>
<path d="M9720 278 c0 -13 -7 -36 -15 -52 -28 -53 -12 -71 38 -44 12 6 35 14
51 17 l28 6 -47 48 c-26 26 -49 47 -51 47 -2 0 -4 -10 -4 -22z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,137 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1884 10147 c-438 -456 -723 -1077 -825 -1797 -30 -207 -33 -589 -6
-688 26 -97 31 -92 -81 -91 -349 0 -651 -131 -891 -388 l-81 -86 0 -313 c0
-173 2 -314 4 -314 2 0 15 17 27 38 105 172 237 352 259 352 4 0 -3 -39 -16
-87 -179 -642 -244 -1229 -215 -1938 11 -258 41 -647 62 -785 5 -36 14 -99 19
-140 16 -113 67 -403 106 -600 8 -41 26 -119 40 -172 14 -53 24 -105 22 -115
-3 -19 -114 198 -212 417 -31 69 -66 139 -76 155 l-20 30 0 -296 0 -295 68
-105 c113 -172 229 -298 351 -380 64 -44 227 -124 300 -149 36 -12 114 -33
175 -47 130 -29 314 -35 462 -14 50 8 97 12 104 9 19 -6 -282 -123 -407 -158
-163 -46 -305 -64 -458 -57 -140 7 -176 14 -359 72 -92 29 -127 36 -158 31
-76 -12 -78 -15 -78 -124 l0 -97 43 -26 c76 -48 103 -58 218 -83 203 -44 260
-51 424 -50 322 2 609 85 1027 296 148 74 162 79 250 89 98 10 132 24 358 144
81 43 150 59 150 35 0 -20 -48 -105 -96 -170 -132 -181 -370 -374 -601 -489
-241 -120 -476 -181 -804 -210 -128 -11 -181 -34 -255 -113 -74 -78 -97 -144
-95 -278 0 -60 7 -130 16 -163 55 -211 304 -437 615 -560 127 -50 353 -97 470
-97 57 0 222 23 252 35 13 5 23 -7 47 -57 67 -141 187 -236 371 -292 l85 -27
450 3 450 3 118 38 c222 71 402 159 557 273 104 76 282 259 339 349 28 44 55
85 60 91 11 14 395 24 886 24 l361 0 60 -88 c225 -333 663 -595 1091 -652 116
-16 379 -7 482 15 184 41 364 115 512 211 94 61 233 199 289 286 l43 67 56
-28 c299 -150 843 -78 1089 144 63 57 112 139 112 184 -1 35 -32 101 -61 128
-13 12 -105 64 -205 116 -206 107 -221 117 -286 170 -72 58 -106 112 -234 367
-170 340 -232 438 -363 573 -36 37 -63 67 -60 67 4 0 27 -9 53 -20 25 -12 139
-43 253 -70 115 -27 246 -58 293 -69 47 -11 122 -27 167 -35 65 -11 117 -32
250 -96 92 -45 192 -94 220 -108 29 -14 59 -33 68 -42 14 -15 8 -16 -68 -17
-45 -1 -134 -2 -197 -3 -127 -3 -283 23 -366 59 -26 12 -52 21 -58 21 -19 0
-130 77 -195 135 -67 60 -81 66 -81 34 0 -29 104 -129 182 -174 69 -41 195
-85 303 -106 80 -16 480 -20 530 -5 l30 9 -30 14 -30 14 30 -6 c99 -21 159
-17 298 19 149 38 249 77 321 122 l45 29 1 182 0 183 -113 -98 c-63 -53 -137
-110 -166 -125 -133 -73 -289 -87 -426 -39 -90 31 -199 96 -192 115 2 7 35 15
80 19 139 13 270 39 395 80 127 41 299 117 365 162 21 14 42 26 47 26 6 0 10
86 10 218 0 215 0 217 -19 187 -17 -28 -97 -107 -166 -165 -105 -87 -270 -174
-410 -216 -108 -32 -214 -56 -228 -51 -5 1 2 16 15 32 96 118 238 513 307 855
89 444 125 846 126 1405 0 395 -6 505 -51 866 -42 343 -63 459 -130 723 -63
243 -167 480 -309 701 -98 152 -120 194 -107 207 17 17 176 22 259 9 101 -16
160 -33 247 -73 189 -86 279 -179 415 -433 18 -33 37 -64 42 -70 5 -5 9 89 9
240 l-1 250 -77 69 c-151 134 -339 226 -560 271 -62 12 -115 25 -118 28 -4 3
2 30 12 59 16 46 19 83 18 278 -1 231 -12 334 -62 575 -71 338 -235 765 -393
1022 -23 38 -54 89 -70 115 -97 163 -237 350 -377 506 l-74 82 -177 0 -176 0
91 -92 c204 -208 333 -376 488 -631 186 -307 325 -643 405 -977 69 -291 80
-381 56 -468 -10 -34 -23 -67 -31 -72 -9 -8 -80 -9 -234 -4 -266 8 -247 -1
-340 171 -252 464 -543 835 -890 1133 -562 482 -1190 792 -1850 912 -121 22
-145 23 -690 23 l-565 0 -120 -27 c-66 -15 -163 -36 -215 -47 -604 -133 -1184
-448 -1625 -885 -276 -274 -477 -557 -660 -931 -74 -153 -135 -251 -208 -340
-23 -28 -30 -30 -94 -31 -37 -1 -122 -5 -188 -9 -153 -10 -177 -1 -200 77 -45
151 0 415 140 835 162 483 398 878 756 1266 l91 97 -165 0 -164 0 -89 -93z
m3676 -162 c570 -67 1152 -279 1613 -586 465 -311 866 -729 1110 -1159 78
-137 182 -371 217 -489 25 -82 48 -224 42 -257 -5 -30 -30 -40 -162 -68 -184
-38 -221 -56 -315 -150 -73 -72 -89 -95 -143 -206 -87 -177 -126 -307 -178
-598 -9 -50 -20 -95 -25 -98 -6 -3 -21 1 -34 10 -32 21 -288 130 -405 173
-311 113 -759 239 -1045 293 -437 83 -625 101 -1115 107 -430 5 -548 0 -846
-38 -568 -71 -1208 -279 -1583 -514 -57 -36 -107 -65 -111 -65 -4 0 -11 17
-15 38 -24 135 -126 458 -183 583 -83 184 -243 382 -388 480 -39 26 -74 54
-77 61 -5 13 19 80 70 203 14 33 50 121 80 195 284 706 734 1232 1389 1623
420 251 966 428 1449 470 122 11 541 6 655 -8z m-4078 -2636 c256 -52 479
-221 607 -461 44 -81 99 -235 124 -343 57 -249 114 -543 147 -770 63 -417 58
-1157 -11 -1695 -14 -112 -67 -419 -84 -489 -32 -134 -66 -252 -95 -331 -17
-47 -39 -107 -49 -135 -26 -71 -120 -260 -164 -327 -20 -31 -53 -69 -72 -83
-75 -58 -219 -101 -355 -105 -85 -3 -82 -7 -46 68 36 74 50 105 90 202 15 36
32 74 37 85 25 55 94 258 125 367 42 150 75 287 93 388 34 184 59 412 76 690
22 348 21 450 -16 930 -25 333 -111 861 -198 1215 -25 103 -101 327 -131 385
-34 67 -108 179 -152 229 -76 88 -82 141 -17 173 18 10 35 18 36 18 1 0 26 -5
55 -11z m-491 -123 c299 -144 526 -765 614 -1681 45 -472 38 -1171 -16 -1595
-66 -520 -179 -884 -368 -1194 -57 -94 -141 -196 -161 -196 -43 0 -215 142
-313 258 -103 123 -219 414 -277 698 -129 623 -153 1928 -49 2609 75 495 180
842 308 1021 63 87 93 106 166 102 33 -2 76 -12 96 -22z m7908 -18 c25 -12 82
-58 126 -102 194 -195 347 -570 454 -1111 58 -292 85 -524 106 -903 40 -715
-2 -1279 -136 -1817 -78 -314 -216 -629 -307 -705 -57 -47 -150 -90 -195 -90
-53 0 -122 36 -164 85 -46 53 -240 432 -305 595 -116 290 -148 590 -163 1520
-18 1111 53 1735 250 2179 48 108 141 269 188 326 45 53 74 58 146 23z m-605
-168 c30 -11 33 -32 10 -86 -143 -338 -218 -739 -254 -1349 -19 -324 -9 -1015
20 -1465 13 -193 15 -279 6 -287 -21 -22 -82 112 -121 266 -115 457 -123 1127
-20 1782 15 94 25 199 25 262 0 113 13 177 85 432 56 202 96 305 152 398 36
59 49 66 97 47z m-2813 -365 c222 -23 294 -32 429 -55 656 -110 1118 -249
1549 -464 153 -77 210 -111 218 -133 3 -9 -3 -113 -15 -232 -12 -119 -27 -290
-34 -381 -17 -228 -17 -856 0 -990 20 -163 59 -374 92 -500 17 -63 37 -167 45
-230 8 -63 22 -138 30 -167 31 -106 152 -227 270 -272 33 -13 67 -26 75 -30
16 -8 294 -548 306 -595 l7 -29 -79 6 c-48 3 -133 22 -219 47 -613 182 -800
219 -1155 227 -242 6 -372 -6 -485 -46 -111 -39 -143 -80 -152 -195 -10 -127
32 -283 149 -561 189 -449 438 -737 743 -860 151 -61 228 -76 395 -79 179 -3
228 -15 270 -63 38 -43 40 -102 7 -229 -29 -107 -67 -185 -126 -256 -136 -162
-311 -251 -546 -278 -441 -50 -865 95 -1184 403 -150 145 -244 310 -401 707
-159 398 -271 599 -425 755 -82 84 -114 109 -179 141 -70 34 -90 39 -164 43
-100 4 -167 -12 -189 -46 -30 -45 -66 -169 -198 -673 -83 -315 -163 -522 -276
-710 -241 -406 -581 -631 -1089 -722 -46 -8 -148 -13 -265 -12 -160 0 -204 3
-277 22 -197 49 -294 130 -347 289 -46 136 -15 274 74 336 22 15 111 52 197
82 286 99 398 165 573 339 147 147 244 288 322 466 111 254 162 475 142 616
-13 96 -23 121 -62 162 -66 69 -159 26 -190 -89 -8 -30 -29 -130 -47 -224 -40
-205 -75 -318 -142 -449 -108 -210 -243 -352 -453 -478 -109 -65 -161 -87
-309 -128 -161 -44 -210 -68 -290 -141 -95 -86 -150 -235 -127 -339 16 -70 8
-74 -132 -66 -302 17 -623 128 -771 267 -177 165 -178 393 -3 428 29 6 111 20
182 31 260 41 443 97 651 199 227 111 379 220 588 421 149 144 363 413 430
539 41 79 86 211 86 255 0 41 -32 91 -71 112 -53 27 -110 15 -265 -59 -76 -36
-209 -93 -294 -127 -85 -33 -166 -65 -179 -71 -13 -5 -26 -7 -29 -5 -5 6 30
77 170 346 79 153 111 224 183 410 90 232 107 267 168 347 68 91 71 113 30
230 -32 93 -33 127 -19 818 9 461 4 630 -30 1060 -18 234 -19 249 -10 263 18
29 135 99 296 178 532 261 1153 421 1760 454 204 11 611 3 791 -15z m1629
-4090 c183 -13 507 -96 635 -163 174 -92 443 -407 684 -802 136 -223 184 -291
265 -378 71 -75 128 -115 188 -133 18 -5 85 -14 148 -19 160 -14 170 -17 185
-53 16 -39 6 -69 -38 -116 -104 -109 -427 -145 -776 -86 -88 15 -161 50 -185
88 -8 12 -16 60 -19 107 -11 166 -52 230 -192 295 -158 73 -181 104 -250 340
-14 50 -46 153 -70 230 -24 77 -49 168 -55 202 -29 147 -158 205 -294 133 -57
-29 -122 -77 -183 -134 -28 -26 -33 -37 -33 -77 0 -55 19 -104 57 -149 36 -43
79 -60 151 -60 47 0 73 7 140 40 l82 39 14 -22 c37 -56 134 -421 122 -453 -15
-38 -228 -2 -340 57 -126 65 -291 222 -400 379 -123 175 -246 488 -246 625 0
73 6 83 54 96 42 12 214 28 251 23 11 -2 58 -5 105 -9z m-2122 -601 c116 -58
283 -291 390 -544 53 -126 152 -388 152 -403 0 -8 -10 -17 -22 -21 -30 -8
-772 -8 -820 0 -20 4 -39 12 -42 19 -2 7 2 44 9 81 7 38 27 139 44 224 50 258
131 551 178 643 17 34 43 35 111 1z"/>
<path d="M3903 5575 c-345 -79 -564 -312 -613 -650 -35 -245 31 -497 178 -687
151 -195 345 -300 597 -324 145 -13 345 39 495 129 112 67 260 215 313 312
134 245 140 552 14 785 -109 202 -291 344 -532 415 -75 22 -114 27 -240 31
-106 2 -168 -1 -212 -11z m8 -326 c127 -55 196 -232 138 -359 -58 -129 -200
-188 -345 -145 -147 43 -214 213 -146 368 26 58 109 142 153 156 48 15 141 5
200 -20z"/>
<path d="M3696 5084 c-11 -30 -6 -53 20 -83 29 -35 59 -39 92 -12 30 26 30 74
0 95 -30 21 -104 21 -112 0z"/>
<path d="M6154 5579 c-119 -20 -277 -91 -375 -169 -124 -98 -216 -227 -268
-375 -36 -104 -42 -313 -12 -440 66 -280 279 -530 531 -623 261 -96 558 -54
781 112 187 139 306 323 354 549 26 121 12 297 -34 418 -117 309 -471 542
-820 538 -58 -1 -129 -5 -157 -10z m60 -313 c87 -51 140 -150 140 -261 -1
-111 -53 -188 -151 -225 -180 -67 -352 50 -353 240 0 117 53 214 142 259 60
31 157 25 222 -13z"/>
<path d="M6016 5065 c-9 -9 -16 -23 -16 -32 0 -25 30 -81 47 -87 20 -8 56 23
48 41 -2 8 0 11 5 8 17 -11 11 32 -7 53 -25 29 -58 36 -77 17z m50 -53 c1 -7
0 -8 -3 -2 -2 5 -9 8 -14 4 -5 -3 -9 0 -9 6 0 15 23 7 26 -8z"/>
<path d="M10020 505 c24 -24 46 -42 49 -40 6 7 -70 85 -83 85 -6 0 10 -20 34
-45z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -3,7 +3,8 @@ from . import (
metadata, metadata,
source, source,
parents, parents,
formatted_text formatted_text,
album
) )
MusicObject = parents.DatabaseObject MusicObject = parents.DatabaseObject
@ -21,6 +22,8 @@ Source = source.Source
Target = song.Target Target = song.Target
Lyrics = song.Lyrics Lyrics = song.Lyrics
AlbumType = album.AlbumType
AlbumStatus = album.AlbumStatus
Album = song.Album Album = song.Album
FormattedText = formatted_text.FormattedText FormattedText = formatted_text.FormattedText

View File

@ -0,0 +1,25 @@
from enum import Enum
class AlbumStatus(Enum):
"""
Enum class representing the possible statuses of an album.
"""
UNRELEASED = "Unreleased"
RELEASED = "Released"
LEAKED = "Leaked"
OFFICIAL = "Official"
BOOTLEG = "Bootleg"
class AlbumType(Enum):
"""
Enum class representing the possible types of an album.
"""
STUDIO_ALBUM = "Studio Album"
EP = "EP (Extended Play)"
SINGLE = "Single"
LIVE_ALBUM = "Live Album"
COMPILATION_ALBUM = "Compilation Album"
MIXTAPE = "Mixtape"
OTHER = "Other"

View File

@ -1,5 +1,5 @@
import os import os
from typing import List from typing import List, Optional, Type
import pycountry import pycountry
import copy import copy
@ -25,11 +25,14 @@ from .source import (
) )
from .formatted_text import FormattedText from .formatted_text import FormattedText
from .collection import Collection from .collection import Collection
from .album import AlbumType, AlbumStatus
""" """
All Objects dependent All Objects dependent
""" """
CountryTyping = type(list(pycountry.countries)[0])
class Target(DatabaseObject, SongAttribute): class Target(DatabaseObject, SongAttribute):
""" """
@ -49,7 +52,7 @@ class Target(DatabaseObject, SongAttribute):
def set_file(self, _file: str): def set_file(self, _file: str):
self._file = _file self._file = _file
def get_file(self) -> str | None: def get_file(self) -> Optional[str]:
if self._file is None: if self._file is None:
return None return None
return os.path.join(MUSIC_DIR, self._file) return os.path.join(MUSIC_DIR, self._file)
@ -57,7 +60,7 @@ class Target(DatabaseObject, SongAttribute):
def set_path(self, _path: str): def set_path(self, _path: str):
self._path = _path self._path = _path
def get_path(self) -> str | None: def get_path(self) -> Optional[str]:
if self._path is None: if self._path is None:
return None return None
return os.path.join(MUSIC_DIR, self._path) return os.path.join(MUSIC_DIR, self._path)
@ -85,7 +88,7 @@ class Lyrics(DatabaseObject, SongAttribute, SourceAttribute, MetadataAttribute):
def __init__( def __init__(
self, self,
text: str, text: str,
language: str, language: pycountry.Languages,
id_: str = None, id_: str = None,
source_list: List[Source] = None source_list: List[Source] = None
) -> None: ) -> None:
@ -112,7 +115,6 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
def __init__( def __init__(
self, self,
id_: str = None, id_: str = None,
mb_id: str = None,
title: str = None, title: str = None,
isrc: str = None, isrc: str = None,
length: int = None, length: int = None,
@ -121,9 +123,9 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
source_list: List[Source] = None, source_list: List[Source] = None,
target: Target = None, target: Target = None,
lyrics_list: List[Lyrics] = None, lyrics_list: List[Lyrics] = None,
album=None, album_list: Type['Album'] = None,
main_artist_list: list = None, main_artist_list: List[Type['Artist']] = None,
feature_artist_list: list = None, feature_artist_list: List[Type['Artist']] = None,
**kwargs **kwargs
) -> None: ) -> None:
""" """
@ -135,7 +137,6 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
self.title: str = title self.title: str = title
self.isrc: str = isrc self.isrc: str = isrc
self.length: int = length self.length: int = length
self.mb_id: str | None = mb_id
self.tracksort: int = tracksort or 0 self.tracksort: int = tracksort or 0
self.genre: str = genre self.genre: str = genre
@ -146,7 +147,12 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
# initialize with either a passed in album, or an empty one, # initialize with either a passed in album, or an empty one,
# so it can at least properly generate dynamic attributes # so it can at least properly generate dynamic attributes
self._album = album or Album(empty=True)
"""
TODO
put in collection
"""
self._album: List[Type['Album']] = album_list or []
self.album = album self.album = album
self.main_artist_collection = Collection( self.main_artist_collection = Collection(
@ -168,7 +174,7 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
def get_artist_credits(self) -> str: def get_artist_credits(self) -> str:
main_artists = ", ".join([artist.name for artist in self.main_artist_collection]) main_artists = ", ".join([artist.name for artist in self.main_artist_collection])
feature_artists = ", ".join([artist.name for artist in self.feature_artist_collection]) feature_artists = ", ".join([artist.name for artist in self.feature_artist_collection])
if len(feature_artists) == 0: if len(feature_artists) == 0:
return main_artists return main_artists
return f"{main_artists} feat. {feature_artists}" return f"{main_artists} feat. {feature_artists}"
@ -224,9 +230,9 @@ class Song(DatabaseObject, SourceAttribute, MetadataAttribute):
def get_option_string(self) -> str: def get_option_string(self) -> str:
return f"Song({self.title}) of Album({self.album.title}) from Artists({self.get_artist_credits()})" return f"Song({self.title}) of Album({self.album.title}) from Artists({self.get_artist_credits()})"
tracksort_str = property(fget=get_tracksort_str) tracksort_str: List[Type['Album']] = property(fget=get_tracksort_str)
main_artist_list: list = property(fget=lambda self: self.main_artist_collection.copy()) main_artist_list: List[Type['Artist']] = property(fget=lambda self: self.main_artist_collection.copy())
feature_artist_list: list = property(fget=lambda self: self.feature_artist_collection.copy()) feature_artist_list: List[Type['Artist']] = property(fget=lambda self: self.feature_artist_collection.copy())
""" """
@ -240,10 +246,8 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
id_: str = None, id_: str = None,
title: str = None, title: str = None,
label: str = None, label: str = None,
album_status: str = None,
language: pycountry.Languages = None, language: pycountry.Languages = None,
date: ID3Timestamp = None, date: ID3Timestamp = None,
country: str = None,
barcode: str = None, barcode: str = None,
is_split: bool = False, is_split: bool = False,
albumsort: int = None, albumsort: int = None,
@ -251,7 +255,8 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
source_list: List[Source] = None, source_list: List[Source] = None,
artist_list: list = None, artist_list: list = None,
tracklist: List[Song] = None, tracklist: List[Song] = None,
album_type: str = None, album_status: AlbumStatus = None,
album_type: AlbumType = None,
**kwargs **kwargs
) -> None: ) -> None:
DatabaseObject.__init__(self, id_=id_, dynamic=dynamic, **kwargs) DatabaseObject.__init__(self, id_=id_, dynamic=dynamic, **kwargs)
@ -260,18 +265,17 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
TODO TODO
add to db add to db
""" """
self.album_type = album_type self.album_type: AlbumType = album_type
self.title: str = title self.title: str = title
self.album_status: str = album_status self.album_status: AlbumStatus = album_status
self.label = label self.label = label
self.language: pycountry.Languages = language self.language: pycountry.Languages = language
self.date: ID3Timestamp = date or ID3Timestamp() self.date: ID3Timestamp = date or ID3Timestamp()
self.country: str = country
""" """
TODO TODO
find out the id3 tag for barcode and implement it find out the id3 tag for barcode and implement it
maybee look at how mutagen does it with easy_id3 maybe look at how mutagen does it with easy_id3
""" """
self.barcode: str = barcode self.barcode: str = barcode
self.is_split: bool = is_split self.is_split: bool = is_split
@ -280,8 +284,7 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
implement a function in the Artist class, implement a function in the Artist class,
to set albumsort with help of the release year to set albumsort with help of the release year
""" """
self.albumsort: int | None = albumsort self.albumsort: Optional[int] = albumsort
self._tracklist = Collection( self._tracklist = Collection(
data=tracklist or [], data=tracklist or [],
@ -295,7 +298,6 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
element_type=Artist element_type=Artist
) )
def __str__(self) -> str: def __str__(self) -> str:
return f"-----{self.title}-----\n{self.tracklist}" return f"-----{self.title}-----\n{self.tracklist}"
@ -329,13 +331,13 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
def get_copyright(self) -> str: def get_copyright(self) -> str:
if self.date is None: if self.date is None:
return None return ""
if self.date.year == 1 or self.label is None: if self.date.year == 1 or self.label is None:
return None return ""
return f"{self.date.year} {self.label}" return f"{self.date.year} {self.label}"
def get_iso_639_2_lang(self) -> str: def get_iso_639_2_lang(self) -> Optional[str]:
if self.language is None: if self.language is None:
return None return None
@ -350,11 +352,10 @@ class Album(DatabaseObject, SourceAttribute, MetadataAttribute):
options.append(new_track) options.append(new_track)
return options return options
def get_option_string(self) -> str: def get_option_string(self) -> str:
return f"Album: {self.title}; Artists {', '.join([i.name for i in self.artists])}" return f"Album: {self.title}; Artists {', '.join([i.name for i in self.artists])}"
copyright = property(fget=get_copyright) copyright = property(fget=get_copyright)
iso_639_2_language = property(fget=get_iso_639_2_lang) iso_639_2_language = property(fget=get_iso_639_2_lang)
tracklist: Collection = property(fget=lambda self: self._tracklist, fset=set_tracklist) tracklist: Collection = property(fget=lambda self: self._tracklist, fset=set_tracklist)
@ -383,7 +384,7 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
notes: FormattedText = None, notes: FormattedText = None,
lyrical_themes: List[str] = None, lyrical_themes: List[str] = None,
general_genre: str = "", general_genre: str = "",
country=None, country: CountryTyping = None,
formed_in: ID3Timestamp = None formed_in: ID3Timestamp = None
): ):
DatabaseObject.__init__(self, id_=id_) DatabaseObject.__init__(self, id_=id_)
@ -391,7 +392,7 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
""" """
TODO implement album type and notes TODO implement album type and notes
""" """
self.country: pycountry.Country = country self.country: CountryTyping = country
self.formed_in: ID3Timestamp = formed_in self.formed_in: ID3Timestamp = formed_in
""" """
notes, generall genre, lyrics themes are attributes notes, generall genre, lyrics themes are attributes
@ -429,30 +430,29 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
def __repr__(self): def __repr__(self):
return self.__str__() return self.__str__()
def __eq__(self, __o: object) -> bool: def __eq__(self, __o: DatabaseObject) -> bool:
return self.id_ == __o.id_ return self.id_ == __o.id_
def get_features(self) -> Album: def get_features(self) -> Album:
feature_release = Album( feature_release = Album(
title="features", title="features",
album_status="dynamic", album_status=AlbumStatus.UNRELEASED,
album_type=AlbumType.COMPILATION_ALBUM,
is_split=True, is_split=True,
albumsort=666, albumsort=666,
dynamic=True dynamic=True
) )
for feature in self.feature_songs:
feature_release.add_song(feature)
return feature_release return feature_release
def get_all_songs(self) -> List[Song]: def get_all_songs(self) -> List[Song]:
""" """
returns a list of all Songs. returns a list of all Songs.
probaply not that usefull, because it is unsorted probably not that useful, because it is unsorted
""" """
collection = [] collection = []
for album in self.discography: for album in self.discography:
collection.extend(album) collection.extend(album.tracklist)
return collection return collection

0
src/tests/__init__.py Normal file
View File

5
src/tests/conftest.py Normal file
View File

@ -0,0 +1,5 @@
import os
import sys
# Add the parent directory of the current file (i.e., the "tests" directory) to sys.path
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

View File

@ -0,0 +1,46 @@
import pycountry
from ..music_kraken.objects import (
Song,
Source,
SourcePages,
Target,
Lyrics,
Album
)
"""
TODO
create enums for Album.album_status
move country from Album to Artist, and use pycountry.Countries
"""
song = Song(
title="title",
isrc="isrc",
length=666,
tracksort=1,
genre="horrorcore",
source_list=[
Source(SourcePages.YOUTUBE, "https://www.youtube.com/watch?v=dQw4w9WgXcQ"),
Source(SourcePages.SPOTIFY, "https://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6"),
Source(SourcePages.BANDCAMP, "https://metalband.bandcamp.com/track/song1")
],
target=Target(file="song.mp3", path="~/Music"),
lyrics_list=[
Lyrics(text="some song lyrics", language="en")
],
album=Album(
title="some album",
label="braindead",
album_status="official",
language=pycountry.languages.get(alpha_2='de'),
)
)
song1_sources = [
Source(SourcePages.YOUTUBE, "https://www.youtube.com/watch?v=dQw4w9WgXcQ"),
Source(SourcePages.SPOTIFY, "https://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6"),
Source(SourcePages.BANDCAMP, "https://metalband.bandcamp.com/track/song1")
]

3
src/try.py Normal file
View File

@ -0,0 +1,3 @@
from tests import example_data_objects