changing how the start API command works to start torrents
This commit is contained in:
@@ -184,8 +184,6 @@ func StartTorrent(clientTorrent *torrent.Torrent, torrentLocalStorage Storage.To
|
|||||||
for _, singleFile := range clientTorrent.Files() { //setting all of the file priorities to normal
|
for _, singleFile := range clientTorrent.Files() { //setting all of the file priorities to normal
|
||||||
singleFile.SetPriority(torrent.PiecePriorityNormal)
|
singleFile.SetPriority(torrent.PiecePriorityNormal)
|
||||||
}
|
}
|
||||||
fmt.Println("Downloading ALL") //starting the download
|
|
||||||
|
|
||||||
CreateServerPushMessage(ServerPushMessage{MessageType: "serverPushMessage", MessageLevel: "success", Payload: "Torrent added!"}, Conn)
|
CreateServerPushMessage(ServerPushMessage{MessageType: "serverPushMessage", MessageLevel: "success", Payload: "Torrent added!"}, Conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,17 +219,13 @@ func CreateInitialTorrentArray(tclient *torrent.Client, TorrentLocalArray []*Sto
|
|||||||
Logger.WithFields(logrus.Fields{"torrentFile": singleTorrent.Name(), "error": err}).Error("Unable to add infobytes to the torrent!")
|
Logger.WithFields(logrus.Fields{"torrentFile": singleTorrent.Name(), "error": err}).Error("Unable to add infobytes to the torrent!")
|
||||||
}
|
}
|
||||||
if singleTorrentFromStorage.TorrentStatus != "Completed" && singleTorrentFromStorage.TorrentStatus != "Stopped" {
|
if singleTorrentFromStorage.TorrentStatus != "Completed" && singleTorrentFromStorage.TorrentStatus != "Stopped" {
|
||||||
fmt.Println("Starting torrent as download", singleTorrent.Name())
|
|
||||||
singleTorrent.DownloadAll() //set all of the pieces to download (piece prio is NE to file prio)
|
singleTorrent.DownloadAll() //set all of the pieces to download (piece prio is NE to file prio)
|
||||||
NumPieces := singleTorrent.NumPieces() //find the number of pieces
|
NumPieces := singleTorrent.NumPieces() //find the number of pieces
|
||||||
singleTorrent.CancelPieces(1, NumPieces) //cancel all of the pieces to use file priority
|
singleTorrent.CancelPieces(1, NumPieces) //cancel all of the pieces to use file priority
|
||||||
for _, singleFile := range singleTorrent.Files() { //setting all of the file priorities to normal
|
for _, singleFile := range singleTorrent.Files() { //setting all of the file priorities to normal
|
||||||
singleFile.SetPriority(torrent.PiecePriorityNormal)
|
singleFile.SetPriority(torrent.PiecePriorityNormal)
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
fmt.Println("Torrent status is....", singleTorrentFromStorage.TorrentStatus)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
SetFilePriority(tclient, db) //Setting the desired file priority from storage
|
SetFilePriority(tclient, db) //Setting the desired file priority from storage
|
||||||
}
|
}
|
||||||
|
@@ -74,7 +74,7 @@ func CopyFile(srcFile string, destFile string) { //TODO move this to our importe
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SetFilePriority sets the priorities for all of the files in a torrent
|
//SetFilePriority sets the priorities for all of the files in all of the torrents
|
||||||
func SetFilePriority(t *torrent.Client, db *storm.DB) {
|
func SetFilePriority(t *torrent.Client, db *storm.DB) {
|
||||||
storedTorrents := Storage.FetchAllStoredTorrents(db)
|
storedTorrents := Storage.FetchAllStoredTorrents(db)
|
||||||
for _, singleTorrent := range t.Torrents() {
|
for _, singleTorrent := range t.Torrents() {
|
||||||
|
41
main.go
41
main.go
@@ -284,19 +284,19 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
case "torrentFileListRequest": //client requested a filelist update
|
case "torrentFileListRequest": //client requested a filelist update
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested FileList Update")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested FileList Update")
|
||||||
fileListArrayRequest := payloadData["FileListHash"].(string)
|
fileListArrayRequest := payloadData["FileListHash"].(string)
|
||||||
FileListArray := Engine.CreateFileListArray(tclient, fileListArrayRequest, db, Config)
|
FileListArray := Engine.CreateFileListArray(tclient, fileListArrayRequest, db, Config)
|
||||||
conn.WriteJSON(FileListArray) //writing the JSON to the client
|
conn.WriteJSON(FileListArray) //writing the JSON to the client
|
||||||
|
|
||||||
case "torrentPeerListRequest":
|
case "torrentPeerListRequest":
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested PeerList Update")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested PeerList Update")
|
||||||
peerListArrayRequest := payloadData["PeerListHash"].(string)
|
peerListArrayRequest := payloadData["PeerListHash"].(string)
|
||||||
torrentPeerList := Engine.CreatePeerListArray(tclient, peerListArrayRequest)
|
torrentPeerList := Engine.CreatePeerListArray(tclient, peerListArrayRequest)
|
||||||
conn.WriteJSON(torrentPeerList)
|
conn.WriteJSON(torrentPeerList)
|
||||||
|
|
||||||
case "fetchTorrentsByLabel":
|
case "fetchTorrentsByLabel":
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested Torrents by Label")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested Torrents by Label")
|
||||||
label := payloadData["Label"].(string)
|
label := payloadData["Label"].(string)
|
||||||
torrentsByLabel := Storage.FetchTorrentsByLabel(db, label)
|
torrentsByLabel := Storage.FetchTorrentsByLabel(db, label)
|
||||||
RunningTorrentArray = Engine.CreateRunningTorrentArray(tclient, TorrentLocalArray, PreviousTorrentArray, Config, db)
|
RunningTorrentArray = Engine.CreateRunningTorrentArray(tclient, TorrentLocalArray, PreviousTorrentArray, Config, db)
|
||||||
@@ -311,7 +311,7 @@ func main() {
|
|||||||
conn.WriteJSON(labelRunningArray)
|
conn.WriteJSON(labelRunningArray)
|
||||||
|
|
||||||
case "changeStorageValue":
|
case "changeStorageValue":
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested Storage Location Update")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested Storage Location Update")
|
||||||
newStorageLocation := payloadData["StorageValue"].(string)
|
newStorageLocation := payloadData["StorageValue"].(string)
|
||||||
hashes := payloadData["ChangeStorageHashes"].([]interface{})
|
hashes := payloadData["ChangeStorageHashes"].([]interface{})
|
||||||
for _, singleHash := range hashes {
|
for _, singleHash := range hashes {
|
||||||
@@ -332,12 +332,12 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "settingsFileRequest":
|
case "settingsFileRequest":
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested Settings File")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested Settings File")
|
||||||
clientSettingsFile := Engine.SettingsFile{MessageType: "settingsFile", Config: Config}
|
clientSettingsFile := Engine.SettingsFile{MessageType: "settingsFile", Config: Config}
|
||||||
conn.WriteJSON(clientSettingsFile)
|
conn.WriteJSON(clientSettingsFile)
|
||||||
|
|
||||||
case "rssFeedRequest":
|
case "rssFeedRequest":
|
||||||
Logger.WithFields(logrus.Fields{"message": msg}).Debug("Client Requested RSS Update")
|
Logger.WithFields(logrus.Fields{"message": msg}).Info("Client Requested RSS Update")
|
||||||
RSSList := Storage.FetchRSSFeeds(db)
|
RSSList := Storage.FetchRSSFeeds(db)
|
||||||
RSSJSONFeed := Engine.RSSJSONList{MessageType: "rssList", TotalRSSFeeds: len(RSSList.RSSFeeds)}
|
RSSJSONFeed := Engine.RSSJSONList{MessageType: "rssList", TotalRSSFeeds: len(RSSList.RSSFeeds)}
|
||||||
RSSsingleFeed := Engine.RSSFeedsNames{}
|
RSSsingleFeed := Engine.RSSFeedsNames{}
|
||||||
@@ -350,9 +350,9 @@ func main() {
|
|||||||
|
|
||||||
case "addRSSFeed":
|
case "addRSSFeed":
|
||||||
newRSSFeed := payloadData["RSSURL"].(string)
|
newRSSFeed := payloadData["RSSURL"].(string)
|
||||||
Logger.WithFields(logrus.Fields{"message": newRSSFeed}).Debug("Client Added RSS Feed")
|
Logger.WithFields(logrus.Fields{"message": newRSSFeed}).Info("Client Added RSS Feed")
|
||||||
fullRSSFeeds := Storage.FetchRSSFeeds(db)
|
fullRSSFeeds := Storage.FetchRSSFeeds(db)
|
||||||
Logger.WithFields(logrus.Fields{"RSSFeeds": fullRSSFeeds}).Debug("Pulled Full RSS Feeds")
|
Logger.WithFields(logrus.Fields{"RSSFeeds": fullRSSFeeds}).Info("Pulled Full RSS Feeds")
|
||||||
for _, singleFeed := range fullRSSFeeds.RSSFeeds {
|
for _, singleFeed := range fullRSSFeeds.RSSFeeds {
|
||||||
if newRSSFeed == singleFeed.URL || newRSSFeed == "" {
|
if newRSSFeed == singleFeed.URL || newRSSFeed == "" {
|
||||||
Logger.WithFields(logrus.Fields{"RSSFeed": newRSSFeed}).Warn("Empty URL or Duplicate RSS URL to one already in database! Rejecting submission")
|
Logger.WithFields(logrus.Fields{"RSSFeed": newRSSFeed}).Warn("Empty URL or Duplicate RSS URL to one already in database! Rejecting submission")
|
||||||
@@ -379,7 +379,7 @@ func main() {
|
|||||||
|
|
||||||
case "deleteRSSFeed":
|
case "deleteRSSFeed":
|
||||||
deleteRSSFeed := payloadData["RSSURL"].(string)
|
deleteRSSFeed := payloadData["RSSURL"].(string)
|
||||||
Logger.WithFields(logrus.Fields{"message": deleteRSSFeed}).Debug("Deleting RSS Feed")
|
Logger.WithFields(logrus.Fields{"message": deleteRSSFeed}).Info("Deleting RSS Feed")
|
||||||
Storage.DeleteRSSFeed(db, deleteRSSFeed)
|
Storage.DeleteRSSFeed(db, deleteRSSFeed)
|
||||||
fullRSSFeeds := Storage.FetchRSSFeeds(db)
|
fullRSSFeeds := Storage.FetchRSSFeeds(db)
|
||||||
Engine.CreateServerPushMessage(Engine.ServerPushMessage{MessageType: "serverPushMessage", MessageLevel: "info", Payload: "Deleting RSS feed..."}, conn)
|
Engine.CreateServerPushMessage(Engine.ServerPushMessage{MessageType: "serverPushMessage", MessageLevel: "info", Payload: "Deleting RSS feed..."}, conn)
|
||||||
@@ -390,7 +390,7 @@ func main() {
|
|||||||
Logger.WithFields(logrus.Fields{"RSSFeed": RSSFeedURL}).Info("Requesting torrentList for feed..")
|
Logger.WithFields(logrus.Fields{"RSSFeed": RSSFeedURL}).Info("Requesting torrentList for feed..")
|
||||||
UpdatedRSSFeed := Engine.RefreshSingleRSSFeed(db, Storage.FetchSpecificRSSFeed(db, RSSFeedURL))
|
UpdatedRSSFeed := Engine.RefreshSingleRSSFeed(db, Storage.FetchSpecificRSSFeed(db, RSSFeedURL))
|
||||||
TorrentRSSList := Engine.SingleRSSFeedMessage{MessageType: "rssTorrentList", URL: RSSFeedURL, Name: UpdatedRSSFeed.Name, TotalTorrents: len(UpdatedRSSFeed.Torrents), Torrents: UpdatedRSSFeed.Torrents}
|
TorrentRSSList := Engine.SingleRSSFeedMessage{MessageType: "rssTorrentList", URL: RSSFeedURL, Name: UpdatedRSSFeed.Name, TotalTorrents: len(UpdatedRSSFeed.Torrents), Torrents: UpdatedRSSFeed.Torrents}
|
||||||
Logger.WithFields(logrus.Fields{"TorrentRSSList": TorrentRSSList}).Debug("Returning Torrent list from RSSFeed to client")
|
Logger.WithFields(logrus.Fields{"TorrentRSSList": TorrentRSSList}).Info("Returning Torrent list from RSSFeed to client")
|
||||||
conn.WriteJSON(TorrentRSSList)
|
conn.WriteJSON(TorrentRSSList)
|
||||||
|
|
||||||
case "magnetLinkSubmit": //if we detect a magnet link we will be adding a magnet torrent
|
case "magnetLinkSubmit": //if we detect a magnet link we will be adding a magnet torrent
|
||||||
@@ -513,10 +513,29 @@ func main() {
|
|||||||
for _, singleTorrent := range runningTorrents {
|
for _, singleTorrent := range runningTorrents {
|
||||||
for _, singleSelection := range torrentHashes {
|
for _, singleSelection := range torrentHashes {
|
||||||
if singleTorrent.InfoHash().String() == singleSelection {
|
if singleTorrent.InfoHash().String() == singleSelection {
|
||||||
Logger.WithFields(logrus.Fields{"infoHash": singleTorrent.InfoHash().String()}).Debug("Found matching torrent to start")
|
Logger.WithFields(logrus.Fields{"infoHash": singleTorrent.InfoHash().String()}).Info("Found matching torrent to start")
|
||||||
oldTorrentInfo := Storage.FetchTorrentFromStorage(db, singleTorrent.InfoHash().String())
|
oldTorrentInfo := Storage.FetchTorrentFromStorage(db, singleTorrent.InfoHash().String())
|
||||||
oldTorrentInfo.TorrentStatus = "Running"
|
oldTorrentInfo.TorrentStatus = "Running"
|
||||||
oldTorrentInfo.MaxConnections = 80
|
oldTorrentInfo.MaxConnections = 80
|
||||||
|
singleTorrent.DownloadAll() //set all of the pieces to download (piece prio is NE to file prio)
|
||||||
|
NumPieces := singleTorrent.NumPieces() //find the number of pieces
|
||||||
|
singleTorrent.CancelPieces(1, NumPieces) //cancel all of the pieces to use file priority
|
||||||
|
for _, file := range singleTorrent.Files() {
|
||||||
|
for _, sentFile := range oldTorrentInfo.TorrentFilePriority {
|
||||||
|
if file.Path() == sentFile.TorrentFilePath {
|
||||||
|
switch sentFile.TorrentFilePriority {
|
||||||
|
case "High":
|
||||||
|
file.SetPriority(torrent.PiecePriorityHigh)
|
||||||
|
case "Normal":
|
||||||
|
file.SetPriority(torrent.PiecePriorityNormal)
|
||||||
|
case "Cancel":
|
||||||
|
file.SetPriority(torrent.PiecePriorityNone)
|
||||||
|
default:
|
||||||
|
file.SetPriority(torrent.PiecePriorityNormal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Logger.WithFields(logrus.Fields{"Torrent": oldTorrentInfo.TorrentName}).Info("Changing database to torrent running with 80 max connections")
|
Logger.WithFields(logrus.Fields{"Torrent": oldTorrentInfo.TorrentName}).Info("Changing database to torrent running with 80 max connections")
|
||||||
Storage.UpdateStorageTick(db, oldTorrentInfo) //Updating the torrent status
|
Storage.UpdateStorageTick(db, oldTorrentInfo) //Updating the torrent status
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user