summaryrefslogtreecommitdiff
path: root/includes/refresh.php
blob: 79e3b7fe877cc4741ae85e0b01b137c1efc280b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php

$start = microtime(true);
@mkdir("./data");

$files = [];
$restored = [];
$times = [];

$currentOpStart = microtime(true);
foreach (array_filter(scandir("./data"), function ($i) {
    return !str_starts_with($i, ".") && $i !== "backup" && is_file("./data/" . $i);
}) as $file) {
    $files[] = $file;
}

@mkdir("./data/backup");
foreach ($files as $file) {
    copy("./data/" . $file, "./data/backup/" . $file);
}

function getSystem(string $id) {
    global $times;
    echo("System: $id\n");

    echo("    Base system info\n");
    $currentOpStart = microtime(true);
    file_put_contents("./data/$id-general.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id"));
    $times["system-general-$id"] = microtime(true) - $currentOpStart;

    echo("    System members\n");
    $currentOpStart = microtime(true);
    file_put_contents("./data/$id-members.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/members"));
    $times["system-members-$id"] = microtime(true) - $currentOpStart;

    echo("    Fronters\n");
    $currentOpStart = microtime(true);
    file_put_contents("./data/$id-fronters.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/fronters"));
    $times["system-fronters-$id"] = microtime(true) - $currentOpStart;

    echo("    Switches\n");
    $currentOpStart = microtime(true);
    file_put_contents("./data/$id-switches.json", file_get_contents("https://pluralkit.equestria.dev/v2/systems/$id/switches"));
    $times["system-switches-$id"] = microtime(true) - $currentOpStart;
}

getSystem("gdapd"); // Raindrops
getSystem("ynmuc"); // Cloudburst

echo("Downloading images.\n");
if (!file_exists("./data/images")) mkdir("./data/images");

$currentOpStart = microtime(true);
foreach (json_decode(file_get_contents("./data/gdapd-members.json"), true) as $member) {
    $currentOpStart2 = microtime(true);
    echo("    " . $member['id'] . "\n");

    if (isset($member['avatar_url'])) {
        echo("        Profile picture\n");
        exec("convert -resize 128x128 -quality 50 \"" . $member['avatar_url'] . "\" \"./data/images/pf-gdapd-" . $member['id'] . ".webp\"");
    }

    echo("        Pony Town character\n");
    if (file_exists("../assets/uploads/pt-" . $member['name'] . ".png")) {
        exec("convert -resize 64x64 -quality 50 \"../assets/uploads/pt-" . $member['name'] . ".png\" \"./data/images/pt-gdapd-" . $member['id'] . ".png\"");
    } else {
        exec("convert -resize 64x64 -quality 50 \"../assets/uploads/pt.png\" \"./data/images/pt-gdapd-" . $member['id'] . ".png\"");
    }
    $times["images-gdapd-" . $member['id']] = microtime(true) - $currentOpStart2;
}
$times["images-gdapd"] = microtime(true) - $currentOpStart;

$currentOpStart = microtime(true);
foreach (json_decode(file_get_contents("./data/ynmuc-members.json"), true) as $member) {
    $currentOpStart2 = microtime(true);
    echo("    " . $member['id'] . "\n");

    if (isset($member['avatar_url'])) {
        echo("        Profile picture\n");
        exec("convert -resize 128x128 -quality 50 \"" . $member['avatar_url'] . "\" \"./data/images/pf-ynmuc-" . $member['id'] . ".webp\"");
    }

    echo("        Pony Town character\n");
    if (file_exists("../assets/uploads/pt-" . $member['name'] . ".png")) {
        exec("convert -resize 64x64 -quality 50 \"../assets/uploads/pt-" . $member['name'] . ".png\" \"./data/images/pt-ynmuc-" . $member['id'] . ".png\"");
    } else {
        exec("convert -resize 64x64 -quality 50 \"../assets/uploads/pt.png\" \"./data/images/pt-ynmuc-" . $member['id'] . ".png\"");
    }
    $times["images-ynmuc-" . $member['id']] = microtime(true) - $currentOpStart2;
}
$times["images-ynmuc"] = microtime(true) - $currentOpStart;

$currentOpStart = microtime(true);
function isJson($string): bool {
    json_decode($string);
    return (json_last_error() === JSON_ERROR_NONE);
}

foreach ($files as $file) {
    if (trim(file_get_contents("./data/" . $file)) === "" || (isJson(trim(file_get_contents("./data/" . $file))) && isset(json_decode(trim(file_get_contents("./data/" . $file)), true)["message"]))) {
        $restored[] = $file;
        copy("./data/backup/" . $file, "./data/" . $file);
    }
}
$times["restore"] = microtime(true) - $currentOpStart;

$time = (microtime(true) - $start);
echo("Completed in " . $time . " seconds.\n");

file_put_contents("./data/refresh.json", json_encode([
    "timestamp" => time(),
    "duration" => $time,
    "restored" => $restored,
    "times" => $times
]));