home to your local SPACEGIRL 💫 arimelody.space
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

args over envars, some music gateway fixes

+63 -41
+8 -7
admin/admin.go
··· 3 3 import ( 4 4 "fmt" 5 5 "math/rand" 6 - "os" 7 6 "time" 7 + 8 + "arimelody.me/arimelody.me/global" 8 9 ) 9 10 10 11 type ( ··· 19 20 const TOKEN_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 20 21 21 22 var ADMIN_BYPASS = func() bool { 22 - if os.Getenv("ARIMELODY_ADMIN_BYPASS") == "true" { 23 - fmt.Println("WARNING: Admin login is currently BYPASSED by ARIMELODY_ADMIN_BYPASS.") 23 + if global.Args["adminBypass"] == "true" { 24 + fmt.Println("WARN: Admin login is currently BYPASSED. (-adminBypass)") 24 25 return true 25 26 } 26 27 return false 27 28 }() 28 29 29 30 var ADMIN_ID_DISCORD = func() string { 30 - envvar := os.Getenv("DISCORD_ADMIN_ID") 31 - if envvar == "" { 32 - fmt.Printf("DISCORD_ADMIN_ID was not provided. Admin login will be unavailable.\n") 31 + id := global.Args["discordAdmin"] 32 + if id == "" { 33 + fmt.Printf("WARN: Discord admin ID (-discordAdmin) was not provided. Admin login will be unavailable.\n") 33 34 } 34 - return envvar 35 + return id 35 36 }() 36 37 37 38 var sessions []*Session
+12 -25
discord/discord.go
··· 6 6 "fmt" 7 7 "net/http" 8 8 "net/url" 9 - "os" 10 9 "strings" 10 + 11 + "arimelody.me/arimelody.me/global" 11 12 ) 12 13 13 14 const API_ENDPOINT = "https://discord.com/api/v10" 14 15 15 16 var CREDENTIALS_PROVIDED = true 16 17 var CLIENT_ID = func() string { 17 - envvar := os.Getenv("DISCORD_CLIENT_ID") 18 - if envvar == "" { 19 - fmt.Printf("DISCORD_CLIENT_ID was not provided. Admin login will be unavailable.\n") 18 + id := global.Args["discordClient"] 19 + if id == "" { 20 + fmt.Printf("WARN: Discord client ID (-discordClient) was not provided. Admin login will be unavailable.\n") 20 21 CREDENTIALS_PROVIDED = false 21 22 } 22 - return envvar 23 + return id 23 24 }() 24 25 var CLIENT_SECRET = func() string { 25 - envvar := os.Getenv("DISCORD_CLIENT_SECRET") 26 - if envvar == "" { 27 - fmt.Printf("DISCORD_CLIENT_SECRET was not provided. Admin login will be unavailable.\n") 26 + secret := global.Args["discordSecret"] 27 + if secret== "" { 28 + fmt.Printf("WARN: Discord secret (-discordSecret) was not provided. Admin login will be unavailable.\n") 28 29 CREDENTIALS_PROVIDED = false 29 30 } 30 - return envvar 31 + return secret 31 32 }() 32 - var REDIRECT_URI = func() string { 33 - envvar := os.Getenv("DISCORD_REDIRECT_URI") 34 - if envvar == "" { 35 - fmt.Printf("DISCORD_REDIRECT_URI was not provided. Admin login will be unavailable.\n") 36 - CREDENTIALS_PROVIDED = false 37 - } 38 - return envvar 39 - }() 40 - var OAUTH_CALLBACK_URI = func() string { 41 - envvar := os.Getenv("OAUTH_CALLBACK_URI") 42 - if envvar == "" { 43 - fmt.Printf("OAUTH_CALLBACK_URI was not provided. Admin login will be unavailable.\n") 44 - CREDENTIALS_PROVIDED = false 45 - } 46 - return envvar 47 - }() 33 + var OAUTH_CALLBACK_URI = fmt.Sprintf("%s/admin/login", global.HTTP_DOMAIN) 34 + var REDIRECT_URI = fmt.Sprintf("https://discord.com/oauth2/authorize?client_id=%s&response_type=code&redirect_uri=%s&scope=identify", CLIENT_ID, OAUTH_CALLBACK_URI) 48 35 49 36 type ( 50 37 AccessTokenResponse struct {
+30 -1
global/data.go
··· 1 1 package global 2 2 3 3 import ( 4 + "fmt" 4 5 "os" 6 + "strings" 5 7 6 8 "arimelody.me/arimelody.me/music/model" 7 9 "github.com/jmoiron/sqlx" 8 10 ) 9 11 12 + var Args = func() map[string]string { 13 + args := map[string]string{} 14 + 15 + index := 0 16 + for index < len(os.Args[1:]) { 17 + arg := os.Args[index + 1] 18 + if !strings.HasPrefix(arg, "-") { 19 + fmt.Printf("FATAL: Parameters must follow an argument (%s).\n", arg) 20 + os.Exit(1) 21 + } 22 + 23 + if index + 3 > len(os.Args) || strings.HasPrefix(os.Args[index + 2], "-") { 24 + args[arg[1:]] = "true" 25 + index += 1 26 + continue 27 + } 28 + 29 + val := os.Args[index + 2] 30 + args[arg[1:]] = val 31 + // fmt.Printf("%s: %s\n", arg[1:], val) 32 + index += 2 33 + } 34 + 35 + return args 36 + }() 37 + 38 + 10 39 var HTTP_DOMAIN = func() string { 11 40 envvar := os.Getenv("HTTP_DOMAIN") 12 41 if envvar != "" { 13 42 return envvar 14 43 } 15 44 return "https://arimelody.me" 16 - } 45 + }() 17 46 18 47 var DB *sqlx.DB 19 48
+2 -1
public/script/music-gateway.js
··· 70 70 bind_share_btn(); 71 71 bind_go_back_btn(); 72 72 apply_funny_bob_to_upcoming_tags(); 73 - update_extras_buttons(); 73 + if (document.getElementById("extras")) 74 + update_extras_buttons();
+10 -4
views/music-gateway.html
··· 108 108 {{end}} 109 109 110 110 {{if .IsSingle}} 111 + 111 112 {{$Track := index .Tracks 0}} 112 113 {{if $Track.Lyrics}} 113 114 <div id="lyrics"> 114 - <h2>lyrics:</h2> 115 - <p>{{$Track.Lyrics}}</p> 115 + <p class="album-track-subheading">LYRICS</p> 116 + {{if $Track.Lyrics}} 117 + {{$Track.Lyrics}} 118 + {{else}} 119 + <span class="empty">No lyrics.</span> 120 + {{end}} 116 121 </div> 117 122 {{end}} 118 - {{else}} 123 + 124 + {{else if .Tracks}} 119 125 <div id="tracks"> 120 126 <h2>tracks:</h2> 121 127 {{range $i, $track := .Tracks}} ··· 154 160 {{if $Track.Lyrics}} 155 161 <li><a href="#lyrics">lyrics</a></li> 156 162 {{end}} 157 - {{else}} 163 + {{else if .Tracks}} 158 164 <li><a href="#tracks">tracks</a></li> 159 165 {{end}} 160 166 </ul>
-2
views/music.html
··· 93 93 &gt; <a href="mailto:ari@arimelody.me">ari@arimelody.me</a> 94 94 </p> 95 95 </div> 96 - 97 - <a href="#" id="backtotop">back to top</a> 98 96 </main> 99 97 {{end}}
+1 -1
views/prideflag.html
··· 1 1 {{define "prideflag"}} 2 - <a href="https://git.arimelody.me/ari/prideflag" target="_blank" id="prideflag"> 2 + <a href="https://github.com/arimelody/prideflag" target="_blank" id="prideflag"> 3 3 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="120" height="120" hx-preserve="true"> 4 4 <path id="red" d="M120,80 L100,100 L120,120 Z" style="fill:#d20605"/> 5 5 <path id="orange" d="M120,80 V40 L80,80 L100,100 Z" style="fill:#ef9c00"/>