forked from SunRed/discord-tweeter
feat: Major refactor, implement web, caching, better tests and build files
* Update golang version to 1.24 * Update multiarch Dockerfile to be more ISA agnostic * Refactor existing code and properly structure project into modules * Get rid of global variables except where necessary (go:embed) * Add default values to Config * Add webserver with templates to finally correctly serve videos and gifs * Add tiny caching library to decrease api load and improve latency * Improve Webhook data preparation by filtering out redundant links from the tweet text and properly attaching videos and gifs in separate webhook request by utilising new webserver * Improve tests for filter function * Improve bake definition for easier CI integration
This commit is contained in:
parent
7562b86894
commit
21d580d1a6
24 changed files with 752 additions and 209 deletions
35
pkg/web/templates/tweet.html
Normal file
35
pkg/web/templates/tweet.html
Normal file
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="theme-color" content="#26a7de">
|
||||
<link rel="canonical" href="{{ .URL }}">
|
||||
|
||||
<meta property="twitter:site" content="{{ .Username }}">
|
||||
<meta property="twitter:creator" content="{{ .Username }}">
|
||||
<meta property="twitter:title" content="{{ .Title }}">
|
||||
{{- range $idx, $e := .Images }}
|
||||
<meta property="twitter:image" content="{{ $e }}">
|
||||
<meta property="og:image" content="{{ $e }}">
|
||||
{{- end }}
|
||||
{{- range $idx, $e := .Videos }}
|
||||
<meta property="twitter:player:stream" content="{{ $e }}">
|
||||
<meta property="og:video" content="{{ $e }}">
|
||||
{{- end }}
|
||||
{{- range $idx, $e := .Previews }}
|
||||
<meta property="twitter:image" content="0">
|
||||
<meta property="og:image" content="{{ $e }}">
|
||||
{{- end }}
|
||||
<meta property="twitter:card" content="{{ .Format }}">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:article:published_time" content="{{ .Timestamp }}">
|
||||
<meta property="og:url" content="{{ .Link }}">
|
||||
<meta property="og:title" content="{{ .Title }}">
|
||||
<meta property="og:description" content="{{ .Text }}">
|
||||
|
||||
<style>
|
||||
body, html { margin: 0; padding: 0; height: 100%; width: 100%; }
|
||||
body { display: flex; }
|
||||
</style>
|
||||
|
||||
<body>
|
32
pkg/web/templates/video.html
Normal file
32
pkg/web/templates/video.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="theme-color" content="#26a7de">
|
||||
<link rel="canonical" href="{{ .URL }}">
|
||||
|
||||
{{- if .Videos }}
|
||||
<meta property="twitter:site" content="{{ .Username }}">
|
||||
<meta property="twitter:creator" content="{{ .Username }}">
|
||||
{{- range $idx, $e := .Videos }}
|
||||
<meta property="twitter:player:stream" content="{{ $e }}">
|
||||
<meta property="og:video" content="{{ $e }}">
|
||||
{{- end }}
|
||||
{{- range $idx, $e := .Previews }}
|
||||
<meta property="twitter:image" content="0">
|
||||
<meta property="og:image" content="{{ $e }}">
|
||||
{{- end }}
|
||||
<meta property="twitter:card" content="{{ .Format }}">
|
||||
<meta property="og:site_name" content="Video attached due to embed limitations">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:article:published_time" content="{{ .Timestamp }}">
|
||||
<meta property="og:url" content="{{ .Link }}">
|
||||
<meta property="og:title" content="​">
|
||||
{{- end }}
|
||||
|
||||
<style>
|
||||
body, html { margin: 0; padding: 0; height: 100%; width: 100%; }
|
||||
body { display: flex; }
|
||||
</style>
|
||||
|
||||
<body>
|
Loading…
Add table
Add a link
Reference in a new issue