#!/usr/bin/env python # coding: utf-8 # # Get Notebook from github.com and other source. # by [openthings@163.com](http://my.oschina.net/u/2306127/blog?catalog=3420733), 2016-04. # # ### 通用的Notebook更新维护的工具。 # * 原始URL列表保存在文本文件git_list.txt中。 # * git_list.txt转为git_list.md,在GitBook中使用。 # * git_list.txt转为git_list.ipynb,在Jupyter中使用。 # In[1]: from pprint import * # #### URL地址列表读入字符串变量中。 # #### 注意,为了避免太长,只显示了前面指定个数的字符。 # In[2]: url_str = open("git_list.txt").read() print(url_str[0:300] + "\n\n......") # #### 分解字符串到名称和url。 # In[3]: url_line = url_str.split("#") url_list = [] for url in url_line: url2 = url.strip().split("\n") if len(url2)>1: uname = url2[0] ugit = url2[1] url_dict = {"uname":uname,"ugit":ugit} url_list.append(url_dict) print("Total:",len(url_list)) pprint(url_list[0:3]) #print(uname,"\n",ugit) # ## 保存到Markdown文件。 # In[4]: flist = open("git_list.md","w+") flist.write( """ ## IPython Notebook Tutorial and Skills open source... ##### by [openthings@163.com](http://my.oschina.net/u/2306127/blog?catalog=3420733), 2016-04. """ ) for d in url_list: flist.write("##### " + d["uname"] + "\n") flist.write("[" + d["ugit"] + "]" + "(" + d["ugit"] + ")\n") flist.close() print("Writed url list to file: url_list.md") # ## 抓取git库中文件到本地。如果已经存在,则git pull,否则git clone. # ** 使用了IPython的!魔法操作符来执行shell操作。** # In[7]: import os import os.path index = 0 for d in url_list: index += 1 print("\n",index,":\t",d["uname"],"\n==>>\t",d["ugit"]) git_path = os.path.split(d["ugit"]) git_name = git_path[1].split(".")[0] #print(git_name) if os.path.exists(git_name): print("\t Existed, git pull:",git_name," ...") get_ipython().system(' cd $git_name && git pull') else: print("Git clone ......") ucmd = "git clone " + d["ugit"] #print(ucmd) get_ipython().system(' $ucmd') print("Finished.") # In[ ]: