# 音樂天氣功能
###### tags: `Speaker` `Function`
## 問題
- 使用pytube下載成mp4再用moviepy轉檔成mp3大約需8~10秒
- 中央氣象局36小時天氣預報的資料較完整,有天氣現象、最高溫度、最低溫度、舒適度、降雨機率
- 中央氣象局一週天氣預報資料這個網站較完整
- [鄉鎮天氣預報-台灣未來1週天氣預報](https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-D0047-091?Authorization=rdec-key-123-45678-011121314)
- 世界氣象組織的預報資料只包含未來四天的天氣現象以及最高最低溫度
## 預計使用的API
- 音箱播音樂
- youtube data api + youtube iframe player api(js)
- youtube data api(python 使用pafy, vlc套件)
- 藍芽連接手機播音樂
- 手機透過藍芽連接音箱
- 播手機的音樂
- 天氣
- 氣象局api
- 使用者設定的位置 [伺服器] @Eoleedi
- [Find location with IP in python](https://stackoverflow.com/questions/24678308/how-to-find-location-with-ip-address-in-python)
<!-- ## 問題
- 音樂平台哪個比較好?
- ShazamKit可以給Apple或是Android用戶使用,音箱算是Android嗎? -->
## 調整音量大小
### 參考文獻
- python 控制音量
- https://blog.csdn.net/weixin_35642839/article/details/112051386?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1.no_search_link&spm=1001.2101.3001.4242
## 音箱播音樂
### keyword
- 播放、播音樂
- 期望結果:播歌(根據平台,若是付費平台只能試聽或是會有廣告)
<!-- - 播歌單(若是kkbox)
- 期望結果:播歌單(根據平台,若是付費平台只能試聽或是會有廣告) -->
### API
<!-- - KKBOX api
- https://docs-zhtw.kkbox.codes/#overview (只能播30秒) -->
- Youtube api
- https://developers.google.com/youtube/v3
- google api 程式庫
- https://console.cloud.google.com/apis/library?project=tangential-map-260502
- googleapis/google-api-python-client
- https://github.com/googleapis/google-api-python-client/blob/main/docs/start.md
- Channels: list
- https://developers.google.com/youtube/v3/docs/channels/list
- youtube iframe player api(js, ajax)
- https://developers.google.com/youtube/iframe_api_reference
### 相關文獻
- [youtube api]( https://github.com/youtube/api-samples)
- [youtube api with js](https://ithelp.ithome.com.tw/articles/10194007)
- [取youtube api](https://medium.com/彼得潘的試煉-勇者的-100-道-swift-ios-app-謎題/101-使用-youtube-data-api-抓取有趣的-youtuber-影片-mv-d05c3a0c70aa)
- [youtube iframe player](https://medium.com/小郭-เจน/菜鳥工程師-youtube-data-api-載入播放清單並切換歌曲-356d8e454ca3)
- [youtube data api with python vlc, pafy](https://www.codenong.com/49354232/)
- [Python 流媒體播放器(基於VLC)](https://www.twblogs.net/a/5cc23ff3bd9eee3aed78a772)
- [Youtube Data API 使用手札](https://hackmd.io/@c36ICNyhQE6-iTXKxoIocg/S1eYdtA1P)
- [Python爬蟲實例](https://blog.jiatool.com/posts/youtube_spider_api/)
- [Python 抓取Youtube影片代碼與截圖](https://jerrynest.io/python-youtube-hash-img/)
- [ 用pafy套件串流播放Youtube影片](https://no-rule.tw/?p=175)
- [使用 pytube 套件下載 Youtube 影片](https://clay-atlas.com/blog/2019/11/08/python-chinese-packages-pytube-moviepy-download-youtube-convert/)
- [用pytube測試下載 Youtube 影片](https://zh-tw.coderbridge.com/series/c471d97bb201460ab137c5e4955987df/posts/0baeb8bf25e543ed8462bd742cd1946f)
<!-- ## 藍芽連接手機播音樂
### keyword
- 連/連接手機播音樂/歌 (connect phone to play music/song)
- 期望結果
- 連接手機-連接成功 (connected)
- 播音樂-(播音樂)
### 參考文獻
- 樹莓派藍芽播放Android手機音樂
- https://blog.csdn.net/xundh/article/details/90763639
- https://blog.csdn.net/qq_27664167/article/details/79311733
-->
<!-- ## 音樂搜尋
### keyword
- (聽音樂)
- 期望結果:找到歌曲
- 若找不到:輸出「抱歉,找不到」
### API
- Shazam
- https://pypi.org/project/ShazamAPI/
- https://rapidapi.com/blog/shazam-api-java-python-php-ruby-javascript-examples/
- ShazamKit (only app)
- https://developer.apple.com/documentation/shazamkit
- https://developer.apple.com/shazamkit/android/
### 相關文獻
- 用python實作,但須自己建資料庫
- https://www.itread01.com/content/1549440566.html
- with Python in Ubuntu 18.04,但須自己建資料庫
- https://www.youtube.com/watch?v=WRsNZa45prE
- 介紹音樂資訊檢索
- https://ithelp.ithome.com.tw/articles/10196130
- 介紹shazamkit
- https://www.inside.com.tw/article/23820-wwdc-2021-day-2-recap
-->
## 天氣
### keyword
- 今天/明天XX區(地區為台灣)天氣
- 期望結果:今天/明天XX區的天氣狀況(e.g.晴、雨、陰⋯⋯)、最高&最低溫度、降雨機率
- 今天/明天XX區(地區為台灣以外)天氣
- 期望結果:今天/明天XX都市的天氣狀況(e.g.晴、雨、陰⋯⋯)、最高&最低溫度
p.s. 若沒有說XX區自動設為目前所在區域(需向伺服器要使用者設定之位置)
### API
- 中央氣象局api申請網址
- https://opendata.cwb.gov.tw/devManual/insrtuction
- 今明36小時天氣預報資料集
- https://opendata.cwb.gov.tw/dataset/statisticDays/F-C0032-001
- 未來一週天氣預報api (資料較多)
- https://data.gov.tw/dataset/9308
- 中央氣象局 全球都市天氣預報
- https://opendata.cwb.gov.tw/dataset/forecast/F-C0032-007
- 世界氣象組織 世界天氣信息服務網
- https://worldweather.wmo.int/tc/dataguide.html
### 相關文獻
- [用js串接氣象局api抓今明36小時的天氣資料](https://ithelp.ithome.com.tw/articles/10224650)
- [用php串接氣象局api抓今明36小時的天氣資料](https://summer10920.github.io/2020/05-08/jq-opendata/)
- 用python串接氣象局api抓未來一週的天氣資料
- https://aronhack.com/zh/retrieve-weekly-weather-forecast-with-python/
- http://passionfruittaiwan.blogspot.com/2020/05/python.html
- [利用python串接氣象局api抓取預報資料 逐3小時](https://medium.com/learning-data-with-python/利用python串接氣象局api抓取預報資料-c580f24feedf)
- [Find location with IP in python](https://stackoverflow.com/questions/24678308/how-to-find-location-with-ip-address-in-python)
- [python通過API爬取各城市天氣預報資料](https://www.uj5u.com/ruanti/152503.html)
<!--以下為回饋&評論區-->
### 測試組提供的使用情境
播放指令
(youtube請勿搜尋到播放清單)
- hey Noname 播放xxx的abc (此情況為xxx的是abd, abc是其他人的)
- hey Noname 我要聽甲乙丙的abc (此情況甲乙丙為xxx的中文譯名)
- hey Noname 幫我找甲乙丙的abc ->(wiki)
- @Eoleedi 前三項的xxx是指歌手英文的名字嗎?abc是指歌名嗎?然後第三項的wiki是什麼意思?
- 1. 看起來是歌手的名字沒錯 2. abc應該是歌名 3. 🤨wikipedia維基百科,他應該是說使用者可能是要找維基百科頁面? @aNSuIB0USHO4ALI2lBXwiw
- @Eoleedi 感覺3好像不是音樂相關的功能? @aNSuIB0USHO4ALI2lBXwiw 阿對你不用理他
- hey Noname 現在播的是甚麼 -> (暫時性停止)現在播的是...(繼續播放)
- hey Noname 太大聲了/吵死了-> (降低音量)
- hey Noname 幫我一直播放 -> (重複播放直到人為結束)