Nodejs相关:TimoFM 分享一款用node-webkit开发的豆瓣电台客户端
Nodejs相关:TimoFM 分享一款用node-webkit开发的豆瓣电台客户端
特点
- 基于HTML5,NodeJS, Polymer开发,理论上可以跨平台
- 支持用户创建的兆赫搜索
- 支持专辑模糊搜索(专辑名称,艺术家名称)
- 支持频道收藏(暂时只能收藏在本地,未同步服务器)
- 支持全局快捷键
- 支持单曲循环
- 支持播放上一首
- 支持歌词显示
- 支持桌面通知
4 回复
Nodejs相关:TimoFM 分享一款用node-webkit开发的豆瓣电台客户端
摘要
本文介绍了一款基于HTML5、Node.js和Polymer技术开发的豆瓣电台客户端——TimoFM。该客户端通过使用Node-WebKit框架实现了跨平台功能,并提供了丰富的功能,如歌曲搜索、收藏频道、桌面通知等。
GitHub 地址
您可以访问以下链接查看项目源码和更多信息:
特点
- 跨平台支持:使用HTML5、Node.js和Polymer开发,理论上可以在多个操作系统上运行。
- 兆赫搜索:支持用户创建的兆赫搜索。
- 专辑搜索:支持专辑名称和艺术家名称的模糊搜索。
- 频道收藏:支持频道收藏功能,但目前仅限于本地存储。
- 全局快捷键:提供全局快捷键支持,方便快捷操作。
- 单曲循环:支持单曲循环播放。
- 上一首播放:支持播放上一首功能。
- 歌词显示:支持歌词显示功能。
- 桌面通知:支持桌面通知,便于用户及时了解播放状态。
示例代码
以下是一个简单的示例代码片段,展示如何使用Node.js与豆瓣API进行交互:
const axios = require('axios');
// 获取豆瓣电台的频道列表
async function fetchChannels() {
try {
const response = await axios.get('https://douban.fm/j/v2/songlist');
console.log(response.data);
} catch (error) {
console.error('Error fetching channels:', error);
}
}
fetchChannels();
使用说明
- 安装依赖:首先确保您的环境中已安装Node.js和npm。然后在项目根目录下运行
npm install
安装所需的依赖包。 - 启动应用:使用
npm start
启动应用。 - 功能使用:根据上述功能描述,您可以尝试不同的功能,如搜索、收藏等。
截图展示
总结
TimoFM 是一个功能丰富且跨平台的豆瓣电台客户端,适用于喜欢音乐的用户。通过结合HTML5、Node.js和Polymer技术,它为用户提供了流畅的使用体验和强大的功能。希望这个项目能够激发更多开发者探索和创造更多的跨平台应用。
很不错啊,顶个
我喜欢这款UI。 期待快点出Linux的版本。已经迫不及待了
TimoFM 是一个基于 HTML5、Node.js 和 Polymer 开发的豆瓣电台客户端。它利用了 node-webkit(现称为 Electron)来实现跨平台的应用程序。以下是一些关键特性的简要说明及相关的示例代码片段。
特点与示例代码
-
基于HTML5、NodeJS、Polymer
- 使用 Node.js 进行后端逻辑处理,例如与豆瓣API进行通信。
- 使用 HTML5 和 Polymer 进行前端界面设计。
-
支持兆赫搜索
- 假设我们有一个
searchStation
函数用于查询兆赫。
const axios = require('axios'); function searchStation(query) { return axios.get(`https://douban.fm/j/mine/playlist?type=n&channel=0&from=mainsite&cate=0&tag=${query}`); }
- 假设我们有一个
-
支持专辑和艺术家搜索
- 假设我们有一个
searchAlbums
函数用于查询专辑。
function searchAlbums(query) { return axios.get(`https://douban.fm/j/mine/playlist?type=n&channel=0&from=mainsite&cate=0&tag=${query}`); }
- 假设我们有一个
-
支持频道收藏
- 使用本地存储来保存用户收藏的频道。
function saveFavorite(channelId) { let favorites = JSON.parse(localStorage.getItem('favorites')) || []; if (!favorites.includes(channelId)) { favorites.push(channelId); localStorage.setItem('favorites', JSON.stringify(favorites)); } } function getFavorites() { return JSON.parse(localStorage.getItem('favorites')) || []; }
-
支持全局快捷键
- 使用
global-shortcut
模块注册全局快捷键。
const { globalShortcut } = require('electron'); function registerShortcuts() { globalShortcut.register('CommandOrControl+Shift+F', () => { console.log('F 快捷键已按下'); }); }
- 使用
-
支持播放列表控制
- 假设我们有一个
playNextSong
函数来播放下一首歌曲。
function playNextSong() { // 播放下一首歌曲的逻辑 }
- 假设我们有一个
-
支持歌词显示
- 假设我们有一个
displayLyrics
函数来显示歌词。
function displayLyrics(lyrics) { document.getElementById('lyrics-container').innerHTML = lyrics; }
- 假设我们有一个
-
支持桌面通知
- 使用
Notification
API 显示桌面通知。
function showNotification(title, content) { new Notification(title, { body: content, }); }
- 使用
更多细节可以查看 GitHub 上的完整代码。希望这些示例代码能帮助你理解如何使用 Node.js 和其他技术来开发这样的应用程序。