text: # coding: utf-8
  from __future__ import unicode_literals
  
  from .common import InfoExtractor
  from ..utils import (
      int_or_none,
      parse_duration,
      parse_iso8601,
  )
  
  
  class MnetIE(InfoExtractor):
      _VALID_URL = r"https?://(?:www\.)?mnet\.(?:com|interest\.me)/tv/vod/(?:.*?\bclip_id=)?(?P<id>[0-9]+)"
      _TESTS = [
          {
              "url": "http://www.mnet.com/tv/vod/171008",
              "info_dict": {
                  "id": "171008",
                  "title": "SS_이해인@히든박스",
                  "description": "md5:b9efa592c3918b615ba69fe9f8a05c55",
                  "duration": 88,
                  "upload_date": "20151231",
                  "timestamp": 1451564040,
                  "age_limit": 0,
                  "thumbnails": "mincount:5",
                  "thumbnail": r"re:^https?://.*\.jpg$",
                  "ext": "flv",
              },
              "params": {
                  # rtmp download
                  "skip_download": True,
              },
          },
          {
              "url": "http://mnet.interest.me/tv/vod/172790",
              "only_matching": True,
          },
          {
              "url": "http://www.mnet.com/tv/vod/vod_view.asp?clip_id=172790&tabMenu=",
              "only_matching": True,
          },
      ]
  
      def _real_extract(self, url):
          video_id = self._match_id(url)
  
          # TODO: extract rtmp formats
          # no stype -> rtmp url
          # stype=H -> m3u8 url
          # stype=M -> mpd url
          info = self._download_json(
              "http://content.api.mnet.com/player/vodConfig",
              video_id,
              "Downloading vod config JSON",
              query={
                  "id": video_id,
                  "ctype": "CLIP",
                  "stype": "H",
              },
          )["data"]["info"]
  
          title = info["title"]
  
          cdn_data = self._download_json(
              info["cdn"], video_id, "Downloading vod cdn JSON"
          )["data"][0]
          m3u8_url = cdn_data["url"]
          token = cdn_data.get("token")
          if token and token != "-":
              m3u8_url += "?" + token
          formats = self._extract_wowza_formats(
              m3u8_url, video_id, skip_protocols=["rtmp", "rtsp", "f4m"]
          )
          self._sort_formats(formats)
  
          description = info.get("ment")
          duration = parse_duration(info.get("time"))
          timestamp = parse_iso8601(info.get("date"), delimiter=" ")
          age_limit = info.get("adult")
          if age_limit is not None:
              age_limit = 0 if age_limit == "N" else 18
          thumbnails = [
              {
                  "id": thumb_format,
                  "url": thumb["url"],
                  "width": int_or_none(thumb.get("width")),
                  "height": int_or_none(thumb.get("height")),
              }
              for thumb_format, thumb in info.get("cover", {}).items()
              if thumb.get("url")
          ]
  
          return {
              "id": video_id,
              "title": title,
              "description": description,
              "duration": duration,
              "timestamp": timestamp,
              "age_limit": age_limit,
              "thumbnails": thumbnails,
              "formats": formats,
          }
  