]> git.mdlowis.com Git - proto/atv.git/commitdiff
added randomization, made QR tags bigger and split out css to separate file
authorMike Lowis <mike.lowis@gentex.com>
Fri, 15 Mar 2024 17:51:01 +0000 (13:51 -0400)
committerMike Lowis <mike.lowis@gentex.com>
Fri, 15 Mar 2024 17:51:01 +0000 (13:51 -0400)
atv/assets/admin.html
atv/assets/control.html
atv/assets/index.html
atv/assets/style.css [new file with mode: 0644]
atv/bin/atv
atv/lib/atv/channel.rb

index 13ec436e04a9764ff0019f994cdf75188cc753cd..a27b3da2e1e96020f48ae7d4bf5621b4f4d40301 100644 (file)
@@ -3,98 +3,7 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta name="viewport" content="width=device-width,initial-scale=1">
-  <style>
-    html, body {
-      margin: 0;
-      padding: 0;
-      width: 100%;
-      height: 100%;
-      max-height: 100%;
-      background-color: #eaeaea;
-      overflow: hidden;
-    }
-
-    .table {
-        display: block;
-    }
-
-    .row {
-        display: flex;
-        flex: 1 0 auto;
-        border-bottom: 1px solid black;
-    }
-
-    .label {
-        flex-shrink: 1;
-        padding: 1em;
-        width: 8em;
-        border-right: 1px solid black;
-    }
-
-    .item {
-        flex-grow: 1;
-        border-left: 0;
-        padding: 1em;
-    }
-
-    .row input {
-        flex-grow: 1;
-        height: 4em;
-    }
-
-    td {
-        border: 1px solid #000;
-        padding: 1em;
-    }
-
-    tr td:first-child {
-        width: 1%;
-        white-space: nowrap;
-    }
-
-    input {
-        margin: 0.5em;
-    }
-
-    article {
-        display: flex;
-        flex-flow: column;
-        height: 100%;
-        max-height: 100%;
-    }
-
-    article section {
-        //border: 1px dotted black;
-        flex: 0 1 auto;
-    }
-
-    .grow {
-        flex: 1 1 auto;
-        overflow: auto;
-    }
-
-    .shrink {
-        flex: 0 1 auto;
-    }
-
-    #breadCrumbs {
-        margin-left: 1em;
-        margin-right: 1em;
-    }
-
-    #itemList {
-        margin-left: 1em;
-        margin-right: 1em;
-    }
-
-    #queueList div {
-        background-color: #A7BDC7;
-        padding: 1em;
-        margin: 0.5em;
-        text-align: left;
-    }
-
-  </style>
+  <link rel="stylesheet" href="style.css">
 </head>
 <body>
 
index f5657dd82c3c384bb3bb9687d91887dbba72f809..d1c0cbec68b345ae6e246c56d0c62c178625148c 100644 (file)
@@ -3,104 +3,7 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta name="viewport" content="width=device-width,initial-scale=1">
-  <style>
-    html, body {
-      margin: 0;
-      padding: 0;
-      width: 100%;
-      height: 100%;
-      max-height: 100%;
-      background-color: #eaeaea;
-      overflow: hidden;
-    }
-
-    .table {
-        display: block;
-    }
-
-    .row {
-        display: flex;
-        flex: 1 0 auto;
-        border-bottom: 1px solid black;
-    }
-
-    .label {
-        flex-shrink: 1;
-        padding: 1em;
-        width: 8em;
-        border-right: 1px solid black;
-    }
-
-    .item {
-        flex-grow: 1;
-        border-left: 0;
-        padding: 1em;
-    }
-
-    .row input {
-        flex-grow: 1;
-        height: 4em;
-    }
-
-    td {
-        border: 1px solid #000;
-        padding: 1em;
-    }
-
-    tr td:first-child {
-        width: 1%;
-        white-space: nowrap;
-    }
-
-    input {
-        margin: 0.5em;
-    }
-
-    article {
-        display: flex;
-        flex-flow: column;
-        height: 100%;
-        max-height: 100%;
-    }
-
-    article section {
-        //border: 1px dotted black;
-        flex: 0 1 auto;
-    }
-
-    .grow {
-        flex: 1 1 auto;
-        overflow: auto;
-    }
-
-    .shrink {
-        flex: 0 1 auto;
-    }
-
-    #breadCrumbs {
-        margin-left: 1em;
-        margin-right: 1em;
-    }
-
-    #itemList {
-        margin-left: 1em;
-        margin-right: 1em;
-    }
-
-    #itemList div {
-        background-color: #A7BDC7;
-        padding: 1em;
-        margin: 0.5em;
-    }
-
-    #queueList div {
-        background-color: #A7BDC7;
-        padding: 1em;
-        margin: 0.5em;
-        text-align: left;
-    }
-
-  </style>
+  <link rel="stylesheet" href="style.css">
 </head>
 <body>
 
index 604eafff68a7e9b976cf2324bc4cfd83068648f9..8a01eada2ed6365f7fe62073551a6b93ee8f8c2c 100644 (file)
 </video>
 
 <div class="badge" style="left: 1em;">
-    <div><img src="./wifi.svg" width="64" height="64"></div>
+    <div><img src="./wifi.svg" width="96" height="96"></div>
     <span>WIFI</span>
 </div>
 
 <div class="badge" style="right: 1em;">
-    <div><img src="./control.svg" width="64" height="64"></div>
+    <div><img src="./control.svg" width="96" height="96"></div>
     <span>APP</span>
 </div>
 
diff --git a/atv/assets/style.css b/atv/assets/style.css
new file mode 100644 (file)
index 0000000..55a8595
--- /dev/null
@@ -0,0 +1,95 @@
+    html, body {
+      margin: 0;
+      padding: 0;
+      width: 100%;
+      height: 100%;
+      max-height: 100%;
+      background-color: #eaeaea;
+      overflow: hidden;
+    }
+
+    .table {
+        display: block;
+    }
+
+    .row {
+        display: flex;
+        flex: 1 0 auto;
+        border-bottom: 1px solid black;
+    }
+
+    .label {
+        flex-shrink: 1;
+        padding: 1em;
+        width: 8em;
+        border-right: 1px solid black;
+    }
+
+    .item {
+        flex-grow: 1;
+        border-left: 0;
+        padding: 1em;
+    }
+
+    .row input {
+        flex-grow: 1;
+        height: 4em;
+    }
+
+    td {
+        border: 1px solid #000;
+        padding: 1em;
+    }
+
+    tr td:first-child {
+        width: 1%;
+        white-space: nowrap;
+    }
+
+    input {
+        margin: 0.5em;
+    }
+
+    article {
+        display: flex;
+        flex-flow: column;
+        height: 100%;
+        max-height: 100%;
+    }
+
+    article section {
+        //border: 1px dotted black;
+        flex: 0 1 auto;
+    }
+
+    .grow {
+        flex: 1 1 auto;
+        overflow: auto;
+    }
+
+    .shrink {
+        flex: 0 1 auto;
+    }
+
+    #breadCrumbs {
+        margin-left: 1em;
+        margin-right: 1em;
+    }
+
+    #itemList {
+        margin-left: 1em;
+        margin-right: 1em;
+    }
+
+    #itemList div {
+        background-color: #A7BDC7;
+        padding: 1em;
+        margin: 0.5em;
+    }
+
+    #queueList div {
+        background-color: #A7BDC7;
+        padding: 1em;
+        margin: 0.5em;
+        text-align: left;
+    }
index 88ad9caaa0a1b93cc19c0f0dbee1b3e2e6c12d21..c46cfbf6b25c1b3b7217ce30df62cfab24899e97 100755 (executable)
@@ -18,7 +18,7 @@ DEFAULT_CONFIG = {
  "channels" => [
    {
      "name" => "Everything",
-     "randomize" => false,
+     "randomize" => true,
      "play_ads"  => true,
      "selectors" => [
        "Movies",
@@ -55,7 +55,8 @@ end
 db = ATV::Database.new(ATV_ROOT, CONFIG["sources"])
 
 channels = CONFIG["channels"].map do |c|
-  ATV::Channel.new(c["name"], db, c["selectors"])
+  ATV::Channel.new(db, c)
+#  ATV::Channel.new(c["name"], db, c["selectors"])
 end
 
 player = ATV::Player.new(db, channels)
index 35cfe9d68993f0a528bc76e75c8ff54ae8f7e95e..42a2c263ce4f9224a18d68ccf8af27c03f690c9e 100644 (file)
@@ -1,9 +1,14 @@
 module ATV
   class Channel
-    def initialize(name, db, selectors = [])
-      @name = name
+    def initialize(db, config)
+      # configuration
       @db = db
-      @selectors = selectors
+      @name = config["name"]
+      @selectors = config["selectors"]
+      @play_ads = config["play_ads"]
+      @randomize = config["randomize"]
+
+      # dynamic state
       @time = 0
       @index = 0
       @queue = []
@@ -25,12 +30,23 @@ module ATV
       @time = 0
       if @queue.length > 0
         @current = @queue.shift
+      elsif @randomize
+        @current = pick_random()
       else
         @index = ((@index+1) >= files.length ? 0 : (@index+1))
         @current = files[@index]
       end
     end
 
+    def pick_random()
+      # random walk the tree to find a leaf item and play that
+      tree = filedata[:tree]
+      while tree["path"].nil?
+        tree = tree[tree.keys.sample]
+      end
+      tree
+    end
+
     def state()
        next_index = ((@index+1) >= files.length ? 0 : (@index+1))
        next_item = (@queue.length > 0 ? @queue.first : files[next_index])
@@ -65,7 +81,6 @@ module ATV
     end
 
     def items()
-#      pp filedata[:tree]
       { "items" => filedata[:tree] }
     end