約 3,450,022 件
https://w.atwiki.jp/v-lyrics/pages/328.html
yae/yae Titles in this Wiki Lilachorn-リラホルン Creator Links N/A Related Links N/A Creator Info This creator is a professional lyricist. He/she has provided lyrics for "livetune" since Hatsune Miku was put on the market. Among his/her works are "Lilachorn" and "STROBO NIGHTS." -- (damesukekun) 2009-07-15 13 40 38 Name Add post すべてのコメントを見る Added Modified by damesukekun _
https://w.atwiki.jp/nicoplays/
NicoPlaysへようこそ http //www.nicovideo.jp/watch/sm2405738
https://w.atwiki.jp/nico_player/pages/68.html
このページの概要1.フィルタの状態を確認するための外部ソフトを準備する 2.NicoPlayerをデバッグモードで起動する 3.ファイルを再生する 4.外部ソフトからNicoPlayerのフィルタの状態を表示する 5.NicoPlayerのデバッグモード設定を元に戻す このページの概要 NicoPlayerをデバッグモードで起動すると外部ソフトからNicoPlayerが再生に使用しているフィルタを表示することが出来ます。 これにより不要なフィルタが接続されていないか等、上手く再生できない時に原因の特定に役立ちます。 手順は以下のように行います。 1.フィルタの状態を確認するための外部ソフトを準備する GraphEditもしくはMONOGRAM GraphStudioを使用します。どちらかのソフトをダウンロードして導入して下さい。 2.NicoPlayerをデバッグモードで起動する NicoPlayerがあるフォルダのnicoplayer.iniを開き、DebugMode=0という項目をDebugMode=1に変更します。この状態で起動するとデバッグモードでNicoPlayerを起動できます。 デバッグモードで起動している場合、情報ウィンドウに"[デバッグモード]"を表示されます。 3.ファイルを再生する フィルタの接続状態を確認したいファイルを再生します。 4.外部ソフトからNicoPlayerのフィルタの状態を表示する GraphEditもしくはMONOGRAM GraphStudioを起動し、メニューバー [File]- [Connect to Remote Graph]を選択します。 5.NicoPlayerのデバッグモード設定を元に戻す 2.と反対の手順を行いNicoPlayerのデバッグモード設定を元に戻す。 名前 コメント
https://w.atwiki.jp/nico_player/pages/43.html
概要 編集時の注意 nicoplayer.ini[main] メインウィンドウの設定 [info] 情報ウィンドウ [download] ダウンロードウィンドウ [playlist] プレイリスト(ウィンドウ) [video_info] 動画情報ウィンドウ [select] コメント選択リスト(ウィンドウ) [comment_list] コメントリスト(ウィンドウ) コメント 概要 このページはNicoPlayerの設定が保存されるnicoplayer.iniについての説明です。 このファイルを編集することでのみ設定が変更できる項目は赤色の文字で表示されています。 また、このファイルを削除することでNicoPlayerの設定を初期状態に戻すことが出来ます。 関連情報が上級者向け設定にも記載されているので合わせてご覧下さい。 最近開いたファイルなど一部のデータはsettings.datに保存されます。 なお、表記順は初めてNicoPlayerを起動したに生成されるiniファイルでの順番です。 バージョンアップを繰り返したものは順番が異なりますので注意してください。 編集時の注意 編集はNicoPlayerが起動していない状態で行って下さい。(nicoplayer.iniは主にNicoPlayer起動時に読み込まれ終了時に書き込まれます。起動中にnicoplayer.iniの編集を行ってもNicoPlayerを終了した際に上書きされてしまいます。) また、通常では使用しない値など、想定外の設定することでNicoPlayerが正常に動作しなくなってしまう可能性があります。もし編集をしたことで何か不具合が出てしまった場合はnicoplayer.iniを一度削除することで初期状態に戻すことが出来ます。 nicoplayer.ini [main] メインウィンドウの設定 LastBootVer 最終起動バージョン(アップデート通知用) FirstBoot 初回起動か(ウェルカムメッセージ用・1で表示) Country 標準で利用する国。URLオープン等やダウンロードに影響(jp|tw|es|de) Left ウィンドウの横位置(ピクセル) Top ウィンドウの縦位置(ピクセル) Width ウィンドウの幅(ピクセル) Height ウィンドウの高さ(ピクセル) DebugMode デバッグモード(1で有効) ViewComment コメントを表示するか EnableFilter フィルターを有効にするか FilterFile フィルターファイルリスト(/で区分) ViewCommentLoadWait コメントをロードするまで再生を待つか ViewCommentRect コメントに枠を表示するか ViewCommentNum コメントをいくつまで表示するか ViewCommentAutoLess5m 再生時間5分未満の自動上限コメント表示数 ViewCommentAutoLess10m 再生時間10分未満の自動上限コメント表示数 ViewCommentAutoMore 再生時間10分以上の自動上限コメント表示数 ViewCommentLimit 一画面にViewCommentLimitNum以上のコメントを表示するか ViewCommentLimitNum 一画面に表示するコメント数の上限 ViewPlayList プレイリスト(別ウィンドウ)を表示するか ViewDownloadWindow ダウンロードウィンドウを表示するか ViewVideoInfoWindow 情報ウィンドウを表示するか ViewCommentList コメントリスト(別ウィンドウ)を表示するか MovieSizeFitWindow 動画のサイズをウィンドウにあわせるか MovieSizeAuto 再生開始時にウィンドウを動画のサイズにあわせるか NotSrcCopy 動画表示の色調を反転するか WindowTopmost 常に最前面に表示するか TopmostOnlyPlaying 常に際前面に表示するのを再生中のみにするか Mute 音量をミュート(無音)にするか Volume 音量設定 DefaultAvgTimePerFrame デフォルト平均フレーム時間 MinAvgTimePerFrame 最小平均フレーム時間 MaxAvgTimePerFrame 最大平均フレーム時間 VideoPlayQuality 再生品質 VideoHalfTone 境界を滑らかに表示(動画+コメント描画時) PlayWay 再生方法 CommentAlpha コメントの透過率 SimpleMode シンプルモードか SelectLatestComment 最新のコメントを選択するか AutoAcquireComment コメントの自動更新を行うか AutoAcquireCommentShortSec コメントの短い自動更新間隔(秒)(コメントが見つかった場合の次回更新までの時間。0が設定されていると再生開始時以外でのコメントの更新を行わなくなります。) AutoAcquireCommentLongSec コメントの長い自動更新間隔(秒)(コメントが見つからなかった場合の次回更新までの時間。0が設定されていると再生開始時以外でのコメントの更新を行わなくなります。) LeaveOldComment コメント更新時に古いコメントを残して追記する UpdateSeeking シーク中も表示を追随するか CommentMouseSelect コメントをマウスで選択可能にするか PriorityNewestVideoInfo 最新の動画情報を優先して表示する PriorityHigh ソフトの優先度を上げる CheckMultiBoot 多重起動を防止する NotifyVerup バージョンアップを通知するか LastNotifyUpdate 最終バージョンアップ通知日時 SeekSecond 再生位置をx秒戻す(進める)の秒数設定 OwnerCommentFilename 投稿者コメントファイル名を判別する文字列 BrowserPath NicoPlayerから開くブラウザパス BrowserCommand ブラウザを開く際のコマンド ScreenShotFilenameFormat スクリーンショット保存時の初期ファイル名 UserAgent ネットにアクセスする時の自己紹介みたいなもの PingUrl インターネット接続確認用ping先 CommentFont コメントのフォント MovieIdInitialRegex 対応動画ID(公式サポートまでの暫定設定用)(正規表現) FilenameTitleRegex ファイル名からタイトルを抽出する際の正規表現 NextBootCommandLine 次回起動時に実行するコマンド [info] 情報ウィンドウ Left ウィンドウの横位置(ピクセル) Top ウィンドウの縦位置(ピクセル) Width ウィンドウの幅(ピクセル) Height ウィンドウの高さ(ピクセル) Buffer 情報ウィンドウに表示する情報の表示量(KB) View [download] ダウンロードウィンドウ left top width height Url CheckMovie CheckComment CheckPlayAfterDown CheckAddPlayList ColumnTitle ColumnState ColumnFileSize ColumnPercent ColumnMovieName ColumnType ColumnSavePath ColumnSavePathFLV ColumnSavePathXML ColumnOrderArray SavePath SelectPath LowVideoNotify LowVideoNoDownload DownBGMs CreateFolderEveryVideo WatchClipBoard DeleteDownCompItem EconomyNotDelete DownCompNotifyBeep DownCompNotifyFlash Mail メールアドレス Pass パスワード(暗号化状態) AccessWaitSec ダウンロードする際にあける間隔(秒) GetTitleWaitSec タイトル先読みする際にあける間隔(秒)※0を指定すると先読み動作を停止 ThreadDownProcessMax 同時DL許可数(※現状では変更しても1に制限されます) WatchIncludeWindow クリップボード監視 対象ウィンドウ WatchExcludeWindow クリップボード監視 除外ウィンドウ FileNameFormatMOV 動画ファイル名フォーマット FileNameFormatXML コメントファイル名フォーマット FileNameFormatOwnerXML 投稿者コメントファイル名フォーマット FileNameFormatTXT 動画情報ファイル名フォーマット FilenameFormatIMG サムネイルファイル名フォーマット FoldernameFormat フォルダ名フォーマット TimeOutSecond 動画ダウンロード時のタイムアウト(秒) [playlist] プレイリスト(ウィンドウ) left top width height ListPath MatchCase ColumnWidthFileName ColumnWidthFilePath DirFilter ListAutoSave ListDupDelete ListCheckState [video_info] 動画情報ウィンドウ left top width height BrowserSilent サイレントモード(ダイアログを表示しない)で実行する ReadingWaitSec 読み込み待機時間(秒) HomeUrl Alt+Homeキーで移動するホームページのURL DialogMatchCaption ダイアログ抑制 キャプション(正規表現) DialogMatchText ダイアログ抑制 テキスト(正規表現) [select] コメント選択リスト(ウィンドウ) left top width height [comment_list] コメントリスト(ウィンドウ) left top width height ColumnWidthVideoPos ColumnWidthComment ColumnWidthID ColumnWidthPostTime ColumnWidthNo ColumnWidthCommand ColumnWidthPremium ColumnWidthDelete ColumnOrderArray SortSubItem SortDirection MatchCase AutoScroll コメント 手抜きだがとりあえず。基本的にメニューのログなので、ファイルを直接いじらないと変えられない設定のみに絞った方がいいかな?もしくは文字色を変えるとか - 名無しさん 2007-11-07 00 07 42 "上級者向け設定"の項に集約していくのも良いかもしれませんね。 - 名無しさん 2007-11-11 00 38 46 ファイルを直接編集しないと変えられない項目の色を変えてみました - 名無しさん 2007-11-30 07 49 45 名前
https://w.atwiki.jp/pubgpro/pages/671.html
日本のPUBGアナリスト。 所属チーム チーム 期間 ISG Albatross cresc. 2017-12-19(*1)- 2018-06-13(*2) JUPITER NOVA 2018-09-07 (*3)- 2019-05-30(*4) DetonatioN Gaming White 2019-05-30 (*5)- SNS Twitter 大会戦績 日付 順位 大会 2018-04-26 1位 P-League 1 Season 1 コーチ/アナリスト戦績 日付 順位 チーム 大会 2018-10-07 10位 JUPITER NOVA PUBG JAPAN SERIES 2018 Season 1 Phase 1 Grade 2 2018-11-10 1位 JUPITER NOVA PUBG JAPAN SERIES 2018 Season 1 Phase 2 Grade 2 2019-03-09 9位 JUPITER NOVA PUBG JAPAN SERIES 2019 Season 2 Phase 1 Grade 1 2019-04-06 11位 JUPITER NOVA PUBG JAPAN SERIES 2019 Season 2 Phase 2 Grade 1 2019-04-06 10位 JUPITER NOVA PUBG JAPAN SERIES 2019 Season 2 2019-06-15 1位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 3 Phase 1 Grade 1 2019-07-13 4位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 3 Phase 2 Grade 1 2019-07-13 1位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 3 2019-07-28 10位 DetonatioN Gaming White MET Asia Series PUBG Classic 2019-09-21 12位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 4 Phase 1 Grade 1 2019-10-19 9位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 4 Phase 2 Grade 1 2019-10-19 10位 DetonatioN Gaming White PUBG JAPAN SERIES 2019 Season 4 2019-12-15 1位 DetonatioN Gaming White Predator League 2020 Japan Round 2019-12-29 2位 DetonatioN Gaming White PUBG JAPAN SERIES Winter Invitational 2019 2020-03-14 2位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 5 Phase 1 Grade 1 2020-05-24 8位 DetonatioN Gaming White PUBG Continental Series Charity Showdown - Asia 2020-06-13 8位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 5 Phase 2 Grade 1 2020-06-13 6位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 5 2020-07-19 2位 DetonatioN Gaming White PSJ ALLTIER CHAMPIONSHIP 2020-08-15 3位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 6 Grade 1 Phase 1 2020-10-17 1位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 6 Grade 1 Phase 2 2020-10-17 1位 DetonatioN Gaming White PUBG JAPAN SERIES 2020 Season 6 2020-10-25 6位 DetonatioN Gaming White Seoul Cup OGN Supermatch 2020 2020-11-01 4位 DetonatioN Gaming White PSJ ALLTIER CHAMPIONSHIP #2 2020-11-20 15位 DetonatioN Gaming White PUBG Continental Series 3 Asia 2020-11-28 4位 DetonatioN Gaming White 2020 INCHEON CHALLENGE CUP 2020-12-05 7位 DetonatioN Gaming White Esports Japan-Korea Intercounty Play 2020-12-13 20位 DetonatioN Gaming White AfreecaTV PUBG League 2020 Winter Season 2020-12-20 1位 DetonatioN Gaming White PUBG JAPAN SERIES Winter Invitational 2020
https://w.atwiki.jp/nico_player/pages/64.html
概要 メソッドNicoPlayerからイベントの通知を受けるonChangeMediaState メディアの再生状態が変更された後に呼び出される onReceiveComment 最新コメントを受信した後に呼び出される onChangePlayList プレイリストが変更されたときに呼び出される onPlayCM ユーザーニコ割(@CM)の再生設定がされている場合に呼び出される onNotifyPostComment コメントの投稿が完了したときに呼び出される onNotify NicoPlayerから通知メッセージが送られたときに呼び出される NicoPlayerに処理をさせるexecApp ファイルを実行 addMessage 情報ウィンドウにメッセージを追加 execCmd NicoPlayerにコマンドを処理させる postComment コメントを投稿する readFile ローカルのテキストファイルを読み込む writeFile ローカルのテキストファイルに書き込む NicoPlayerから情報を取得するgetVersion NicoPlayerのバージョンを取得 getSoftDir NicoPlayerがあるフォルダパスを取得 getPlayFile 再生開始時に指定したファイルを取得 getMediaFile 再生中のメディアファイルを取得 getCommentFile 再生中のコメントファイルを取得 getInfoFile 再生中のメディアファイルに対応する動画情報ファイルを取得 getTime 現在の再生時間を取得 getLength メディアの長さを取得 getMediaState メディアの再生状態を取得 getPlayList プレイリストのデータを取得 getNavigateMode ページ移動時の動作を取得 NicoPlayerの情報を設定するメソッドsetNavigateMode ページ移動時の動作を設定 その他getThumbnailSource サムネイルのソースを取得 drawThumbnail サムネイルを表示 encloseString 文字列を""で括る プロパティlib_version ライブラリバージョン debug デバッグモード 概要 メソッドとは動画情報ウィンドウを拡張する際にHTML内のJavaScriptから使用する関数のことです。 メソッドを使用することで次のような内容が可能になります。 NicoPlayerから情報を取得 NicoPlayerに処理をさせる(コマンドの送信) NicoPlayerからイベントの通知を受ける 実体はvar np = new npbase();として作成されているので np.メソッド名() と言う形で使用します。 また、プロパティはnp.プロパティ名として値の取得,設定が行えます。 実体の定義は ./videoinfo/nicoplayer.js にあります。 メソッド メソッド名、引数,戻り値,詳細,使用例など。 それぞれの項にある一番上の内容はメソッド,プロパティの定義です。 NicoPlayerからイベントの通知を受ける onChangeMediaState メディアの再生状態が変更された後に呼び出される onChangeMediaState function( state ) 引数 state 再生状態( "Stopped", "Paused", "Running", "" ) 空文字の場合はファイルが何も再生されていないことを表します onReceiveComment 最新コメントを受信した後に呼び出される onReceiveComment function( view, comment, mylist ) 引数 view 再生数 comment コメント数 mylist マイリスト数 最新コメントが見つからない場合や再生数などの情報に変化がない時でも呼び出されます onChangePlayList プレイリストが変更されたときに呼び出される onChangePlayList function() onPlayCM ユーザーニコ割(@CM)の再生設定がされている場合に呼び出される onPlayCM function( path ) 引数 path ユーザーニコ割ファイルのパス onNotifyPostComment コメントの投稿が完了したときに呼び出される onNotifyPostComment function( result ) 引数 result コメントの投稿結果を表す真理値 onNotify NicoPlayerから通知メッセージが送られたときに呼び出される onNotify function( message ) 引数 message 通知メッセージ このメソッドは内部で使われるため通常使用する必要はありません NicoPlayerに処理をさせる execApp ファイルを実行 execApp function( file, arg ) 引数 file 実行するファイルパス arg ファイルに渡す引数 WinAPIのShellExecute()を使用しファイルを実行します。 argにパスを渡す場合はアプリケーションによって""で括る必要があります。 addMessage 情報ウィンドウにメッセージを追加 addMessage function( msg ) 引数 msg メッセージ execCmd NicoPlayerにコマンドを処理させる execCmd function( cmd ) 引数 cmd コマンド文字列 コマンドは起動オプションと同等の内容が指定できます。 またこのメソッドはNicoPlayerを操作する全てのメソッドから呼び出されます。 postComment コメントを投稿する postComment function( comment, command, vpos, id ) 引数 comment コメント command コマンド vpos 動画上の位置(1/100秒) id 動画ID(省略すると現在再生中の動画が指定されます) コメント投稿の実行結果はnp.onNotifyPostComment()によって通知されます NicoPlayerで現在再生中の時間に投稿する場合はvposの値にMath.floor( np.getTime() / 10 )を使用して下さい。 readFile ローカルのテキストファイルを読み込む readFile function( path ) 引数 path ファイルパス 戻り値 テキストデータ ◆削除検討中のメソッドです writeFile ローカルのテキストファイルに書き込む writeFile function( path, data ) 引数 path ファイルパス data 書き込むテキストデータ ◆削除検討中のメソッドです NicoPlayerから情報を取得する getVersion NicoPlayerのバージョンを取得 getVersion function() 戻り値 バージョンナンバー("x.xx") getSoftDir NicoPlayerがあるフォルダパスを取得 getSoftDir function() 戻り値 ファイルパス getPlayFile 再生開始時に指定したファイルを取得 getPlayFile function() 戻り値 ファイルパス getMediaFile 再生中のメディアファイルを取得 getMediaFile function() 戻り値 ファイルパス getCommentFile 再生中のコメントファイルを取得 getCommentFile function() 戻り値 ファイルパス getInfoFile 再生中のメディアファイルに対応する動画情報ファイルを取得 getInfoFile function() 戻り値 ファイルパス getTime 現在の再生時間を取得 getTime function() 戻り値 再生時間(ms) getLength メディアの長さを取得 getLength function() 戻り値 メディアの長さ(ms) getMediaState メディアの再生状態を取得 getMediaState function() 戻り値 再生状態( "Stopped", "Paused", "Running", "" ) 空文字の場合はファイルが何も再生されていないことを表します getPlayList プレイリストのデータを取得 getPlayList function() 戻り値 プレイリストデータのオブジェクト配列 オブジェクトのプロパティ name ファイル名 path ファイルパス 例: var list = np.getPlayList(); for( var i = 0 ; i list.name.length ; i++ ) { document.write( list.name[i] + " br " ); document.write( list.path[i] + " br " ); } getNavigateMode ページ移動時の動作を取得 getNavigateMode function() 戻り値 戻り値 ページ移動時の動作( "Inside", "Outside" ) "Inside" 動画情報ウィンドウ内で開く "Outside" 外部ブラウザで開く NicoPlayerの情報を設定するメソッド setNavigateMode ページ移動時の動作を設定 setNavigateMode function( mode ) 引数 mode ページ移動時の動作( "Inside", "Outside" ) "Inside" 動画情報ウィンドウ内で開く "Outside" 外部ブラウザで開く その他 getThumbnailSource サムネイルのソースを取得 getThumbnailSource function( idMovie, pathThumbnail ) 引数 idMovie 動画ID pathThumbnail サムネイルパス 戻り値 サムネイルパス drawThumbnail サムネイルを表示 drawThumbnail function( srcThumbnail ) 引数 srcThumbnail サムネイルソース encloseString 文字列を""で括る encloseString function( str ) 引数 str 対象となる文字列 戻り値 ""で括られた文字列 既に""で括られている場合は引数をそのまま返します プロパティ lib_version ライブラリバージョン lib_version "x.xx" debug デバッグモード debug false trueにするとNicoPlayerに渡されたコマンド内容を情報ウィンドウに表示します 例: np.debug = true; var time = np.getMediaState();// ここで情報ウィンドウにコマンド内容が表示される
https://w.atwiki.jp/nico_player/pages/72.html
概要 編集時の注意 settings.dat[RecentOpenFile] 最近開いたファイル [Command] 投稿したコマンド [Comment] 投稿したコメント [ExceptDownload] ダウンロード除外ID 概要 このページはNicoPlayerの設定が保存されるsettings.datについての説明です。 通常の設定はnicoplayer.iniに保存されますが、最近開いたファイルや投稿したコメントやコマンドデータ、ダウンロード除外IDなどの設定はこちらに保存されます。 ファイルはNicoPlayer.exeと同じフォルダにあるarchiveフォルダ内に保存されます。 編集時の注意 編集はNicoPlayerが起動していない状態で行って下さい。 また、通常では使用しない値など、想定外の設定することでNicoPlayerが正常に動作しなくなってしまう可能性があります。もし編集をしたことで何か不具合が出てしまった場合はsettings.datを一度削除することで初期状態に戻すことが出来ます。 settings.dat [RecentOpenFile] 最近開いたファイル 最近開いたファイルの一覧が保存されます(基本的に相対パス) [Command] 投稿したコマンド コメント投稿ウィンドウから投稿したコマンド一覧が保存されます。 [Comment] 投稿したコメント コメント投稿ウィンドウから投稿したコメント一覧が保存されます。 [ExceptDownload] ダウンロード除外ID ダウンロード除外IDの一覧が保存されます。 書式は、 動画ID# 動画タイトル(コメント) という形です。
https://w.atwiki.jp/lpoker/pages/24.html
全日本EPICダイレクトエントリー2位 http //gyazo.com/a354d991906e450d16c8d1fdd483b979 らいつべの紅一点癒しキャラのniconico彼の言葉は 腹減ったぜ 風呂 ネムヒー の三点です NEW ワンワンの散歩 らいつべヘッズアップトーナメントの優勝者 らいつべ杯 Main Event 準優勝 全日本でファイナルテーブルなのに牛歩 1202 niconico86 10/2 5 38 41 腹減った喃 1203 eritan 10/2 5 40 52 いあ、にこにこさんは書き込み巡回BOTで実は中の人は存在しないんだぜ 1204 niconico86 10/2 5 42 30 1203 ( ・ˇдˇ・) 1205 eritan 10/2 5 43 09 1204 すみませんwwww騙せるかなあって思ってwwwwwwwwwww
https://w.atwiki.jp/nico_player/pages/33.html
過去ログヨメ、ということで公式の掲示板の投稿をまとめました。 行頭の[数字]は書き込み番号を、行末の(状態)は最新の状態です。 直接参照するよりも、他のコンテンツのための資料的な位置づけで。 要望 [591]最小化時付属ウィンドウも同様に最小化を(実装済) [596]各ウィンドウのメニューをまとめてダイアログ化を(検討) [599]プレイリストの表示しきれないタイトルをマウスオーバーでポップアップを(実装済) [621]ツリー形式のプレイリストを(関連[699]・検討) [621]マイメモリーを(実装済)[626]コメントファイル(.xml)を読み込めばそれぞれで再生する [644]動画情報の保存を(市場以外実装済・市場は未定か?)[649]市場は手間なので他の項目から優先して [656]リトライ間隔を設定可能に(実装済)NicoPlayer.iniの[AccessWaitSec]で設定可能、詳しくは設定ファイル [692]プレイリストを複数に(実装済)実態はm3uファイル、プレイリストウィンドウへD Dで使い分け可能 [707]flvファイルの上書き時に警告を(検討) [708]ダウンロードリストへ検索・ソート機能を(検討) [708]ダウンロードリストの随時保存を(検討) [720]ダウンロードリストの重複登録を可能に(検討) [732]台湾サーバーへの対応・NicoPlayerの多言語化を(検討) [744]再生/プレイリストウィンドウで「右クリック→外部ツールに送る」の追加を(検討) [752][805]ca~(超アニメロのサーバーの動画)、ax~(avex公式動画)への対応を(検討) [778]動画がカクカクする、ソフトの優先度変更を(実装済) [804]右クリックメニューにこの動画の最新の動画情報をダウンロードなどの項目追加を(検討) 提案 [707]ファイルサイズで削除動画か判定してはどうか(検討)諸所の条件を勘案すると一筋縄ではいかない模様 [774]Wikiを開設してはどうか(実施済)今ここに(-w- 仕様 [676]ダウンロードリストのチェックがついている項目は起動時自動的にダウンロード開始NicoPlayerの主はプレイヤー [702]NicoPlayerはIEベース(ログイン状態が他ブラウザと競合)ブラウザ間でログイン状態を共有する [622]ニコニコ動画のコメントは1度に1000件までしか取得できない日時指定をずらすことで気合を入れれば全取得も可能 [675,520]NicoPlayerはコメントのみIEのプロキシ設定を参照しているmaedaって誰だろう(ι・3・) [647]通信可能状態でコメントサイズが0だとエラーウィンドウに「コメントが見つかりませんでした」と出る [507ほか]flvsplit.dll使用時に再生速度が変更できないflvsplit.dllの仕様。どうしても変更したい場合はflvsplit.dllをアンインストールし、Flash Video decodersを導入。 構想 [597]ダウンロードウィンドウをソフト単体として分離を 不具合 [720]特定の環境で多重起動防止が不能に(TubePlayerの指定から"-multi"を削除することで解決しました) [705]ダウンロード中の回線切断で強制終了(再現確認済・調査) [600]マイメモリーの編集コメントがダウンロードできない(Ver0.36) [698]動画IDが数字のみの場合起動時のタイトル自動取得に失敗(Ver0.36) [691]flvsplit.dllを使ってシークすると高確率で強制終了(再現困難・調査)[697]DirectShowのIMediaSeeking SetPositions()について情報求む [469]特定のファイルで「フィルターが見つかりません」エラーがFLV形式の違い(FlvSplitterはFLV1/FLV4のうち後者のみ対応)、flvsplit.dllのインストールへ [445]をルートとするツリーにフィルタ関連の動作不能について情報あり [606]FirefoxのIEタブを使用しロックしたためNicoPlayerでログイン不能に不具合ではないがトラブルシュートの好例なので [807]動画保存済み時(情報ファイル無し)、動画とコメントと情報にチェックしてダウンロードすると情報が保存されない [792]動画情報ウィンドウが不安定(調査) [743]勝手にクリップボード監視機能が停止(一部再現確認済み・調査)特にExcelなどと同時に使用すると頻発するらしい [765]DLリストに登録したURLが再起動後に消えたDLリストは現在2489件(目安)までしか登録できない コメント 2007/11/01時点で過去ログに落ちていない全ての投稿を参照し概略をまとめました。これ以前は、未実装の要望をサルベージするくらいでしょうか。 - 名無しさん 2007-11-02 02 18 14 Windous7でですが、動画をダウンロードした後、またログインしないといけないのですが、何か設定を間違えてしまったのでしょうか? - 名無しさん 2010-05-18 23 33 22 ver1.28を使用しています。ダウンロードしたファイルのタイトルと動画が違います。ダウンロードされていた動画が消されて上書きされていたり、違うタイトルのファイルに入っています。どうすれば、きちんとダウンロード出来るでしょうか? - 名無しさん 2012-08-17 11 31 01 名前
https://w.atwiki.jp/nico_player/pages/51.html
スクリプトによる機能拡張検索・マイリスト・ランキングをTubePlayerっぽく一覧表示しつつ画像の一覧表示もする ローカルファイルを検索し表示 マイページに登録されているうち、ダウンロード済みアイテムのプレイリストを作成し開く プレイリストウィンドウにプレイリストファイルをドラッグ&ドロップする(Cランタイム使用) コメント スクリプトによる機能拡張 検索・マイリスト・ランキングをTubePlayerっぽく一覧表示しつつ画像の一覧表示もする ソースファイルをメモ帳などに貼り付け、拡張子(.hta)でNicoPlayerのインストールフォルダに保存し実行してください(同じ場所にprototype.jsも置いてください)。もし他の場所に起きたい場合はpathOfDownloadとpathOfNicoPlayerをそれぞれの環境に合わせて編集してください(セパレータはスラッシュ/もしくはダブルバックスラッシュ\\です)。タイトルや再生数などのパラメタを表形式・及び画像で一覧表示します。フィードバックを強化しました。青字はダウンロード済みでクリックすると再生、赤字はまだでクリックすると該当行を強調してダウンロードを開始します。この強調は再表示で解除されます。TitleやPなどヘッダをクリックすると該当項目でソートします(基本降順以後トグル)。 hta application maximizebutton="no" selection="yes" navigable="no" scroll="no" singleinstance="yes"/ html head meta http-equiv="MSThemeCompatible" content="yes" style #display { border 3px double red; color red; text-align center; } #target { width 100%; height 90%; overflow-y scroll; } body { background-color #f7f7f7; } div { border solid 1px #ccc; } table { font-size 9pt; width 100%; } th { background-color black; color white; cursor pointer; } img { width 98%; margin 3px; cursor pointer; } .even { background-color #f7f7f7; cursor pointer; } .odd { background-color #ffffff; cursor pointer; } .omo { background-color #e0ffe0; } .download { color red; } .play { color blue; } .downloaded { color blue; background-color #b7ffb7; } .downloading{ color red; background-color #ffb7b7; } .playing { color blue; background-color #b7b7ff; } .activet { background-color #ccc; } /style script type="text/javascript" src="prototype.js" /script script type="text/javascript" var pathOfDownload = ""; // ダウンロードパス(任意) var pathOfNicoPlayer = ""; // NicoPlayerインストールパス(任意) var width = 800, height = 800; var lastSortKey = "", download = {}; var fileTemplate = "#{title}(#{name}).flv"; var $_ = function( target, key ) { return $A( target.getElementsByTagName( key ) ); } window.onload = function() { resizeTo( width, height ); var display = document.getElementById( "display" ); try { Prototype } catch( e ) { display.innerHTML = "prototype.jsが見つかりません。 a href= http //www.prototypejs.org/ " + "こちら /a よりダウンロードして同じフォルダにおいてください。"; return; } if( !pathOfNicoPlayer ) { unescape( window.location ).match( /file \/\/\/(.+)\// ); pathOfNicoPlayer = RegExp.$1; } if( !ini.load( pathOfNicoPlayer + "/nicoplayer.ini" ) ) { display.innerHTML = "NicoPlayerが見つかりません。同じフォルダにおいてください。"; return; } if( !pathOfDownload ) { pathOfDownload = ini.download.SavePath; } display.innerHTML = "起動中です。しばらくお待ちください。"; movies.load( pathOfDownload ); Element.hide( "display" ); resizeTo( width, height ); setInterval( "interval();", 5000 ); } // 周期的(5000ms)にダウンロードリストを走査 interval = function() { for( name in download ) { if( movies.exist( name ) ) { movies[name].className = "downloaded"; var target = $( name ); if( target ) { with( Element ) { target.className = target.className.replace( /downloading/g, "" ); target.className += " downloaded"; } } delete download[name]; } } } movies = { init function() { init( this, "^(init|load|exist)$" ); }, load function( path ) { this.init(); var fs = new ActiveXObject( "Scripting.FileSystemObject" ); var files = new Enumerator( fs.GetFolder( path ).Files ); while( !files.atEnd() ) { if( files.item().Name.match( /((sm|ax)\d+).*\.flv$/ ) ) { this[RegExp.$1] = { path files.item().Path, exist true, className "play" }; } files.moveNext(); } }, exist function( name ) { var fs = new ActiveXObject( "Scripting.FileSystemObject" ); if( fs.FileExists( this[name].path ) ) { this[name].exist = true; return true; } } } init = function( node, mask ) { for( var key in node ) { if( !RegExp( mask, "" ).test( key ) ) { delete node[key]; } } } // nicoplayer.iniが対象(一般的なiniファイルにも有効) ini = { // 読み込み済み項目があれば削除(操作プロパティinit/loadを除く) init function() { init( this, "^(init|load)$" ); }, // iniファイルのパスを引数に取りini以下にセクションと値の組を展開 load function( path ) { this.init(); try { var file = ( new ActiveXObject( "Scripting.FileSystemObject" ) ).OpenTextFile( path ); } catch ( e ) { return; } var buffer, section; while( !file.AtEndOfLine ) { var line = file.ReadLine(); // セクション取得 if( line.match( /^\[(.+)\]$/ ) ) { var newSection = RegExp.$1; if( section !section.match( /^(init|load)$/ ) ) { this[section] = buffer; } buffer = {}; section = newSection; } // 設定値取得 if( buffer line.match( /^([^=]+)=(.*)$/ ) ) { buffer[RegExp.$1] = RegExp.$2; } } file.Close(); return this; } } list = { list [], index -1, load function( newlist ) { if( 0 = this.index ) { this.list = this.list.slice( 0, this.index + 1 ); } this.list.push( newlist ); this.index++; }, add function( addlist ) { ( !this.list[this.index] ) ? ( this.load( addlist ) ) ( this.list[this.index] = this.list[this.index].concat( addlist ) ); }, reverse function() { if( !this.list[this.index] ) { return; } this.list[this.index] = this.list[this.index].reverse(); }, back function() { if( 0 this.index ) { this.index--; } }, forward function() { if( this.index this.list.length - 1 ) { this.index++; } }, active function() { return this.list[this.index]; }, sort function( key, order ) { if( !this.list[this.index] ) { return; } if( key == lastSortKey ) { this.reverse(); } else { this.list[this.index] = this.list[this.index].sortBy( function( items ) { var value = items[key] + ""; if( key == "title" ) { return value; } else { value = value.gsub( "[^0-9]", "" ) - 0; } return ( order == "desc" ) ? value -value; } ); lastSortKey = key; } } } EscapeUTF8=function(str){ return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ var c=s.charCodeAt(0); return (c 16?"%0"+c.toString(16) c 128?"%"+c.toString(16) c 2048?"%"+(c 6|192).toString(16)+"%"+(c 63|128).toString(16) "%"+(c 12|224).toString(16)+"%"+(c 6 63|128).toString(16)+"%" +(c 63|128).toString(16)).toUpperCase() }) }; search = function() { list.load( [] ); lastSortKey = ""; this.index = 0; this.timer = setInterval( "search.exec();", 1000 ); this.request = function() { if( 3 = ++this.index ){ clearInterval( this.timer ); search.instance = null; } var key = EscapeUTF8( $F( "keyword" ) ); var option = $( "sort" ).value + " page=" + this.index; var url = "http //www.nicovideo.jp/search/" + key + "?" + option; new Ajax.Request( url, { method "get", onSuccess function( response ) { var buffer = document.createElement( "div" ); buffer.innerHTML = response.responseText; var pageGuides = { root { tag "table", index 7 }, blocks { tag "td" } }; var blocksGuides = [ ["time", "strong", 0], ["play", "strong", 1], ["src", "img", 1, "src"] , ["comment", "strong", 2], ["mylist", "strong", 3] , ["title", "a", 1], ["name", "a", 1, "href", "((sm|ax)\[0-9]+)"] ]; var blocks = parsePage( buffer, pageGuides ); var items = parseBlocks( blocks, blocksGuides ); list.add( items ); refreshTable(); } } ); } this.request(); } search.instance; search.exec = function() { if( !this.instance ) { this.instance = new this(); } else { this.instance.request(); } } ranking = function() { lastSortKey = ""; var option = [$F( "rsort" ), $F( "rspan" ), $F( "rgenre" )]; var url = "http //www.nicovideo.jp/ranking/" + option.join( "/" ); new Ajax.Request( url, { method "get", onSuccess function( response ) { var buffer = document.createElement( "div" ); buffer.innerHTML = response.responseText; var pageGuides = { root { tag "table", index 7 }, blocks { tag "tr" } }; var blocksGuides = [ ["time", "strong", 0], ["date", "strong", 1], ["play", "strong", 2] , ["comment", "strong", 3], ["target", "p", 1, "([0-9,]+)" ], ["src", "img", 1, "src"] , ["title", "a", 1], ["name", "a", 1, "href", "((sm|ax)\[0-9]+)"] ]; var blocks = parsePage( buffer, pageGuides ); blocks = blocks.findAll( function( block, index ) { return ( index % 2 ) == 0; } ); var items = parseBlocks( blocks, blocksGuides ); list.load( items ); refreshTable(); } } ); } mylist = function() { lastSortKey = ""; var url = "http //www.nicovideo.jp/mylist/" + $F( "mylistkeyword" ); new Ajax.Request( url, { method "get", onSuccess function( response ) { var buffer = document.createElement( "div" ); buffer.innerHTML = response.responseText; var pageGuides = { root { tag "table", index 6 }, blocks { tag "tr" } }; var blocksGuides = [ ["date", "strong", 0], ["time", "strong", 1] , ["play", "strong", 2], ["comment", "strong", 3], ["src", "img", 1, "src"] , ["title", "a", 1], ["name", "a", 1, "href", "((sm|ax)\[0-9]+)"] ]; var blocks = parsePage( buffer, pageGuides ); var items = parseBlocks( blocks, blocksGuides ); list.load( items ); refreshTable(); } } ); } parsePage = function( buffer, guides ) { with( guides ) { return $_( $_( buffer, root.tag )[root.index], blocks.tag ) } } parseBlocks = function( blocks, guides ) { var items = []; blocks.each( function( block ) { var buffer = {}; guides.each( function( g ) { with( { key g[0], tag g[1], index g[2], param g[3], regex g[4] } ) { var value = $_( block, tag )[index][param ? param "innerHTML"]; if( regex ) { new RegExp( regex, "" ).exec( value ); value = RegExp.$1; } buffer[key] = value; } } ); items.push( buffer ); if( !movies[buffer.name] ) { var fileName = ( new Template( fileTemplate ) ).evaluate( buffer ); movies[buffer.name] = { path pathOfDownload + "\\" + fileName, className "download" }; } } ); return items; } lastMode = "string"; var refreshTable = function( mode ) { switch( mode ) { case "string" $( "rstring" ).className = "activet"; $( "rimage" ).className = ""; refreshStringTable(); lastMode = mode; break; case "image" $( "rstring" ).className = ""; $( "rimage" ).className = "activet"; refreshImageTable(); lastMode = mode; break; default refreshTable( lastMode ); break; } } var header = [ ["■", "index", "asc"], ["Title", "title", "desc"], ["P", "play", "asc"] , ["C", "comment", "asc"], ["M", "mylist", "asc"] , ["Time", "time", "asc"], ["ID", "name", "desc"] ]; refreshStringTable = function() { var ths = ""; header.each( function( item, index ) { ths += ( new Template( " th onclick= list.sort(\"#{key}\", \"#{order}\");refreshTable(); " + " onmouseover= this.style.cssText=\"background-color white; color black\" " + " onmouseout= this.style.cssText=\"\" #{label} /th " ) ).evaluate( { label item[0], key item[1], order item[2] } ); } ); var thead = " thead tr " + ths + " /tr /thead "; var trs = ""; list.active().each( function( items, index ) { if( !items.index ){ items.index = index + 1; } var tds = ""; header.each( function( value, index ) { tds += " td " + ( items[value[1]] ? items[value[1]] "-" ) + " /td "; } ); var trsvalue = { c1 ( index % 2 ) ? "odd" "even" //, c2 movies[items.name].exist ? " play" " download" , className movies[items.name].className , omover "this.className += \" omo\";" , omout "this.className = this.className.replace(/ omo/g, \"\");" , oc "action( this );", id items.name }; trs += ( new Template( " tr class= #{c1} #{c2} #{className} onclick= #{oc} " + "onmouseover= #{omover} onmouseout= #{omout} id= #{id} " ) ).evaluate( trsvalue ) + tds + " /tr "; } ); var tbody = " tbody " + trs + " /tbody "; $( "target" ).innerHTML = " table " + thead + tbody + " /table "; } refreshImageTable = function() { var trs = " tr "; var tds = ""; list.active().each( function( items, index ) { if( !( index % 5 ) ) { trs += tds + " /tr "; tds = " tr "; } items.state = movies[items.name].exist ? "playing" "downloading"; tds += ( new Template( " td id= #{name} align= center class= #{state} onclick= action( this ) " + " img src= #{src} title= #{title}\n再生 #{play} コメント #{comment} / /td " ) ).evaluate( items ); if( index == list.active().length - 1 ) { trs += tds + " /tr "; } } ); var tbody = " tbody " + trs + " /tbody "; $( "target" ).innerHTML = " table " + tbody + " /table "; } execBuildupCommand = function( argument ) { var shell = new ActiveXObject( "WScript.Shell" ); shell.Run( "\"" + pathOfNicoPlayer + "\\NicoPlayer.exe\" " + argument + " -inactive", 0, true ); shell = null; } playingBefore = undefined; action = function( node ) { var movieName = node.id; if( movies[movieName].exist ) { if( playingBefore ) { movies[playingBefore].className = "play"; var bnode = $( playingBefore ); if( bnode ) { bnode.className = bnode.className.replace( / playing/g, "" ); bnode.className += " play"; } } movies[movieName].className = "playing"; node.className = node.className.replace( / downloaded/g, "" ); node.className = node.className.replace( / play/g, "" ); node.className += " playing"; playingBefore = movieName; execBuildupCommand( "\"" + movies[movieName].path + "\"" ); } else { movies[movieName].className = "downloading"; node.className.replace( / download/g ); node.className += " downloading"; download[movieName] = false; execBuildupCommand( "http //www.nicovideo.jp/watch/" + movieName ); } } /script /head body div id="display" JavaScriptを有効にしてください。 /div table id="controller" tr form onsubmit="search.exec();return false;" td input type="text" id="keyword" value="初音ミク" select id="sort" option value="" 投稿日時が新しい /option option value="order=a" 投稿日時が古い /option option value="sort=v" selected 再生が多い /option option value="sort=v order=a" 再生が少ない /option option value="sort=n" コメントが新しい /option option value="sort=n order=a" コメントが古い /option option value="sort=r" コメントが多い /option option value="sort=r order=a" コメントが少ない /option /select input type="submit" value="検索" / /td /form form onsubmit="mylist();return false;" td input type="text" id="mylistkeyword" value="2949389/2632878" / input type="submit" value="マイリスト" / /td /form form onsubmit="ranking();return false;" td select id="rsort" option value="view" 再生 /option option value="res" コメント /option option value="mylist" selected マイリスト /option /select select id="rspan" option value="newarrival" 新着 /option option value="daily" selected 本日 /option option value="weekly" 週間 /option option value="monthly" 月間 /option option value="total" 合計 /option /select select id="rgenre" option value="all" すべて /option option value="music" selected 音楽 /option option value="game" ゲーム /option /select input type="submit" value="ランキング" / /td /form /tr /table table id="selector" cellspacing="0" style="border solid 1px #ccc; border-bottom 0px" tr td id="rstring" width="45%" align="center" style="cursor pointer;" onclick="refreshTable( string );" class="activet" 一覧 /td td id="rimage" width="45%" align="center" style="cursor pointer;" onclick="refreshTable( image );" 画像一覧 /td td align="center" style="cursor pointer;" onclick="list.back();refreshTable();" 戻る /td td align="center" style="cursor pointer;" onclick="list.forward();refreshTable();" 進む /td /tr /table div id="target" /div /body /html ローカルファイルを検索し表示 最上部のテキストボックスにキーワードを入力してTabキーを押すと、ローカルファイルを検索しマッチするファイルをリストアップします。お好きなファイルをクリックして再生してください。onchangeではなくonkeyupを使うとインクリメンタル検索になるのですが、このロジックだと重すぎて実用的ではないのでやめました。 hta application maximizebutton="no" selection="yes" navigable="no" scroll="yes" singleinstance="yes"/ html head meta http-equiv="MSThemeCompatible" content="yes" style ul { list-style-type none; margin 1px; } li { cursor pointer; width 100%; border 3px double; margin 3px; font-size 12px } /style script type="text/javascript" src="prototype.js" /script script type="text/javascript" var pathOfDownload = "ダウンロードパス"; // ex) D \\Download var pathOfNicoPlayer = "NicoPlayerインストールパス"; var localFlvFiles; $_ = function( target, key ) { return $A( target.getElementsByTagName( key ) ); } $_A = function( target, key ) { return target.getAttribute( key ); } onLoad = function( link ) { resizeTo( 500, 800 ); showList(); } showList = function() { searchFlvFiles(); // 検索 var keyword = $F( "keyword" ); if( keyword ) { localFlvFiles = localFlvFiles.findAll( function( file ) { return RegExp( keyword, "i" ).test( file.Name ); } ); } // リストクリア var ul = $( "target" ); $A( ul.childNodes ).each( function( child ) { ul.removeChild( child ); } ); // リスト追加 localFlvFiles.each( function( file, index ) { var li = document.createElement( "li" ); li.setAttribute( "onclick", new Function( "play( \ " + index + "\ );" ) ); file.Name.match( /(.*)\.flv$/ ); var text = document.createTextNode( RegExp.$1 ); li.appendChild( text ); ul.appendChild( li ); } ); } searchFlvFiles = function() { if( !localFlvFiles ) { localFlvFiles = $A(); } else { localFlvFiles.clear(); } var fs = new ActiveXObject( "Scripting.FileSystemObject" ); var files = new Enumerator( fs.GetFolder( pathOfDownload ).Files ); while( !files.atEnd() ) { if( files.item().Name.match( /(sm\d+).*\.flv$/ ) ) { localFlvFiles.push( files.item() ); } files.moveNext(); } } execBuildupCommand = function( argument ) { var shell = new ActiveXObject( "WScript.Shell" ); shell.Run( "\"" + pathOfNicoPlayer + "\\NicoPlayer.exe\" " + argument, 0, true ); shell = null; } play = function( index ) { execBuildupCommand( "\"" + localFlvFiles[index].Path + "\"" ); } /script /head body onload="onLoad();" input type="text" id="keyword" onchange="showList();" / ul id="target" / /body /html マイページに登録されているうち、ダウンロード済みアイテムのプレイリストを作成し開く ソースファイルをメモ帳などに貼り付け、拡張子(.js)で保存してください。 pathOfNicoPlayerとpathOfDownloadをそれぞれの環境にあったパスに変更してください。 使う時はクリップボードにマイページのアドレス(http //~/0000000/000000 省略不可)を コピーしてダブルクリックしてください。 またNicoPlayerのプレイリストウィンドウが表示されていれば、自動的に開きます。 // 環境設定 var pathOfNicoPlayer = "NicoPlayerのインストールパス(パスセパレータ \\)"; var pathOfDownload = "動画ファイルのダウンロードパス(同上)"; // クリップボードからマイページのアドレスを取得 var ieObject = new ActiveXObject( "InternetExplorer.Application" ); ieObject.Navigate( "about blank" ); while ( ieObject.Busy ) { WScript.Sleep( 100 ); } var addressOfMypage = ieObject.Document.parentWindow.clipboardData.getData( "text" ); ieObject.Quit(); // マイページアドレスが取得できなかった場合入力ウィンドウを表示(Excelのインストールが必要) if( !addressOfMypage.match( /.*\/([0-9]+)\/([0-9]+)/ ) ) { var excelObject = WScript.CreateObject( "Excel.Application" ); if( excelObject != null ) { addressOfMypage = excelObject.InputBox( "マイページのアドレスを入力してください" ); excelObject.Quit(); } } // Msxml2(IE6標準)によりマイページのGETリクエスト送出 var httpObject = WScript.CreateObject( "Msxml2.XMLHTTP" ); httpObject.onreadystatechange = function() { if( httpObject.readyState == 4 ) { getRequestPage( httpObject ); } } // open( , , false )は同期指定(さもないと取得前にプログラムが終了する) httpObject.open( "GET", addressOfMypage, false ); httpObject.send( "" ); function getRequestPage( httpObject ) { // マイページのテキストを検索しID(sm[0-9]+)をリストアップ var requestPageText = httpObject.responseText; var mypageIdList = requestPageText.match( /sm[0-9]+/g ); if( mypageIdList == null ) { return; // IDが見つからず } // ダウンロードフォルダを検索し.flvファイルをIDに基づいてリストアップ var filesHash = {}; var fsoObject = WScript.CreateObject( "Scripting.FileSystemObject" ); var filesCollection = fsoObject.GetFolder( pathOfDownload ).Files; for( var file = new Enumerator( filesCollection ); !file.atEnd(); file.moveNext() ) { var fileName = file.item().Name; if( fsoObject.GetExtensionName( fileName ) == "flv" ) { filesHash[fileName.match( /sm[0-9]+/ )] = file.item().Path; } } // マイページのIDとローカルファイルを紐付けプレイリスト形式にする var newPlaylistText = "", newDownloadListText = ""; for( var i = 0; i mypageIdList.length; i += 2 ) { if( filesHash[mypageIdList[i] ] != undefined ) { newPlaylistText += filesHash[mypageIdList[i] ] + "\n"; } } // プレイリストファイル(.m3u)に落とす addressOfMypage.match( /.*\/([0-9]+)\/([0-9]+)/ ); var newPlylistFileName = RegExp.$1 + "_" + RegExp.$2 + ".m3u"; // OpenTextFile( , 2, true )の2は書出指定(読込1・追記8)、trueは新規作成あり var pathOfNewPlaylistFile = pathOfNicoPlayer + "\\" + newPlylistFileName; var newPlaylistFile = fsoObject.OpenTextFile( pathOfNewPlaylistFile, 2, true ); newPlaylistFile.Write( newPlaylistText ); newPlaylistFile.Close(); // NicoPlayerが.m3uファイルのD&Dに対応すると、以下の全ては次の1行になります // shellObject.Run( "\"" + pathOfNicoPlayer + "\\NicoPlayer.exe\" \"" + pathOfNewPlaylistFile + "\"" ); // プレイリストファイルパスをクリップボードへコピー var ieObject = new ActiveXObject( "InternetExplorer.Application" ); ieObject.Navigate( "about blank" ); while ( ieObject.Busy ) { WScript.Sleep( 100 ); } ieObject.Document.parentWindow.clipboardData.setData( "text", pathOfNewPlaylistFile ); ieObject.Quit(); // NicoPlayerのプレイリストウィンドウに登録する var shellObject = WScript.CreateObject( "WScript.Shell" ); shellObject.AppActivate( "NicoPlayer - プレイリスト" ); WScript.Sleep( 100 ); shellObject.SendKeys( "^O" ); WScript.Sleep( 100 ); shellObject.SendKeys( "^V" ); WScript.Sleep( 100 ); shellObject.SendKeys( "%O" ); } プレイリストウィンドウにプレイリストファイルをドラッグ&ドロップする(Cランタイム使用) 使い勝手向上のためぜひともD&Dを実装したかったが、スクリプトのみでは実装できなかった。 WindowsAPIをVBAでラップすれば可能だが、あまりに煩雑なので断念した。 [マイページに登録されているうち、ダウンロード済みアイテムのプレイリストを作成し開く]の \// NicoPlayerが.m3uファイルのD&Dに対応すると、以下の全ては次の1行になります 以下を次のように置き換える。 var shellObject = new ActiveXObject( "WScript.Shell" ); shellObject.Run( "\"ランタイム名.exe\" \"CWndPlayList\" \"NicoPlayer - プレイリスト\" \"" + pathOfNewPlaylistFile + "\"", 0 ); shellObject = null; ランタイム(正確には違うが)のコードは以下の通り。 開発環境はMicrosoft公式を参考にしてください。 #define STRICT #include windows.h #include cstring // DnD操作におけるOS領域のメモリ構造定義 typedef struct drop_files{ DWORD pFiles; POINT pt; bool fNC; bool fWide; } DropFiles; int main( int argc, char *argv[] ) { // パラメータが3個([0]は実行ファイルのパス)未満なら終了 if( argc 4 ) { return 0; } // 指定窓が見つからなければ終了 // ([1] クラス名・[2]タイトル、空文字列も検索条件、無効にするにはNULL) HWND hWndTarget = FindWindowExA( NULL, NULL, argv[1], argv[2] ); if( !hWndTarget ) { return 0; } // D&D操作のための情報を作成 DropFiles df = { sizeof( DropFiles ), { 0, 0 }, false, false }; char *file = argv[3]; // OS領域のメモリリソースを確保し情報を転送 HGLOBAL hGlobalMemory = GlobalAlloc( GHND, sizeof( DropFiles ) + strlen( file ) + 1 ); void *p = GlobalLock( hGlobalMemory ); memcpy( p, ( void * ) df, sizeof( DropFiles ) ); memcpy( ( char * )p + sizeof( DropFiles ), ( void * )file, strlen( file ) + 1 ); GlobalUnlock( hGlobalMemory ); // 指定窓に通知 PostMessageA( hWndTarget, WM_DROPFILES, ( WPARAM )hGlobalMemory, 0 ); // OS領域のメモリリソースを開放 GlobalFree( hGlobalMemory ); return 0; } コメント スクリプト実行時の制約を軽減(マウス・キーボードを触ると失敗しやすい等)したが、敷居が大幅に高くなってしまった。やはり本家に特定拡張子(.m3u / .lst等)のD D対応をお願いしたいところ。 - 名無しさん 2007-11-24 17 58 53 [ローカルファイルを検索し表示]を追加。こちらはサイズ制限が先の話なので調子に乗ってます(^-^。膨張したライブラリの任意再生にどうぞ。 - 名無しさん 2008-01-15 02 54 44 [検索を表示する]を追加。パーサをシンプルにしようとしたら余計にカオスに…。 - 名無しさん 2008-01-19 16 33 52 [検索・ランキング・マイページをTubePlayerっぽく一覧表示する]でNicoPlayer以外で開くにはactionの中を書き換えるといいです。ブラウザで開くならwindow.open("~watch/" + movieName,"","");、HTAからSleipnirを開くなら(new ActiveXObject("Sleipnir.API")).NewWindow("~watch/"+movieName,true);でいけます。ちなみに拡張子を.htaではなく.htm[l]で保存してもブラウザでほぼ動きます(ただし警告でまくり、この場合Sleipnirでもwindow.open()で開ける)。 - 名無しさん 2008-01-26 17 29 21 [TubePlayerっぽく一覧表示]のフィードバック他を変更しました。テキストボックスでEnterがきくようになり、ソートの不具合が改善されました。 - 名無しさん 2008-01-27 11 01 14 [TubePlayerっぽく一覧表示]にランキングの画像表示を統合しました(マイリスト・検索にも対応)。一覧と画像一覧の作りこみの差が手に取るように分かりますがネ(。ω。 - 名無しさん 2008-01-27 19 20 31 [TubePlayerっぽく一覧表示]のpathOf~を自動取得するようにしてみました(NicoPlayerと同じフォルダにあることが前提)。任意に設定すればスルーするので、好きな場所におきたい方はそちらで。ini以下にnicoplayer.iniを階層維持のまま展開しているので何かに使えるかも。ini.main.RecentOpen0とかini.playlist.ListPathとかとか。 - 名無しさん 2008-01-30 23 08 16 [TubePlayerっぽく一覧表示]にエラー処理(prototype.jsがない/NicoPlayerが見つからない/JavaScriptが無効)を追加。iniを拡張して全域から参照可能にしました。ini.load(ファイルパス)で読み込み、ini.initで初期化。構造上init/loadセクションはあっても読み飛ばします。必要ならプロパティ名と例外判定/^(init|load)$/2箇所をいじってください。 - 名無しさん 2008-01-31 21 06 54 [TubePlayerっぽく一覧表示]のリスト管理を整理。ついでに戻ると進むを追加。検索・マイページ・ランキングを開くと進み、ソートは最後の並びが残ります。戻った状態で新たに開くと、それより先の記録はリセットされます。ブラウザの戻る・進むと同じ挙動です。listに格納する情報を追加すれば、履歴一覧とかも楽にいけます。 - 名無しさん 2008-02-02 02 24 59 [TubePlayerっぽく一覧表示]のバグバグを修正(検索時ページが更新されない・同じ動画を複数表示するとインデックスが狂う・他)。ダウンロードパスの全検索を起動時のみにし、以後はファイル名きめうちの二段構えにしてファイル数が多い場合体感で分かるほど軽く(ダウンロードが終了すると数秒以内に赤背景 緑背景になりますが、タイトルとファイル名が違う場合(*が含まれる場合など)は再起動するまで認識しません)。フィードバックをページ横断式に変更(同じ動画ならページを切り替えても強調が維持されます)。結果としてデザインとロジックが融合した素敵コードに…行数も500間近…そろそろ分離しないと。 - 名無しさん 2008-02-02 09 13 34 名前