→コード: v2.2.5 ツリーの取得が逆順になっていたのを修正。Nitter上でtwitterのリンクがtwitter.comに直らないことがあるのを修正
>Fet-Fe (v2.2.4 Nitter上のinstagramのリンクを処理) |
>Fet-Fe (→コード: v2.2.5 ツリーの取得が逆順になっていたのを修正。Nitter上でtwitterのリンクがtwitter.comに直らないことがあるのを修正) |
||
6行目: | 6行目: | ||
''' | ''' | ||
ver2.2. | ver2.2.5 2023/1/23恒心 | ||
当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | 当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | ||
77行目: | 77行目: | ||
##記事の文章に使うのはクリアネット | ##記事の文章に使うのはクリアネット | ||
##末尾にスラッシュ必須 | ##末尾にスラッシュ必須 | ||
ARCHIVE_TODAY_STANDARD: Final[str] = 'https://archive. | ARCHIVE_TODAY_STANDARD: Final[str] = 'https://archive.vn/' | ||
##twitterのURL | ##twitterのURL | ||
478行目: | 478行目: | ||
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するとツイートの順番が逆転するので、順番通りに取得するよう処理 | |||
def _get_timeline_items(self, soup: BeautifulSoup) -> list[bs4.element.Tag]: | |||
timeline_item_list: list[bs4.element.Tag] = [] | |||
for item_or_list in soup.select('.timeline > .timeline-item, .timeline > .thread-line'): | |||
if 'thread-line' in item_or_list.attrs['class']: | |||
for item in reversed(item_or_list.select('.timeline-item')): | |||
timeline_item_list.append(item) | |||
else: | |||
timeline_item_list.append(item_or_list) | |||
return timeline_item_list | |||
#ページからツイート本文をself._txt_dataに収めていく | #ページからツイート本文をself._txt_dataに収めていく | ||
def get_tweet(self) -> None | NoReturn: | def get_tweet(self) -> None | NoReturn: | ||
soup: Final[BeautifulSoup] = BeautifulSoup(self._page.text, 'html.parser') ##beautifulsoupでレスポンス解析 | soup: Final[BeautifulSoup] = BeautifulSoup(self._page.text, 'html.parser') ##beautifulsoupでレスポンス解析 | ||
tweets: Final[bs4.element. | tweets: Final[list[bs4.element.Tag]] = self._get_timeline_items(soup) ##一ツイートのブロックごとにリストで取得 | ||
for tweet in tweets: ##一ツイート毎に処理 | for tweet in tweets: ##一ツイート毎に処理 | ||
if tweet.a.text == self.NEWEST: ##Load Newestのボタンは処理しない | if tweet.a.text == self.NEWEST: ##Load Newestのボタンは処理しない | ||
528行目: | 540行目: | ||
#Nitter上のTwitterへのリンクを直す | #Nitter上のTwitterへのリンクを直す | ||
url_link: str = url.get('href').replace('https' + self.NITTER_INSTANCE[4:], self.TWITTER_URL) | url_link: str = url.get('href').replace('https' + self.NITTER_INSTANCE[4:], self.TWITTER_URL) | ||
url_link = re.sub('\?.*$', '', url_link) | |||
url.replace_with(self._archive_url(url_link, url_link)) ##テンプレートArchiveに変化 | |||
elif url.get('href').startswith('https://nitter.kavin.rocks/'): | |||
#Nitter上のTwitterへのリンクを直す | |||
url_link: str = url.get('href').replace('https://nitter.kavin.rocks/', self.TWITTER_URL) | |||
url_link = re.sub('\?.*$', '', url_link) | url_link = re.sub('\?.*$', '', url_link) | ||
url.replace_with(self._archive_url(url_link, url_link)) ##テンプレートArchiveに変化 | url.replace_with(self._archive_url(url_link, url_link)) ##テンプレートArchiveに変化 |