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 PlaylistParser from "./parsers/PlaylistParser"
|
||||||
import SearchParser from "./parsers/SearchParser"
|
import SearchParser from "./parsers/SearchParser"
|
||||||
import SongParser from "./parsers/SongParser"
|
import SongParser from "./parsers/SongParser"
|
||||||
import traverse from "./utils/traverse"
|
import traverse from "./traverse"
|
||||||
import VideoParser from "./parsers/VideoParser"
|
import VideoParser from "./parsers/VideoParser"
|
||||||
import {
|
import {
|
||||||
AlbumDetailed,
|
AlbumDetailed,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import SongParser from "./SongParser"
|
import SongParser from "./SongParser"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import { AlbumDetailed, AlbumFull, ArtistBasic } from ".."
|
import { AlbumDetailed, AlbumFull, ArtistBasic } from ".."
|
||||||
|
|
||||||
export default class AlbumParser {
|
export default class AlbumParser {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import AlbumParser from "./AlbumParser"
|
import AlbumParser from "./AlbumParser"
|
||||||
import Parser from "./Parser"
|
import Parser from "./Parser"
|
||||||
import SongParser from "./SongParser"
|
import SongParser from "./SongParser"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import { ArtistDetailed, ArtistFull } from ".."
|
import { ArtistDetailed, ArtistFull } from ".."
|
||||||
|
|
||||||
export default class ArtistParser {
|
export default class ArtistParser {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import { PlaylistFull } from ".."
|
import { PlaylistFull } from ".."
|
||||||
|
|
||||||
export default class PlaylistParser {
|
export default class PlaylistParser {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import AlbumParser from "./AlbumParser"
|
||||||
import ArtistParser from "./ArtistParser"
|
import ArtistParser from "./ArtistParser"
|
||||||
import PlaylistParser from "./PlaylistParser"
|
import PlaylistParser from "./PlaylistParser"
|
||||||
import SongParser from "./SongParser"
|
import SongParser from "./SongParser"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import VideoParser from "./VideoParser"
|
import VideoParser from "./VideoParser"
|
||||||
import { SearchResult } from ".."
|
import { SearchResult } from ".."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import Parser from "./Parser"
|
import Parser from "./Parser"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import { AlbumBasic, ArtistBasic, SongDetailed, SongFull, ThumbnailFull } from ".."
|
import { AlbumBasic, ArtistBasic, SongDetailed, SongFull, ThumbnailFull } from ".."
|
||||||
|
|
||||||
export default class SongParser {
|
export default class SongParser {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import Parser from "./Parser"
|
import Parser from "./Parser"
|
||||||
import traverse from "../utils/traverse"
|
import traverse from "../traverse"
|
||||||
import { VideoDetailed, VideoFull } from ".."
|
import { VideoDetailed, VideoFull } from ".."
|
||||||
|
|
||||||
export default class VideoParser {
|
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