Static method that parses a given table row element by executing `Parser.FIRST_ROW_XPATH` and scrapping torrent's
        id, title, tracked by status, category url and torrent url. Used specifically with a torrent's first table row.

        :param lxml.HtmlElement row: row to parse
        :param urls.Url url_instance: Url used to combine base url's with scrapped links from tr
        :return: scrapped id, title, tracked by status, category url and torrent url
        :rtype: list

def parse_first_row(row, url_instance):
        """
        Static method that parses a given table row element by executing `Parser.FIRST_ROW_XPATH` and scrapping torrent's
        id, title, tracked by status, category url and torrent url. Used specifically with a torrent's first table row.

        :param lxml.HtmlElement row: row to parse
        :param urls.Url url_instance: Url used to combine base url's with scrapped links from tr
        :return: scrapped id, title, tracked by status, category url and torrent url
        :rtype: list
        """
        tags = row.xpath(Parser.FIRST_ROW_XPATH)
        category_url = url_instance.combine(tags[0].get('href'))
        title = unicode(tags[1].text)
        # work with the incomplete URL to get str_id
        torrent_url = tags[1].get('href')
        str_id = torrent_url.split('details/')[1]
        str_id = str_id[:-1] if str_id.endswith('/') else str_id
        # complete the torrent URL with BASE_URL
        torrent_url = url_instance.combine(torrent_url)

        # means that torrent has external property
        if len(tags) == 3:
            # monkey patch the missing external query param
            category_url += '&external=1'
            tracked_by = '(external)'
        else:
            tracked_by = 'Demonoid'
        return [str_id, title, tracked_by, category_url, torrent_url]