This commit is contained in:
parent
8bad2d1a88
commit
47edcc41be
|
@ -141,6 +141,7 @@ Commands:
|
||||||
unfollow UID URL unfollow URL on channel UID
|
unfollow UID URL unfollow URL on channel UID
|
||||||
|
|
||||||
export opml export feeds as OPML
|
export opml export feeds as OPML
|
||||||
|
import opml FILENAME import OPML feeds
|
||||||
|
|
||||||
Global arguments:
|
Global arguments:
|
||||||
|
|
||||||
|
@ -377,6 +378,81 @@ func performCommands(sub microsub.Microsub, commands []string) {
|
||||||
log.Fatalf("unsupported filetype %q", filetype)
|
log.Fatalf("unsupported filetype %q", filetype)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(commands) == 3 && commands[0] == "import" {
|
||||||
|
filetype := commands[1]
|
||||||
|
filename := commands[2]
|
||||||
|
|
||||||
|
if filetype == "opml" {
|
||||||
|
channelMap := make(map[string]microsub.Channel)
|
||||||
|
|
||||||
|
channels, err := sub.ChannelsGetList()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("an error occurred: %s\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range channels {
|
||||||
|
channelMap[c.Name] = c
|
||||||
|
}
|
||||||
|
|
||||||
|
xml, err := opml.NewOPMLFromFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("An error occurred: %s\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range xml.Body.Outlines {
|
||||||
|
if c.HTMLURL != "" {
|
||||||
|
log.Printf("First row item has url: %s\n", c.HTMLURL)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if len(c.Outlines) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
uid := ""
|
||||||
|
|
||||||
|
if ch, e := channelMap[c.Text]; !e {
|
||||||
|
channelCreated, err := sub.ChannelsCreate(c.Text)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("An error occurred: %q\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
uid = channelCreated.UID
|
||||||
|
log.Printf("Channel created: %s\n", c.Text)
|
||||||
|
} else {
|
||||||
|
uid = ch.UID
|
||||||
|
}
|
||||||
|
|
||||||
|
feedMap := make(map[string]bool)
|
||||||
|
|
||||||
|
feeds, err := sub.FollowGetList(uid)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("An error occurred: %q\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range feeds {
|
||||||
|
feedMap[f.URL] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range c.Outlines {
|
||||||
|
if f.HTMLURL == "" {
|
||||||
|
log.Println("Missing url on second row item")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, e := feedMap[f.HTMLURL]; !e {
|
||||||
|
_, err := sub.FollowURL(uid, f.HTMLURL)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("An error occurred: %q\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
log.Printf("Feed followed: %s\n", f.HTMLURL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func showItem(item *microsub.Item) {
|
func showItem(item *microsub.Item) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user