old_contents: #!/usr/bin/env python
  
  __all__ = ['letv_download']
  
  import json
  import xml.etree.ElementTree as ET
  from ..common import *
  
  def video_info(vid):
      x = get_content("http://www.letv.com/v_xml/%s.xml" % vid)
      xml_obj = ET.fromstring(x)
      info = json.loads(xml_obj.find("playurl").text)
      title = info.get('title')
      urls = info.get('dispatch')
      for key in urls.keys():
          url = urls[key][0]
          break
      return url, title
  
  def letv_download_by_vid(vid, output_dir='.', merge=True, info_only=False):
      url, title = video_info(vid)
      _, _, size = url_info(url)
      ext = 'flv'
      print_info(site_info, title, ext, size)
      if not info_only:
          download_urls([url], title, ext, size, output_dir=output_dir, merge=merge)
  
  def letv_download(url, output_dir='.', merge=True, info_only=False):
      if re.match(r'http://www.letv.com/ptv/vplay/(\d+).html', url):
          vid = match1(url, r'http://www.letv.com/ptv/vplay/(\d+).html')
      else:
          html = get_content(url)
          vid = match1(html, r'vid="(\d+)"')
      letv_download_by_vid(vid, output_dir=output_dir, merge=merge, info_only=info_only)
  
  
  site_info = "letv.com"
  download = letv_download
  download_playlist = playlist_not_supported('letv')
  
new_contents: #!/usr/bin/env python
  
  __all__ = ['letv_download']
  
  import json
  import random
  import xml.etree.ElementTree as ET
  from ..common import *
  
  def get_timestamp():
      tn = random.random()
      url = 'http://api.letv.com/time?tn={}'.format(tn)
      result = get_content(url)
      return json.loads(result)['stime']
  
  def get_key(t):
      for s in range(0, 8):
          e = 1 & t
          t >>= 1
          e <<= 31
          t += e
      return t ^ 185025305
  
  def video_info(vid):
      tn = get_timestamp()
      key = get_key(tn)
      url = 'http://api.letv.com/mms/out/video/play?id={}&platid=1&splatid=101&format=1&tkey={}&domain=http%3A%2F%2Fwww.letv.com'.format(vid, key)
      r = get_content(url, decoded=False)
      xml_obj = ET.fromstring(r)
      info = json.loads(xml_obj.find("playurl").text)
      title = info.get('title')
      urls = info.get('dispatch')
      for k in urls.keys():
          url = urls[k][0]
          break
      url += '&termid=1&format=0&hwtype=un&ostype=Windows7&tag=letv&sign=letv&expect=1&pay=0&rateid={}'.format(k)
      return url, title
  
  def letv_download_by_vid(vid, output_dir='.', merge=True, info_only=False):
      url, title = video_info(vid)
      _, _, size = url_info(url)
      ext = 'flv'
      print_info(site_info, title, ext, size)
      if not info_only:
          download_urls([url], title, ext, size, output_dir=output_dir, merge=merge)
  
  def letv_download(url, output_dir='.', merge=True, info_only=False):
      if re.match(r'http://www.letv.com/ptv/vplay/(\d+).html', url):
          vid = match1(url, r'http://www.letv.com/ptv/vplay/(\d+).html')
      else:
          html = get_content(url)
          vid = match1(html, r'vid="(\d+)"')
      letv_download_by_vid(vid, output_dir=output_dir, merge=merge, info_only=info_only)
  
  
  site_info = "letv.com"
  download = letv_download
  download_playlist = playlist_not_supported('letv')
  
subject: fix url parse error