This commit is contained in:
Daan Wijns 2020-10-30 18:02:10 +01:00 committed by GitHub
parent e509d3b4a5
commit 80d1c1f6a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 103 additions and 73 deletions

View file

@ -6,80 +6,58 @@ The sleekest looking WEBUI for qBittorrent made with Vuejs!
## Screenshots
<p align="center">
![Desktop screenshot](https://imgur.com/hpjuVYb.png)
<a href="https://imgur.com/hpjuVYb.png"><img src="https://imgur.com/hpjuVYb.png" title="Desktop" alt="Desktop Screenshot" ></a>
| | | |
| :--------------------------------: | :--------------------------------: | :--------------------------------: |
| ![](https://imgur.com/Zcm98H3.png) | ![](https://imgur.com/OujrH0f.png) | ![](https://imgur.com/OkukwYY.png) |
| ![](https://imgur.com/QYpNCXs.png) | ![](https://imgur.com/6j5wxhl.png) | ![](https://imgur.com/jnzDKjW.png) |
<p align="center">
<img src="https://imgur.com/U3mes8r.png" width="300" alt="Mobile screenshot">
</p>
| | | |
| :------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------: |
| <img width="1604" alt="screen shot 2017-08-07 at 12 18 15 pm" src="https://imgur.com/Zcm98H3.png"> | <img width="1604" alt="screen shot 2017-08-07 at 12 18 15 pm" src="https://imgur.com/OujrH0f.png"> | <img width="1604" alt="screen shot 2017-08-07 at 12 18 15 pm" src="https://imgur.com/OkukwYY.png"> |
| <img width="1604" alt="screen shot 2017-015 pm" src="https://imgur.com/QYpNCXs.png"> | <img width="1604" alt="screen shot 2017-08-07 at 12 18 15 pm" src="https://imgur.com/6j5wxhl.png"> | <img width="1604" alt="screen shot 2017-08-07 at 12 18 15 pm" src="https://imgur.com/jnzDKjW.png"> |
<p align="center">
<a href="https://imgur.com/U3mes8r.png"><img src="https://imgur.com/U3mes8r.png" title="Desktop" width="300" alt="Mobile" >
</a>
</p>
## Installation
- ### manual
### manual
- Visit the releases page!
- Visit the releases page!
- Download the latest release.zip
- Unzip this folder
- Point your Alternate WEBUI location to the 'vuetorrent' folder
- Download the latest release.zip
### 'automatic'
- Unzip this folder
- Point your Alternate WEBUI location to the 'vuetorrent' folder
- ### 'automatic'
- head over to the 'latest_release' branch
- clone it
- pull every once in a while
- head over to the 'latest_release' branch
- clone it
- `git clone --single-branch --branch latest-release https://github.com/WDaan/VueTorrent.git`
- pull every once in a while
## Development
- clone the repo
- npm install
- npm run serve
- docker-compose up -d (to start qbittorrent docker)
- clone the repo
- npm install
- npm run serve
- docker-compose up -d (to start qbittorrent docker)
## Features
- viewing sessions status ( down / upload speed, session uploaded / downloaded )
- adding / removing / pausing / resuming / renaming torrents
- selectively downloading torrents
- filtering powered by Fuse.js!
- mobile friendly! (can be installed as a PWA)
- torrent info / trackers / peers / content
- searching for new torrents straight from the WEBUI!
- changing the most common settings
- tag & category support
- viewing sessions status ( down / upload speed, session uploaded / downloaded )
- adding / removing / pausing / resuming / renaming torrents
- selectively downloading torrents
- filtering powered by Fuse.js!
- mobile friendly! (can be installed as a PWA)
- torrent info / trackers / peers / content
- searching for new torrents straight from the WEBUI!
- changing the most common settings
- tag & category support
- Keyboard shortcuts!
- select all torrents with ctrl+A
- delete selected with delete button
- select with ctrl+click or from right-click-menu (regular tap on mobile still works)
- shift + click to select from one torrent until another
- select all torrents with ctrl+A
- delete selected with delete button
- select with ctrl+click or from right-click-menu (regular tap on mobile still works)
- shift + click to select from one torrent until another
- Which torrent properties are shown is configurable in the dashboard (for both busy and completed torrents)
- works on QBittorrent V4.2 and later
- works on QBittorrent V4.2 and later
## Contributing
@ -87,14 +65,12 @@ I'll gladly accept help/pull requests & advice!
## Support
* Open up an issue 😛
- Open up an issue 😛
[<img src="https://cdn.buymeacoffee.com/buttons/lato-blue.png" alt="drawing" width="180"/>](https://www.buymeacoffee.com/wdaan 'Buy me a coffee')
<a href="https://www.buymeacoffee.com/wdaan"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=wdaan&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"></a>
## Credits
- Dashboard design heavily inspired by: '[Net Ninja - Vuetify](https://github.com/iamshaunjp/vuetify-playlist)'.
- This repo '[CzBiX qb-web ](https://github.com/CzBiX/qb-web)'
- Muertocaloh's [fork](https://github.com/muertocaloh/VueTorrent)

View file

@ -1,6 +1,6 @@
{
"name": "vuetorrent",
"version": "0.4.3",
"version": "0.4.4",
"private": true,
"scripts": {
"start" : "npm run serve",

View file

@ -45,6 +45,9 @@
.sideborder.metadata {
border-left: 4px solid #{$torrent-metadata};
}
.sideborder.moving {
border-left: 4px solid #{$torrent-moving};
}
.v-chip.done {
background: #{$torrent-done} !important;
}
@ -72,6 +75,9 @@
.v-chip.metadata {
background: #{$torrent-metadata} !important;
}
.v-chip.moving {
background: #{$torrent-moving} !important;
}
.noselect {
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
@ -100,3 +106,14 @@
overflow: hidden;
text-overflow: ellipsis;
}
body {
&::-webkit-scrollbar {
width: 6px;
}
&::-webkit-scrollbar-thumb {
background: #E2E8F0;
border-radius: 20px;
}
}

View file

@ -131,9 +131,12 @@ export default {
skip_checking: false,
fileInputRules: [
v => {
const result = v.every(f => f.type === 'application/x-bittorrent' )
const result = v.every(f => {
if (f.type) return f.type === 'application/x-bittorrent'
else return /^.*\.torrent$/.test(f.name)
})
return result ? result : 'One or more files is not a valid torrent'
}
}
],
loading: false,
urls: null,

View file

@ -82,6 +82,14 @@
<p class="mb-2">{{ version }}</p>
</v-col>
</v-row>
<v-row dense>
<v-col cols="10" sm="10" md="11">
<p class="subtitle-1">QBittorrent Version:</p>
</v-col>
<v-col cols="2" sm="2" md="1">
<p class="mb-2">{{ Qbitversion }}</p>
</v-col>
</v-row>
</v-container>
</v-form>
</div>
@ -92,11 +100,13 @@
<script>
import { mapState, mapGetters } from 'vuex'
import qbit from '@/services/qbit'
export default {
name: 'General',
data() {
return {
paginationSizes: [5, 15, 30, 50]
paginationSizes: [5, 15, 30, 50],
Qbitversion: 0
}
},
computed: {
@ -161,6 +171,14 @@ export default {
version() {
return this.getAppVersion()
}
},
methods : {
async fetchQbitVersion(){
this.Qbitversion = await qbit.getAppVersion()
}
},
created() {
this.fetchQbitVersion()
}
}
</script>

View file

@ -1,7 +1,7 @@
<template>
<v-card flat>
<perfect-scrollbar>
<v-card-text :style="{ minHeight: phoneLayout ? '' : '75vh'}">
<v-card-text :style="{ minHeight: phoneLayout ? '' : '75vh', maxHeight: '75vh'}">
<v-treeview
v-model="selected"
:items="fileTree"

View file

@ -3,7 +3,7 @@
<perfect-scrollbar>
<v-card-text
style="font-size: 1.1em"
:style="{ minHeight: phoneLayout ? '' : '75vh'}"
:style="{ minHeight: phoneLayout ? '' : '75vh', maxHeight: '75vh'}"
>
<v-simple-table>
<tbody>

View file

@ -6,7 +6,7 @@
:items="peers"
:items-per-page="-1"
:hide-default-footer="true"
:style="{ minHeight: phoneLayout ? '' : '75vh'}"
:style="{ minHeight: phoneLayout ? '' : '75vh', maxHeight: '75vh'}"
>
<template v-slot:item="row">
<tr>

View file

@ -5,7 +5,7 @@
:headers="headers"
:items="trackers"
:hide-default-footer="true"
:style="{ minHeight: phoneLayout ? '' : '75vh'}"
:style="{ minHeight: phoneLayout ? '' : '75vh', maxHeight: '75vh'}"
>
<template v-slot:item="row">
<tr>

View file

@ -62,7 +62,7 @@ export default {
{ value: 'stalled', name: 'Stalled' },
{ value: 'stalled_uploading', name: 'Stalled Uploading' },
{ value: 'stalled_downloading', name: 'Stalled Downloading' },
{ value: 'errored', name: 'Erorred' }
{ value: 'errored', name: 'Errored' }
],
selectedState: { value: 'all', name: 'All' },
selectedCategory: null

View file

@ -25,11 +25,10 @@
<v-navigation-drawer
app
v-model="drawer"
class="primary"
class="primary drawer"
style="position: fixed; height: 100%"
disable-resize-watcher
>
<!--current download speeds -->
<v-flex class="mt-3" v-if="status">
<CurrentSpeed
v-if="webuiSettings.showCurrentSpeed"
@ -105,3 +104,16 @@ export default {
}
}
</script>
<style lang="scss">
#app > div > nav > nav > div.v-navigation-drawer__content {
height: 95%;
&::-webkit-scrollbar {
width: 6px;
}
&::-webkit-scrollbar-thumb {
background: #56718c;
border-radius: 20px;
}
}
</style>

View file

@ -47,8 +47,9 @@ export default class Torrent {
case 'checkingDL':
case 'checkingUP':
case 'checkingResumeData':
case 'moving':
return 'Checking'
case 'moving':
return 'Moving'
case 'unknown':
case 'missingFiles':
return 'Fail'

View file

@ -12,6 +12,7 @@ class Qbit {
getAppVersion() {
return this.axios.get('/app/version')
.then(res => res.data)
}
getApiVersion() {

View file

@ -7,6 +7,7 @@ $torrent-seeding: #26a69a;
$torrent-checking: #ff7043;
$torrent-stalled: #81c784;
$torrent-metadata: #7e57c2;
$torrent-moving: #ffaa2c;
:export {
torrent-done-color: $torrent-done;
@ -18,4 +19,5 @@ $torrent-metadata: #7e57c2;
torrent-checking-color: $torrent-checking;
torrent-stalled-color: $torrent-stalled;
torrent-metadata-color: $torrent-metadata;
torrent-moving-color: $torrent-moving;
}