package controllers_scraper import ( "encoding/json" "fmt" "kkscrap-go/controllers/scraper/cafe24" "kkscrap-go/controllers/scraper/godo" "kkscrap-go/controllers/scraper/magento" "kkscrap-go/controllers/scraper/shopify" "kkscrap-go/locals" "kkscrap-go/controllers/scraper/wordpress" "kkscrap-go/controllers/scraper/young" "kkscrap-go/model" "net/http" "net/url" "regexp" "strings" util "kkscrap-go/controllers/scraper/util" // "golang.org/x/crypto/bcrypt" "github.com/labstack/echo" ) type SolutionTypeGetReq struct { Url string } func SolutionTypeGet(c echo.Context) error { v := c.Get("receiver").(SolutionTypeGetReq) retv := &struct { SolutionType string ThemeType string }{} fmt.Println(v.Url) // (1) function 공유될 수 있도록 해서 작업요 // v.SolutionType, v.ThemeType = solType(&kkk) retv.SolutionType = "Wordpress" retv.ThemeType = "Avada" // ret, _ := json.MarshalIndent(itemInfo, "", "\t") ret, _ := json.Marshal(retv) return c.JSONBlob(http.StatusOK, ret) } type ProductPageGetReq struct { SolutionType string ThemeType string Products []ProductUri } type ProductUri struct { Uri string } // 오리지널 웹사이트 전체를 업테이트 하는 경우 Uri를 하나씩 보내면 비효율적이므로 하나의 배치로 // 묶어서 요청할 수 있도록 한다. 주로 product-page-get를 쓰고 item-url-scrap은 deprecate 예정임. func ProductPageGet(c echo.Context) error { v := c.Get("receiver").(ProductPageGetReq) var vRet locals.ProductPage // Row(개별레코드)->Page(Row의 집합)->Book(Page의 집합)의 개념 for _, row := range v.Products { // (1)Url 의 HTML를 2번 가져오는데 아래와 같이 1번만 가져와서 처리할 수 있도록 수정요. // kkk := htmlGet(row.Uri) // 전체 웹사이트가 아니라 개별 상품페이지(1개페이지)의 경우 SolutionType 없이 request됨 if v.SolutionType == "" { // v.SolutionType, v.ThemeType = solType(&kkk) } prodInfo, err := parse(row.Uri) if err != nil { prodInfo.ItemNick = "Parsing Failed" } // 개별 prodInfo가 계속 추가될 수 있도록 코드를 변경요. // vRet.ProductPage = append(vRet.ProductPage, *prodInfo) } // ret, _ := json.MarshalIndent(itemInfo, "", "\t") ret, _ := json.Marshal(vRet) return c.JSONBlob(http.StatusOK, ret) } type ItemUrlScrapReq struct { ItemUrl string } func ItemUrlScrap(c echo.Context) error { v := c.Get("receiver").(ItemUrlScrapReq) // retv := &struct { // model.ItemInfo // }{} itemInfo, err := parse(v.ItemUrl) if err != nil { return c.String(604, "ertvwerawqfd-ItemUrl Parse failed: "+err.Error()) } ret, _ := json.MarshalIndent(itemInfo, "", "\t") // fmt.Println(string(data)) // ret, _ := json.Marshal(itemInfo) return c.JSONBlob(http.StatusOK, ret) } var regexpTitle *regexp.Regexp func init() { regexpTitle, _ = regexp.Compile("