Use shpub to send micropub when no file is specified
This commit is contained in:
parent
745da46fb6
commit
aecf1fd6b3
68
main.go
68
main.go
|
@ -10,6 +10,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -31,27 +32,36 @@ func init() {
|
|||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
}
|
||||
|
||||
func micropub(name, content, server string) error {
|
||||
var args []string
|
||||
if server != "" {
|
||||
args = append(args, "-s", server)
|
||||
}
|
||||
args = append(args, "-d", "article", "--html", "--json", name, content)
|
||||
cmd := exec.Command("shpub", args...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func main() {
|
||||
u, err := url.Parse(os.Args[1])
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
filename := os.Args[2]
|
||||
|
||||
var filename string
|
||||
outputFile := false
|
||||
if len(os.Args) >= 3 {
|
||||
filename = os.Args[2]
|
||||
outputFile = true
|
||||
}
|
||||
|
||||
re, err := regexp.Compile(`<span class="next-entry"></span>`)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
f, err := forceCreate(filename)
|
||||
|
||||
data, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
f.Close()
|
||||
|
||||
var buf bytes.Buffer
|
||||
items, err := getEntriesForFeed(u)
|
||||
if err != nil {
|
||||
|
@ -63,15 +73,38 @@ func main() {
|
|||
|
||||
summary := getSummary(monday, items)
|
||||
|
||||
if outputFile {
|
||||
_, err = buf.Write([]byte(`<span class="next-entry"></span>`))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
err = outputEntries(summary, &buf)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
output := re.ReplaceAll(data, buf.Bytes())
|
||||
err = ioutil.WriteFile(filename, output, 0666)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
if outputFile {
|
||||
f, err := forceCreate(filename)
|
||||
|
||||
data, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
f.Close()
|
||||
|
||||
output := re.ReplaceAll(data, buf.Bytes())
|
||||
err = ioutil.WriteFile(filename, output, 0666)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
} else {
|
||||
err = micropub(summary.Name, buf.String(), "p83.nl")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,9 +116,9 @@ func getSummary(monday time.Time, items []microsub.Item) Summary {
|
|||
grouped[itemType] = append(grouped[itemType], item)
|
||||
}
|
||||
summary := Summary{
|
||||
Name: fmt.Sprintf("Digest for Week %d-%d", week, year),
|
||||
Items: items,
|
||||
Grouped: grouped,
|
||||
Name: fmt.Sprintf("Digest for Week %d-%d", week, year),
|
||||
Items: items,
|
||||
Grouped: grouped,
|
||||
}
|
||||
return summary
|
||||
}
|
||||
|
@ -146,6 +179,7 @@ func outputEntries(summary Summary, w io.Writer) error {
|
|||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = t.Execute(w, summary)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -1,32 +1,29 @@
|
|||
<span class="next-entry"></span>
|
||||
<div class="h-entry">
|
||||
<h2 class="p-name">{{ .Name }}</h2>
|
||||
{{ range $k, $items := .Grouped }}
|
||||
<h3>{{ index $.PostTypes $k }}</h3>
|
||||
<ul class="{{ $k }}">
|
||||
{{ range $items }}
|
||||
{{ if eq $k "like-of" }}
|
||||
{{ range .LikeOf }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ else if eq $k "repost-of" }}
|
||||
{{ range .RepostOf }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ else if eq $k "in-reply-to" }}
|
||||
{{ range .InReplyTo }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ range $k, $items := .Grouped }}
|
||||
<h3>{{ index $.PostTypes $k }}</h3>
|
||||
<ul class="{{ $k }}">
|
||||
{{ range $items }}
|
||||
{{ if eq $k "like-of" }}
|
||||
{{ range .LikeOf }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ else if eq $k "repost-of" }}
|
||||
{{ range .RepostOf }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ else if eq $k "in-reply-to" }}
|
||||
{{ range .InReplyTo }}
|
||||
<li><a href="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ if .Checkin }}
|
||||
<li><a href="{{ .URL }}">Checkin at {{ .Checkin.Name }} in {{ .Checkin.Locality }}
|
||||
, {{ .Checkin.Region }}</a></li>
|
||||
{{ else if .Content }}
|
||||
<li><a href="{{ .URL }}">{{ .Content.Text }}</a></li>
|
||||
{{ else }}
|
||||
{{ if .Checkin }}
|
||||
<li><a href="{{ .URL }}">Checkin at {{ .Checkin.Name }} in {{ .Checkin.Locality }}, {{ .Checkin.Region }}</a></li>
|
||||
{{ else if .Content }}
|
||||
<li><a href="{{ .URL }}">{{ .Content.Text }}</a></li>
|
||||
{{ else }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
|
Loading…
Reference in New Issue
Block a user