Update: use env variables to config instead of YAML
This commit is contained in:
parent
b3d1b1d976
commit
1634893ba9
|
@ -1,15 +0,0 @@
|
|||
# This is required for the API. See https://github.com/Nandaka/PixivUtil2/wiki#pixiv-login-using-cookie
|
||||
# Please keep this carefully, there is a risk of account theft if somebody got your cookie.
|
||||
# It is better to use a decoy account, instead of using your main account's cookie.
|
||||
PHPSESSID: XXXXXXXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
Port: 8080
|
||||
|
||||
UserAgent: Mozilla/5.0
|
||||
|
||||
# Number of items in each list page
|
||||
# This is going to be deprecated
|
||||
PageItems: 30
|
||||
|
||||
# Default image proxy server. Recommended since Pixiv doesn't like you accessing images on their server.
|
||||
ImageProxyServer: px2.rainchan.win
|
|
@ -1,32 +1,44 @@
|
|||
package configs
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"gopkg.in/yaml.v3"
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
var Config embed.FS
|
||||
var Configs Conf
|
||||
var Token, Port, UserAgent, ProxyServer string
|
||||
|
||||
type Conf struct {
|
||||
PHPSESSID string `yaml:"PHPSESSID"`
|
||||
Port string `yaml:"Port"`
|
||||
UserAgent string `yaml:"UserAgent"`
|
||||
PageItems int `yaml:"PageItems"`
|
||||
ImageProxyServer string `yaml:"ImageProxyServer"`
|
||||
func parseEnv(key string) (string, error) {
|
||||
value, ok := os.LookupEnv(key)
|
||||
|
||||
if !ok {
|
||||
return "", errors.New("Failed to get environment variable" + key)
|
||||
}
|
||||
|
||||
return value, nil
|
||||
}
|
||||
|
||||
func (conf *Conf) ReadConfig() {
|
||||
f, err := os.Open("config.yml")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer f.Close()
|
||||
func parseEnvWithDefault(key string, defaultValue string) string {
|
||||
value, ok := os.LookupEnv(key)
|
||||
|
||||
decoder := yaml.NewDecoder(f)
|
||||
err = decoder.Decode(conf)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
if !ok {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
return value
|
||||
}
|
||||
|
||||
func ParseConfig() error {
|
||||
var err error
|
||||
|
||||
Token, err = parseEnv("PIXIVFE_TOKEN")
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Port = parseEnvWithDefault("PIXIVFE_PORT", "8080")
|
||||
UserAgent = parseEnvWithDefault("PIXIVFE_USERAGENT", "Mozilla/5.0")
|
||||
ProxyServer = parseEnvWithDefault("PIXIVFE_IMAGEPROXY", "px2.rainchan.win")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
"io/ioutil"
|
||||
"math"
|
||||
"net/http"
|
||||
"pixivfe/configs"
|
||||
"pixivfe/models"
|
||||
"sort"
|
||||
"strconv"
|
||||
|
@ -258,7 +257,7 @@ func (p *PixivClient) GetUserArtworksID(id string, page int) (*string, error) {
|
|||
sort.Sort(sort.Reverse(sort.IntSlice(ids)))
|
||||
|
||||
worksNumber := float64(len(ids))
|
||||
worksPerPage := float64(configs.Configs.PageItems)
|
||||
worksPerPage := 30.0
|
||||
|
||||
if page < 1 || float64(page) > math.Ceil(worksNumber/worksPerPage)+1.0 {
|
||||
return nil, errors.New("Page overflow")
|
||||
|
@ -297,7 +296,7 @@ func (p *PixivClient) GetUserArtworksCount(id string) (int, error) {
|
|||
}
|
||||
|
||||
func (p *PixivClient) GetRelatedArtworks(id string) ([]models.IllustShort, error) {
|
||||
url := fmt.Sprintf(ArtworkRelatedURL, id, configs.Configs.PageItems)
|
||||
url := fmt.Sprintf(ArtworkRelatedURL, id, 30)
|
||||
|
||||
var pr models.PixivResponse
|
||||
|
||||
|
|
10
main.go
10
main.go
|
@ -40,7 +40,7 @@ func setupRouter() *gin.Engine {
|
|||
}
|
||||
|
||||
regex := regexp.MustCompile(`.*?pximg\.net`)
|
||||
proxy := "https://" + configs.Configs.ImageProxyServer
|
||||
proxy := "https://" + configs.ProxyServer
|
||||
|
||||
return regex.ReplaceAllString(url, proxy)
|
||||
},
|
||||
|
@ -167,9 +167,13 @@ func setupRouter() *gin.Engine {
|
|||
}
|
||||
|
||||
func main() {
|
||||
configs.Configs.ReadConfig()
|
||||
err := configs.ParseConfig()
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
r := setupRouter()
|
||||
|
||||
r.Run(":" + configs.Configs.Port)
|
||||
r.Run(":" + configs.Port)
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ func user_page(c *gin.Context) {
|
|||
user, _ := PC.GetUserInformation(id, pageInt)
|
||||
|
||||
worksCount, _ := PC.GetUserArtworksCount(id)
|
||||
pageLimit := math.Ceil(float64(worksCount)/float64(configs.Configs.PageItems)) + 1.0
|
||||
pageLimit := math.Ceil(float64(worksCount)/30.0) + 1.0
|
||||
|
||||
c.HTML(http.StatusOK, "user.html", gin.H{"User": user, "PageLimit": int(pageLimit), "Page": pageInt})
|
||||
}
|
||||
|
@ -180,8 +180,8 @@ func NewPixivClient(timeout int) *models.PixivClient {
|
|||
|
||||
func SetupRoutes(r *gin.Engine) {
|
||||
PC = NewPixivClient(5000)
|
||||
PC.SetSessionID(configs.Configs.PHPSESSID)
|
||||
PC.SetUserAgent(configs.Configs.UserAgent)
|
||||
PC.SetSessionID(configs.Token)
|
||||
PC.SetUserAgent(configs.UserAgent)
|
||||
r.GET("/", index_page)
|
||||
r.GET("artworks/:id", artwork_page)
|
||||
r.GET("users/:id", user_page)
|
||||
|
|
Loading…
Reference in a new issue