diff --git a/app.js b/app.js index 40eb36b..40fec73 100644 --- a/app.js +++ b/app.js @@ -1,7 +1,7 @@ const express = require("express"); const apicache = require("apicache"); const path = require("path"); - +const fs = require("fs"); const app = express(); let cache = apicache.middleware; @@ -32,263 +32,37 @@ app.use(function(req, res, next) { next(); }); -// 获取专辑内容 -app.use("/album", require("./router/album")); - -// 获取歌手单曲 -app.use("/artists", require("./router/artists")); - -// 获取歌手专辑列表 -app.use("/artist/album", require("./router/artist_album")); - -//艺术家-信息 -app.use("/artist/desc", require("./router/artist_desc")); - -//艺术家-mv -app.use("/artist/mv", require("./router/artist_mv")); - -// 收藏歌手 -app.use("/artist/sub", require("./router/artist_sub")); - -// 取消收藏歌手 -app.use("/artist/unsub", require("./router/artist_unsub")); - -// 已关注歌手 -app.use("/artist/sublist", require("./router/artist_sublist")); - -// 歌手分类 -app.use("/artist/list", require("./router/artist_list")); - -// 获取 banner -app.use("/banner", require("./router/banner")); - -app.use("/check/music", require("./router/check_music")); - -app.use("/comment/music", require("./router/comment_music")); - -app.use("/comment/mv", require("./router/comment_mv")); - -app.use("/comment/album", require("./router/comment_album")); - -app.use("/comment/playlist", require("./router/comment_playlist")); - -//未知 api -app.use("/comment/like", require("./router/comment_like")); - -app.use("/comment/dj", require("./router/comment_dj")); - -//签到 -app.use("/daily_signin", require("./router/daily_signin")); - -//djradio detail -app.use("/dj/detail", require("./router/dj_detail")); - -//dj主播 radio -app.use("/dj/program", require("./router/dj_program")); - -app.use("/dj/program/detail", require("./router/dj_program_detail")); - -app.use("/dj/sub", require("./router/dj_sub")); - -app.use("/dj/catelist", require("./router/dj_catelist")); - -app.use("/dj/hot", require("./router/dj_hot")); - -app.use("/dj/sublist", require("./router/dj_sublist")); - -// 精选电台 -app.use("/dj/recommend", require("./router/dj_recommend")); - -//精选电台-分类电台 -app.use("/dj/recommend/type", require("./router/dj_recommend_type")); - -//获取动态 -app.use("/event", require("./router/event")); - -//垃圾桶 -app.use("/fm_trash", require("./router/fm_trash")); - -app.use("/follow", require("./router/follow")); - -// 喜欢歌曲 -app.use("/like", require("./router/like")); - -app.use("/likelist", require("./router/likelist")); - -//手机登录 -app.use("/login/cellphone", require("./router/loginCellphone")); - -//邮箱登录 -app.use("/login", require("./router/login")); - -//登录刷新 -app.use("/login/refresh", require("./router/login_refresh")); - -// 不明 api -app.use("/log/web", require("./router/logWeb")); - -// 获取歌词 -app.use("/lyric", require("./router/lyric")); - -// 获取音乐 url -app.use("/music/url", require("./router/musicUrl")); - -//最新 mv -app.use("/mv/first", require("./router/mv_first")); - -//播放 mv -app.use("/mv/url", require("./router/mv_url")); - -//mv -app.use("/mv", require("./router/mv")); - -// 私人 FM -app.use("/personal_fm", require("./router/personal_fm")); - -//推荐歌单 -app.use("/personalized", require("./router/personalized")); - -//推荐dj -app.use("/personalized/djprogram", require("./router/personalized_djprogram")); - -//推荐新音乐 -app.use("/personalized/newsong", require("./router/personalized_newsong")); - -//独家放送 -app.use( - "/personalized/privatecontent", - require("./router/personalized_privatecontent") -); - -//推荐mv -app.use("/personalized/mv", require("./router/personalized_mv")); - -// 获取歌单内列表 -app.use("/playlist/detail", require("./router/playlist_detail")); - -//收藏单曲到歌单,从歌单删除歌曲 op=del,add;pid=歌单id,tracks=歌曲id -app.use("/playlist/tracks", require("./router/playlist_tracks")); - -// 热门歌单分类 -app.use("/playlist/hot", require("./router/playlist_hot")); - -// 全部歌单分类 -app.use("/playlist/catlist", require("./router/playlist_catlist")); - -// 新建歌单 -app.use("/playlist/create", require("./router/playlist_create")); - -// 收藏/取消收藏歌单 -app.use("/playlist/subscribe", require("./router/playlist_subscribe")); - -//推荐节目 -app.use("/program/recommend", require("./router/program_recommend")); - -// 获取每日推荐歌曲 -app.use("/recommend/songs", require("./router/recommend_songs")); - -// 获取每日推荐歌单 -app.use("/recommend/resource", require("./router/recommend_resource")); - -//取消推荐 -app.use("/recommend/dislike", require("./router/recommend_dislike")); - -app.use("/resource/like", require("./router/resource_like")); - -// 搜索 -app.use("/search", require("./router/search")); - -// 热搜 -app.use("/search/hot", require("./router/search_hot.js")); - -//搜索 multimatch -app.use("/search/multimatch", require("./router/search_multimatch")); - -// 搜索 suggest,搜索结果包含单曲,歌手,歌单,mv信息 -app.use("/search/suggest", require("./router/search_suggest")); - -//simi ,相似歌单 -app.use("/simi/playlist", require("./router/simi_playlist")); - -//simi ,相似歌曲 -app.use("/simi/song", require("./router/simi_song")); - -//相似 mv -app.use("/simi/mv", require("./router/simi_mv")); - -//simi ,相似关注的用户 -app.use("/simi/user", require("./router/simi_user")); - -//相似歌手 -app.use("/simi/artist", require("./router/simi_artist")); - -// 获取音乐详情 -app.use("/song/detail", require("./router/song_detail")); - -// 新碟上架 http://music.163.com/#/discover/album/ -app.use("/top/album", require("./router/top_album")); - -// 热门歌手 http://music.163.com/#/discover/artist/ -app.use("/top/artists", require("./router/top_artists")); - -app.use("/top/list", require("./router/top_list")); - -app.use("/top/mv", require("./router/top_mv")); - -//分类歌单 -app.use("/top/playlist", require("./router/top_playlist")); - -//精品歌单 -app.use( - "/top/playlist/highquality", - require("./router/top_playlist_highquality") -); - -app.use("/top/song", require("./router/top_song")); - -app.use("/toplist", require("./router/toplist")); - -app.use("/toplist/artist", require("./router/toplist_artist")); - -app.use("/toplist/detail", require("./router/toplist_detail")); - -// 获取用户歌单 -app.use("/user/playlist", require("./router/user_playlist")); - -// 获取用户电台 -app.use("/user/audio", require("./router/user_audio")); - -//云盘数据 -app.use("/user/cloud", require("./router/user_cloud")); - -//云盘数据详情? 暂时不要使用 -app.use("/user/cloud/search", require("./router/user_cloud_search")); -//用户动态 -app.use("/user/event", require("./router/user_event")); - -app.use("/user/detail", require("./router/user_detail")); - -app.use("/user/dj", require("./router/user_dj")); - -app.use("/user/followeds", require("./router/user_followeds")); - -app.use("/user/follows", require("./router/user_follows")); - -app.use("/user/subcount", require("./router/user_subcount")); - -app.use("/user/record", require("./router/user_record")); - -app.use("/user/update", require("./router/user_update")); - -app.use("/send/text", require("./router/send_text")); - -app.use("/send/playlist", require("./router/send_playlist")); - -app.use("/playlist/create", require("./router/playlist_create")); - -app.use("/playlist/subscribe", require("./router/playlist_subscribe")); - -app.use("/playlist/update", require("./router/playlist_update")); +// 因为这几个文件对外所注册的路由 和 其他文件对外注册的路由规则不一样, 所以专门写个MAP对这些文件做特殊处理 +const UnusualRouteFileMap = { + // key 为文件名, value 为对外注册的路由 + "daily_signin.js": "/daily_signin", + "fm_trash.js": "/fm_trash", + "personal_fm.js": "/personal_fm" +}; + +// 同步读取 router 目录中的js文件, 根据命名规则, 自动注册路由 +fs.readdirSync("./router/").forEach(file => { + if (/\.js$/i.test(file) === false) { + return; + } + + let route; + + if (typeof UnusualRouteFileMap[file] !== "undefined") { + route = UnusualRouteFileMap[file]; + } else { + route = + "/" + + file + .replace(/\.js$/i, "") + .replace(/_/g, "/") + .replace(/[A-Z]/g, a => { + return "/" + a.toLowerCase(); + }); + } + + app.use(route, require("./router/" + file)); +}); const port = process.env.PORT || 3000;