diff --git a/you_get/downloader/__init__.py b/you_get/downloader/__init__.py
index d0f2fd5e..2cd6305c 100644
--- a/you_get/downloader/__init__.py
+++ b/you_get/downloader/__init__.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
from .acfun import *
+from .bilibili import *
from .cntv import *
from .iqiyi import *
from .ku6 import *
diff --git a/you_get/downloader/bilibili.py b/you_get/downloader/bilibili.py
new file mode 100644
index 00000000..e0253fb3
--- /dev/null
+++ b/you_get/downloader/bilibili.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+__all__ = ['bilibili_download']
+
+from ..common import *
+
+from .sina import sina_download_by_id
+from .tudou import tudou_download_by_id
+from .youku import youku_download_by_id
+
+import re
+
+def get_srt_xml(id):
+ url = 'http://comment.bilibili.tv/dm,%s' % id
+ return get_html(url)
+
+def parse_srt_p(p):
+ fields = p.split(',')
+ assert len(fields) == 8, fields
+ time, mode, font_size, font_color, pub_time, pool, user_id, history = fields
+ time = float(time)
+
+ mode = int(mode)
+ assert 1 <= mode <= 8
+ # mode 1~3: scrolling
+ # mode 4: bottom
+ # mode 5: top
+ # mode 6: reverse?
+ # mode 7: position
+ # mode 8: advanced
+
+ pool = int(pool)
+ assert 0 <= pool <= 2
+ # pool 0: normal
+ # pool 1: srt
+ # pool 2: special?
+
+ font_size = int(font_size)
+
+ font_color = '#%06x' % int(font_color)
+
+ return pool, mode, font_size, font_color
+
+def parse_srt_xml(xml):
+ d = re.findall(r'