From 697978bd40d9524f74711d97bee06a8387d99411 Mon Sep 17 00:00:00 2001 From: John Victor Sampaio Date: Mon, 16 Dec 2019 19:52:37 -0300 Subject: [PATCH] Release 0.1.5. Fix no results issue when not selecting an episode number --- CHANGELOG.md | 7 +++++++ nyaacli/cli/__init__.py | 2 +- nyaacli/nyaa_search.py | 22 ++++++++++++++++++---- nyaacli/torrenting.py | 9 +++++---- pyproject.toml | 2 +- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee5da53..d489999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ --- +## 0.1.5 + +- Fix issue where selecting no Episodes when searching barely got any selections +- Add published date next to Episode selection entries + +--- + ## 0.1.4 - Add Windows Support [(b609d2f)](https://github.com/johnvictorfs/nyaa-cli/commit/b609d2f05c0b2bb1a42b9654f380d38ab4219df6) (Closes Issue #10) diff --git a/nyaacli/cli/__init__.py b/nyaacli/cli/__init__.py index 9e5b440..ebb7e48 100644 --- a/nyaacli/cli/__init__.py +++ b/nyaacli/cli/__init__.py @@ -25,7 +25,7 @@ def main(anime: str, episode: int, output: str): \b Example: - \33[92mnyaa \33[36m"Kimetsu no Yaiba" \33[33m19 \33[34m-o "My/Animes/Folder/Kimetsu_No_Yaiba/\033[0m + \33[92mnyaa \33[36m"Kimetsu no Yaiba" \33[33m19 \33[34m-o /home/user/My/Animes/Folder/Kimetsu_No_Yaiba/\033[0m """ torrent_search = search_torrent(anime, episode) diff --git a/nyaacli/nyaa_search.py b/nyaacli/nyaa_search.py index b7617de..424e5c2 100644 --- a/nyaacli/nyaa_search.py +++ b/nyaacli/nyaa_search.py @@ -2,6 +2,8 @@ from urllib import request from typing import Optional, List, Tuple from dataclasses import dataclass +from datetime import datetime +from time import mktime import os import feedparser @@ -45,6 +47,7 @@ class Entry: seeders: Optional[str] size: Optional[str] episode_title: Optional[str] + date: datetime def search_torrent(search: str, episode: Optional[int] = None, dub: bool = False) -> Optional[Tuple[str, str]]: @@ -58,12 +61,19 @@ def search_torrent(search: str, episode: Optional[int] = None, dub: bool = False if episode: search_query += f" {episode}".replace(' ', '%20') + search_url = f"https://nyaa.si/rss?c=1_2&q={search_query}&s=seeders&o=desc" + # Parse Nyaa.si rss feed search - feed: feedparser.FeedParserDict = feedparser.parse(f"https://nyaa.si/rss?c=1_2&q={search_query}&s=seeders&o=desc") + feed: feedparser.FeedParserDict = feedparser.parse(search_url) + + if not feed.entries and feed.bozo_exception: + # Malformatted feed + print(red(f"[Error] {str(feed.bozo_exception)}")) + sys.exit(1) entries: List[Entry] = [] - for entry in feed['entries']: + for entry in feed.entries: title = guessit(entry['title']) if not title.get('screen_size'): @@ -77,7 +87,7 @@ def search_torrent(search: str, episode: Optional[int] = None, dub: bool = False # Screen size needs to be higher than 480p good_size = int(title.get('screen_size').replace('p', '')) > 480 - if title.get('episode') == episode and title.get('type') == 'episode' and good_size: + if (title.get('episode') == episode or not episode) and title.get('type') == 'episode' and good_size: entries.append(Entry( link=entry['link'], size=entry['nyaa_size'], @@ -93,7 +103,8 @@ def search_torrent(search: str, episode: Optional[int] = None, dub: bool = False other=title.get('other'), release_group=title.get('release_group'), screen_size=title.get('screen_size'), - alternative_title=title.get('alternative_title') + alternative_title=title.get('alternative_title'), + date=datetime.fromtimestamp(mktime(entry.get('published_parsed'))) )) if not entries: @@ -141,6 +152,9 @@ def search_torrent(search: str, episode: Optional[int] = None, dub: bool = False if entry.size: entry_title += f" - {entry.size}" + if entry.date: + entry_title += f" ({entry.date.strftime('%d/%m/%y')})" + entry.display_title = entry_title choices = [{'name': entry.display_title, 'value': index} for index, entry in enumerate(entries[:5])] diff --git a/nyaacli/torrenting.py b/nyaacli/torrenting.py index 9a11a4c..2ee132b 100644 --- a/nyaacli/torrenting.py +++ b/nyaacli/torrenting.py @@ -31,10 +31,11 @@ def download_torrent(filename: str, result_filename: str = None, show_progress: progress = green(f"{status.progress * 100:.2f}%") download_rate = green(f"{status.download_rate / 1000:.1f} kB/s") - sys.stdout.write( - f'\râ—‰ {green(str(status.state).title())} - {progress} ' + print( + f'â—‰ {green(str(status.state).title())} - {progress} ' f'(Download: {download_rate} - Upload: {status.upload_rate / 1000:.1f} kB/s - ' - f'Peers: {status.num_peers}) ' + f'Peers: {status.num_peers}) ', + end='\r' ) alerts = session.pop_alerts() @@ -42,7 +43,7 @@ def download_torrent(filename: str, result_filename: str = None, show_progress: alert: libtorrent.alert for alert in alerts: if alert.category() & libtorrent.alert.category_t.error_notification: - sys.stdout.write(f"\r{red('[Alert]')} {alert} ") + sys.stdout.write(f"{red('[Alert]')} {alert} \r") sys.stdout.flush() diff --git a/pyproject.toml b/pyproject.toml index 7719b0f..8cbf924 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nyaacli" -version = "0.1.4" +version = "0.1.5" description = "A CLI for downloading Anime from https://nyaa.si" authors = ["John Victor "] license = "MIT"