Methods magnet2File completed, going to impletement getMagnets button

This commit is contained in:
Kylart 2017-02-27 22:49:18 +01:00
parent 34a75fbe68
commit 078be38174
4 changed files with 92 additions and 10 deletions

View File

@ -185,15 +185,24 @@ body
width: 24%;
}
#download-button .md-button
.download-button .md-button
{
background-color: rgba(40, 40, 40, 0.8);
margin-top: 15%;
color: rgba(255, 255, 255, 0.8);
margin-right: 3%;
}
#download-button h6
#downloader-button
{
background-color: rgba(40, 40, 40, 0.8);
}
#magnet-downloader-button
{
background-color: rgba(40, 40, 40, 0.8);
}
.download-button h6
{
margin-bottom: 0;
margin-top: 0;

View File

@ -121,8 +121,19 @@
</div>
</div>
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--5-col mdl-cell--5-offset" id="download-button">
<md-button id="downloader-button" class="md-raised" @click.native="download()"><h6>Download!</h6></md-button>
<div class="mdl-cell mdl-cell--3-col mdl-cell--3-offset download-button">
<md-button id="downloader-button"
class="md-raised"
@click.native="download()">
<h6>Download!</h6>
</md-button>
</div>
<div class="mdl-cell mdl-cell--3-col download-button">
<md-button id="magnet-downloader-button"
class="md-raised"
@click.native="downloadMagnets()">
<h6>Get Magnets!</h6>
</md-button>
</div>
</div>

View File

@ -26,8 +26,9 @@
"mal-scraper": "^1.0.9",
"malapi": "0.0.3",
"node-nyaa-api": "latest",
"parse-torrent": "^5.8.1",
"progressbar.js": "^1.0.1",
"vue-material": "^0.7.1",
"request": "latest"
"request": "latest",
"vue-material": "^0.7.1"
}
}

View File

@ -14,6 +14,7 @@ const os = require('os')
const path = require('path')
const request = require('request')
const findRemoveSync = require('find-remove')
const parseTorrent = require('parse-torrent')
// Mal API
const mal = require('malapi').Anime
@ -25,6 +26,7 @@ const malScraper = require('mal-scraper')
/* ----------------- END IMPORTS ----------------- */
const DIR = path.join(os.userInfo().homedir, '.KawAnime')
const magnetPath = path.join(DIR, 'magnets.txt')
const VueMaterial = require('vue-material')
@ -142,9 +144,6 @@ function getLatest() {
})
}
// Set a preference for
// -- Download torrent file (might have a problem when downloading several)
// -- Download magnet
function downloadFile(file_url, name) {
let req = request({
method: 'GET',
@ -155,6 +154,39 @@ function downloadFile(file_url, name) {
req.pipe(out)
}
function torrent2Magnet(torrentPath) {
const torrentFile = parseTorrent(fs.readFileSync(torrentPath))
const infoHash = torrentFile.infoHash
return parseTorrent.toMagnetURI({
infoHash: this.infoHash
})
}
function magnet2File(torrentPath) {
const torrentFile = parseTorrent(fs.readFileSync(torrentPath))
const torrentName = torrentFile.name
// Convert to magnet
const torrentHash = parseTorrent.toMagnetURI({
infoHash: torrentFile.infoHash
})
// Write magnet on ~/KawAnime/magnets.txt
// Date
const date = new Date()
// Write name of torrent
fs.appendFileSync(magnetPath, `${date.toDateString()}: ${torrentName}`)
// Write hashCode
fs.appendFileSync(magnetPath, torrentHash)
// Blank line afterwards
fs.appendFileSync(magnetPath, '')
}
function startTorrent(file_url, name) {
// Removing old torrents
findRemoveSync(DIR, {extensions: ['.torrent']})
@ -312,6 +344,35 @@ let downloader = new Vue({
this.fromEp = ''
this.animeName = ''
},
downloadMagnets: function () {
console.log(`Retrieving ${this.animeName} from ${this.fromEp} to ${this.untilEp}...`)
const quality = this.quality
const animeName = this.animeName
const fromEp = this.fromEp
const untilEp = this.untilEp
Nyaa.search(`[HorribleSubs] ${quality} ${animeName}`, (err, articles) =>{
if (err) throw err
let animes = []
for (let article in articles)
animes.push(articles[article])
animes.forEach( (elem) => {
const url = elem.link
const epNumber = parseInt(elem.title.split(' ').reverse()[1])
// Downloading torrent files
if (epNumber >= fromEp && epNumber <= untilEp)
downloadFile(url, path.join(DIR, `${name}.torrent`))
})
// Here we convert the torrent files to magnets
})
},
animeNameNext: function () {
document.getElementById('fromEp-input').focus()
},