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
|
package configs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"embed"
|
"errors"
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Config embed.FS
|
var Token, Port, UserAgent, ProxyServer string
|
||||||
var Configs Conf
|
|
||||||
|
|
||||||
type Conf struct {
|
func parseEnv(key string) (string, error) {
|
||||||
PHPSESSID string `yaml:"PHPSESSID"`
|
value, ok := os.LookupEnv(key)
|
||||||
Port string `yaml:"Port"`
|
|
||||||
UserAgent string `yaml:"UserAgent"`
|
if !ok {
|
||||||
PageItems int `yaml:"PageItems"`
|
return "", errors.New("Failed to get environment variable" + key)
|
||||||
ImageProxyServer string `yaml:"ImageProxyServer"`
|
}
|
||||||
|
|
||||||
|
return value, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (conf *Conf) ReadConfig() {
|
func parseEnvWithDefault(key string, defaultValue string) string {
|
||||||
f, err := os.Open("config.yml")
|
value, ok := os.LookupEnv(key)
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
decoder := yaml.NewDecoder(f)
|
if !ok {
|
||||||
err = decoder.Decode(conf)
|
return defaultValue
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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"
|
"io/ioutil"
|
||||||
"math"
|
"math"
|
||||||
"net/http"
|
"net/http"
|
||||||
"pixivfe/configs"
|
|
||||||
"pixivfe/models"
|
"pixivfe/models"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -258,7 +257,7 @@ func (p *PixivClient) GetUserArtworksID(id string, page int) (*string, error) {
|
||||||
sort.Sort(sort.Reverse(sort.IntSlice(ids)))
|
sort.Sort(sort.Reverse(sort.IntSlice(ids)))
|
||||||
|
|
||||||
worksNumber := float64(len(ids))
|
worksNumber := float64(len(ids))
|
||||||
worksPerPage := float64(configs.Configs.PageItems)
|
worksPerPage := 30.0
|
||||||
|
|
||||||
if page < 1 || float64(page) > math.Ceil(worksNumber/worksPerPage)+1.0 {
|
if page < 1 || float64(page) > math.Ceil(worksNumber/worksPerPage)+1.0 {
|
||||||
return nil, errors.New("Page overflow")
|
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) {
|
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
|
var pr models.PixivResponse
|
||||||
|
|
||||||
|
|
10
main.go
10
main.go
|
@ -40,7 +40,7 @@ func setupRouter() *gin.Engine {
|
||||||
}
|
}
|
||||||
|
|
||||||
regex := regexp.MustCompile(`.*?pximg\.net`)
|
regex := regexp.MustCompile(`.*?pximg\.net`)
|
||||||
proxy := "https://" + configs.Configs.ImageProxyServer
|
proxy := "https://" + configs.ProxyServer
|
||||||
|
|
||||||
return regex.ReplaceAllString(url, proxy)
|
return regex.ReplaceAllString(url, proxy)
|
||||||
},
|
},
|
||||||
|
@ -167,9 +167,13 @@ func setupRouter() *gin.Engine {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
configs.Configs.ReadConfig()
|
err := configs.ParseConfig()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
r := setupRouter()
|
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)
|
user, _ := PC.GetUserInformation(id, pageInt)
|
||||||
|
|
||||||
worksCount, _ := PC.GetUserArtworksCount(id)
|
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})
|
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) {
|
func SetupRoutes(r *gin.Engine) {
|
||||||
PC = NewPixivClient(5000)
|
PC = NewPixivClient(5000)
|
||||||
PC.SetSessionID(configs.Configs.PHPSESSID)
|
PC.SetSessionID(configs.Token)
|
||||||
PC.SetUserAgent(configs.Configs.UserAgent)
|
PC.SetUserAgent(configs.UserAgent)
|
||||||
r.GET("/", index_page)
|
r.GET("/", index_page)
|
||||||
r.GET("artworks/:id", artwork_page)
|
r.GET("artworks/:id", artwork_page)
|
||||||
r.GET("users/:id", user_page)
|
r.GET("users/:id", user_page)
|
||||||
|
|
Loading…
Reference in a new issue