* Fixes #388

* Bump docker/setup-buildx-action from 2 to 3

Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump docker/login-action from 2 to 3

Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump docker/build-push-action from 4 to 5

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump gitpython from 3.1.35 to 3.1.36

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.35 to 3.1.36.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.35...3.1.36)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/reorder-python-imports: v3.10.0 → v3.11.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.11.0)
- [github.com/asottile/pyupgrade: v3.10.1 → v3.11.0](https://github.com/asottile/pyupgrade/compare/v3.10.1...v3.11.0)
- [github.com/psf/black: 23.7.0 → 23.9.1](https://github.com/psf/black/compare/23.7.0...23.9.1)

* Error handling when BHD API doesn't respond

* add BHD specific announce related issues

* handle JSONDecodeError

* Special mapping to leave torrents uncategorized on cat-update (#398)

Special mapping to leave torrents uncategorized on cat-update (closes #395)

* Bump gitpython from 3.1.36 to 3.1.37

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.36 to 3.1.37.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.36...3.1.37)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ruamel-yaml from 0.17.32 to 0.17.33

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.32 to 0.17.33.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* last_active flag for share_limits (#397)

Added a last_active flag for share_limits to resume torrents and avoid cleanup if there was activity in the last X minutes.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#405)

updates:
- [github.com/asottile/reorder-python-imports: v3.10.0 → v3.11.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.11.0)
- [github.com/asottile/pyupgrade: v3.10.1 → v3.13.0](https://github.com/asottile/pyupgrade/compare/v3.10.1...v3.13.0)
- [github.com/psf/black: 23.7.0 → 23.9.1](https://github.com/psf/black/compare/23.7.0...23.9.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* Bump schedule from 1.2.0 to 1.2.1

Bumps [schedule](https://github.com/dbader/schedule) from 1.2.0 to 1.2.1.
- [Changelog](https://github.com/dbader/schedule/blob/master/HISTORY.rst)
- [Commits](https://github.com/dbader/schedule/compare/1.2.0...1.2.1)

---
updated-dependencies:
- dependency-name: schedule
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ruamel-yaml from 0.17.33 to 0.17.34

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.33 to 0.17.34.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix exit codes when program fails (#411)

Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* Bump ruamel-yaml from 0.17.34 to 0.17.35

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.34 to 0.17.35.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* [pre-commit.ci] pre-commit autoupdate (#409)

updates:
- [github.com/asottile/reorder-python-imports: v3.10.0 → v3.12.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.12.0)
- [github.com/asottile/pyupgrade: v3.10.1 → v3.14.0](https://github.com/asottile/pyupgrade/compare/v3.10.1...v3.14.0)
- [github.com/psf/black: 23.7.0 → 23.9.1](https://github.com/psf/black/compare/23.7.0...23.9.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* New option cat in trackers (#400)

* New option cat in trackers

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* update config.sample for #200

* add additional script to edit trackers

* clarify remote_dir usage (#417)

* Bump gitpython from 3.1.35 to 3.1.37 (#414)

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.35 to 3.1.37.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.35...3.1.37)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (#413)

updates:
- [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.5.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.5.0)
- [github.com/asottile/reorder-python-imports: v3.10.0 → v3.12.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.12.0)
- [github.com/asottile/pyupgrade: v3.10.1 → v3.15.0](https://github.com/asottile/pyupgrade/compare/v3.10.1...v3.15.0)
- [github.com/psf/black: 23.7.0 → 23.9.1](https://github.com/psf/black/compare/23.7.0...23.9.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: bobokun <12660469+bobokun@users.noreply.github.com>

* 4.0.5

* Fixes #419

* Bump pre-commit from 3.4.0 to 3.5.0

Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump gitpython from 3.1.37 to 3.1.38

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.37 to 3.1.38.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.37...3.1.38)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Remove duplicates from when processing cleanup_dirs (#422)

remove duplicates from cleanup_dirs

* Bump gitpython from 3.1.38 to 3.1.40

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.38 to 3.1.40.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.38...3.1.40)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ruamel-yaml from 0.17.35 to 0.17.39

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.35 to 0.17.39.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fixes #426

* Bump qbittorrent-api from 2023.9.53 to 2023.10.54

Bumps [qbittorrent-api](https://github.com/rmartin16/qbittorrent-api) from 2023.9.53 to 2023.10.54.
- [Release notes](https://github.com/rmartin16/qbittorrent-api/releases)
- [Changelog](https://github.com/rmartin16/qbittorrent-api/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rmartin16/qbittorrent-api/compare/v2023.9.53...v2023.10.54)

---
updated-dependencies:
- dependency-name: qbittorrent-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ruamel-yaml from 0.17.39 to 0.17.40

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.39 to 0.17.40.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump ruamel-yaml from 0.17.40 to 0.18.0

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.17.40 to 0.18.0.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fixes #429

* Fixes bug in edit_tracker

* Bump ruamel-yaml from 0.18.0 to 0.18.2

Bumps [ruamel-yaml](https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree) from 0.18.0 to 0.18.2.

---
updated-dependencies:
- dependency-name: ruamel-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* 4.0.6

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Esteban Thilliez <77675611+estebanthi@users.noreply.github.com>
Co-authored-by: Fabricio Silva <hi@fabricio.dev>
Co-authored-by: bakerboy448 <55419169+bakerboy448@users.noreply.github.com>
Co-authored-by: garypiner <36236331+garypiner@users.noreply.github.com>
This commit is contained in:
bobokun 2023-10-27 12:53:07 -04:00 committed by GitHub
parent db8b5d55d7
commit 5061883b1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 31 additions and 45 deletions

View file

@ -11,7 +11,7 @@ repos:
- id: debug-statements
- id: requirements-txt-fixer
- id: check-added-large-files
- id: check-byte-order-marker
- id: fix-byte-order-marker
- id: fix-encoding-pragma
args: [--remove]
- id: pretty-format-json
@ -45,7 +45,7 @@ repos:
hooks:
- id: black
language_version: python3
args: [--line-length, '130', --preview]
args: [--line-length, '130']
- repo: https://github.com/PyCQA/flake8
rev: 6.1.0
hooks:

View file

@ -1,19 +1,14 @@
# Requirements Updated
- GitPython==3.1.37
- ruamel.yaml==0.17.35
- schedule==1.2.1
# New Features
- Added a last_active flag for share_limits to resume torrents and avoid cleanup if there was activity in the last X minutes. (Closes #353)
- New cat option in trackers/[tracker] to allow changing category based on tracker URL. (Closes #200)
- Added new script to edit tracker urls (https://github.com/StuffAnThings/qbit_manage/commit/9290d2c958ea733d22cb3c98d30bab7037997f1d)
- GitPython==3.1.40
- qbittorrent-api==2023.10.54
- ruamel.yaml==0.18.2
# Bug Fixes
- Fixes [#388](https://github.com/StuffAnThings/qbit_manage/issues/388)
- Fixes handling BHD API announce related issues
- Special mapping to leave torrents uncategorized on cat-update (closes #395)
- fix exit codes when program fails (#411)
- Fixes #419
- Remove duplicates when cleaning up directories (#422)
- Fixes #426
- Fixes #429
**Full Changelog**: https://github.com/StuffAnThings/qbit_manage/compare/v4.0.4...v4.0.5
**Full Changelog**: https://github.com/StuffAnThings/qbit_manage/compare/v4.0.5...v4.0.6
Special thanks to @estebanthi, @fabricionaweb for their contributions!
Special thanks to @garypiner for their contributions!

View file

@ -1 +1 @@
4.0.5
4.0.6

View file

@ -1,5 +1,4 @@
"""Apprise notification class"""
import time
from modules import util

View file

@ -1,5 +1,4 @@
"""Module for BeyondHD (BHD) tracker."""
from json import JSONDecodeError
from modules import util

View file

@ -1,5 +1,4 @@
"""Config class for qBittorrent-Manage"""
import os
import re
import stat
@ -650,6 +649,7 @@ class Config:
for path, subdirs, files in os.walk(r_path)
for name in files
]
location_files = list(set(location_files)) # remove duplicates
location_files = sorted(location_files)
logger.trace(f"location_files: {location_files}")
if location_files:

View file

@ -379,7 +379,7 @@ class ShareLimits:
return []
if is_tag_in_torrent(LAST_ACTIVE_TAG, torrent.tags):
return []
torrent.set_share_limits(max_ratio, max_seeding_time)
torrent.set_share_limits(ratio_limit=max_ratio, seeding_time_limit=max_seeding_time, inactive_seeding_time_limit=-2)
return body
def has_reached_seed_limit(
@ -413,7 +413,7 @@ class ShareLimits:
)
if not self.config.dry_run:
torrent.add_tags(MIN_SEEDING_TIME_TAG)
torrent.set_share_limits(-1, -1)
torrent.set_share_limits(ratio_limit=-1, seeding_time_limit=-1, inactive_seeding_time_limit=-1)
if resume_torrent:
torrent.resume()
return False
@ -443,7 +443,7 @@ class ShareLimits:
)
if not self.config.dry_run:
torrent.add_tags(MIN_NUM_SEEDS_TAG)
torrent.set_share_limits(-1, -1)
torrent.set_share_limits(ratio_limit=-1, seeding_time_limit=-1, inactive_seeding_time_limit=-1)
if resume_torrent:
torrent.resume()
return True
@ -452,7 +452,7 @@ class ShareLimits:
print_log = []
now = int(time())
inactive_time_minutes = round((now - torrent.last_activity) / 60)
if inactive_time_minutes >= last_active * 60:
if inactive_time_minutes >= last_active:
if is_tag_in_torrent(LAST_ACTIVE_TAG, torrent.tags):
if not self.config.dry_run:
torrent.remove_tags(tags=LAST_ACTIVE_TAG)
@ -463,7 +463,7 @@ class ShareLimits:
print_log += logger.print_line(logger.insert_space(f"Tracker: {tracker}", 8), self.config.loglevel)
print_log += logger.print_line(
logger.insert_space(
f"Min inactive time not met: {timedelta(seconds=inactive_time_minutes)} <="
f"Min inactive time not met: {timedelta(minutes=inactive_time_minutes)} <="
f" {timedelta(minutes=last_active)}. Removing Share Limits so qBittorrent can continue"
" seeding.",
8,
@ -473,7 +473,7 @@ class ShareLimits:
print_log += logger.print_line(logger.insert_space(f"Adding Tag: {LAST_ACTIVE_TAG}", 8), self.config.loglevel)
if not self.config.dry_run:
torrent.add_tags(LAST_ACTIVE_TAG)
torrent.set_share_limits(-1, -1)
torrent.set_share_limits(ratio_limit=-1, seeding_time_limit=-1, inactive_seeding_time_limit=-1)
if resume_torrent:
torrent.resume()
return False
@ -485,8 +485,8 @@ class ShareLimits:
return False
if max_seeding_time >= 0:
seeding_time_limit = max_seeding_time
elif max_seeding_time == -2 and self.global_max_seeding_time_enabled:
seeding_time_limit = self.global_max_seeding_time
elif max_seeding_time == -2 and self.qbt.global_max_seeding_time_enabled:
seeding_time_limit = self.qbt.global_max_seeding_time
else:
return False
if seeding_time_limit:
@ -510,10 +510,10 @@ class ShareLimits:
if torrent.ratio >= max_ratio and _has_reached_min_seeding_time_limit():
body += logger.insert_space(f"Ratio vs Max Ratio: {torrent.ratio:.2f} >= {max_ratio:.2f}", 8)
return body
elif max_ratio == -2 and self.global_max_ratio_enabled and _has_reached_min_seeding_time_limit():
if torrent.ratio >= self.global_max_ratio:
elif max_ratio == -2 and self.qbt.global_max_ratio_enabled and _has_reached_min_seeding_time_limit():
if torrent.ratio >= self.qbt.global_max_ratio:
body += logger.insert_space(
f"Ratio vs Global Max Ratio: {torrent.ratio:.2f} >= {self.global_max_ratio:.2f}", 8
f"Ratio vs Global Max Ratio: {torrent.ratio:.2f} >= {self.qbt.global_max_ratio:.2f}", 8
)
return body
if _has_reached_seeding_time_limit():

View file

@ -1,5 +1,4 @@
"""Logging module"""
import io
import logging
import os

View file

@ -1,5 +1,4 @@
"""Qbittorrent Module"""
import os
import sys

View file

@ -1,5 +1,4 @@
""" Utility functions for qBit Manage. """
import json
import logging
import os

View file

@ -1,5 +1,4 @@
"""Class to handle webhooks."""
import time
from json import JSONDecodeError

View file

@ -432,9 +432,7 @@ def start():
next_run = nxt_run["next_run"]
body = logger.separator(
f"Finished Run\n{os.linesep.join(stats_summary) if len(stats_summary)>0 else ''}"
f"\nRun Time: {run_time}\n{next_run_str if len(next_run_str)>0 else ''}".replace(
"\n\n", "\n"
).rstrip()
f"\nRun Time: {run_time}\n{next_run_str if len(next_run_str)>0 else ''}".replace("\n\n", "\n").rstrip()
)[0]
return next_run, body

View file

@ -1,2 +1,2 @@
flake8==6.1.0
pre-commit==3.4.0
pre-commit==3.5.0

View file

@ -1,7 +1,7 @@
bencodepy==0.9.5
GitPython==3.1.37
qbittorrent-api==2023.9.53
GitPython==3.1.40
qbittorrent-api==2023.10.54
requests==2.31.0
retrying==1.3.4
ruamel.yaml==0.17.35
ruamel.yaml==0.18.2
schedule==1.2.1

View file

@ -4,7 +4,6 @@ You can also allow incomplete torrents to be deleted.
Torrents will be deleted starting with the ones with the most seeds, only torrents with a single hardlink will be deleted.
Only torrents on configured drive path will be deleted. To monitor multiple drives, use multiple copies of this script.
"""
import os
import shutil
import time

View file

@ -36,5 +36,5 @@ if __name__ == "__main__":
if OLD_TRACKER in x.url:
newurl = x.url.replace(OLD_TRACKER, NEW_TRACKER)
print(f"torrent name: {torrent.name}, original url: {x.url}, modified url: {newurl}\n")
torrent.remove_trackers(hash=(torrent.hash), urls=(x.url))
torrent.add_trackers(hash=(torrent.hash), urls=(newurl))
torrent.remove_trackers(urls=x.url)
torrent.add_trackers(urls=newurl)