Skip to content

Instantly share code, notes, and snippets.

@littlebtc
Created February 13, 2011 07:41
Show Gist options
  • Save littlebtc/824525 to your computer and use it in GitHub Desktop.
Save littlebtc/824525 to your computer and use it in GitHub Desktop.
把NicoFox帶回家>////< 工作項目一覽

趁著讀書讀得快睡著的時候來趕快整理一下NicoFox的待作清單。大致可以分為簡單、困難兩個大部分。希望任何有志參與的人都能來幫一下忙qqqqqqq

如何參與?

  1. 向我報備 (?),說你要做什麼,以免衝到
  2. 申請 GitHub 帳號,Fork https://github.com/littlebtc/nicofox
  3. Fork過後你會拿到專屬你的NicoFox >////< 使用Git版本控制系統拉下來,在你自己的 Fork 裡頭完成要做的事情
  4. 完成過後請送Pull Request給我。 (進到你自己NicoFox在GitHub的頁面,按一下「Pull Request」)
  5. 耐心等待我的挑剔(?)和採用XDDDD

千萬不要亂抄別人的程式碼!我很重視 License,希望大家複製貼上前請三思。有很多現成的Open Source資源可以利用。

Task List for NicoFox 0.8a

簡單

(只要讀懂局部就可以參與)

  • [字串] 有些字串目前是寫死的,沒有辦法被翻譯。因為 NicoFox 0.6 的 UI 變動幅度太大,所以字串的整理會需要一點時間。希望有人可以幫忙整理這一個部分(至少en-US和zh-TW要整理好)。所有字串應該都放在locale/底下,沒有翻譯的東西可能散布在content/*.xul, content/*.jsmodules/*.jsm
  • [除蟲] 請協助檢查頻道影片、社區影片的評論有沒有辦法正常下載。Nico的仕樣經常改變,因此這方面會經常爛掉 qqqqq 如果您有付費會員帳號,也請詳細檢查網站的顯示是否有任何問題。目前下載的主判斷放在modules/DownloadUtils.jsm,影片資訊的閱讀放在modules/VideoInfoReader.jsm。這些兩個都花了很長時間編寫和重構,有問題請儘管丟出來

困難

(需要對程式碼有一定程度的了解)

  • [暫停] 下載管理員需要追加「暫停」的狀態。主要原因是現在佇列的設計只能讓他一直一直一直一直跑,如果遇到防洪裝置啟用,或著連不上NICO時就會失敗連環爆。您需要花一點點時間閱讀modules/DownlodManager.jsm來了解如何實現qqq。
  • [報錯] 下載錯誤不應該顯示Modal-Dialog(也就是蹦出一個訊息)。合理講應該要把錯誤訊息顯示在下載管理員+右下訊息而且不影響其他下載項目的繼續進行才對。這件事情需要調整modules/DownlodUtils.jsm,也可能會動到modules/DownloadManager.jsm的一些判斷。
  • [登入] 自動登入的功能目前已經暫時拿掉了。我本來計畫重寫,但因為某些原因卡住。如果對這塊有興趣,我會另外傳一些程式碼講一下我的想法。
  • [播放] Player「我覺得」應該改成放在分頁裡。(NicoFox Player的程式碼疊層架屋的問題已經解決了!)。

常見問題

Q:我沒寫過套件!

A:請先看一些有關JavaScript的再介紹: https://developer.mozilla.org/en/JavaScript/A_re-introduction_to_JavaScript(for那裡我還是用爛寫法qqq)

然後是套件課程投影片:

Q:我不會用Git!

A:請讀一下寫給大家的 Git 教學。另外,Git對Windows不太友善。Mac/Linux推獎。

Q:拉下來之後要如何測試?

A:十分簡單,Git Clone下來之後,資料夾改名為nicofox@littlebtc,拉進個人設定檔的extensions/資料夾即可。不過我自己的作法是Clone到其他路徑之後建Symbolic Link。Windows Vista, Windows 7 with NTFS / Mac / Linux 都可以這樣做,我也都用得很愉快。

Q:如何偵錯?

A:請先灌Console平方和Extension Developer兩套件。詳細設置應該在第一次套件課程投影片裡。

Q:程式碼有特殊規定嗎?

A:不分語言一律空兩格當Tab(更正:ActionScript例外),Vim使用者應該會自動偵測到第一行Comment的規定而調整。JS部分有幾個地雷:一定要加var/letsetTimeout/setInterval禁止裡頭放string,禁用evalparseInt如果十進位一定要加,10。理由都不難找。Coding Style目前沒有明確規範。可以看我怎麼寫qqqqq

Q:Help me!有什麼好資源嗎?

A:Mozilla官方的開發者網站有超多資訊:https://developer.mozilla.org。如果你需要研究Firefox的原始碼,請瀏覽http://mxr.mozilla.org/

Q:NicoFox下一版的版本相容性設定?

A:3.6(Mozilla 1.9.2)~4.0.*(2.0)。

NicoFox程式碼簡介

components/
  about_nicofox.js       目前未使用,用於未來about:nicofox內部頁面。
  bootstrap.js           在Firefox啟動時初始化下載管理員。
  command_line.js        提供由Command Line啟動Player的機制。
  nicowatcher.js         攔截時報、提供?smilefox=get下載迴路。
content/
  customizeToolbarOverlay.xul 「自定工具列」 Overlay,用於解決 Firefox 4 工具列的疑難雜症。
  firefoxOverlay1.9.xul  Overlay(對瀏覽器介面的附加),Firefox 3.6 用。
  firefoxOverlay2.0.xul  Overlay(對瀏覽器介面的附加),Firefox 4 以上用。
  nicofoxPlayer.js      NicoFox Player視窗的JS。
  nicofoxPlayer.xul     NicoFox Player視窗。
  nicofoxPlayer.swf     NicoFox Player的SWF檔案。
  options.xul            選項介面。
  options_panel1.js      第一、二、三個選項頁籤的Script。
  options_panel2.js
  options_panel3.js
  overlay.js             Overlay上的JS。
  smilefoxPanel.js       Overlay上有關下載管理員顯示區域的JS。
  smilefoxPanel.xml      下載項目的XBL Binding。
defaults/
  ......內建設定值。
inpage/
  ......目前未使用。about:nicofox施工用檔案。完成後會移進content/。
  以後有時間會把這個另外開Branch隔離。
locale/
  ......本地化用。目前有英文、正簡體中文、日文。
modules/
  Core.jsm               字串、設定值載入用。
  DownloadManager.jsm    下載管理員,提供下載項目的新增/刪除API並對下載排程。
  DownloadUtils.jsm      給NICO連結,載下這部影片的主要迴路。
  FileBundle.jsm         決定下載檔名、判斷檔案是否存在的簡易機制。另外也會隨OS判斷預設下載資料夾位置。
  Network.jsm            在程式中存取HTTP頁面的API。
  ProcessRunner.jsm      呼叫外部播放器的API,針對Unicode下了超多功夫。
  Services.jsm           快取常用的Fx內部服務。
  VideoInfoReader.jsm    從影片頁面或getthumbinfo XML讀取影片資訊。
player-develop/
  ......ActionScript 3的FlashDevelop專案。是NicoFox Player SWF的原始碼。
  對這裡有興趣歡迎聯絡qq。
skin/
  CSS檔案與圖檔。
.gitignore               Git用,設定不列入版本追蹤的檔案。
README.md                在GitHub頁面下方顯示的README。格式是Markdown。
build.sh                 產生 XPI 檔案,需要 bash。
chrome.manifest          Firefox套件的基本組態檔之一。
install.rdf              Firefox套件的基本組態檔之一。
LICENSE.md               記錄所有不是我寫,且License相容於GPL的程式碼來源。

寫了好久,感謝大家看完 qqqqqqqqqq 也歡迎各路JS強者勇於報名參與,NicoFox等你帶回家 >/////<

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment