Skip to main content

Get nicovideo's video metadata.

Project description

nicovideo.py

What's this

ニコニコ動画に投稿された動画の情報を取得するライブラリです。動画をダウンロードすることはできません。

使い方

初期設定

Python3を使える環境を作り、こんな感じにインストールしてください。

python3 -m pip install nicovideo.py

情報取得

このようにすると、動画やユーザーの情報を取得できます。

import nicovideo

# 動画: sm9(新・豪血寺一族 -煩悩解放 - レッツゴー!陰陽師)
sm9 = nicovideo.Video.get_metadata("sm9")
print(f"タイトル: {sm9.title}")
print(f"再生数: {sm9.counts.views}")

# ユーザー: user/9003560(くりたしげたか)
kurita = nicovideo.User.get_metadata(9003560)
print(f"ニックネーム: {kurita.nickname}")
print(f"ユーザーレベル: {kurita.user_level}")

クラス・関数やその返り値など

凡例:
class クラス名(初期化時の引数: 型ヒント = デフォルト値, ...)
def 関数名(引数: 型ヒント = デフォルト値, ...) -> 返り値型ヒント

class Video()

動画のクラスです。

(classmethod) def Video.get_metadata(videoid: str, *, use_cache: bool = False) -> Video.Metadata

動画のメタデータを取得するメソッドです。

class Video.Metadata(...)

動画のメタデータを格納するクラスです。Video.get_metadata()の返り値です。

インスタンス変数一覧:

videoid    : str                             = 動画ID
title      : str                             = 動画タイトル
description: str                             = 動画概要
owner      : Video.Metadata.User             = 投稿者
counts     : Video.Metadata.Counts           = 各種カウンター
duration   : int                             = 動画長(秒)
postdate   : datetime.datetime               = 投稿日時
genre      : Optional[Video.Metadata.Genre]  = ジャンル
tags       : list[Video.Metadata.Tag]        = タグ一覧
ranking    : Video.Metadata.Ranking          = ランキングデータ
series     : Optional[Video.Metadata.Series] = シリーズ
thumbnail  : Video.Metadata.Thumbnail        = サムネイル
url        : str                             = 視聴URL
rawdict    : dict                            = サーバーから取得した加工前生データ(デバッグ用)
def Video.Metadata.refresh() -> None

自分自身を更新する関数です。

class Video.Metadata.User(...)

ユーザーのクラスです。投稿者などを表します。(User.Metadataクラスの簡易版です。)

インスタンス変数一覧:

nickname: str = ユーザーニックネーム
userid  : int = ユーザーID
def Video.Metadata.User.get_metadata() -> User.Metadata

Video.Metadata.UserインスタンスをUser.Metadataインスタンスに変換します。

class Video.Metadata.Counts(...)

各種カウンターのクラスです。再生数などのカウンターを表します。

インスタンス変数一覧:

comments: int = コメント数
likes   : int = いいね!数
mylists : int = マイリスト数
views   : int = 再生数
class Video.Metadata.Genre(...)

ジャンルのクラスです。

インスタンス変数一覧:

label: str = ジャンル名
key  : str = ジャンルの内部識別キー
class Video.Metadata.Tag(...)

タグのクラスです。

インスタンス変数一覧:

name  : str  = タグ名
locked: bool = タグロック
class Video.Metadata.Ranking(...)

ランキングのクラスです。

インスタンス変数一覧:

genreranking: Optional[Video.Metadata.Ranking.Genre] = ジャンルのランキング情報
tagrankings : list[Video.Metadata.Ranking.Tag]       = タグ別のランキング情報
class Video.Metadata.Ranking.Genre(...)

ジャンル別ランキングを格納するクラスです。

インスタンス変数一覧:

genre: Video.Metadata.Genre = ジャンル
rank : int                  = ランキング最高順位
time : datetime.datetime    = 順位獲得日時
class Video.Metadata.Ranking.Tag(...)

タグ別ランキングを格納するクラスです。

インスタンス変数一覧:

tag : Video.Metadata.Tag = タグ
rank: int                = ランキング最高順位
time: datetime.datetime  = 順位獲得日時
class Video.Metadata.Series(...)

シリーズのクラスです。

seriesid   : int             = シリーズID
title      : str             = シリーズタイトル
description: str             = シリーズ概要
thumbnail  : str             = サムネイルURL
prev_video : Optional[Video] = 前動画
next_video : Optional[Video] = 次動画
first_video: Optional[Video] = 最初の動画
class Video.Metadata.Thumbnail(...)

サムネイル画像のクラスです。

small_url : str = サムネイル(小)URL
middle_url: str = サムネイル(中)URL
large_url : str = サムネイル(大)URL
player_url: str = サムネイル(プレイヤー用)URL
ogp_url   : str = サムネイル(OGP表示用)URL

class User()

ユーザーのクラスです。

(classmethod) def User.get_metadata(userid: int, detail: str = "videolist", *, use_cache: bool = False) -> User.Metadata

ユーザーのメタデータを取得するメソッドです。

注意事項: 返り値のUser.Metadataインスタンスの変数の型はdetail引数によって変わります。

detail = "videolist"の場合:
  videolist: list[User.Metadata.Video]
detail = "minimal"  の場合:
  videolist: EllipsisType

class User.Metadata(...)

動画のメタデータを格納するクラスです。User.get_metadata()の返り値です。

インスタンス変数一覧:

nickname          : str                                    = ユーザーニックネーム
userid            : int                                    = ユーザーID
description       : User.Metadata.Description              = ユーザー説明欄(bio)
user_type         : Literal["Premium", "General"]          = ユーザータイプ(Premium/General)
registered_version: str                                    = 登録時バージョン
follow            : int                                    = フォロー数
follower          : int                                    = フォロワー数
user_level        : int                                    = ユーザーレベル
user_exp          : int                                    = ユーザーEXP
sns               : list[User.Metadata.SNS.User]           = SNS連携情報
cover             : Optional[User.Metadata.Cover]          = カバー画像
icon              : User.Metadata.UserIcon                 = アイコン画像
videolist         : list[User.Metadata.Video]|EllipsisType = 投稿動画一覧
rawdict           : dict                                   = サーバーから取得した加工前生データ(デバッグ用)
def User.Metadata.refresh() -> None

自分自身を更新する関数です。

class User.Metadata.Description(...)

ユーザーの説明文(bio)です。

インスタンス変数一覧:

description_html : str = 説明欄(text/html)
description_plain: str = 説明欄(text/plain)
class User.Metadata.SNS(...)

ユーザーのプロフィールに載ってるSNSについてのクラスです。

class User.Metadata.SNS.Service(...)

SNSサービスの名称とかアイコンとかです。

インスタンス変数一覧:

name: str = SNSサービス名称
key : str = SNSのタイプ
icon: str = SNSのロゴ(PNGファイルのURL)
class User.Metadata.SNS.User(...)

SNSユーザーについてのクラスです。

インスタンス変数一覧:

service: User.Metadata.SNS.Service = SNSサービス
name   : str                       = SNSユーザー名
url    : str                       = SNSプロフィールURL
class User.Metadata.Cover(...)

ユーザーのカバー画像についてのクラスです。

インスタンス変数一覧:

ogp: str = OGP用カバー画像URL
pc : str = PCサイズカバー画像URL
sp : str = SP(スマートフォン)サイズカバー画像
class User.Metadata.UserIcon(...)

ユーザーアイコンについてのクラスです。

インスタンス変数一覧:

small: str = ユーザーアイコン(小)URL
large: str = ユーザーアイコン(大)URL
class User.Metadata.Video(...)

動画のクラスです。投稿動画などを表します。(Video.Metadataクラスの簡易版です。)

インスタンス変数一覧:

videoid : str
title   : str
owner   : Video.Metadata.User  # User.Metadataではない
counts  : Video.Metadata.Counts
duration: int
postdate: datetime.datetime
series  : Video.Metadata.Series
def User.Metadata.Video.get_metadata() -> Video.Metadata

User.Metadata.VideoインスタンスをVideo.Metadataインスタンスに変換します。

License

適用ライセンス: LGPL 3.0
Copyright © 2023 okaits#7534

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nicovideo.py-3.1.2.tar.gz (12.2 kB view hashes)

Uploaded Source

Built Distribution

nicovideo.py-3.1.2-py3-none-any.whl (10.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page