From d44fc58bf2e393a23cbdd311e5a4cd62470b66ac Mon Sep 17 00:00:00 2001
From: 0xb00bface <0xboobface@gmail.com>
Date: Sun, 23 May 2021 16:56:14 +0200
Subject: [PATCH] Fix display of resolution tag for amateur.tv

---
 .../src/main/java/ctbrec/ui/tabs/ThumbCell.java   |  2 +-
 common/src/main/java/ctbrec/Model.java            | 11 ++++++++++-
 .../java/ctbrec/sites/amateurtv/AmateurTv.java    | 15 +++++----------
 .../ctbrec/sites/amateurtv/AmateurTvModel.java    |  8 ++------
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java
index 677cc3b7..7d4a994c 100644
--- a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java
+++ b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java
@@ -727,7 +727,7 @@ public class ThumbCell extends StackPane {
         try {
             return model.getStreamResolution(false);
         } catch (ExecutionException e) {
-            LOG.warn("Error loading stream resolution for model {}", model, e);
+            LOG.debug("Error loading stream resolution for model {}: {}", model, e.getLocalizedMessage());
             return new int[2];
         }
     }
diff --git a/common/src/main/java/ctbrec/Model.java b/common/src/main/java/ctbrec/Model.java
index 551ac5c4..0cb9ab1e 100644
--- a/common/src/main/java/ctbrec/Model.java
+++ b/common/src/main/java/ctbrec/Model.java
@@ -76,6 +76,15 @@ public interface Model extends Comparable<Model>, Serializable {
 
     public boolean isOnline() throws IOException, ExecutionException, InterruptedException;
 
+    /**
+     *
+     * @param failFast
+     *            If set to true, the method returns immediately and might return false even if the model actually is online
+     * @return
+     * @throws IOException
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     public boolean isOnline(boolean ignoreCache) throws IOException, ExecutionException, InterruptedException;
 
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException;
@@ -98,7 +107,7 @@ public interface Model extends Comparable<Model>, Serializable {
      * Determines the stream resolution for this model
      *
      * @param failFast
-     *            If set to true, the method returns emmediately, even if the resolution is unknown. If
+     *            If set to true, the method returns immediately, even if the resolution is unknown. If
      *            the resolution is unknown, the array contains 0,0
      *
      * @return a tupel of width and height represented by an int[2]
diff --git a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTv.java b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTv.java
index 11bf2f63..16ae8612 100644
--- a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTv.java
+++ b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTv.java
@@ -6,17 +6,12 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import ctbrec.Model;
 import ctbrec.io.HttpClient;
 import ctbrec.sites.AbstractSite;
 
 public class AmateurTv extends AbstractSite {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AmateurTv.class);
-
     public static String baseUrl = "https://www.amateur.tv";
 
     private AmateurTvHttpClient httpClient;
@@ -79,22 +74,22 @@ public class AmateurTv extends AbstractSite {
 
     @Override
     public boolean supportsTips() {
-        return true;
+        return false;
     }
 
     @Override
     public boolean supportsFollow() {
-        return true;
+        return false;
     }
 
     @Override
     public boolean supportsSearch() {
-        return true;
+        return false;
     }
 
     @Override
     public boolean searchRequiresLogin() {
-        return true;
+        return false;
     }
 
     @Override
@@ -116,7 +111,7 @@ public class AmateurTv extends AbstractSite {
 
     @Override
     public Model createModelFromUrl(String url) {
-        Matcher m = Pattern.compile("https?://.*?amateur.tv/.*").matcher(url);
+        Matcher m = Pattern.compile("https?://.*?amateur.tv/(.*)").matcher(url);
         if(m.matches()) {
             String modelName = m.group(1);
             return createModel(modelName);
diff --git a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
index 832caebf..7697516d 100644
--- a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
+++ b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
@@ -13,8 +13,6 @@ import javax.xml.bind.JAXBException;
 
 import org.json.JSONObject;
 import org.jsoup.nodes.Element;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.iheartradio.m3u8.Encoding;
 import com.iheartradio.m3u8.Format;
@@ -37,8 +35,6 @@ import okhttp3.Response;
 
 public class AmateurTvModel extends AbstractModel {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AmateurTvModel.class);
-
     private boolean online = false;
 
     @Override
@@ -53,11 +49,11 @@ public class AmateurTvModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (failFast) {
+        if (failFast && onlineState != UNKNOWN) {
             return onlineState;
         } else {
             try {
-                isOnline(true);
+                onlineState = isOnline(true) ? ONLINE : OFFLINE;
             } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
                 onlineState = OFFLINE;