From 89c301a7cdaed7b370b395346dd62356e9d79075 Mon Sep 17 00:00:00 2001
From: cnbeining <cnbeining@gmail.com>
Date: Thu, 20 Aug 2015 00:45:32 -0400
Subject: [PATCH] Add support for Qianmo

http://qianmo.com/

Tested on my machine.
---
 README.md                          |  1 +
 src/you_get/common.py              |  3 ++-
 src/you_get/extractors/__init__.py |  1 +
 src/you_get/extractors/qianmo.py   | 40 ++++++++++++++++++++++++++++++
 4 files changed, 44 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 src/you_get/extractors/__init__.py
 create mode 100644 src/you_get/extractors/qianmo.py

diff --git a/README.md b/README.md
index 0e4fa5ad..46bf5fd0 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,7 @@ Fork me on GitHub: <https://github.com/soimort/you-get>
 * NetEase (网易视频) <http://v.163.com>
 * NetEase Music (网易云音乐) <http://music.163.com>
 * PPTV <http://www.pptv.com>
+* QianMo (阡陌视频) <http://qianmo.com/>
 * QQ (腾讯视频) <http://v.qq.com>
 * Sina (新浪视频) <http://video.sina.com.cn>
 * Sohu (搜狐视频) <http://tv.sohu.com>
diff --git a/src/you_get/common.py b/src/you_get/common.py
index 3cb72805..ed305518 100755
--- a/src/you_get/common.py
+++ b/src/you_get/common.py
@@ -922,7 +922,7 @@ def script_main(script_name, download, download_playlist = None):
             sys.exit(1)
 
 def url_to_module(url):
-    from .extractors import netease, w56, acfun, baidu, baomihua, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, dongting, douban, douyutv, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, lizhi, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, twitter, vid48, videobam, vidto, vimeo, vine, vk, xiami, yinyuetai, youku, youtube, zhanqi
+    from .extractors import netease, w56, acfun, baidu, baomihua, bilibili, blip, catfun, cntv, cbs, coursera, dailymotion, dongting, douban, douyutv, ehow, facebook, freesound, google, sina, ifeng, alive, instagram, iqiyi, joy, jpopsuki, khan, ku6, kugou, kuwo, letv, lizhi, magisto, miomio, mixcloud, mtv81, nicovideo, pptv, qianmo, qq, sohu, songtaste, soundcloud, ted, theplatform, tudou, tucao, tumblr, twitter, vid48, videobam, vidto, vimeo, vine, vk, xiami, yinyuetai, youku, youtube, zhanqi
 
     video_host = r1(r'https?://([^/]+)/', url)
     video_url = r1(r'https?://[^/]+(.*)', url)
@@ -974,6 +974,7 @@ def url_to_module(url):
         'mtv81': mtv81,
         'nicovideo': nicovideo,
         'pptv': pptv,
+        'qianmo':qianmo,
         'qq': qq,
         'sina': sina,
         'smgbb': bilibili,
diff --git a/src/you_get/extractors/__init__.py b/src/you_get/extractors/__init__.py
old mode 100644
new mode 100755
index 9dcfdb30..5abc0d8c
--- a/src/you_get/extractors/__init__.py
+++ b/src/you_get/extractors/__init__.py
@@ -33,6 +33,7 @@ from .mtv81 import *
 from .netease import *
 from .nicovideo import *
 from .pptv import *
+from .qianmo import *
 from .qq import *
 from .sina import *
 from .sohu import *
diff --git a/src/you_get/extractors/qianmo.py b/src/you_get/extractors/qianmo.py
new file mode 100644
index 00000000..cec8a14a
--- /dev/null
+++ b/src/you_get/extractors/qianmo.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+__all__ = ['qianmo_download']
+
+from ..common import *
+import urllib.error
+import json
+
+def qianmo_download(url, output_dir = '.', merge = False, info_only = False):
+    if re.match(r'http://qianmo.com/\w+', url):
+        html = get_html(url)
+        match = re.search(r'(.+?)var video =(.+?);', html)
+        
+        if match:
+            video_info_json = json.loads(match.group(2))
+            title = video_info_json['title']
+            ext_video_id = video_info_json['ext_video_id']
+        
+        html = get_content('http://v.qianmo.com/player/{ext_video_id}'.format(ext_video_id = ext_video_id))
+        c = json.loads(html)
+        url_list = []
+        for i in c['seg']:  #Cannot do list comprehensions
+            for a in c['seg'][i]:
+                for b in a['url']:
+                    url_list.append(b[0])
+        
+        type_ = ''
+        size = 0
+        for url in url_list:
+            _, type_, temp = url_info(url)
+            size += temp
+
+        type, ext, size = url_info(url)
+        print_info(site_info, title, type_, size)
+        if not info_only:
+            download_urls(url_list, title, type_, total_size=None, output_dir=output_dir, merge=merge)
+
+site_info = "qianmo"
+download = qianmo_download
+download_playlist = playlist_not_supported('qianmo')
\ No newline at end of file