old_contents: #!/usr/bin/env python
  import webbrowser
  import urllib
  import urllib2
  import re
  from HTMLParser import HTMLParser
  import argparse
  
  
  # create a subclass and override the handler methods
  class MyHTMLParser(HTMLParser):
      title = ''
      q = ''
      state = 'looking'
      results = []
  
      def __init__(self, q):
          HTMLParser.__init__(self)
          self.q = q.lower()
  
      def handle_starttag(self, tag, attrs):
          if tag == 'title':
              self.state = 'title'
          if tag == 'magnet' and self.state == 'matched':
              self.state = 'magnet'
  
      def handle_data(self, data):
          if self.state == 'title':
              if data.lower().find(self.q) != -1:
                  self.title = data
                  self.state = 'matched'
              else:
                  self.state = 'looking'
          if self.state == 'magnet':
              self.results.append('magnet:?xt=urn:btih:' + urllib.quote(data) + '&dn=' + urllib.quote(self.title))
              self.state = 'looking'
  
  
  def main():
  
      parser = argparse.ArgumentParser(description='Finds and downloads torrents from the Pirate Bay')
  
      def local(args):
          xml_str = ''
          with open(args.database, 'r') as f:
              xml_str += f.read()
          htmlparser = MyHTMLParser(args.q)
          htmlparser.feed(xml_str)
          return htmlparser.results
  
      def remote(args):
          f = urllib2.urlopen('http://thepiratebay.se/search/' + args.q.replace(" ", "+") + '/0/7/0')
          return re.findall(""""(magnet\:\?xt=[^"]*)""", f.read())
  
      parser.add_argument('q', metavar='search_term', help="The term to search for")
      parser.add_argument('--local', dest='database', help="An xml file containing the Pirate Bay database")
  
      args = parser.parse_args()
      if args.database:
          mags = local(args)
      else:
          mags = remote(args)
  
      if mags:
          for m in range(len(mags)):
              name = re.search("dn=([^\&]*)", mags[m])
              print str(m) + ".", urllib.unquote(name.group(1).encode('ascii')).decode('utf-8').replace("+", " ")
          l = raw_input("Select a link: ")
          webbrowser.open(mags[int(l)])
      else:
          print "no results"
  
  if __name__ == "__main__":
      main()
  
new_contents: #!/usr/bin/env python
  import webbrowser
  import urllib
  import urllib2
  import re
  from HTMLParser import HTMLParser
  import argparse
  
  
  # create a subclass and override the handler methods
  class MyHTMLParser(HTMLParser):
      title = ''
      q = ''
      state = 'looking'
      results = []
  
      def __init__(self, q):
          HTMLParser.__init__(self)
          self.q = q.lower()
  
      def handle_starttag(self, tag, attrs):
          if tag == 'title':
              self.state = 'title'
          if tag == 'magnet' and self.state == 'matched':
              self.state = 'magnet'
  
      def handle_data(self, data):
          if self.state == 'title':
              if data.lower().find(self.q) != -1:
                  self.title = data
                  self.state = 'matched'
              else:
                  self.state = 'looking'
          if self.state == 'magnet':
              self.results.append('magnet:?xt=urn:btih:' + urllib.quote(data) + '&dn=' + urllib.quote(self.title))
              self.state = 'looking'
  
  
  def main():
      parser = argparse.ArgumentParser(description='Finds and downloads torrents from the Pirate Bay')
      parser.add_argument('q', metavar='search_term', help="The term to search for")
      parser.add_argument('--local', dest='database', help="An xml file containing the Pirate Bay database")
  
      def local(args):
          xml_str = ''
          with open(args.database, 'r') as f:
              xml_str += f.read()
          htmlparser = MyHTMLParser(args.q)
          htmlparser.feed(xml_str)
          return htmlparser.results
  
      def remote(args):
          f = urllib2.urlopen('http://thepiratebay.se/search/' + args.q.replace(" ", "+") + '/0/7/0')
          return re.findall(""""(magnet\:\?xt=[^"]*)""", f.read())
  
      args = parser.parse_args()
      if args.database:
          mags = local(args)
      else:
          mags = remote(args)
  
      if mags:
          for m in range(len(mags)):
              name = re.search("dn=([^\&]*)", mags[m])
              print str(m) + ".", urllib.unquote(name.group(1).encode('ascii')).decode('utf-8').replace("+", " ")
          l = raw_input("Select a link: ")
          webbrowser.open(mags[int(l)])
      else:
          print "no results"
  
  if __name__ == "__main__":
      main()
  
subject: rearrange a few lines