]> Entropealabs - photography.git/commitdiff
add videos
authorChristopher Coté <chris@entropealabs.com>
Sat, 14 Oct 2023 10:36:20 +0000 (06:36 -0400)
committerChristopher Coté <chris@entropealabs.com>
Sat, 14 Oct 2023 10:36:20 +0000 (06:36 -0400)
27 files changed:
media/database.db
media/database.db-shm
media/database.db-wal
media/default.env
media/image_metadata.exs
media/templates/video.html.eex [new file with mode: 0644]
media/templates/videos.html.eex [new file with mode: 0644]
www/css/videos.css [new file with mode: 0644]
www/videos.html [new file with mode: 0644]
www/videos/096f12b38af0717d3d836dc059021a24.html [new file with mode: 0644]
www/videos/0de505a86fe73b5f7af5f15115bf789f.html [new file with mode: 0644]
www/videos/167e29dc5b7c05c05021395b4cca29e2.html [new file with mode: 0644]
www/videos/326f1664b717ebb4a624881df2064332.html [new file with mode: 0644]
www/videos/3a3063a44387fc9d4f052754ea802733.html [new file with mode: 0644]
www/videos/3e7ce3ef0b169606cdbe342928719634.html [new file with mode: 0644]
www/videos/3ea6f31ec67c8dad7bc3c20b796bda4c.html [new file with mode: 0644]
www/videos/5d36ea72180a0640549445d93414eb6b.html [new file with mode: 0644]
www/videos/64f7d344c9993bf7837bd5dbcc553207.html [new file with mode: 0644]
www/videos/716e81c5b84a2f691fdf0d183c4d84ea.html [new file with mode: 0644]
www/videos/871d582560962db4cbd0593000d6bf9a.html [new file with mode: 0644]
www/videos/a51ffdbe691059d692706ecd511eb756.html [new file with mode: 0644]
www/videos/ab0f82d4281c57188c9f7e335aea6a65.html [new file with mode: 0644]
www/videos/c567671795fa33a74a1e9b77d2487470.html [new file with mode: 0644]
www/videos/c58497d555f0886271fe42ae18a69ba9.html [new file with mode: 0644]
www/videos/cfeaa8d830c1da8ecf7f8749019c9c44.html [new file with mode: 0644]
www/videos/d1680f15b97bbe30f087cb95cc4a778c.html [new file with mode: 0644]
www/videos/dad6b28a1f34b2d7cb4f7af929ae7c05.html [new file with mode: 0644]

index b89600972452952410ac9fb6c0c4342586d4bf20..20fc448e484de2ff0b392624b16cd0781ad7e01f 100644 (file)
Binary files a/media/database.db and b/media/database.db differ
index e2a1c8beaba4dee34cd83a0c0583240912cb443d..8730d8f9b545c99723d2fbac8dec807cd3bba9b2 100644 (file)
Binary files a/media/database.db-shm and b/media/database.db-shm differ
index aa2dd10d6c846f6c920aa46f89623d52d7884806..4d8eb3364165812dd2a1d70895805dbe65a90e64 100644 (file)
Binary files a/media/database.db-wal and b/media/database.db-wal differ
index dbce8d59113aafc365736b667d028cf6ed0fb91a..8a19af83bdc2c354c24b4be695d69689c16c6560 100644 (file)
@@ -1,5 +1,6 @@
 export IMAGE_ROOT_PATH=XXXXXXXXXXXXXXXXXX
 export IMAGE_OUTPUT_DIRECTORY=XXXXXXXXXXXXXX
+export VIDEO_ROOT_PATH=XXXXXXXXXXXXXXXXXX
 export AWS_ACCESS_KEY_ID=XXXXXXX
 export AWS_SECRET_ACCESS_KEY=XXXXXXXX
 export AWS_REGION=XXXXXXX
index de6ae9c56965d45b408074792b7ed7b2eb157d0d..1c52c20222dff46267911a5c8dc71c51f513b04b 100644 (file)
@@ -5,7 +5,8 @@ Mix.install(
     {:exexif, "~> 0.0.5"},
     {:hackney, "~> 1.18"},
     {:jason, "~> 1.3"},
-    {:ecto_sqlite3, "~> 0.12"}
+    {:ecto_sqlite3, "~> 0.12"},
+    {:sweet_xml, "~> 0.6"}
   ],
   config: [
     ex_aws: [
@@ -62,6 +63,28 @@ defmodule Image do
   end
 end
 
+defmodule Video do
+  use Ecto.Schema
+  import Ecto.Changeset
+
+  schema "videos" do
+    field(:datetime, :utc_datetime)
+    field(:name, :string)
+    field(:hash, :string)
+    field(:original_path, :string)
+    field(:path, :string)
+    field(:uploaded, :boolean, default: false)
+  end
+
+  def changeset(image, attrs) do
+    image
+    |> cast(
+      attrs,
+      ~w[datetime name hash original_path path uploaded]a
+    )
+  end
+end
+
 defmodule Migration do
   use Ecto.Migration
 
@@ -87,6 +110,136 @@ defmodule Migration do
   end
 end
 
+defmodule Migration0 do
+  use Ecto.Migration
+
+  def change do
+    create table("videos") do
+      add(:datetime, :utc_datetime)
+      add(:name, :string)
+      add(:hash, :string)
+      add(:original_path, :string)
+      add(:path, :string)
+      add(:uploaded, :boolean, default: false)
+    end
+  end
+end
+
+defmodule Videos do
+  import Ecto.Query, warn: false
+
+  def parse_root(root_path) do
+    files =
+      root_path
+      |> File.ls!()
+
+    Enum.flat_map(files, &parse_dir(&1, Path.join(root_path, &1)))
+  end
+
+  def parse_dir(dir, path) do
+    project = Path.join(path, "project.mp4")
+    thumb = Path.join(path, "thumbnail.jpg")
+
+    if(File.dir?(path) and File.exists?(project) and File.exists?(thumb)) do
+      stat = File.stat!(project)
+      data = File.read!(project)
+      hash = :crypto.hash(:md5, data)
+      encoded = Base.encode16(hash, case: :lower)
+      file = encoded <> ".mp4"
+
+      v =
+        case Repo.one(from(v in Video, where: v.original_path == ^project)) do
+          nil -> %Video{}
+          vi -> vi
+        end
+
+      cs =
+        Video.changeset(v, %{
+          name: dir,
+          datetime: NaiveDateTime.from_erl!(stat.mtime),
+          hash: encoded,
+          original_path: project,
+          path: "videos/#{file}"
+        })
+
+      cs =
+        if Ecto.Changeset.changed?(cs, :datetime) do
+          Ecto.Changeset.put_change(cs, :uploaded, false)
+        else
+          cs
+        end
+
+      [cs]
+    else
+      []
+    end
+  end
+
+  def create_videos(videos, media_server) do
+    f =
+      EEx.eval_file("templates/videos.html.eex",
+        videos: videos,
+        media_server: media_server,
+        current_tag: "videos"
+      )
+
+    File.write!("../www/videos.html", f)
+
+    Enum.each(videos, fn v ->
+      f =
+        EEx.eval_file("templates/video.html.eex",
+          video: v,
+          media_server: media_server,
+          current_tag: v.name
+        )
+
+      File.write!("../www/videos/#{v.hash}.html", f)
+    end)
+  end
+
+  def upload_new(videos, bucket, region) do
+    new = Enum.reject(videos, & &1.uploaded)
+
+    Enum.each(new, fn %{original_path: src_path, path: dest_path, hash: hash} = record ->
+      [_ | path] =
+        src_path
+        |> String.split("/")
+        |> Enum.reverse()
+
+      thumbnail = ["thumbnail.jpg" | path] |> Enum.reverse() |> Enum.join("/")
+      thumbnail_data = File.read!(thumbnail)
+
+      bucket
+      |> ExAws.S3.put_object("videos/#{hash}.jpg", thumbnail_data,
+        content_type: "image/jpeg",
+        acl: :public_read
+      )
+      |> IO.inspect()
+      |> ExAws.request(region: region)
+      |> IO.inspect()
+
+      src_path
+      |> ExAws.S3.Upload.stream_file()
+      |> ExAws.S3.upload(bucket, dest_path,
+        timeout: :infinity,
+        content_type: "video/mp4",
+        acl: :public_read
+      )
+      |> IO.inspect()
+      |> ExAws.request(region: region)
+      |> IO.inspect()
+      |> handle_result(record)
+    end)
+  end
+
+  def handle_result({:ok, _}, video) do
+    cs = Video.changeset(video, %{uploaded: true})
+    Repo.update(cs)
+  end
+
+  def handle_result({:error, er}), do: IO.inspect(er)
+end
+
 defmodule Images do
   import Ecto.Query, warn: false
 
@@ -292,11 +445,16 @@ defmodule Main do
     _ok = Repo.__adapter__().storage_up(Repo.config())
 
     {:ok, _} = Supervisor.start_link(children, strategy: :one_for_one)
-    Ecto.Migrator.run(Repo, [{0, Migration}], :up, all: true, log_migrations_sql: :debug)
+
+    Ecto.Migrator.run(Repo, [{0, Migration}, {1, Migration0}], :up,
+      all: true,
+      log_migrations_sql: :debug
+    )
   end
 end
 
 root_path = System.fetch_env!("IMAGE_ROOT_PATH")
+video_root_path = System.fetch_env!("VIDEO_ROOT_PATH")
 output_directory = System.fetch_env!("IMAGE_OUTPUT_DIRECTORY")
 bucket = System.fetch_env!("AWS_BUCKET_NAME")
 region = System.fetch_env!("AWS_REGION")
@@ -321,3 +479,12 @@ Images.create_images(images, tag_keys, date_keys, media_server)
 Images.create_tags(tags, tag_keys, date_keys, media_server)
 Images.create_dates(dates, tag_keys, date_keys, media_server)
 Images.upload_new(images, bucket, region)
+
+videos =
+  video_root_path
+  |> Videos.parse_root()
+  |> Enum.map(&Repo.insert_or_update!/1)
+  |> Enum.sort_by(& &1.datetime, {:desc, DateTime})
+
+Videos.create_videos(videos, media_server)
+Videos.upload_new(videos, bucket, region)
diff --git a/media/templates/video.html.eex b/media/templates/video.html.eex
new file mode 100644 (file)
index 0000000..e6f22e0
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag"><%= current_tag %></span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="<%= media_server %>/<%= video.path %>" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/media/templates/videos.html.eex b/media/templates/videos.html.eex
new file mode 100644 (file)
index 0000000..4668117
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Media | </span><span id="tag">Videos</span>
+    </header>
+    <main>
+      <section id="media">
+        <%= for i <- videos do %>
+          <article class="video">
+            <a href="/videos/<%= i.hash %>">
+              <img src="<%= media_server %>/videos/<%= i.hash %>.jpg" />
+            </a>
+            <span class="datetime"><%= i.datetime |> DateTime.to_string() |> String.replace_suffix("Z", "") %></span>
+          </article>
+        <% end %>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/css/videos.css b/www/css/videos.css
new file mode 100644 (file)
index 0000000..7c88639
--- /dev/null
@@ -0,0 +1,48 @@
+html,body{
+  background-color: #232323;
+  width: 100%;
+  margin: 0;
+  color: #cccccc;
+  font-family: sans-serif;
+}
+
+main {
+  max-width: 1024px;
+  margin: auto;
+}
+
+#header{
+  height: 20px;
+  width: 100%;
+  background-color: #111111;
+  margin-bottom: 30px;
+  padding-top: 10px;
+  padding-bottom: 10px;
+}
+
+#header span{
+  margin-left: 10px;
+}
+
+span#tag{
+  color: #22FF22;
+  margin: 0;
+}
+span.datetime{
+  color: #333333;
+  margin-top: 7px;
+  float: right;
+  font-size: 10px;
+}
+
+.video{
+  padding: 7px;
+  padding-bottom: 30px;
+  background-color: #EEEEEE;
+  margin-bottom: 30px;
+}
+
+img{
+  width: 100%;
+  padding-bottom: 33px;
+}
diff --git a/www/videos.html b/www/videos.html
new file mode 100644 (file)
index 0000000..fa7e7cc
--- /dev/null
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Media | </span><span id="tag">Videos</span>
+    </header>
+    <main>
+      <section id="media">
+        
+          <article class="video">
+            <a href="/videos/3e7ce3ef0b169606cdbe342928719634">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/3e7ce3ef0b169606cdbe342928719634.jpg" />
+            </a>
+            <span class="datetime">2023-10-10 17:13:37</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/096f12b38af0717d3d836dc059021a24">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/096f12b38af0717d3d836dc059021a24.jpg" />
+            </a>
+            <span class="datetime">2023-10-06 14:42:29</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/c58497d555f0886271fe42ae18a69ba9">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/c58497d555f0886271fe42ae18a69ba9.jpg" />
+            </a>
+            <span class="datetime">2023-10-06 01:45:38</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/326f1664b717ebb4a624881df2064332">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/326f1664b717ebb4a624881df2064332.jpg" />
+            </a>
+            <span class="datetime">2023-09-10 22:50:39</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/5d36ea72180a0640549445d93414eb6b">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/5d36ea72180a0640549445d93414eb6b.jpg" />
+            </a>
+            <span class="datetime">2023-09-09 18:56:58</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/a51ffdbe691059d692706ecd511eb756">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/a51ffdbe691059d692706ecd511eb756.jpg" />
+            </a>
+            <span class="datetime">2023-09-01 14:49:26</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/d1680f15b97bbe30f087cb95cc4a778c">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/d1680f15b97bbe30f087cb95cc4a778c.jpg" />
+            </a>
+            <span class="datetime">2023-08-30 18:00:21</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/ab0f82d4281c57188c9f7e335aea6a65">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/ab0f82d4281c57188c9f7e335aea6a65.jpg" />
+            </a>
+            <span class="datetime">2023-08-21 18:50:32</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/0de505a86fe73b5f7af5f15115bf789f">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/0de505a86fe73b5f7af5f15115bf789f.jpg" />
+            </a>
+            <span class="datetime">2023-08-18 00:37:40</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/871d582560962db4cbd0593000d6bf9a">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/871d582560962db4cbd0593000d6bf9a.jpg" />
+            </a>
+            <span class="datetime">2023-08-11 02:41:09</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/3a3063a44387fc9d4f052754ea802733">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/3a3063a44387fc9d4f052754ea802733.jpg" />
+            </a>
+            <span class="datetime">2023-08-10 20:31:30</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/dad6b28a1f34b2d7cb4f7af929ae7c05">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/dad6b28a1f34b2d7cb4f7af929ae7c05.jpg" />
+            </a>
+            <span class="datetime">2023-08-09 16:46:48</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/167e29dc5b7c05c05021395b4cca29e2">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/167e29dc5b7c05c05021395b4cca29e2.jpg" />
+            </a>
+            <span class="datetime">2023-08-08 15:08:29</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/64f7d344c9993bf7837bd5dbcc553207">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/64f7d344c9993bf7837bd5dbcc553207.jpg" />
+            </a>
+            <span class="datetime">2023-08-07 18:41:39</span>
+          </article>
+        
+          <article class="video">
+            <a href="/videos/cfeaa8d830c1da8ecf7f8749019c9c44">
+              <img src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/cfeaa8d830c1da8ecf7f8749019c9c44.jpg" />
+            </a>
+            <span class="datetime">2023-08-03 00:14:18</span>
+          </article>
+        
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/096f12b38af0717d3d836dc059021a24.html b/www/videos/096f12b38af0717d3d836dc059021a24.html
new file mode 100644 (file)
index 0000000..d68a0c6
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Novi Bike Park | 09-02-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/096f12b38af0717d3d836dc059021a24.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/0de505a86fe73b5f7af5f15115bf789f.html b/www/videos/0de505a86fe73b5f7af5f15115bf789f.html
new file mode 100644 (file)
index 0000000..9ed2f28
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Urbana | 08-12-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/0de505a86fe73b5f7af5f15115bf789f.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/167e29dc5b7c05c05021395b4cca29e2.html b/www/videos/167e29dc5b7c05c05021395b4cca29e2.html
new file mode 100644 (file)
index 0000000..053204e
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">River |  08-07-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/167e29dc5b7c05c05021395b4cca29e2.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/326f1664b717ebb4a624881df2064332.html b/www/videos/326f1664b717ebb4a624881df2064332.html
new file mode 100644 (file)
index 0000000..fbc236f
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">The Church | 09-10-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/326f1664b717ebb4a624881df2064332.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/3a3063a44387fc9d4f052754ea802733.html b/www/videos/3a3063a44387fc9d4f052754ea802733.html
new file mode 100644 (file)
index 0000000..7d739d0
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Buggy | 08-09-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/3a3063a44387fc9d4f052754ea802733.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/3e7ce3ef0b169606cdbe342928719634.html b/www/videos/3e7ce3ef0b169606cdbe342928719634.html
new file mode 100644 (file)
index 0000000..47efd93
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">New Richmond | 10-08-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/3e7ce3ef0b169606cdbe342928719634.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/3ea6f31ec67c8dad7bc3c20b796bda4c.html b/www/videos/3ea6f31ec67c8dad7bc3c20b796bda4c.html
new file mode 100644 (file)
index 0000000..c9c556f
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Playground Rip | 08-20-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/3ea6f31ec67c8dad7bc3c20b796bda4c.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/5d36ea72180a0640549445d93414eb6b.html b/www/videos/5d36ea72180a0640549445d93414eb6b.html
new file mode 100644 (file)
index 0000000..76ff9e1
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Backyard Cruise | 09-08-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/5d36ea72180a0640549445d93414eb6b.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/64f7d344c9993bf7837bd5dbcc553207.html b/www/videos/64f7d344c9993bf7837bd5dbcc553207.html
new file mode 100644 (file)
index 0000000..73a6a0e
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Grand Rapids Bike Park | 08-05-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/64f7d344c9993bf7837bd5dbcc553207.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/716e81c5b84a2f691fdf0d183c4d84ea.html b/www/videos/716e81c5b84a2f691fdf0d183c4d84ea.html
new file mode 100644 (file)
index 0000000..ac84cf4
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">The Hulk</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/716e81c5b84a2f691fdf0d183c4d84ea.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/871d582560962db4cbd0593000d6bf9a.html b/www/videos/871d582560962db4cbd0593000d6bf9a.html
new file mode 100644 (file)
index 0000000..3d6957c
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Crawlers | 08-10-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/871d582560962db4cbd0593000d6bf9a.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/a51ffdbe691059d692706ecd511eb756.html b/www/videos/a51ffdbe691059d692706ecd511eb756.html
new file mode 100644 (file)
index 0000000..51909a6
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Water Park | 08-27-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/a51ffdbe691059d692706ecd511eb756.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/ab0f82d4281c57188c9f7e335aea6a65.html b/www/videos/ab0f82d4281c57188c9f7e335aea6a65.html
new file mode 100644 (file)
index 0000000..acbc61b
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Kanoe the Kazoo | 08-19-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/ab0f82d4281c57188c9f7e335aea6a65.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/c567671795fa33a74a1e9b77d2487470.html b/www/videos/c567671795fa33a74a1e9b77d2487470.html
new file mode 100644 (file)
index 0000000..8306912
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Backyard | 08-21-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/c567671795fa33a74a1e9b77d2487470.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/c58497d555f0886271fe42ae18a69ba9.html b/www/videos/c58497d555f0886271fe42ae18a69ba9.html
new file mode 100644 (file)
index 0000000..64ffe7f
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Skatepark | 09-09-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/c58497d555f0886271fe42ae18a69ba9.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/cfeaa8d830c1da8ecf7f8749019c9c44.html b/www/videos/cfeaa8d830c1da8ecf7f8749019c9c44.html
new file mode 100644 (file)
index 0000000..8f8eeb5
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Tip of the Thumb</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/cfeaa8d830c1da8ecf7f8749019c9c44.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/d1680f15b97bbe30f087cb95cc4a778c.html b/www/videos/d1680f15b97bbe30f087cb95cc4a778c.html
new file mode 100644 (file)
index 0000000..35ac729
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Triponds | 08-26-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/d1680f15b97bbe30f087cb95cc4a778c.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>
diff --git a/www/videos/dad6b28a1f34b2d7cb4f7af929ae7c05.html b/www/videos/dad6b28a1f34b2d7cb4f7af929ae7c05.html
new file mode 100644 (file)
index 0000000..014cf98
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" type="image/x-icon" href="/img/connected.png">
+    <link rel="stylesheet" type="text/css" href="/css/videos.css">
+  </head>
+  <body>
+    <header id="header">
+      <span>Video | </span><span id="tag">Tunnel Park | 08-08-2023</span>
+    </header>
+    <main>
+      <section id="media">
+        <article class="video">
+          <video>
+            <source src="https://entropealabs-media.s3.us-east-2.amazonaws.com/videos/dad6b28a1f34b2d7cb4f7af929ae7c05.mp4" />
+          </video>
+        </article>
+      </section>
+    </main>
+    <a rel="me" href="https://mastodon.social/@entropealabs"></a>
+  </body>
+</html>