Giter Club home page Giter Club logo

vtdiscourse's Introduction

Documentation Status

vtdiscourse

這個工具是專為 talk vTaiwan 所開發。

目的是當 talk vTaiwan 的法案建立 gitbook 後要據其內容在討論區建立對應的問題。vTaiwangitbook 會建立在 g0vgihub repo 例如企業資產擔保法草案。 整個流程首先會根據對應法案的 g0v repo 去取得 packeage.json 法案名稱與 SUMMARY.md 與以及對應的 .md 檔案內容。

說明

  • package.json: gitbook 相關設定,用其來建立討論區分類法案的中文名稱。
  • SUMMARY.md: gitbook 大綱,用他取得子分類名稱與對應的內容。

安裝步驟

  • clone repo 到本機端並且安裝 (支援 Python2.7, Python3.x)
git clone https://github.com/chairco/vtdiscourse.git`
  • 安裝套件
cd vtdiscourse

python setup.py install

使用方法

分成兩種,一種是安裝後透過 command line 一鍵完成。第二種則是撰寫一個簡單的 script 來完成。

指令(Command line)

  • 取得法案名稱方法
vtd -n "api_user" -p "api_key" -g "gihub's repo name" -s GET
  • 建立 talk.vTaiwan 討論內容
vtd -n "api_user" -p "api_key" -g "gihub's repo name" -s DEPLOY

腳本(Script)

請注意某些內容必須要有管理員權限的 API-User, API-Key 才能存取。

設定 API

>>> discourse = Discourse(
        url = 'https://talk.vtaiwan.tw',
        api_username='使用者',
        api_key='金鑰')

設定要讀取 repo 名稱

  • 設定參數檔案、讀取 github 的檔案名稱
>>> parm = Parser(name='directors-election-gitbook', githubfile='package.json')

快樂的取得 package.json 相對應內容

  • 抓取法案的中文名稱
>>> print(parm.get_name)

快樂的取得 SUMMARY.md 內容有兩種方式

  • 尚未建立物件時,直接設定物件參數 parm = Parser(name='directors-election-gitbook', githubfile='SUMMARY.md')

  • 已經建立物件 parm = Parser(name='directors-election-gitbook', githubfile='package.json'),直接透過 setter 方法 parm.githubfile = "SUMMARY.md" 轉為讀取 SUMMARY.md

>>> print(parm.get_topics_content) # Get SUMMARY.md content

測試

進入專案內資料夾內執行 py.test

LICENSE

MIT LICENSE

vtdiscourse's People

Contributors

chairco avatar

Stargazers

 avatar

Watchers

 avatar

vtdiscourse's Issues

產生 JSON format 的 content.json

透過 vtdiscourse.Parser.get_topics_content 會根據指定的 md file 轉換成 html 結構,並根據順序儲存成 OrderedDisct structure。用法如下:

>>> parm = Parser(filename='vtaiwan.json', githubfile='SUMMARY.md')
>>> print(parm.get_topics_content)

OrderedDict([('3.md', [{'h1': '有關董事失格制度'}, {'p': '現行法僅有董事消極資格制度(§30),無董事失格制度。未來修法如大幅放寬管制,針對少數強行規範宜引進英美法系失格制度強化監理。董事違反公司法特定規定情節嚴重者,法院或主管機關得為失格處分,禁止其於一定期間內擔任該公司董事。違反失格處分,於一定條件下尚有刑責,且需就違法經營公司期間之公司債務負個人清償責任。以遏阻不適格者管理公司,強化公司治理。'}, {'h2': '您是否覺得現行法董事消極資格制度不足?'}, {'ol': None}, {'li': '是,應修法完備'}, {'li': '否,現行法已足'}, {'li': '其他'}, {'h2': '承選項1。消極資格制度不足下,您是否贊成引進董事失格制度?'}, {'ol': None}, {'li': '贊成'}, {'li': '不贊成'}, {'li': '其他'}, {'h2': '由何政府機關擔任董事失格決定較佳?'}, {'ol': None}, {'li': '司法機關'}, {'li': '具獨立性之行政機關'}, {'li': '行政主管機關'}, {'li': '其他'}, {'h2': '其他相關建議'}])])]

另外需要一個函式或是類別將這個檔案產生一個 JSON file,接著才能透過這個 JSON file 到 Discourse 網站檢查與產生對應的討論串。

寫成類別有好處是 Parser() 可以繼承他並使用?

上傳 talk.vTaiwan 方法

透過寫一個 script function 來做,稱 deploy

  1. 讀取 contetn.json (從 gitbook 爬出來的內容)
  2. 根據 SUMMARY.md 列出的章節去比對 content.json 並產生 category 與 topic
  3. 要確認網站是否有相同內容,如果有則不執行(但要新增一個 update command)

run.py 處理資料流程修正

master 的 run.py flow 是

  • 建立父類別 Category, 如果有則取得 Category id 接著開始要 inseret data to discourse.
  • 從 SUMMARY.md 根據每個 md 檔案將資料抓回來。
  • 建立成一個 content.json,
  • 根據 SUMMARY.md 的名稱循序的去抓取 content.json 對應的 md file name 與其 value 並且存成一個 OrderedDict() 的資料集。
  • 接著循序的開始寫入每個 md 檔案的 h1 標題作為子類別,h2 則是子類別下的每個討論
  1. 這裡發現幾個問題,建立一個 Orderde dataset 結果只是為了再存一次資料浪費記憶體空間
  2. 發現一些沒有用到的程式碼

寫測試

Parser, Discourse 兩個 class 要寫,因為是 independent。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.