用wxPython創建GUI應用程序展示NASA圖片(第一部分)
在成長過程中,我時常認為探索宇宙空間是一件令人興奮的事情,幻想那些未知的事物是相當有趣的。我也喜歡瀏覽異世界的照片或者探討廣袤的空間。可是這些和Python有什麼關係呢?當然有關啦,美國國家航空航天局(NASA)提供了一套基於web的API,可以用於查詢他們的圖像庫。
您可以在他們的網站閱讀相關信息。
NASA官網建議先獲取API密鑰。當訪問網站時,需要填寫一個簡短的表格。
從技術層面上來說,您無需API密鑰即可請求NASA服務。然而,對於免密鑰的訪問,存在速率限制的問題。當然,即使使用密鑰進行訪問,也會存在每小時至多1000次請求的默認上限值。如果超過限制,將暫時阻止發送請求。可以聯繫NASA提高上限值。
有趣的是,文檔並未說明免密鑰情況下的請求次數上限。
關於域名訪問方面,NASA的圖像API文檔和普通API文檔之間存在出入,導致使用時令人困惑。
比如,普通API文檔上的URL如下:
- https://api.nasa.gov/planetary/apod?api_key=API_KEY_GOES_HERE
但是,圖像API文檔給出的URL有所不同:
- https://images-api.nasa.gov
對於本教程而言,將採用後者。
NASA API的使用
當開始使用不太熟悉的API時,最好先閱讀其官方文檔。另外可以在網上搜索是否存在基於該API的Python包。不過似乎沒有NASA庫的Python版本,所以需要自己實現。
開始使用前,請閱讀NASA的圖像API文檔。
這個文檔不是很長,無需花費大量時間閱讀,所以請盡量瀏覽一遍。
接下來將嘗試使用該API。
如下是訪問API的部分代碼:
如果在調試器中運行此代碼,則可以列印返回的JSON。
如下是返回的部分內容:
既然已經了解了JSON的格式,可以嘗試解析它。
可以在Python腳本中加入如下代碼:
由此可以獲取JSON的第一個項。然後可以解析出nasa_id,用於獲取與此特定結果關聯的所有圖像。接下來可以將nasa_id添加到新URL並發出請求。
請求結果如下:
Python代碼的最後兩行用於從JSON中提取URL。至此我們獲取了需要展示的全部數據。
用戶界面的設計
您可以通過多種不同的方式設計圖像下載應用程序。其中原型模式是最簡單且快速的。它的優勢在於在實現所有基本需求的基礎上,可以結合自己掌握的知識增強原型或者進行創新。
如下是一個嘗試創建的模型:
如您所見,應用程序需要具有如下功能:
- 搜索欄
- 保存搜索結果的部件
- 選擇某個結果時的圖像顯示方式
- 圖像下載功能
接下來讓我們一起學習如何創建這個用戶界面吧!
英文原文:https://www.blog.pythonlibrary.org/2019/04/18/creating-a-gui-application-for-nasas-api-with-wxpython/ 譯者:我是昵稱耶~
※導致機器學習項目失敗的7個原因
※Pyright:微軟提供的Python靜態類型檢查器
TAG:Python部落 |