torrent pushes to outdir:XYZ if category/tag set
parent
84170b443d
commit
5fa7ac883d
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -257,3 +257,12 @@ func TestFindMagnets(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test__PullOutput(t *testing.T) {
|
||||
if got := __pullOutput("x", "y", &gofeed.Item{Categories: []string{}}); got != "x/y" {
|
||||
t.Error(got)
|
||||
}
|
||||
if got := __pullOutput("", "", &gofeed.Item{Categories: []string{"outdir:x"}}); got != "x" {
|
||||
t.Error(got)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue