diff --git a/bt_common.inc b/bt_common.inc
index eafe761..b05a902 100644
--- a/bt_common.inc
+++ b/bt_common.inc
@@ -367,4 +367,17 @@ function bencode_response_raw ($msg) {
   header('Content-Type: text/plain');
   header('Pragma: no-cache');
   print($msg);
-}
\ No newline at end of file
+}
+
+/**
+ * Gathers scrape information for the specified info_hash
+ */
+function scrape($info_hash) {
+  $response = db_fetch_array(db_query("SELECT bt.seeders AS complete, bt.leechers AS incomplete, bt.downloaded FROM {bt_torrents} bt WHERE bt.info_hash = '%s'", $info_hash));
+  
+  $struct = strip_excess(bdecode(db_result(db_query("SELECT metadata FROM {bt_torrents} WHERE info_hash = '%s'", $info_hash))));
+  $response['name'] = $struct['info']['name'];
+  
+  return $response;
+}
+
diff --git a/bt_torrent/bt_torrent.module b/bt_torrent/bt_torrent.module
index 173e04d..702ffc7 100644
--- a/bt_torrent/bt_torrent.module
+++ b/bt_torrent/bt_torrent.module
@@ -830,17 +830,6 @@ function bt_torrent_cron() {
         }
       }
       
-      // Scrape our local tracker (if enabled) for the locally tracked torrents
-      if (module_exists('bt_tracker')) {
-        $torrent_result = db_query("SELECT DISTINCT info_hash FROM {bt_torrents} bt WHERE announce_url = '%s'", variable_get('bt_override_announce_url', ''));
-        
-        while ($torrent = db_fetch_object($torrent_result)) {
-          $scrape_info = module_invoke('bt_tracker', 'scrape', $torrent->info_hash);
-          
-          db_query("UPDATE {bt_torrents} SET seeders = %d, leechers = %d, downloaded = %d WHERE info_hash = '%s'", $scrape_info['complete'], $scrape_info['incomplete'], $scrape_info['downloaded'], $info_hash);
-        }
-      }
-      
       // Reset the last_scrape interval
       variable_set('bt_last_scrape', time());
     }
diff --git a/bt_tracker/bt_tracker.module b/bt_tracker/bt_tracker.module
index 27261c9..27955cb 100644
--- a/bt_tracker/bt_tracker.module
+++ b/bt_tracker/bt_tracker.module
@@ -75,20 +75,28 @@ function bt_tracker_cron() {
     db_query("DELETE FROM {bt_tracker_active_users} WHERE last_announce < %d", $last_prune);
     variable_set('bt_tracker_last_prune', time());
   }
+
+  // Scrape our local tracker for the locally tracked torrents
+  $last_scrape = variable_get('bt_last_stats', 0);
+
+  if (time() - $last_scrape > variable_get('bt_tracker_stats_interval', 3600)) {
+    $torrent_result = db_query("SELECT DISTINCT info_hash FROM {bt_torrents} bt WHERE announce_url = '%s'", variable_get('bt_override_announce_url', ''));
+
+    while ($torrent = db_fetch_object($torrent_result)) {
+      $scrape_info = bt_tracker_scrape_local($torrent->info_hash);
+      db_query("UPDATE {bt_torrents} SET seeders = %d, leechers = %d, downloaded = %d WHERE info_hash = '%s'", $scrape_info['complete'], $scrape_info['incomplete'], $scrape_info['downloaded'], $torrent->info_hash);
+    }
+    variable_set('bt_last_stats', time());
+  }
 }
 
 /**
- * Gathers scrape information for the specified info_hash
+ * Gathers scrape information for the specified info_hash from the local tracker
  */
-function bt_tracker_scrape($info_hash) {
-  if (variable_get('bt_tracker_scrape_scope', 0) == 0) {
-    $response = db_fetch_array(db_query("SELECT bt.seeders AS complete, bt.leechers AS incomplete, bt.downloaded FROM {bt_torrents} bt WHERE bt.info_hash = '%s'", $info_hash));
-  }
-  else {
-    $response['complete'] = db_result(db_query("SELECT COUNT(btau.ip) FROM {bt_tracker_active_users} btau WHERE btau.bytes_left = 0 AND btau.info_hash = '%s'", $info_hash));
-    $response['incomplete'] = db_result(db_query("SELECT COUNT(btau.ip) FROM {bt_tracker_active_users} btau WHERE (NOT btau.bytes_left = 0) AND btau.info_hash = '%s'", $info_hash));
-    $response['completed'] = db_result(db_query("SELECT bt.downloaded FROM {bt_torrents} bt WHERE bt.info_hash = '%s'", $info_hash));
-  }
+function bt_tracker_scrape_local($info_hash) {
+  $response['complete'] = db_result(db_query("SELECT COUNT(btau.ip) FROM {bt_tracker_active_users} btau WHERE btau.bytes_left = 0 AND btau.info_hash = '%s'", $info_hash));
+  $response['incomplete'] = db_result(db_query("SELECT COUNT(btau.ip) FROM {bt_tracker_active_users} btau WHERE (NOT btau.bytes_left = 0) AND btau.info_hash = '%s'", $info_hash));
+  $response['completed'] = db_result(db_query("SELECT bt.downloaded FROM {bt_torrents} bt WHERE bt.info_hash = '%s'", $info_hash));
   
   $struct = strip_excess(bdecode(db_result(db_query("SELECT metadata FROM {bt_torrents} WHERE info_hash = '%s'", $info_hash))));
   $response['name'] = $struct['info']['name'];
diff --git a/scrape.php b/scrape.php
index 4dea56f..cbef834 100644
--- a/scrape.php
+++ b/scrape.php
@@ -44,7 +44,7 @@ if (variable_get('bt_tracker_enabled', 0) == 1) {
   foreach ($hashes as $info_hash) {  
     $valid = db_result(db_query("SELECT nid FROM {bt_torrents} WHERE info_hash = '%s'", $info_hash));
     if ($valid) {
-      $response['files'][$info_hash] = module_invoke('bt_tracker', 'scrape', $info_hash);
+      $response['files'][$info_hash] = scrape($info_hash);
     }
   }
 
