→コード: v3.0.1 tweets or repliesでは引用元が削除された引用リツイートも拾えるので、引用元が消えていたらその旨を表示する。@メンションに対してリンクをつけるように修正。編集や長いツイートを判定する材料が消えたので機能削除
>Fet-Fe (→コード: Twitterの相次ぐ仕様変更のせいでnitterのsearchが使えなくなっていたので、tweets or repliesから取得するようにとりとり変更。またURLの仕様も変わり、もはや前のスクリプトでは取得ができなくなったので、メジャーバージョンアップ。) |
>Fet-Fe (→コード: v3.0.1 tweets or repliesでは引用元が削除された引用リツイートも拾えるので、引用元が消えていたらその旨を表示する。@メンションに対してリンクをつけるように修正。編集や長いツイートを判定する材料が消えたので機能削除) |
||
6行目: | 6行目: | ||
''' | ''' | ||
ver3.0. | ver3.0.1 2023/4/30恒心 | ||
当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | 当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | ||
448行目: | 448行目: | ||
link = urljoin(self.TWITTER_URL, link) | link = urljoin(self.TWITTER_URL, link) | ||
quote_txt = self._archive_url(link) | quote_txt = self._archive_url(link) | ||
tweet_quote_unavailable: Final[bs4.element.Tag | None] = tweet.select_one('.tweet-body > .quote.unavailable') # 引用リツイートを選択 | |||
if tweet_quote_unavailable is not None: | |||
quote_txt = '(引用元が削除されました)' | |||
return quote_txt | return quote_txt | ||
463行目: | 466行目: | ||
poll_txt += '<br>\n <span style="font-size: small;">' + tweet_poll.select_one('.poll-info').text + '</span>' | poll_txt += '<br>\n <span style="font-size: small;">' + tweet_poll.select_one('.poll-info').text + '</span>' | ||
return poll_txt | return poll_txt | ||
#一ツイートのブロックごとにリストで取得。そのままtimeline-itemクラスをfind_allするとツイートの順番が逆転するので、順番通りに取得するよう処理 | #一ツイートのブロックごとにリストで取得。そのままtimeline-itemクラスをfind_allするとツイートの順番が逆転するので、順番通りに取得するよう処理 | ||
489行目: | 488行目: | ||
if tweet.find(class_='retweet-header') is not None: ##retweet-headerはリツイートを示すので入っていれば処理しない | if tweet.find(class_='retweet-header') is not None: ##retweet-headerはリツイートを示すので入っていれば処理しない | ||
continue | continue | ||
if tweet.find(class_='pinned') is not None: ## | if tweet.find(class_='pinned') is not None: ##pinnedは固定ツイートを示すので入っていれば処理しない | ||
continue | continue | ||
if len(self.query_strs) > 0: # | if len(self.query_strs) > 0: # クエリが指定されている場合、一つでも含まないツイートは処理しない、未テスト | ||
not_match: bool = False | not_match: bool = False | ||
for query_str in query_strs: | for query_str in query_strs: | ||
510行目: | 509行目: | ||
quote_txt: str = self._get_tweet_quote(tweet) ##引用リツイートの場合、元ツイートを追加 | quote_txt: str = self._get_tweet_quote(tweet) ##引用リツイートの場合、元ツイートを追加 | ||
poll_txt: str = self._get_tweet_poll(tweet) ##投票の取得 | poll_txt: str = self._get_tweet_poll(tweet) ##投票の取得 | ||
self._txt_data[0] = '!' + archived_tweet_url + '\n|-\n|\n' \ | self._txt_data[0] = '!' + archived_tweet_url + '\n|-\n|\n' \ | ||
+ '<br>\n'.join(filter(None, [ | + '<br>\n'.join(filter(None, [ | ||
590行目: | 588行目: | ||
else: | else: | ||
url.replace_with(self._archive_url(url.get('href'))) ##テンプレートArchiveに変化 | url.replace_with(self._archive_url(url.get('href'))) ##テンプレートArchiveに変化 | ||
elif url.text.startswith('@'): | |||
url_link: str = urljoin(self.TWITTER_URL, url.get('href')) | |||
url_text: str = url.text | |||
url.replace_with(self._archive_url(url_link, url_text)) ##テンプレートArchiveに変化 | |||
#URLをテンプレートArchiveに変化させる。#がURLに含まれていたら別途処理 | #URLをテンプレートArchiveに変化させる。#がURLに含まれていたら別途処理 | ||
def _archive_url(self, url: Final[str]) -> str: | def _archive_url(self, url: Final[str], text: Final[str|None] = None) -> str: | ||
if '#' in url: | if '#' in url: | ||
main_url, fragment = url.split('#', maxsplit=1) | main_url, fragment = url.split('#', maxsplit=1) | ||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(main_url) + '#' + fragment + '}}' ##テンプレートArchiveの文字列返す | if text is None: | ||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(main_url) + '#' + fragment + '}}' ##テンプレートArchiveの文字列返す | |||
else: | |||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(main_url) + '#' + fragment + + '|3=' + text + '}}' ##テンプレートArchiveの文字列返す | |||
else: | else: | ||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(url) + '}}' ##テンプレートArchiveの文字列返す | if text is None: | ||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(url) + '}}' ##テンプレートArchiveの文字列返す | |||
else: | |||
return '{{Archive|1=' + unquote(url) + '|2=' + self._archive(url) + '|3=' + text + '}}' ##テンプレートArchiveの文字列返す | |||
#URLをテンプレートCallinShowlinkに変化させる | #URLをテンプレートCallinShowlinkに変化させる |