torrent pushes to outdir:XYZ if category/tag set
This commit is contained in:
@@ -105,30 +105,48 @@ func pull(db storage.DB, vpntor, outdir, url string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("feed: %v", gfeed.Title)
|
||||
for _, item := range gfeed.Items {
|
||||
if ok, err := isDone(db, item.Link); err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
continue
|
||||
}
|
||||
s, err := getItemContent(item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if item.Author == nil {
|
||||
item.Author = &gofeed.Person{Name: "."}
|
||||
}
|
||||
if err := handle(vpntor, path.Join(outdir, item.Author.Name), item.Link, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := db.Set(item.Link, []byte{}); err != nil {
|
||||
return _pull(db, vpntor, outdir, gfeed.Title, gfeed.Items)
|
||||
}
|
||||
|
||||
func _pull(db storage.DB, vpntor, outdir, title string, items []*gofeed.Item) error {
|
||||
log.Printf("feed: %v", title)
|
||||
for _, item := range items {
|
||||
if err := __pull(db, vpntor, outdir, item); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func __pull(db storage.DB, vpntor, outdir string, item *gofeed.Item) error {
|
||||
if ok, err := isDone(db, item.Link); err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
return nil
|
||||
}
|
||||
s, err := getItemContent(item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if item.Author == nil {
|
||||
item.Author = &gofeed.Person{Name: "."}
|
||||
}
|
||||
if err := handle(vpntor, __pullOutput(outdir, item.Author.Name, item), item.Link, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return db.Set(item.Link, []byte{})
|
||||
}
|
||||
|
||||
func __pullOutput(outdir, author string, item *gofeed.Item) string {
|
||||
output := path.Join(outdir, author)
|
||||
for _, category := range item.Categories {
|
||||
if categoryOutDir := strings.TrimPrefix(category, "outdir:"); category != categoryOutDir {
|
||||
output = categoryOutDir
|
||||
}
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
func getGoFeed(url string) (*gofeed.Feed, error) {
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user