Moved traverse.ts
This commit is contained in:
parent
0c39ac1592
commit
75d85764c3
|
|
@ -4,7 +4,7 @@ import axios, { AxiosInstance } from "axios"
|
|||
import PlaylistParser from "./parsers/PlaylistParser"
|
||||
import SearchParser from "./parsers/SearchParser"
|
||||
import SongParser from "./parsers/SongParser"
|
||||
import traverse from "./utils/traverse"
|
||||
import traverse from "./traverse"
|
||||
import VideoParser from "./parsers/VideoParser"
|
||||
import {
|
||||
AlbumDetailed,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import SongParser from "./SongParser"
|
||||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import { AlbumDetailed, AlbumFull, ArtistBasic } from ".."
|
||||
|
||||
export default class AlbumParser {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import AlbumParser from "./AlbumParser"
|
||||
import Parser from "./Parser"
|
||||
import SongParser from "./SongParser"
|
||||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import { ArtistDetailed, ArtistFull } from ".."
|
||||
|
||||
export default class ArtistParser {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import { PlaylistFull } from ".."
|
||||
|
||||
export default class PlaylistParser {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import AlbumParser from "./AlbumParser"
|
|||
import ArtistParser from "./ArtistParser"
|
||||
import PlaylistParser from "./PlaylistParser"
|
||||
import SongParser from "./SongParser"
|
||||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import VideoParser from "./VideoParser"
|
||||
import { SearchResult } from ".."
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import Parser from "./Parser"
|
||||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import { AlbumBasic, ArtistBasic, SongDetailed, SongFull, ThumbnailFull } from ".."
|
||||
|
||||
export default class SongParser {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import Parser from "./Parser"
|
||||
import traverse from "../utils/traverse"
|
||||
import traverse from "../traverse"
|
||||
import { VideoDetailed, VideoFull } from ".."
|
||||
|
||||
export default class VideoParser {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
const traverse = (data: any, ...keys: string[]) => {
|
||||
const again = (data: any, key: string): any => {
|
||||
let res = []
|
||||
|
||||
if (data instanceof Object && key in data) {
|
||||
res.push(data[key])
|
||||
}
|
||||
|
||||
if (data instanceof Array) {
|
||||
res.push(...data.map(v => again(v, key)).flat())
|
||||
} else if (data instanceof Object) {
|
||||
res.push(
|
||||
...Object.keys(data)
|
||||
.map(k => again(data[k], key))
|
||||
.flat()
|
||||
)
|
||||
}
|
||||
|
||||
return res.length === 1 ? res[0] : res
|
||||
}
|
||||
|
||||
let value = data
|
||||
for (const key of keys) {
|
||||
value = again(value, key)
|
||||
}
|
||||
|
||||
return value
|
||||
}
|
||||
|
||||
export default traverse
|
||||
Loading…
Reference in New Issue