Skip to content

Commit

Permalink
Add full torrent info
Browse files Browse the repository at this point in the history
  • Loading branch information
galushko committed Feb 19, 2024
1 parent 9ac0b90 commit 64325fc
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 44 deletions.
3 changes: 2 additions & 1 deletion config/examples/docker-compose/docker-compose-bot_debug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ services:
volumes:
- ./workdir/config/transmission:/home/app/transmission_config
- ./workdir/config/logs:/home/app/logs
network_mode: host
networks:
bot_network_debug:
bot_debug:
image: halushko/cinema-bot:beta
env_file:
Expand Down
27 changes: 16 additions & 11 deletions text/src/main/java/com/halushko/kinocat/text/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,55 +9,60 @@ public interface Constants {
CommandsCollection COMMANDS_COLLECTION = new CommandsCollection() {{
addValue(Commands.Torrent.LIST_TORRENTS,
Queues.Torrent.TORRENTS_LIST,
"відобразити всі торенти. Якщо після команди додати слова, то торенти будуть відфільтровані за іменами з цими словами",
"<сервер> відобразити всі торенти. Якщо після команди додати слова, то торенти будуть відфільтровані за іменами з цими словами",
CommandProperties.CONTAINS_SERVER_NUMBER,
CommandProperties.CAN_BE_NOT_TORRENT
);
addValue(Commands.Torrent.LIST_TORRENT_COMMANDS,
Queues.Torrent.TORRENT_COMMANDS,
"<номер торента> перелічити можливі команди для вказаного торента",
"<сервер> <номер торента> перелічити можливі команди для вказаного торента",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.LIST_FILES,
Queues.Torrent.FILES_LIST,
"<номер торента> відобразити всі файли, що будуть скачані в цьому торенті",
"<сервер> <номер торента> відобразити всі файли, що будуть скачані в цьому торенті",
CommandProperties.CONTAINS_SERVER_NUMBER,
CommandProperties.CAN_BE_NOT_TORRENT
);
addValue(Commands.Torrent.TORRENT_INFO,
Queues.Torrent.TORRENT_INFO,
"<сервер> <номер торента> відобразити інформацію по торенту",
CommandProperties.CONTAINS_SERVER_NUMBER,
CommandProperties.CAN_BE_NOT_TORRENT
);
addValue(Commands.Torrent.RESUME,
Queues.Torrent.RESUME_TORRENT,
"<номер торента> почати закачувати цей торент",
"<сервер> <номер торента> почати закачувати цей торент",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.PAUSE,
Queues.Torrent.PAUSE_TORRENT,
"<номер торента> припинити закачувати цей торент",
"<сервер> <номер торента> припинити закачувати цей торент",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.RESUME_ALL,
Queues.Torrent.RESUME_ALL,
"почати закачувати всі торенти",
"<сервер> почати закачувати всі торенти",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.PAUSE_ALL,
Queues.Torrent.PAUSE_ALL,
"припинити закачувати всі тореенти",
"<сервер> припинити закачувати всі тореенти",
CommandProperties.CONTAINS_SERVER_NUMBER
);
// addValue(Torrent.TORRENT_INFO, "", "info_torrent.sh", Queues.Torrent.TORRENT_INFO);
addValue(Commands.Torrent.REMOVE_WITH_FILES,
Queues.Torrent.DELETE_WITH_FILES,
"<номер торента> видалити вказаний торент разом з файлами",
"<сервер> <номер торента> видалити вказаний торент разом з файлами",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.REMOVE_JUST_TORRENT,
Queues.Torrent.DELETE_ONLY_TORRENT,
"<номер торента> видалити вказаний торент, але залишити файли",
"<сервер> <номер торента> видалити вказаний торент, але залишити файли",
CommandProperties.CONTAINS_SERVER_NUMBER
);
addValue(Commands.Torrent.REMOVE_COMMAND,
Queues.Torrent.DELETE,
"<номер торента> почати процедуру видалення вказаного торента",
"<сервер> <номер торента> почати процедуру видалення вказаного торента",
CommandProperties.CONTAINS_SERVER_NUMBER
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public static void main(String[] args) {
new DeleteOnlyTorrent().run();
new DeleteWithFiles().run();
new FilesList().run();
new TorrentFullInfo().run();
new PauseTorrent().run();
new ResumeTorrent().run();
new RemoveTorrentCommand().run();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,33 @@
import lombok.extern.slf4j.Slf4j;
import lombok.val;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;

@Getter
@Slf4j
public class TorrentEntity {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd-MM-yyyy");

private final String id;
private final String name;
private final double percentDone;
private final int status;

private final long totalSize;
private final long eta;
private final long uploadedEver;
private final double percentDone;

private final String lastActivityDate;
private final String dateCreated;
private final String addedDate;

private final String comment;
private final String errorString;

private final TreeSet<SubTorrentEntity> files = new TreeSet<>((str1, str2) -> {
List<String> folders1 = str1.getFolders();
List<String> folders2 = str2.getFolders();
Expand All @@ -44,18 +58,40 @@ public TorrentEntity(Object obj) {
val torrent = new SmartJson((Map<String, Object>) obj);
this.id = torrent.getValue("id");
this.name = torrent.getValue("name");
String status = torrent.getValue("status");
this.status = status.isEmpty() ? -1 : Integer.parseInt(status);
this.comment = torrent.getValue("comment");
this.errorString = torrent.getValue("errorString");
this.status = (int)getLong(torrent.getValue("status"), -1);

String percentDone = torrent.getValue("percentDone");
this.percentDone = percentDone.isEmpty() ? 0.0 : Double.parseDouble(percentDone);
String totalSize = torrent.getValue("totalSize");
this.totalSize = percentDone.isEmpty() ? 0L : Long.parseLong(totalSize);

String eta = torrent.getValue("eta");
this.eta = eta.isEmpty() ? -1L : Long.parseLong(totalSize);
this.totalSize = getLong(torrent.getValue("totalSize"));
this.eta = getLong(torrent.getValue("eta"), -1L);
this.uploadedEver = getLong(torrent.getValue("uploadedEver"));

val files = torrent.getSubMessage("files").convertToList();
files.forEach(file -> this.files.add(new SubTorrentEntity(file, id)));

this.lastActivityDate = getDate(torrent.getValue("activityDate"));
this.dateCreated = getDate(torrent.getValue("dateCreated"));
this.addedDate = getDate(torrent.getValue("addedDate"));
}

private static String getDate(String strValue) {
if(strValue.isEmpty()) return "";
val timestamp = Long.parseLong(strValue);
Instant instant = Instant.ofEpochSecond(timestamp);
ZonedDateTime date = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
return date.format(FORMATTER);
}
private static long getLong(String strValue){
return getLong(strValue, 0);
}
private static long getLong(String strValue, long defaultValue) {
try {
return strValue.isEmpty() ? defaultValue : Long.parseLong(strValue);
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.halushko.kinocat.torrent.requests.concrete;

import com.halushko.kinocat.core.Queues;
import com.halushko.kinocat.torrent.entities.TorrentEntity;
import com.halushko.kinocat.torrent.requests.common.GetTorrent;

public class TorrentFullInfo extends GetTorrent {

@Override
protected String generateAnswer(TorrentEntity torrent, String serverNumber, String serverVsTorrentSeparator) {
StringBuilder sb = new StringBuilder("Торент ").append(torrent.getName()).append("\n/\n");
sb.append("Маэмо: ").append(Math.round(torrent.getTotalSize() / 1000000.0) / 1000.0).append(" Gb");
sb.append(" (").append(torrent.getPercentDone() * 100).append("%)\n");
sb.append("Відвантажено: ").append(Math.round(torrent.getUploadedEver() / 1000000.0) / 1000.0).append(" Gb");
sb.append(" (").append((double) (10 * torrent.getUploadedEver() / torrent.getTotalSize()) / 10.0).append(")\n");
sb.append("Остання активнысть: ").append(torrent.getLastActivityDate()).append("\n");
if(!torrent.getErrorString().isEmpty()) {
sb.append("Помилка: ").append(torrent.getErrorString()).append("\n");
}
sb.append("Торент створено: ").append(torrent.getDateCreated()).append("\n");
sb.append("Початок закачки: ").append(torrent.getAddedDate()).append("\n");
if(!torrent.getComment().isEmpty()) {
sb.append("Інфа: ").append(torrent.getComment());
}
return sb.toString();
}

@Override
protected String getQueue() {
return Queues.Torrent.TORRENT_INFO;
}

@Override
protected String getRequest() {
return "get_full_info.json";
}
}
38 changes: 13 additions & 25 deletions torrent/src/main/resources/transmission_requests/get_full_info.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,21 @@
"arguments": {
"fields": [
"id",
"addedDate",
"name",
"totalSize",
"error",
"errorString",
"eta",
"isFinished",
"isStalled",
"leftUntilDone",
"metadataPercentComplete",
"peersConnected",
"peersGettingFromUs",
"peersSendingToUs",
"percentDone",
"queuePosition",
"rateDownload",
"rateUpload",
"recheckProgress",
"seedRatioMode",
"seedRatioLimit",
"sizeWhenDone",
"status",
"trackers",
"downloadDir",
"activityDate",
"startDate",
"comment",
"dateCreated",
"uploadedEver",
"uploadRatio",
"webseedsSendingToUs"
]
"eta",
"name",
"errorString",
"status",
"addedDate"
],
"ids": [
%s
]
}
}

0 comments on commit 64325fc

Please sign in to comment.