tweeper.php: support host-specific methods for preprocessing the HTML data
[tweeper.git] / tweeper.php
index 81f5f85..efc0fd6 100644 (file)
@@ -161,7 +161,7 @@ class Tweeper {
   private function load_stylesheet($host) {
     $stylesheet = "file://" . __DIR__ . "/rss_converter_" . $host . ".xsl";
     if (FALSE === file_exists($stylesheet)) {
-      trigger_error("Conversion to RSS not supported: $host", E_USER_ERROR);
+      trigger_error("Conversion to RSS not supported for $host ($stylesheet not found)", E_USER_ERROR);
       return NULL;
     }
 
@@ -244,7 +244,10 @@ class Tweeper {
       return NULL;
     }
 
-    $xsltProcessor = $this->load_stylesheet($url["host"]);
+    // Strip the leading www. to be more forgiving on input URLs
+    $host = preg_replace('/^www\./', '', $url["host"]);
+
+    $xsltProcessor = $this->load_stylesheet($host);
     if (NULL === $xsltProcessor) {
       return NULL;
     }
@@ -254,7 +257,12 @@ class Tweeper {
       return NULL;
     }
 
-    $xmlDoc = $this->html_to_xml($html, $url["host"]);
+    $preprocess_html_host_method = 'preprocess_html_' . str_replace(".", "_", $host);
+    if (method_exists($this, $preprocess_html_host_method)) {
+      $html = call_user_func_array(array($this, $preprocess_html_host_method), array($html));
+    }
+
+    $xmlDoc = $this->html_to_xml($html, $host);
     if (NULL === $xmlDoc) {
       return NULL;
     }