MetaTube SDK Go
Metadata Tube SDK in Golang.
Contents
Features
- Supported platforms
- Linux
- Darwin
- Windows
- BSD(s)
- Supported Databases
- Image processing
- Auto cropping
- Badge support
- Face detection
- Image hashing
- RESTful API
- 20+ providers
- Text translation
Installation
To install this package, you first need Go installed (go1.25+ is required), then you can use the below Go command to install SDK.
go get -u github.com/metatube-community/metatube-sdk-go
Gitea Docker Deployment
This fork publishes container images to
gitea.bytevibe.dev/gary/metatube-server using
.gitea/workflows/docker.yml. Images support both linux/amd64 and
linux/arm64; Docker selects the matching architecture when pulling.
The Dockerfile runs the Go compiler on the builder's native platform and uses
GOOS/GOARCH to cross-compile for each target. Certificates and timezone data
are prepared natively and copied into the target Alpine image, so building either
architecture requires no QEMU emulation. Go module and compilation cache mounts
can be reused while the BuildKit builder is retained.
Actions Setup
- Enable Actions and Packages for the Gitea repository.
- Register a Linux runner with the
ubuntu-latestlabel. Its job environment must have access to a Docker daemon. The runner must also be able to download the actions from GitHub and base images and Go dependencies from their registries. - Create a personal access token for
garywith package read/write permission. Add it under repository Settings > Actions > Secrets with the nameREGISTRY_TOKEN. Do not commit the token to the repository.
Pushes to main publish latest and sha-<full commit hash>. Pushes of tags
starting with v publish that tag and the commit tag without changing latest.
The commit tag can be used to deploy or roll back to a specific build. The
workflow can also be run manually from the repository's Actions page after
updating registry credentials; select the main branch to publish latest.
The original .github/workflows/ files are upstream GitHub workflows; this fork's
Gitea publishing workflow uses the Gitea registry.
Deploy or Update
The included docker-compose.yaml uses the Gitea image. If authentication is
required, log in with your Gitea username and a token with package read permission:
docker login gitea.bytevibe.dev -u gary
docker pull gitea.bytevibe.dev/gary/metatube-server:latest
docker compose pull metatube
docker compose up -d metatube
Run these commands on the deployment server in the directory containing your Compose file. Keep its existing database, volumes, token, and other settings when changing the image of an existing deployment. Publishing a new image does not update running containers automatically.
Credits
| Library | Description |
|---|---|
| gocolly/colly | Elegant Scraper and Crawler Framework for Golang |
| gin-gonic/gin | Gin is a HTTP web framework written in Go |
| gorm.io/gorm | The fantastic ORM library for Golang |
| esimov/pigo | Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go |
| robertkrimen/otto | A JavaScript interpreter in Go (golang) |
| modernc.org/sqlite | Package sqlite is a CGo-free port of SQLite/SQLite3 |
| corona10/goimagehash | Go Perceptual image hashing package |
| antchfx/xpath | XPath package for Golang, supports HTML, XML, JSON document query |
| gen2brain/jpegli | Go encoder/decoder for JPEG based on jpegli |