@manhgdev/soundcloud-web
Version:
JavaScript wrapper for SoundCloud API
314 lines (263 loc) • 6.44 kB
Markdown
# SoundCloud API Package
Package JavaScript để tương tác với SoundCloud API một cách dễ dàng và hiệu quả.
## Cài đặt
```bash
bun add @manhgdev/soundcloud-web
```
## Khởi tạo
```javascript
import SoundCloudAPI from '@manhgdev/soundcloud-web';
const api = new SoundCloudAPI({
clientId: 'YOUR_CLIENT_ID', // Tùy chọn
autoFetchClientId: true // Tự động lấy client ID
});
```
## Cách sử dụng
### Search Module
#### Tìm kiếm tất cả
```javascript
const result = await api.search.all('skrillex', {
limit: 20,
offset: 0,
facet: 'model',
linked_partitioning: 1
});
```
#### Tìm kiếm bài hát
```javascript
const tracks = await api.search.tracks('skrillex', {
limit: 20,
offset: 0,
facet: 'genre',
linked_partitioning: 1
});
```
#### Tìm kiếm người dùng
```javascript
const users = await api.search.users('skrillex', {
limit: 20,
offset: 0,
facet: 'place',
linked_partitioning: 1
});
```
#### Tìm kiếm album
```javascript
const albums = await api.search.albums('skrillex', {
limit: 20,
offset: 0,
facet: 'genre',
linked_partitioning: 1
});
```
#### Tìm kiếm playlist
```javascript
const playlists = await api.search.playlists('workout', {
limit: 20,
offset: 0,
facet: 'genre',
linked_partitioning: 1
});
```
#### Tìm kiếm bài hát theo thể loại
```javascript
const tracks = await api.search.byGenre('electronic', {
limit: 10,
offset: 0,
sort: 'popular',
linked_partitioning: 1
});
```
### Tracks Module
#### Lấy nhiều bài hát
```javascript
const tracks = await api.tracks.getMultiple([956017639, 789012]);
```
#### Lấy bình luận của bài hát
```javascript
const comments = await api.tracks.getComments(956017639, {
threaded: 0,
limit: 200,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bài hát liên quan
```javascript
const related = await api.tracks.getRelated(956017639, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
### Users Module
#### Lấy thông tin người dùng
```javascript
const user = await api.users.getUser(856062);
```
#### Lấy spotlight của người dùng
```javascript
const spotlight = await api.users.getSpotlight(856062, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy hồ sơ nổi bật của người dùng
```javascript
const profiles = await api.users.getFeaturedProfiles(856062, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy danh sách bài hát được thích
```javascript
const likes = await api.users.getLikes(856062, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy danh sách người đang theo dõi
```javascript
const followings = await api.users.getFollowings(856062, {
limit: 3,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy danh sách nghệ sĩ liên quan
```javascript
const artists = await api.users.getRelatedArtists(856062, {
creators_only: false,
page_size: 12,
limit: 12,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bình luận của người dùng
```javascript
const comments = await api.users.getComments(856062, {
limit: 20,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy stream của người dùng
```javascript
const stream = await api.users.getStream(856062, {
limit: 20,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bài hát nổi bật của người dùng
```javascript
const topTracks = await api.users.getTopTracks(856062, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bài hát của người dùng
```javascript
const tracks = await api.users.getTracks(856062, {
limit: 20
});
```
#### Lấy playlist của người dùng
```javascript
const playlists = await api.users.getPlaylists(856062, {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy hồ sơ web của người dùng
```javascript
const webProfiles = await api.users.getWebProfiles(856062);
```
### Playlists Module
#### Lấy thông tin playlist
```javascript
const playlist = await api.playlists.getPlaylist(1236491080, {
representation: 'full'
});
```
#### Lấy danh sách người thích playlist
```javascript
const likers = await api.playlists.getLikers(1236491080, {
limit: 9,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy danh sách người repost playlist
```javascript
const reposters = await api.playlists.getReposters(1236491080, {
limit: 9,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy playlist theo thể loại
```javascript
const playlists = await api.playlists.getByGenre('electronic', {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
### Media Module
#### Lấy URL phát trực tuyến
```javascript
const playbackUrl = await api.media.getPlaybackUrl(956017639);
```
#### Lấy URL tải xuống
```javascript
const downloadUrl = await api.media.getDownloadUrl(956017639);
```
### Discover Module
#### Lấy nội dung trang chủ
```javascript
const homeContent = await api.discover.getHomeContent({
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bài hát mới theo thể loại
```javascript
const recentTracks = await api.discover.getRecentTracks('electronic', {
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
#### Lấy bài hát mới theo quốc gia
```javascript
const countryTracks = await api.discover.getRecentTracksByCountry({
limit: 10,
offset: 0,
linked_partitioning: 1
});
```
## Tham số mặc định
Tất cả các phương thức đều có tham số mặc định phù hợp:
- `limit`: Số lượng kết quả tối đa (thường là 10-20)
- `offset`: Vị trí bắt đầu (mặc định: 0)
- `linked_partitioning`: Phân trang liên kết (mặc định: 1)
- `facet`: Loại facet cho search (mặc định: 'model', 'genre', 'place')
- `threaded`: Hiển thị theo thread cho comments (mặc định: 0)
- `creators_only`: Chỉ hiển thị người tạo (mặc định: false)
- `page_size`: Kích thước trang (mặc định: 12)
- `representation`: Kiểu biểu diễn (mặc định: 'full')
## Lưu ý
- Package tự động lấy và cache client ID từ SoundCloud
- Tất cả các request đều có timeout và retry logic
- Hỗ trợ đầy đủ các endpoint của SoundCloud API v2
- Có JSDoc đầy đủ cho tất cả các phương thức
## License
MIT