summaryrefslogtreecommitdiffstats
path: root/generate-sample-gig-data.php
blob: cd181979173c95597e1898c3e302f61d2e4d0ec3 (plain) (blame)
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
120
121
122
123
124
125
<?php

// SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com>
// SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

abstract class GeneratorBase
{
    abstract public function get() : string;

    function pick(array $arr) : string
    {
        return $arr[array_rand($arr)];
    }
}

class BandNameGenerator extends GeneratorBase
{
    private $prefixes = array(
        "",
        "a",
        "the",
    );

    private $adverbs = array(
        "bestial",
        "dead",
        "incongruent",
        "ladylike",
        "slimy",
        "dandy",
        "leftist",
        "flamboyant",
    );

    private $verbs = array(
        "kill",
        "regurgitat",
        "destroy",
        "blasphem",
        "strangl",
        "terroriz",
        "mutilat",
    );

    private $endings = array(
        "er",
        "ers",
        "ing",
        "ed",
    );

    public function get() : string
    {
        $parts = array(
            $this->pick($this->prefixes),
            $this->pick($this->adverbs),
            $this->pick($this->verbs));

        return trim(implode(" ", $parts) . $this->pick($this->endings));
    }
}

class VenueGenerator extends GeneratorBase
{
    private $prefix1 = array(
        "",
        "royal",
        "shabby",
        "happy",
        "drunken",
    );

    private $prefix2 = array(
        "",
        "music",
        "fiddler",
        "rock",
        "metal",
        "mental",
    );

    private $type = array(
        "hall",
        "museum",
        "asylum",
        "stage",
        "cottage",
        "opera",
        "lighthouse"
    );

    public function get() : string
    {
        $parts = array(
            $this->pick($this->prefix1),
            $this->pick($this->prefix2),
            $this->pick($this->type));

        return trim(implode(" ", $parts));
    }
}

class LinkGenerator extends GeneratorBase
{
    /**
     * @return string
     */
    public function get() : string
    {
        return 'https://example.com/' . bin2hex(random_bytes(8));
    }
}

$band = new BandNameGenerator();
$venue = new VenueGenerator();
$link = new LinkGenerator();
$date = new DateTime();

for ($i = 0; $i < 10; $i++) {
    $date->add(new DateInterval('P' . random_int(0, 60) . 'D'));

    echo implode("\t", array($band->get(), $venue->get(), $date->format('Y-m-d'), $link->get(), $link->get())) . "\n";
}