mirror of
https://github.com/AynaLivePlayer/miaosic.git
synced 2026-03-15 13:33:17 +08:00
add libmiaosic
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -2,4 +2,5 @@
|
||||
go.sum
|
||||
cmd/miaosic/miaosic
|
||||
cmd/miaosic/session.json
|
||||
cmd/miaosic/session.bak.json
|
||||
cmd/miaosic/session.bak.json
|
||||
libmiaosic/libmiaosic.so
|
||||
48
libmiaosic/example/main.c
Normal file
48
libmiaosic/example/main.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libmiaosic.h"
|
||||
|
||||
static void print_error(const char* label, MiaosicResult* res) {
|
||||
if (res == NULL) {
|
||||
fprintf(stderr, "%s: result is NULL\n", label);
|
||||
return;
|
||||
}
|
||||
if (res->ok) {
|
||||
return;
|
||||
}
|
||||
fprintf(stderr, "%s failed: %s\n", label, res->err ? res->err : "unknown error");
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
MiaosicResult* reg = UseBilibiliVideo();
|
||||
if (reg == NULL || !reg->ok) {
|
||||
print_error("UseBilibiliVideo", reg);
|
||||
FreeResult(reg);
|
||||
return 1;
|
||||
}
|
||||
FreeResult(reg);
|
||||
|
||||
MiaosicResult* search = SearchByProvider("bilibili-video", "家有女友", 1, 5);
|
||||
if (search == NULL || !search->ok || search->result_type != MIAOSIC_RESULT_MEDIA_INFO_LIST) {
|
||||
print_error("SearchByProvider", search);
|
||||
FreeResult(search);
|
||||
return 1;
|
||||
}
|
||||
|
||||
MiaosicMediaInfoList* list = (MiaosicMediaInfoList*)search->data;
|
||||
printf("Search results: %d\n", list ? list->len : 0);
|
||||
if (list && list->len > 0) {
|
||||
for (int i = 0; i < list->len; i++) {
|
||||
MiaosicMediaInfo* info = &list->items[i];
|
||||
const char* title = info->title ? info->title : "";
|
||||
const char* artist = info->artist ? info->artist : "";
|
||||
const char* provider = info->meta.provider ? info->meta.provider : "";
|
||||
const char* identifier = info->meta.identifier ? info->meta.identifier : "";
|
||||
printf("[%d] %s - %s (%s:%s)\n", i + 1, title, artist, provider, identifier);
|
||||
}
|
||||
}
|
||||
|
||||
FreeResult(search);
|
||||
return 0;
|
||||
}
|
||||
@@ -3,7 +3,113 @@ package main
|
||||
/*
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "libmiaosic.h"
|
||||
typedef struct {
|
||||
char* provider;
|
||||
char* identifier;
|
||||
} MiaosicMetaData;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
unsigned char* data;
|
||||
int data_len;
|
||||
} MiaosicPicture;
|
||||
|
||||
typedef struct {
|
||||
char* title;
|
||||
char* artist;
|
||||
MiaosicPicture cover;
|
||||
char* album;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicMediaInfo;
|
||||
|
||||
typedef struct {
|
||||
char* key;
|
||||
char* value;
|
||||
} MiaosicHeaderPair;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
char* quality;
|
||||
MiaosicHeaderPair* headers;
|
||||
int header_len;
|
||||
} MiaosicMediaUrl;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicMediaInfo* items;
|
||||
} MiaosicMediaInfoList;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicMediaUrl* items;
|
||||
} MiaosicMediaUrlList;
|
||||
|
||||
typedef struct {
|
||||
char* title;
|
||||
MiaosicMediaInfoList medias;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicPlaylist;
|
||||
|
||||
typedef struct {
|
||||
int matched;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicMatchResult;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
char* key;
|
||||
} MiaosicQrLoginSession;
|
||||
|
||||
typedef struct {
|
||||
int success;
|
||||
char* message;
|
||||
} MiaosicQrLoginResult;
|
||||
|
||||
typedef struct {
|
||||
char* lang;
|
||||
char* lyrics;
|
||||
} MiaosicLyrics;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicLyrics* items;
|
||||
} MiaosicLyricsList;
|
||||
|
||||
typedef struct {
|
||||
int value;
|
||||
} MiaosicBool;
|
||||
|
||||
typedef struct {
|
||||
char* value;
|
||||
} MiaosicString;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
char** items;
|
||||
} MiaosicStringList;
|
||||
|
||||
typedef enum {
|
||||
MIAOSIC_RESULT_NONE = 0,
|
||||
MIAOSIC_RESULT_BOOL = 1,
|
||||
MIAOSIC_RESULT_STRING = 2,
|
||||
MIAOSIC_RESULT_STRING_LIST = 3,
|
||||
MIAOSIC_RESULT_META = 4,
|
||||
MIAOSIC_RESULT_MEDIA_INFO = 5,
|
||||
MIAOSIC_RESULT_MEDIA_INFO_LIST = 6,
|
||||
MIAOSIC_RESULT_MEDIA_URL_LIST = 7,
|
||||
MIAOSIC_RESULT_PLAYLIST = 8,
|
||||
MIAOSIC_RESULT_MATCH = 9,
|
||||
MIAOSIC_RESULT_QR_LOGIN_SESSION = 10,
|
||||
MIAOSIC_RESULT_QR_LOGIN_RESULT = 11,
|
||||
MIAOSIC_RESULT_LYRICS_LIST = 12
|
||||
} MiaosicResultType;
|
||||
|
||||
typedef struct MiaosicResult {
|
||||
int ok;
|
||||
char* err;
|
||||
MiaosicResultType result_type;
|
||||
void* data;
|
||||
} MiaosicResult;
|
||||
*/
|
||||
import "C"
|
||||
|
||||
|
||||
@@ -23,7 +23,113 @@ typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "libmiaosic.h"
|
||||
typedef struct {
|
||||
char* provider;
|
||||
char* identifier;
|
||||
} MiaosicMetaData;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
unsigned char* data;
|
||||
int data_len;
|
||||
} MiaosicPicture;
|
||||
|
||||
typedef struct {
|
||||
char* title;
|
||||
char* artist;
|
||||
MiaosicPicture cover;
|
||||
char* album;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicMediaInfo;
|
||||
|
||||
typedef struct {
|
||||
char* key;
|
||||
char* value;
|
||||
} MiaosicHeaderPair;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
char* quality;
|
||||
MiaosicHeaderPair* headers;
|
||||
int header_len;
|
||||
} MiaosicMediaUrl;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicMediaInfo* items;
|
||||
} MiaosicMediaInfoList;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicMediaUrl* items;
|
||||
} MiaosicMediaUrlList;
|
||||
|
||||
typedef struct {
|
||||
char* title;
|
||||
MiaosicMediaInfoList medias;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicPlaylist;
|
||||
|
||||
typedef struct {
|
||||
int matched;
|
||||
MiaosicMetaData meta;
|
||||
} MiaosicMatchResult;
|
||||
|
||||
typedef struct {
|
||||
char* url;
|
||||
char* key;
|
||||
} MiaosicQrLoginSession;
|
||||
|
||||
typedef struct {
|
||||
int success;
|
||||
char* message;
|
||||
} MiaosicQrLoginResult;
|
||||
|
||||
typedef struct {
|
||||
char* lang;
|
||||
char* lyrics;
|
||||
} MiaosicLyrics;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
MiaosicLyrics* items;
|
||||
} MiaosicLyricsList;
|
||||
|
||||
typedef struct {
|
||||
int value;
|
||||
} MiaosicBool;
|
||||
|
||||
typedef struct {
|
||||
char* value;
|
||||
} MiaosicString;
|
||||
|
||||
typedef struct {
|
||||
int len;
|
||||
char** items;
|
||||
} MiaosicStringList;
|
||||
|
||||
typedef enum {
|
||||
MIAOSIC_RESULT_NONE = 0,
|
||||
MIAOSIC_RESULT_BOOL = 1,
|
||||
MIAOSIC_RESULT_STRING = 2,
|
||||
MIAOSIC_RESULT_STRING_LIST = 3,
|
||||
MIAOSIC_RESULT_META = 4,
|
||||
MIAOSIC_RESULT_MEDIA_INFO = 5,
|
||||
MIAOSIC_RESULT_MEDIA_INFO_LIST = 6,
|
||||
MIAOSIC_RESULT_MEDIA_URL_LIST = 7,
|
||||
MIAOSIC_RESULT_PLAYLIST = 8,
|
||||
MIAOSIC_RESULT_MATCH = 9,
|
||||
MIAOSIC_RESULT_QR_LOGIN_SESSION = 10,
|
||||
MIAOSIC_RESULT_QR_LOGIN_RESULT = 11,
|
||||
MIAOSIC_RESULT_LYRICS_LIST = 12
|
||||
} MiaosicResultType;
|
||||
|
||||
typedef struct MiaosicResult {
|
||||
int ok;
|
||||
char* err;
|
||||
MiaosicResultType result_type;
|
||||
void* data;
|
||||
} MiaosicResult;
|
||||
|
||||
#line 1 "cgo-generated-wrapper"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user