본문으로 건너뛰기

소셜

이 페이지에서는 기본 팔로우 이상의 소셜 그래프 API를 다룹니다: 팔로우 요청, 팔로우한 태그, 팔로우 제안, 추천, 피처된 태그, 태그 작업, 좋아요, 북마크.

팔로우 요청

계정이 잠긴 경우, 수신된 팔로우 요청을 client.followRequests를 통해 명시적으로 수락하거나 거절해야 합니다.

대기 중인 요청 목록 조회

final page = await client.followRequests.fetch(limit: 40);
for (final account in page.items) {
print('${account.acct} wants to follow you');
}

// 페이지네이션
if (page.nextMaxId != null) {
final next = await client.followRequests.fetch(maxId: page.nextMaxId);
}

fetchMastodonPage<MastodonAccount>를 반환합니다. 페이지네이션 커서는 Link 응답 헤더에서 가져옵니다. 기본 limit은 40이고 최대는 80입니다.

요청 수락

final relationship = await client.followRequests.authorize('12345');
print(relationship.followedBy); // true

요청 거절

final relationship = await client.followRequests.reject('12345');

authorizereject 모두 업데이트된 관계 상태를 반영하는 MastodonRelationship을 반환합니다.

팔로우한 태그

client.followedTags는 인증된 사용자가 팔로우하는 해시태그 목록을 반환합니다. 팔로우한 태그가 포함된 포스트는 홈 타임라인에 표시됩니다.

final page = await client.followedTags.fetch(limit: 100);
for (final tag in page.items) {
print('#${tag.name}');
}

기본 limit은 100이고 최대는 200입니다. 페이지네이션은 maxId, sinceId, minId를 사용합니다. 커서 ID는 태그 ID가 아닌 내부 팔로우 관계 레코드 ID입니다.

특정 태그를 팔로우하거나 언팔로우하려면 client.tags를 사용하세요 (아래 참조).

팔로우 제안

client.suggestions는 서버가 팔로우를 권장하는 계정을 반환합니다. 스태프가 직접 선별한 계정이나 사용자가 긍정적으로 상호작용했지만 아직 팔로우하지 않은 계정입니다.

final suggestions = await client.suggestions.fetch(limit: 20);
for (final suggestion in suggestions) {
print('${suggestion.account.acct} — reason: ${suggestion.source}');
}

List<MastodonSuggestion>을 반환합니다. 기본 limit은 40이고 최대는 80입니다.

제안 목록에서 계정을 제거하려면:

await client.suggestions.remove('12345');

계정이 현재 제안 목록에 없어도 성공합니다.

추천

추천은 사용자가 프로필에 피처하도록 선택한 계정입니다. client.endorsements를 사용해 조회합니다.

final page = await client.endorsements.fetch(limit: 40);
for (final account in page.items) {
print(account.displayName);
}

MastodonPage<MastodonAccount>를 반환합니다. 기본 limit은 40이고 최대는 80입니다. 계정을 추천하거나 추천 해제하려면 client.accounts.endorseclient.accounts.unendorse를 사용하세요.

피처된 태그

피처된 태그는 사용자 프로필에 두드러지게 표시되는 해시태그입니다. client.featuredTags를 사용해 관리합니다.

피처된 태그 목록 조회

final tags = await client.featuredTags.fetch();
for (final tag in tags) {
print('#${tag.name}${tag.statusesCount} statuses');
}

피처된 태그 추가

final tag = await client.featuredTags.create('dart');
print(tag.id);

# 접두사 없이 태그 이름을 전달합니다.

피처된 태그 제거

await client.featuredTags.delete(tag.id);

피처된 태그 제안

서버가 최근 사용된 해시태그를 최대 10개 후보로 반환합니다:

final suggestions = await client.featuredTags.fetchSuggestions();

List<MastodonTag>를 반환합니다.

태그

client.tags는 태그 정보 조회, 팔로우, 피처 작업을 제공합니다.

태그 정보 조회

final tag = await client.tags.fetch('dart');
print(tag.name);
print(tag.following); // 인증되지 않은 경우 null

이름 조회는 대소문자를 구분하지 않습니다. 인증된 경우 following 필드가 포함됩니다.

태그 팔로우 및 언팔로우

final tag = await client.tags.follow('dart');
print(tag.following); // true

final unfollowed = await client.tags.unfollow('dart');
print(unfollowed.following); // false

태그 피처 및 피처 해제 (Mastodon 4.4.0+)

await client.tags.feature('dart');
await client.tags.unfeature('dart');

두 메서드 모두 업데이트된 상태를 반영하는 MastodonTag를 반환합니다.

좋아요

client.favourites는 인증된 사용자가 좋아요한 모든 포스트를 나열합니다.

final page = await client.favourites.fetch(limit: 20);
for (final status in page.items) {
print(status.content);
}

// 더 오래된 결과
if (page.nextMaxId != null) {
final older = await client.favourites.fetch(maxId: page.nextMaxId);
}

MastodonPage<MastodonStatus>를 반환합니다. 기본 limit은 20이고 최대는 40입니다. 페이지네이션은 maxId, sinceId, minId를 사용합니다.

특정 포스트에 좋아요를 누르거나 취소하려면 client.statuses.favouriteclient.statuses.unfavourite를 사용하세요.

북마크

client.bookmarks는 인증된 사용자가 북마크한 모든 포스트를 나열합니다.

final page = await client.bookmarks.fetch(limit: 20);
for (final status in page.items) {
print(status.id);
}

MastodonPage<MastodonStatus>를 반환합니다. 기본 limit은 20이고 최대는 40입니다. 페이지네이션은 maxId, sinceId, minId를 사용합니다.

북마크를 추가하거나 제거하려면 client.statuses.bookmarkclient.statuses.unbookmark를 사용하세요.