→コード: v4.2.0 Nitterが使えなくなるので従来のモードをdeprecatedでマーク
>Fet-Fe (→コード: v4.1.16) |
>Fet-Fe (→コード: v4.2.0 Nitterが使えなくなるので従来のモードをdeprecatedでマーク) |
||
11行目: | 11行目: | ||
"""Twitter自動収集スクリプト | """Twitter自動収集スクリプト | ||
ver4. | ver4.2.0 2024/2/16恒心 | ||
当コードは恒心停止してしまった https://rentry.co/7298g | 当コードは恒心停止してしまった https://rentry.co/7298g の降臨ショーツイート自動収集スクリプトの復刻改善版です。 | ||
前開発者との出会いに感謝。 | |||
本スクリプトは `archive.today <https://archive.today>`_ からWikiに未掲載のツイートを収集します。 | |||
Examples: | Examples: | ||
32行目: | 33行目: | ||
``--no-browser`` オプションでTor Browserを使用しないモードに、 | ``--no-browser`` オプションでTor Browserを使用しないモードに、 | ||
``--disable-script`` オプションでTor BrowserのJavaScriptを使用しないモードになります。 | ``--disable-script`` オプションでTor BrowserのJavaScriptを使用しないモードになります。 | ||
``--search-unarchived`` | ``--search-unarchived`` オプションでは、従来の通りNitterからツイートを収集するモードになります(廃止予定)。 | ||
Note: | Note: | ||
95行目: | 95行目: | ||
from selenium.webdriver.support import expected_conditions as ec | from selenium.webdriver.support import expected_conditions as ec | ||
from selenium.webdriver.support.wait import WebDriverWait | from selenium.webdriver.support.wait import WebDriverWait | ||
from typing_extensions import deprecated | |||
961行目: | 962行目: | ||
Nitterからツイートを取得し、Wikiの形式にダンプする。 | Nitterからツイートを取得し、Wikiの形式にダンプする。 | ||
削除されたツイートや編集前のツイートは取得できない。 | 削除されたツイートや編集前のツイートは取得できない。 | ||
Important: | |||
Nitterはサービスを終了しており、いずれすべてのインスタンスが使えなくなる [2]_。 | |||
本クラスを継承した :class:`~ArchiveCrawler` はarchive.todayからツイートを収集するため引き続き利用可能。 | |||
References: | |||
.. [2] Nitter is over - It's been a fun ride. (2024, February 15). | |||
https://nitter.cz | |||
""" | """ | ||
1,851行目: | 1,860行目: | ||
return False | return False | ||
@deprecated('\033[31m' | |||
'Nitterはサービスを終了しており、いずれすべてのインスタンスが使えなくなるナリ。' | |||
'-uオプションをつけてarchive.todayから収集するモードを使ってね(笑)、それはできるよね。' | |||
'See also: https://nitter.cz' | |||
'\033[0m') | |||
def execute(self, krsw: bool = False, use_browser: bool = True, | def execute(self, krsw: bool = False, use_browser: bool = True, | ||
enable_javascript: bool = True) -> None: | enable_javascript: bool = True) -> None: | ||
1,862行目: | 1,876行目: | ||
enable_javascript (bool, optional): SeleniumでJavaScriptを利用する場合は | enable_javascript (bool, optional): SeleniumでJavaScriptを利用する場合は | ||
`True`。 | `True`。 | ||
.. deprecated:: 4.2.0 | |||
Nitterはサービスを終了しており、いずれすべてのインスタンスが使えなくなる [2]_。 | |||
:class:`~ArchiveCrawler` はarchive.todayからツイートを収集するため引き続き利用可能。 | |||
""" | """ | ||
def signal_handler(signum: int, frame: FrameType | None) -> NoReturn: | def signal_handler(signum: int, frame: FrameType | None) -> NoReturn: | ||
2,407行目: | 2,425行目: | ||
def execute(self, krsw: bool = False, use_browser: bool = True, | def execute(self, krsw: bool = False, use_browser: bool = True, | ||
enable_javascript: bool = True) -> None: | enable_javascript: bool = True) -> None: | ||
"""通信が必要な部分のロジック。 | |||
Args: | |||
krsw (bool, optional): `True` の場合、名前が自動で :const:`~CALLINSHOW` になり、 | |||
クエリと終わりにするツイートが自動で無しになる。 | |||
use_browser (bool, optional): `True` ならSeleniumを利用する。 | |||
`False` ならRequestsのみでアクセスする。 | |||
enable_javascript (bool, optional): SeleniumでJavaScriptを利用する場合は | |||
`True`。 | |||
""" | |||
logger.info('Wikiに未掲載のツイートのURLを収集しますを') | logger.info('Wikiに未掲載のツイートのURLを収集しますを') | ||
warnings.warn( | warnings.warn( | ||
2,472行目: | 2,500行目: | ||
'--search-unarchived', | '--search-unarchived', | ||
action='store_true', | action='store_true', | ||
help=(' | help=('指定すると、従来のNitterからツイートを収集するモードになる。廃止予定。')) | ||
args: Final[Namespace] = parser.parse_args() | args: Final[Namespace] = parser.parse_args() | ||
logger.debug('args: ' + str(args)) | logger.debug('args: ' + str(args)) | ||
twitter_archiver: Final[TwitterArchiver] = ( | twitter_archiver: Final[TwitterArchiver] = ( | ||
TwitterArchiver() if args.search_unarchived else ArchiveCrawler() | |||
) | ) | ||
twitter_archiver.execute( | twitter_archiver.execute( |