|
|
@ -388,24 +388,24 @@ class wantedQualities(dict): |
|
|
|
def _generate_wantedlist(self, qualities): |
|
|
|
initial_qualities, upgrade_qualities = Quality.splitQuality(qualities) |
|
|
|
max_initial_quality = max(initial_qualities or [Quality.NONE]) |
|
|
|
min_upgrade_quality = min(upgrade_qualities or [1 << 16]) |
|
|
|
self[qualities] = {0: {self.bothlists: False, self.wantedlist: initial_qualities, self.upgradelist: False}} |
|
|
|
for q in Quality.qualityStrings: |
|
|
|
if 0 >= q: |
|
|
|
continue |
|
|
|
wanted = [i for i in upgrade_qualities if q < i] |
|
|
|
if q not in upgrade_qualities and q in initial_qualities: |
|
|
|
# quality is only in initial_qualities |
|
|
|
self[qualities][q] = {self.bothlists: False, self.wantedlist: wanted, self.upgradelist: False} |
|
|
|
elif q in upgrade_qualities and q in initial_qualities: |
|
|
|
# quality is in initial_qualities and upgrade_qualities |
|
|
|
self[qualities][q] = {self.bothlists: True, self.wantedlist: wanted, self.upgradelist: True} |
|
|
|
elif q in upgrade_qualities: |
|
|
|
# quality is only in upgrade_qualities |
|
|
|
self[qualities][q] = {self.bothlists: False, self.wantedlist: wanted, self.upgradelist: True} |
|
|
|
else: |
|
|
|
# quality is not in any selected quality for the show |
|
|
|
self[qualities][q] = {self.bothlists: False, self.wantedlist: wanted, |
|
|
|
self.upgradelist: (q >= max_initial_quality) and any(upgrade_qualities)} |
|
|
|
if 0 < q: |
|
|
|
self[qualities][q] = {self.wantedlist: [i for i in upgrade_qualities if q < i], self.upgradelist: False} |
|
|
|
if q not in upgrade_qualities and q in initial_qualities: |
|
|
|
# quality is only in initial_qualities |
|
|
|
w = {self.bothlists: False} |
|
|
|
elif q in upgrade_qualities and q in initial_qualities: |
|
|
|
# quality is in initial_qualities and upgrade_qualities |
|
|
|
w = {self.bothlists: True, self.upgradelist: True} |
|
|
|
elif q in upgrade_qualities: |
|
|
|
# quality is only in upgrade_qualities |
|
|
|
w = {self.bothlists: False, self.upgradelist: True} |
|
|
|
else: |
|
|
|
# quality is not in any selected quality for the show (known as "unwanted") |
|
|
|
w = {self.bothlists: max_initial_quality >= q >= min_upgrade_quality} |
|
|
|
self[qualities][q].update(w) |
|
|
|
|
|
|
|
def __getitem__(self, k): |
|
|
|
if k not in self: |
|
|
@ -418,13 +418,14 @@ class wantedQualities(dict): |
|
|
|
return super(wantedQualities, self).get(k, *args, **kwargs) |
|
|
|
|
|
|
|
def get_wantedlist(self, qualities, upgradeonce, quality, status, unaired=False, manual=False): |
|
|
|
if not manual and status in [ARCHIVED, IGNORED, SKIPPED] + ([UNAIRED], [])[unaired]: |
|
|
|
return [] |
|
|
|
if upgradeonce: |
|
|
|
if status == SNATCHED_BEST or \ |
|
|
|
(not self[qualities][quality][self.bothlists] and self[qualities][quality][self.upgradelist] and |
|
|
|
status in (DOWNLOADED, SNATCHED, SNATCHED_BEST, SNATCHED_PROPER)): |
|
|
|
if not manual: |
|
|
|
if status in [ARCHIVED, IGNORED, SKIPPED] + ([UNAIRED], [])[unaired]: |
|
|
|
return [] |
|
|
|
if upgradeonce: |
|
|
|
if status == SNATCHED_BEST or \ |
|
|
|
(not self[qualities][quality][self.bothlists] and self[qualities][quality][self.upgradelist] and |
|
|
|
status in (DOWNLOADED, SNATCHED, SNATCHED_BEST, SNATCHED_PROPER)): |
|
|
|
return [] |
|
|
|
return self[qualities][quality][self.wantedlist] |
|
|
|
|
|
|
|
|
|
|
|