diff --git a/sickbeard/providers/transmitthenet.py b/sickbeard/providers/transmitthenet.py
index 88918e6333fc4142cfcdadec96e429de0774692b..bd534091e190ddb2271122308758200bdb8bc629 100644
--- a/sickbeard/providers/transmitthenet.py
+++ b/sickbeard/providers/transmitthenet.py
@@ -22,7 +22,7 @@ from sickbeard import tvcache
 from sickbeard.bs4_parser import BS4Parser
 from sickbeard.providers import generic
 from sickrage.helper.exceptions import AuthException
-
+from sickrage.helper.common import try_int
 
 class TransmitTheNetProvider(generic.TorrentProvider):
     def __init__(self):
@@ -31,26 +31,21 @@ class TransmitTheNetProvider(generic.TorrentProvider):
 
         self.urls = {
             'base_url': 'https://transmithe.net/',
-            'index': 'https://transmithe.net/index.php',
+            'login': 'https://transmithe.net/login.php',
+            'search': 'https://transmithe.net/torrents.php',
         }
 
         self.url = self.urls['base_url']
 
-
         self.username = None
         self.password = None
         self.ratio = None
         self.minseed = None
         self.minleech = None
+        self.freeleech = None
 
         self.cache = TransmitTheNetCache(self)
 
-        self.search_params = {
-            "page": 'torrents',
-            "category": 0,
-            "active": 1
-        }
-
     def _checkAuth(self):
 
         if not self.username or not self.password:
@@ -61,13 +56,13 @@ class TransmitTheNetProvider(generic.TorrentProvider):
     def _doLogin(self):
 
         login_params = {
-            'uid': self.username,
-            'pwd': self.password,
-            'remember_me': 'on',
-            'login': 'submit'
+            'username': self.username,
+            'password': self.password,
+            'keeplogged': 'on',
+            'login': 'Login'
         }
 
-        response = self.getURL(self.urls['index'], params={'page': 'login'}, post_data=login_params, timeout=30)
+        response = self.getURL(self.urls['login'], post_data=login_params, timeout=30)
         if not response:
             logger.log(u"Unable to connect to provider", logger.WARNING)
             return False
@@ -92,40 +87,48 @@ class TransmitTheNetProvider(generic.TorrentProvider):
                 if mode != 'RSS':
                     logger.log(u"Search string: %s " % search_string, logger.DEBUG)
 
-                data = self.getURL(self.urls['index'], params=self.search_params)
-                searchURL = self.urls['index'] + "?" + urlencode(self.search_params)
+                search_params = {
+                    'searchtext': search_string,
+                    'filter_freeleech': (0, 1)[self.freeleech is True],
+                    'order_by': ('seeders', 'time')[mode == 'RSS'],
+                    "order_way": "desc"
+                }
+
+                if not search_string:
+                    del search_params['searchtext']
+
+                searchURL = self.urls['search'] + "?" + urlencode(search_params)
                 logger.log(u"Search URL: %s" %  searchURL, logger.DEBUG)
 
+                data = self.getURL(self.urls['search'], params=search_params)
                 if not data:
                     logger.log(u"No data returned from provider", logger.DEBUG)
                     continue
 
                 try:
-                    with BS4Parser(data) as html:
-
-                        torrent_rows = []
-
-                        down_elems = html.findAll("img", {"alt": "Download Torrent"})
-                        for down_elem in down_elems:
-                            if down_elem:
-                                torr_row = down_elem.findParent('tr')
-                                if torr_row:
-                                    torrent_rows.append(torr_row)
-
+                    with BS4Parser(data, features=["html5lib", "permissive"]) as html:
+                        torrent_table = html.find('table', {'id':'torrent_table'})
+                        torrent_rows = torrent_table.findAll('tr', {'class':'torrent'})
                         # Continue only if one Release is found
-                        if len(torrent_rows) < 1:
-                            logger.log(u"Data returned from provider does not contain any torrents", logger.DEBUG)
+                        if not torrent_rows:
+                            logger.log(u"Data returned from %s does not contain any torrents" % self.name, logger.DEBUG)
                             continue
 
                         for torrent_row in torrent_rows:
+                            freeleech = torrent_row.find('img', alt="Freeleech") is not None
+                            if self.freeleech and not freeleech:
+                                continue
+
+                            download_url = self.urls['base_url'] + torrent_row.find('a', {"title": 'Download Torrent'})['href']
+
+                            temp_anchor = torrent_row.find('a', {"data-src": True})
+                            title = temp_anchor['data-src'].rsplit('.', 1)[0]
+                            size = try_int(temp_anchor['data-filesize'])
+
+                            temp_anchor = torrent_row.find('span', class_='time').parent.find_next_sibling()
+                            seeders = try_int(temp_anchor.text.strip())
+                            leechers = try_int(temp_anchor.find_next_sibling().text.strip())
 
-                            title = torrent_row.find('a', {"data-src": True})['data-src'].rsplit('.', 1)[0]
-                            download_href = torrent_row.find('img', {"alt": 'Download Torrent'}).findParent()['href']
-                            seeders = int(torrent_row.findAll('a', {'title': 'Click here to view peers details'})[0].text.strip())
-                            leechers = int(torrent_row.findAll('a', {'title': 'Click here to view peers details'})[1].text.strip())
-                            download_url = self.urls['base_url'] + download_href
-                            # FIXME
-                            size = -1
 
                             if not all([title, download_url]):
                                 continue