package main import ( "federated.computer/wp-sync-slowtwitch/services/migration" "federated.computer/wp-sync-slowtwitch/services/slowtwitch" "fmt" "github.com/PuerkitoBio/goquery" "golang.org/x/net/html" "io" "log" "net/http" "strings" ) const baseUrl = "https://slowtwitch.cloud/" const wordpressKey = "admin@slowtwitch.cloud" const wordpressSecret = "6zY7 xsKZ dGIt l1Lp ypIK 6TWh" const slowtwitchAdminUser = "admin" const slowtwitchAdminPass = "yxnh93Ybbz2Nm8#mp28zCVv" const slowtwitchDbName = "slowtwitch" const migrationDbName = "slowtwitch_transfer" const federatedDbUrl = "slowtwitch.northend.network" const federatedDbPort = "3306" var appCache AppCache func main() { // TODO Article migration slowtwitchDB, slowtwitchDbErr := migration.Connect(slowtwitchAdminUser, slowtwitchAdminPass, federatedDbUrl, federatedDbPort, slowtwitchDbName+"?parseTime=true") if slowtwitchDbErr != nil { fmt.Println(slowtwitchDbErr) } resultsDB, resultsDBerr := migration.Connect(slowtwitchAdminUser, slowtwitchAdminPass, federatedDbUrl, federatedDbPort, migrationDbName) if resultsDBerr != nil { fmt.Println(resultsDBerr) } //EXPERIMENT START res, err := http.Get("https://www.slowtwitch.com/Products/Components/SRAM_Drops_New_RED_AXS_Groupset_8950.html") if err != nil { log.Fatalf("http.Get -> %v", err) } defer res.Body.Close() // Read the HTML content htmlContent, err := io.ReadAll(res.Body) if err != nil { log.Fatalf("ioutil.ReadAll -> %v", err) } doc, err := goquery.NewDocumentFromReader(strings.NewReader(string(htmlContent))) if err != nil { log.Fatalf("goquery.NewDocumentFromReader -> %v", err) } // Find all image tags and extract their 'src' attributes var imagePaths []string doc.Find(".detail_text img").Each(func(i int, img *goquery.Selection) { imgUrl, exists := img.Attr("src") if exists { log.Printf("Image URL %d: %s", i+1, slowtwitch.GetURL(imgUrl)) imagePaths = append(imagePaths, imgUrl) } }) blog := doc.Find(".detail_text") blog.Find(":first-child").Remove() blog.Find("img").Each(func(i int, img *goquery.Selection) { imgUrl, exists := img.Attr("src") if exists { newEle := goquery.NewDocumentFromNode(&html.Node{ Type: html.ElementNode, Data: "img", Attr: []html.Attribute{ html.Attribute{ Key: "src", Val: "www.slowtwitch.cloud" + imgUrl, }, html.Attribute{ Key: "class", Val: "class1 class2 class3", }, }, }) img.AfterSelection(newEle.Selection) } img.Remove() }) blogContent, err := blog.Html() if err != nil { fmt.Println(err) } fmt.Println(blogContent) //First image in list will be the featured image, remove that img tag from the returned html //images will need their src updated after upload //EXPERIMENT END editorMigration := migration.MigrateAuthors{ SlowtwitchDatabase: slowtwitchDB, ResultsDatabase: resultsDB, WordpressBaseUrl: baseUrl, WordpressUser: wordpressKey, WordpressPassword: wordpressSecret, } editorMigration.Execute() categoryMigration := migration.MigrateCategories{ SlowtwitchDatabase: slowtwitchDB, ResultsDatabase: resultsDB, WordpressBaseUrl: baseUrl, WordpressUser: wordpressKey, WordpressPassword: wordpressSecret, } categoryMigration.Execute() }