mirror of
https://github.com/adulau/mastodon-markdown-archive.git
synced 2024-12-05 00:07:16 +00:00
Compare commits
No commits in common. "abaac06cf462d32d8d0dada62fd9f9b2002c3d8f" and "94b45ca42e87cd70d5715b55a43bad90efb9878e" have entirely different histories.
abaac06cf4
...
94b45ca42e
7 changed files with 5 additions and 108 deletions
|
@ -1 +0,0 @@
|
||||||
justfile
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Changelog
|
|
||||||
|
|
||||||
## Version 1.0.0 (September 1, 2024)
|
|
||||||
Initial release
|
|
25
Dockerfile
25
Dockerfile
|
@ -1,25 +0,0 @@
|
||||||
FROM golang:1.23.0-alpine3.20 AS build
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
COPY go.mod go.sum .
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
ENV CGO_ENABLED=0
|
|
||||||
ENV GOOS=linux
|
|
||||||
|
|
||||||
RUN go build -o mastodon-markdown-archive
|
|
||||||
|
|
||||||
FROM alpine:3.20
|
|
||||||
RUN apk add --no-cache ca-certificates
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="Mastodon Markdown Archive"
|
|
||||||
LABEL org.opencontainers.image.description="Archive Mastodon posts as markdown files"
|
|
||||||
LABEL org.opencontainers.image.vendor="Gabriel Garrido"
|
|
||||||
LABEL org.opencontainers.image.licenses=MIT
|
|
||||||
LABEL org.opencontainers.image.url=https://git.garrido.io/gabriel/mastodon-markdown-archive
|
|
||||||
LABEL org.opencontainers.image.source=https://git.garrido.io/gabriel/mastodon-markdown-archive
|
|
||||||
LABEL org.opencontainers.image.documentation=https://git.garrido.io/gabriel/mastodon-markdown-archive
|
|
||||||
|
|
||||||
COPY --from=build /app/mastodon-markdown-archive /usr/bin/mastodon-markdown-archive
|
|
||||||
ENTRYPOINT ["/usr/bin/mastodon-markdown-archive"]
|
|
31
README.md
31
README.md
|
@ -24,8 +24,6 @@ It is likely that I have not considered all possible use cases, or that I've bee
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
* [Installation](#installation)
|
* [Installation](#installation)
|
||||||
* [From source](#from-source)
|
|
||||||
* [Container](#container)
|
|
||||||
* [Dependencies](#dependencies)
|
* [Dependencies](#dependencies)
|
||||||
* [Usage](#usage)
|
* [Usage](#usage)
|
||||||
* [Environment variables](#environment-variables)
|
* [Environment variables](#environment-variables)
|
||||||
|
@ -51,37 +49,10 @@ It is likely that I have not considered all possible use cases, or that I've bee
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### From source
|
|
||||||
|
|
||||||
[Go](https://go.dev/doc/install) is required for installation.
|
[Go](https://go.dev/doc/install) is required for installation.
|
||||||
|
|
||||||
You can clone this repo and run `go build main.go` in the repository's directory, or you can run `go install git.garrido.io/gabriel/mastodon-markdown-archive@latest` to install a binary of the latest version.
|
You can clone this repo and run `go build main.go` in the repository's directory, or you can run `go install git.garrido.io/gabriel/mastodon-markdown-archive@latest` to install a binary of the latest version.
|
||||||
|
|
||||||
### Container
|
|
||||||
|
|
||||||
A [Dockerfile](./Dockerfile) is included in this repository.
|
|
||||||
|
|
||||||
An image can be built as follows:
|
|
||||||
|
|
||||||
`docker build -t mastodon-markdown-archive .`
|
|
||||||
|
|
||||||
A host folder should be mounted into the container so that the files generated by the container are persisted to the host's file system. You can run the tool as follows:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker run --rm -v ~/posts:/posts mastodon-markdown-archive \
|
|
||||||
--user=https://social.coop/@ggpsv \
|
|
||||||
--dist=/posts \
|
|
||||||
--exclude-replies \
|
|
||||||
--exclude-reblogs \
|
|
||||||
--persist-last=./last \
|
|
||||||
--visibility=public \
|
|
||||||
--download-media=bundle \
|
|
||||||
--threaded=true \
|
|
||||||
--max-id=$(test -f ./last && cat ./last || echo "")
|
|
||||||
```
|
|
||||||
|
|
||||||
The container's volume target (e.g `:/posts`) should match the directory passed to the `--dist` argument.
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
This tool has only two direct dependencies, which are included to provide useful, though largely optional, functionality in templates:
|
This tool has only two direct dependencies, which are included to provide useful, though largely optional, functionality in templates:
|
||||||
|
@ -442,4 +413,4 @@ This is done specifically to support Hugo [page bundles](https://gohugo.io/conte
|
||||||
|
|
||||||
## Known issues
|
## Known issues
|
||||||
|
|
||||||
1. A reply post may still appear in the list of posts despite using `--exclude-replies`. This happens when the post in question is a reply to a post that has since been deleted. It looks like Mastodon's API stops treating the reply as a reply. It no longer points to another post, and thus is not affected by the `exclude_replies` parameter.
|
1. A reply post may still appear in the list of posts despite using `--exclude-replies`. This happens when the post in question is a reply to a post that has since been deleted. It looks like Mastodon's API stops treating the reply as a reply. It no longer points to another post, and thus is not affected by the `exclude_replies` parameter.
|
|
@ -1,46 +0,0 @@
|
||||||
---
|
|
||||||
date: {{ .Post.CreatedAt }}
|
|
||||||
{{- if .Post.InReplyToId }}
|
|
||||||
in_reply_to: {{ .Post.InReplyToId }}
|
|
||||||
{{- end }}
|
|
||||||
post_uri: {{ .Post.URI }}
|
|
||||||
post_id: {{ .Post.Id }}
|
|
||||||
{{- if len .Post.AllTags }}
|
|
||||||
tags:
|
|
||||||
{{- range .Post.AllTags }}
|
|
||||||
- {{ .Name }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if len .Post.Descendants }}
|
|
||||||
descendants:
|
|
||||||
{{- range .Post.Descendants }}
|
|
||||||
- {{ .Id }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
layout: page
|
|
||||||
title: paperbay.org Mastodon - {{ .Post.URI }}
|
|
||||||
---
|
|
||||||
{{ .Post.Content | toMarkdown }}
|
|
||||||
|
|
||||||
{{ range .Post.MediaAttachments }}
|
|
||||||
{{- if eq .Type "image" }}
|
|
||||||
{{- if .Path }}
|
|
||||||
![{{ .Description | replace "\n" "" }}]({{ osBase .Path }})
|
|
||||||
{{- else }}
|
|
||||||
![{{ .Description | replace "\n" "" }}]({{ .URL }})
|
|
||||||
{{- end }}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ range .Post.Descendants }}
|
|
||||||
{{ .Content | toMarkdown }}
|
|
||||||
{{ range .MediaAttachments }}
|
|
||||||
{{- if eq .Type "image" }}
|
|
||||||
{{- if .Path }}
|
|
||||||
![{{ .Description | replace "\n" ""}}]({{ osBase .Path }})
|
|
||||||
{{- else }}
|
|
||||||
![{{ .Description | replace "\n" ""}}]({{ .URL }})
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -17,6 +17,8 @@ descendants:
|
||||||
- {{ .Id }}
|
- {{ .Id }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
layout: page
|
||||||
|
title: paperbay.org Mastodon - {{ .Post.URI }}
|
||||||
---
|
---
|
||||||
{{ .Post.Content | toMarkdown }}
|
{{ .Post.Content | toMarkdown }}
|
||||||
|
|
||||||
|
@ -35,7 +37,7 @@ descendants:
|
||||||
{{ range .MediaAttachments }}
|
{{ range .MediaAttachments }}
|
||||||
{{- if eq .Type "image" }}
|
{{- if eq .Type "image" }}
|
||||||
{{- if .Path }}
|
{{- if .Path }}
|
||||||
![{{ .Description | replace "\n" "" }}]({{ osBase .Path }})
|
![{{ .Description | replace "\n" ""}}]({{ osBase .Path }})
|
||||||
{{- else }}
|
{{- else }}
|
||||||
![{{ .Description | replace "\n" ""}}]({{ .URL }})
|
![{{ .Description | replace "\n" ""}}]({{ .URL }})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
command="./mastodon-markdown-archive --template=../files/templates/foo.tmpl --user=https://paperbay.org/@a --dist=./posts --persist-last=./last --max-id=$(test -f ./last && cat ./last || echo "") --download-media=./posts --porcelain=true --threaded=true"
|
command="./mastodon-markdown-archive --template=../files/templates/post.tmpl --user=https://paperbay.org/@a --dist=./posts --persist-last=./last --max-id=$(test -f ./last && cat ./last || echo "") --download-media=./posts --porcelain=true --threaded=true"
|
||||||
output=$($command)
|
output=$($command)
|
||||||
if [[ "$output" -eq 0 ]]; then
|
if [[ "$output" -eq 0 ]]; then
|
||||||
echo "No posts returned. Exiting"
|
echo "No posts returned. Exiting"
|
||||||
|
|
Loading…
Reference in a new issue