/metatube-sdk-go

MetaTube SDK in Golang.

Primary LanguageGoApache License 2.0Apache-2.0

MetaTube SDK Go

Build Status Go Report Card Require Go Version GitHub License Tag

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 (version 1.20+ is required), then you can use the below Go command to install SDK.

go get -u github.com/metatube-community/metatube-sdk-go

Quickstart

# assume the following codes in example.go file
$ cat example.go
package main

import (
	"fmt"
	"log"

	"github.com/metatube-community/metatube-sdk-go/engine"
)

func main() {
	app := engine.Default()

	results, err := app.SearchMovieAll("<movie_id>", false)
	if err != nil {
		log.Fatal(err)
	}

	for _, result := range results {
		fmt.Println(result.Provider, result.ID, result.Number, result.Title)
	}
}
# run example.go and see output on console
$ go run example.go

API Examples

You can find detailed examples in examples folder or specific implementations in cmd folder.

Initiate SDK engine manually

package main

import (
	"log"
	"time"

	"github.com/metatube-community/metatube-sdk-go/database"
	"github.com/metatube-community/metatube-sdk-go/engine"
)

func main() {
	// Open database using in-memory SQLite.
	db, _ := database.Open(&database.Config{
		DSN:		  ":memory:",
		PreparedStmt: false,
	})

	// Allocate app engine with request timeout set to one minute.
	app := engine.New(db, time.Minute)

	// Initiate DB tables, only required at the first time.
	if err := app.AutoMigrate(true); err != nil {
		log.Fatal(err)
	}
}

Search and get actor info

func main() {
	app := engine.Default()
	
	// Search actor from Xs/List with fallback enabled.
	app.SearchActor("<actor_name>", xslist.Name, true)
	
	// Search actor from all available providers with fallback enabled.
	app.SearchActorAll("<actor_name>", true)
	
	// Get actor metadata id from Xs/List with lazy enabled.
	app.GetActorInfoByProviderID(xslist.Name, "<id>", true)
	
	// Get actor metadata from given URL with lazy enabled.
	app.GetActorInfoByURL("https://<actor_page_url>", true)
}

Search and get movie info

func main() {
	app := engine.Default()
	
	// Search movie from JavBus with fallback enabled.
	app.SearchMovie("<movie_id>", javbus.Name, true)
	
	// Search movie from all available providers with fallback enabled.
	// Option fallback will search the database for movie info if the corresponding providers
	// fail to return valid metadata.
	app.SearchMovieAll("<movie_id>", true)
	
	// Get movie metadata id from ARZON with lazy enable.
	// With the lazy option set to true, it will first try to search the database and return
	// the info directly if it exists. If the lazy option is set to false, it will fetch info
	// from the given provider and update the database.
	app.GetMovieInfoByProviderID(arzon.Name, "<id>", true)
	
	// Get movie metadata from given URL with lazy enabled.
	app.GetMovieInfoByURL("https://<movie_page_url>", true)
}

Get actor and movie images

func main() {
	app := engine.Default()
	
	// Get actor primary image id from Xs/List.
	app.GetActorPrimaryImage(xslist.Name, "<id>")
	
	// Get movie primary image id from FANZA with aspect ratio and pos set to default.
	app.GetMoviePrimaryImage(fanza.Name, "<id>", -1, -1)
	
	// Get movie primary image id from FANZA with aspect ratio set to 7:10 and pos
	// set to the center.
	app.GetMoviePrimaryImage(fanza.Name, "<id>", 0.70, 0.5)
	
	// Get movie backdrop image id from SOD.
	app.GetMovieBackdropImage(sod.Name, "<id>")
}

Text translate engine

package main

import (
	"github.com/metatube-community/metatube-sdk-go/translate"
)

func main() {
	var (
		appId  = "XXX"
		appKey = "XXX"
	)
	// Translate `Hello` from auto to Japanese by Baidu.
	translate.BaiduTranslate("Hello", "auto", "ja", appId, appKey)

	var apiKey = "XXX"
	// Translate `Hello` from auto to simplified Chinese by Google.
	translate.GoogleTranslate("Hello", "auto", "zh-cn", apiKey)
}

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
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

License

Apache-2.0 License