summaryrefslogtreecommitdiff
path: root/includes/refresh.php
blob: 320af5447e9f7e769f7a17b598a83731c3bf6afa (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
116
117
118
119
<?php

$app = json_decode(file_get_contents("./app.json"), true);
$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("Calendar\n");
$currentOpStart = microtime(true);
file_put_contents("./data/calendar.ics", file_get_contents($app["calendar"]));
$times["calendar"] = microtime(true) - $currentOpStart;

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

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;
}

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;
}

$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;

require_once "./backup.php";

$time = array_sum($times);
echo("Completed in " . $time . " seconds.\n");

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