Skip to content

Commit

Permalink
update playlist
Browse files Browse the repository at this point in the history
  • Loading branch information
power721 committed Dec 6, 2022
1 parent 160f743 commit 602e0fc
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
@ConfigurationProperties("app")
public class AppProperties {
private boolean sort;
private int playlistSize = 100;
private int pageSize = 100;
private String configUrl = "https://hutool.ml/tang";
private Set<String> formats;
private List<Site> sites;
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/cn/har01d/alist_tvbox/service/AListService.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.regex.Pattern;

@Slf4j
Expand All @@ -33,6 +36,7 @@ public AListService(RestTemplateBuilder builder, AppProperties appProperties) {
public List<String> search(String site, String keyword) {
String url = getSiteUrl(site) + "/api/search?type=video&box=" + keyword;
SearchResponse response = restTemplate.getForObject(url, SearchResponse.class);
logError(response);
log.debug("search \"{}\" from site {} result: {} {}", keyword, site, response.getData().size(), response.getData());
return response.getData();
}
Expand All @@ -46,6 +50,7 @@ public FsResponse listFiles(String site, String path, int page, int size) {
request.setSize(size);
log.debug("call api: {}", url);
FsListResponse response = restTemplate.postForObject(url, request, FsListResponse.class);
logError(response);
log.debug("list files: {} {}", path, response.getData());
return getFiles(version, response.getData());
}
Expand Down Expand Up @@ -81,6 +86,7 @@ private FsDetail getFileV3(String site, String path) {
request.setPath(path);
log.debug("call api: {}", url);
FsDetailResponse response = restTemplate.postForObject(url, request, FsDetailResponse.class);
logError(response);
log.debug("get file: {} {}", path, response.getData());
return response.getData();
}
Expand All @@ -91,6 +97,7 @@ private FsDetail getFileV2(String site, String path) {
request.setPath(path);
log.debug("call api: {}", url);
FsListResponseV2 response = restTemplate.postForObject(url, request, FsListResponseV2.class);
logError(response);
FsInfoV2 fsInfo = Optional.ofNullable(response)
.map(Response::getData)
.map(FsResponseV2::getFiles)
Expand Down Expand Up @@ -134,4 +141,10 @@ private Integer getVersion(String site) {
private String getSiteUrl(String site) {
return sites.get(site);
}

private void logError(Response<?> response) {
if (response != null && response.getCode() != 200) {
log.warn("error {} {}", response.getCode(), response.getMessage());
}
}
}
62 changes: 16 additions & 46 deletions src/main/java/cn/har01d/alist_tvbox/service/TvBoxService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import cn.har01d.alist_tvbox.tvbox.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
Expand All @@ -24,7 +23,6 @@
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

Expand Down Expand Up @@ -231,7 +229,7 @@ public MovieList getMovieList(String tid, String sort, int page) {
List<MovieDetail> playlists = new ArrayList<>();
MovieList result = new MovieList();

int size = appProperties.getPlaylistSize();
int size = appProperties.getPageSize();
FsResponse fsResponse = aListService.listFiles(site, path, page, size);
int total = fsResponse.getTotal();

Expand Down Expand Up @@ -266,7 +264,7 @@ public MovieList getMovieList(String tid, String sort, int page) {
result.getList().addAll(folders);

if (page == 1 && files.size() > 1 && playlists.isEmpty()) {
playlists = generatePlaylist(site + "$" + fixPath(path + PLAYLIST + "#"), total - folders.size(), files);
playlists = generatePlaylist(site + "$" + fixPath(path + PLAYLIST), total - folders.size(), files);
}

result.getList().addAll(playlists);
Expand Down Expand Up @@ -360,29 +358,17 @@ private List<MovieDetail> generatePlaylistFromFile(String site, String path) {
}

private List<MovieDetail> generatePlaylist(String path, int total, List<MovieDetail> files) {
int size = appProperties.getPlaylistSize();
List<MovieDetail> list = new ArrayList<>();
int id = 0;
for (; id < total / size; ++id) {
MovieDetail movieDetail = new MovieDetail();
movieDetail.setVod_id(path + id);
movieDetail.setVod_name("播放列表" + (total > size ? id + 1 : ""));
movieDetail.setVod_tag(FILE);
movieDetail.setVod_pic(LIST_PIC);
list.add(movieDetail);
MovieDetail movieDetail = new MovieDetail();
movieDetail.setVod_id(path);
movieDetail.setVod_name("播放列表");
movieDetail.setVod_tag(FILE);
movieDetail.setVod_pic(LIST_PIC);
if (total < appProperties.getPageSize()) {
movieDetail.setVod_remarks("共" + files.size() + "集");
}

if (total % size > 0) {
MovieDetail movieDetail = new MovieDetail();
movieDetail.setVod_id(path + id);
movieDetail.setVod_name("播放列表" + (id > 0 ? id + 1 : ""));
movieDetail.setVod_tag(FILE);
movieDetail.setVod_pic(LIST_PIC);
if (total < size) {
movieDetail.setVod_remarks("共" + files.size() + "集");
}
list.add(movieDetail);
}
List<MovieDetail> list = new ArrayList<>();
list.add(movieDetail);

return list;
}
Expand Down Expand Up @@ -410,6 +396,7 @@ public MovieList getDetail(String tid) {
movieDetail.setVod_pic(getCover(fsDetail.getThumb(), fsDetail.getType()));
movieDetail.setVod_play_from(fsDetail.getProvider());
movieDetail.setVod_play_url(fsDetail.getName() + "$" + fixHttp(fsDetail.getRaw_url()));
movieDetail.setVod_content(tid);
result.getList().add(movieDetail);
result.setTotal(result.getList().size());
result.setLimit(result.getList().size());
Expand Down Expand Up @@ -438,15 +425,11 @@ public MovieList getPlaylist(String site, String path) {
movieDetail.setVod_name(fsDetail.getName());
movieDetail.setVod_time(fsDetail.getModified());
movieDetail.setVod_play_from(fsDetail.getProvider());
movieDetail.setVod_content(site + "$" + newPath);
movieDetail.setVod_tag(FILE);
movieDetail.setVod_pic(LIST_PIC);

int id = getPlaylistId(path);

List<String> list = new ArrayList<>();

int size = appProperties.getPlaylistSize();
FsResponse fsResponse = aListService.listFiles(site, newPath, id + 1, size);
FsResponse fsResponse = aListService.listFiles(site, newPath, 1, 0);
List<FsInfo> files = fsResponse.getFiles().stream()
.filter(e -> isMediaFormat(e.getName()))
.collect(Collectors.toList());
Expand All @@ -455,6 +438,7 @@ public MovieList getPlaylist(String site, String path) {
files.sort(Comparator.comparing(e -> new FileNameInfo(e.getName()), nameComparator));
}

List<String> list = new ArrayList<>();
for (FsInfo fsInfo : files) {
list.add(getName(fsInfo.getName()) + "$" + buildPlayUrl(site, newPath + "/" + fsInfo.getName()));
}
Expand All @@ -463,7 +447,7 @@ public MovieList getPlaylist(String site, String path) {

MovieList result = new MovieList();
result.getList().add(movieDetail);
result.setLimit(size);
result.setLimit(result.getList().size());
result.setTotal(result.getList().size());
log.debug("playlist: {}", result);
return result;
Expand Down Expand Up @@ -561,20 +545,6 @@ private String getParent(String path) {
return path;
}

private List<FsInfo> getMoviesInPlaylist(int id, List<FsInfo> files) {
if (id < 0) {
return files;
}

int start = id * appProperties.getPlaylistSize();
int end = start + appProperties.getPlaylistSize();
if (end > files.size()) {
end = files.size();
}

return files.subList(start, end);
}

private int getPlaylistId(String path) {
try {
int index = path.lastIndexOf('/');
Expand Down

0 comments on commit 602e0fc

Please sign in to comment.