112 lines
3.2 KiB
Go
112 lines
3.2 KiB
Go
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()
|
|
}
|