Nodejs相关:TimoFM 分享一款用node-webkit开发的豆瓣电台客户端

Nodejs相关:TimoFM 分享一款用node-webkit开发的豆瓣电台客户端

github地址

特点

  • 基于HTML5,NodeJS, Polymer开发,理论上可以跨平台
  • 支持用户创建的兆赫搜索
  • 支持专辑模糊搜索(专辑名称,艺术家名称)
  • 支持频道收藏(暂时只能收藏在本地,未同步服务器)
  • 支持全局快捷键
  • 支持单曲循环
  • 支持播放上一首
  • 支持歌词显示
  • 支持桌面通知

capture1.png capture3.png capture4.png capture5.png capture7.png


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();

使用说明

  1. 安装依赖:首先确保您的环境中已安装Node.js和npm。然后在项目根目录下运行 npm install 安装所需的依赖包。
  2. 启动应用:使用 npm start 启动应用。
  3. 功能使用:根据上述功能描述,您可以尝试不同的功能,如搜索、收藏等。

截图展示

capture1.png capture3.png capture4.png capture5.png capture7.png

总结

TimoFM 是一个功能丰富且跨平台的豆瓣电台客户端,适用于喜欢音乐的用户。通过结合HTML5、Node.js和Polymer技术,它为用户提供了流畅的使用体验和强大的功能。希望这个项目能够激发更多开发者探索和创造更多的跨平台应用。


很不错啊,顶个

我喜欢这款UI。 期待快点出Linux的版本。已经迫不及待了

TimoFM 是一个基于 HTML5、Node.js 和 Polymer 开发的豆瓣电台客户端。它利用了 node-webkit(现称为 Electron)来实现跨平台的应用程序。以下是一些关键特性的简要说明及相关的示例代码片段。

特点与示例代码

  1. 基于HTML5、NodeJS、Polymer

    • 使用 Node.js 进行后端逻辑处理,例如与豆瓣API进行通信。
    • 使用 HTML5 和 Polymer 进行前端界面设计。
  2. 支持兆赫搜索

    • 假设我们有一个 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}`);
    }
    
  3. 支持专辑和艺术家搜索

    • 假设我们有一个 searchAlbums 函数用于查询专辑。
    function searchAlbums(query) {
      return axios.get(`https://douban.fm/j/mine/playlist?type=n&channel=0&from=mainsite&cate=0&tag=${query}`);
    }
    
  4. 支持频道收藏

    • 使用本地存储来保存用户收藏的频道。
    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')) || [];
    }
    
  5. 支持全局快捷键

    • 使用 global-shortcut 模块注册全局快捷键。
    const { globalShortcut } = require('electron');
    
    function registerShortcuts() {
      globalShortcut.register('CommandOrControl+Shift+F', () => {
        console.log('F 快捷键已按下');
      });
    }
    
  6. 支持播放列表控制

    • 假设我们有一个 playNextSong 函数来播放下一首歌曲。
    function playNextSong() {
      // 播放下一首歌曲的逻辑
    }
    
  7. 支持歌词显示

    • 假设我们有一个 displayLyrics 函数来显示歌词。
    function displayLyrics(lyrics) {
      document.getElementById('lyrics-container').innerHTML = lyrics;
    }
    
  8. 支持桌面通知

    • 使用 Notification API 显示桌面通知。
    function showNotification(title, content) {
      new Notification(title, {
        body: content,
      });
    }
    

更多细节可以查看 GitHub 上的完整代码。希望这些示例代码能帮助你理解如何使用 Node.js 和其他技术来开发这样的应用程序。

回到顶部