├── .gitignore ├── LICENSE ├── README.md ├── nicoNewStreamRecorderKakkoKari ├── (+.ico ├── (+3.ico ├── (check.ico ├── (rec.ico ├── (rec3.ico ├── .editorconfig ├── .nuget │ └── packages.config ├── namaichi.sln ├── namaichi.v12.suo ├── namaichi │ ├── Program.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Settings.Designer.cs │ │ ├── Settings.cs │ │ └── Settings.settings │ ├── app.config │ ├── app.resx │ ├── curl_wrap.dll │ ├── kari.snk │ ├── libcrypto-81_3.dll │ ├── libcurl.dll │ ├── libgcc_s_dw2-1.dll │ ├── libssl-81_3.dll │ ├── libwinpthread-1.dll │ ├── namaichi.csproj │ ├── nghttp2.dll │ ├── nghttp3.dll │ ├── ngtcp2.dll │ ├── ngtcp2_crypto_openssl.dll │ ├── packages.config │ └── src │ │ ├── Logger │ │ └── TraceListener.cs │ │ ├── config │ │ └── config.cs │ │ ├── gui │ │ ├── AikotobaInputForm.Designer.cs │ │ ├── AikotobaInputForm.cs │ │ ├── AikotobaInputForm.resx │ │ ├── DotNetMessageBox.Designer.cs │ │ ├── DotNetMessageBox.cs │ │ ├── DotNetMessageBox.resx │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ ├── MfaInputForm.Designer.cs │ │ ├── MfaInputForm.cs │ │ ├── MfaInputForm.resx │ │ ├── NicoSessionComboBox2.cs │ │ ├── RecordLogForm.Designer.cs │ │ ├── RecordLogForm.cs │ │ ├── RecordLogForm.resx │ │ ├── TimeShiftOptionForm.Designer.cs │ │ ├── TimeShiftOptionForm.cs │ │ ├── TimeShiftOptionForm.resx │ │ ├── UpdateForm.Designer.cs │ │ ├── UpdateForm.cs │ │ ├── UpdateForm.resx │ │ ├── VersionForm.Designer.cs │ │ ├── VersionForm.cs │ │ ├── VersionForm.resx │ │ ├── argOptionForm.Designer.cs │ │ ├── argOptionForm.cs │ │ ├── argOptionForm.resx │ │ ├── commentForm.Designer.cs │ │ ├── commentForm.cs │ │ ├── commentForm.resx │ │ ├── defaultFFplayController.Designer.cs │ │ ├── defaultFFplayController.cs │ │ ├── defaultFFplayController.resx │ │ ├── fileNameOptionForm.Designer.cs │ │ ├── fileNameOptionForm.cs │ │ ├── fileNameOptionForm.resx │ │ ├── optionForm.Designer.cs │ │ ├── optionForm.cs │ │ ├── optionForm.resx │ │ ├── placeHolderText.Designer.cs │ │ ├── placeHolderText.cs │ │ ├── placeTextBox5.Designer.cs │ │ └── placeTextBox5.cs │ │ ├── info │ │ ├── AccountInfo.cs │ │ ├── ChatInfo.cs │ │ ├── M3u8Info.cs │ │ ├── RecordLogInfo.cs │ │ ├── RedistInfo.cs │ │ ├── StreamInfo.cs │ │ ├── TimeShiftConfig.cs │ │ ├── WatchingInfo.cs │ │ └── numTaskInfo.cs │ │ ├── play │ │ ├── CommentPlayerWebSocket.cs │ │ └── Player.cs │ │ ├── rec │ │ ├── AnotherEngineRecorder.cs │ │ ├── ArgConcat.cs │ │ ├── ChannelPlusRecorder.cs │ │ ├── ChaseHokan.cs │ │ ├── ChaseLastRecord.cs │ │ ├── CookieGetter.cs │ │ ├── DeflateDecoder.cs │ │ ├── DliveManager.cs │ │ ├── DropSegmentProcess.cs │ │ ├── FFMpegConcat.cs │ │ ├── FFMpegRecord.cs │ │ ├── FollowCommunity.cs │ │ ├── Html5Recorder.cs │ │ ├── IRecorderProcess.cs │ │ ├── ITimeShiftCommentGetter.cs │ │ ├── JikkenRecordProcess.cs │ │ ├── JikkenRecorder.cs │ │ ├── MpnCommentGetter.cs │ │ ├── NotHtml5Recorder.cs │ │ ├── OutputTimeShiftTsUrlList.cs │ │ ├── Record.cs │ │ ├── RecordFromUrl.cs │ │ ├── RecordStateSetter.cs │ │ ├── RecordingManager.cs │ │ ├── Reservation.cs │ │ ├── RtmpClient.cs │ │ ├── RtmpRecorder.cs │ │ ├── SeleniumRecorder.cs │ │ ├── ThroughFFMpeg.cs │ │ ├── TimeShiftCommentGetter.cs │ │ ├── TimeShiftCommentGetter_chPlus.cs │ │ ├── TimeShiftCommentGetter_jikken.cs │ │ ├── TimeShiftCommentGetter_xml.cs │ │ ├── WebSocketCurl.cs │ │ ├── WebSocketRecorder.cs │ │ └── XmlCommentGetter_ontime.cs │ │ └── util │ │ ├── ArgReader.cs │ │ ├── Curl.cs │ │ ├── ProtoBufCodes.cs │ │ ├── RedirectLogin.cs │ │ ├── RegGetter.cs │ │ ├── SourceInfoSerialize.cs │ │ ├── util.cs │ │ └── varint.cs ├── packages │ ├── Microsoft.Web.Xdt.2.1.1 │ │ ├── Microsoft.Web.Xdt.2.1.1.nupkg │ │ └── lib │ │ │ └── net40 │ │ │ └── Microsoft.Web.XmlTransform.dll │ ├── Newtonsoft.Json.9.0.1 │ │ ├── Newtonsoft.Json.9.0.1.nupkg │ │ ├── lib │ │ │ ├── net20 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net35 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net40 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── net45 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── netstandard1.0 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ ├── portable-net40+sl5+wp80+win8+wpa81 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ │ └── portable-net45+wp80+win8+wpa81 │ │ │ │ ├── Newtonsoft.Json.dll │ │ │ │ └── Newtonsoft.Json.xml │ │ └── tools │ │ │ └── install.ps1 │ ├── NuGet.Build.2.12.0 │ │ ├── NuGet.Build.2.12.0.nupkg │ │ └── tools │ │ │ └── NuGet.targets │ ├── NuGet.Client.4.2.0 │ │ ├── NuGet.Client.4.2.0.nupkg │ │ └── lib │ │ │ ├── net45 │ │ │ ├── NuGet.Client.dll │ │ │ └── NuGet.Client.xml │ │ │ └── netstandard1.3 │ │ │ ├── NuGet.Client.dll │ │ │ └── NuGet.Client.xml │ ├── NuGet.CommandLine.1.0.11220.26 │ │ ├── NuGet.CommandLine.1.0.11220.26.nupkg │ │ └── Tools │ │ │ └── NuGet.exe │ ├── NuGet.Common.4.6.2 │ │ ├── NuGet.Common.4.6.2.nupkg │ │ └── lib │ │ │ ├── net46 │ │ │ ├── NuGet.Common.dll │ │ │ └── NuGet.Common.xml │ │ │ └── netstandard1.3 │ │ │ ├── NuGet.Common.dll │ │ │ └── NuGet.Common.xml │ ├── NuGet.Frameworks.4.6.2 │ │ ├── NuGet.Frameworks.4.6.2.nupkg │ │ └── lib │ │ │ ├── net40 │ │ │ ├── NuGet.Frameworks.dll │ │ │ └── NuGet.Frameworks.xml │ │ │ ├── net46 │ │ │ ├── NuGet.Frameworks.dll │ │ │ └── NuGet.Frameworks.xml │ │ │ └── netstandard1.3 │ │ │ ├── NuGet.Frameworks.dll │ │ │ └── NuGet.Frameworks.xml │ ├── SnkLib.App.CookieGetter.2.4.0.0 │ │ ├── build │ │ │ ├── net40 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ ├── SnkLib.App.CookieGetter.targets │ │ │ │ └── x86 │ │ │ │ │ └── SnkLib.App.CookieGetter.x86Proxy.exe │ │ │ └── net45 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ ├── SnkLib.App.CookieGetter.targets │ │ │ │ └── x86 │ │ │ │ └── SnkLib.App.CookieGetter.x86Proxy.exe │ │ └── lib │ │ │ ├── net40 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ │ │ └── net45 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ ├── SnkLib.App.CookieGetter.2.4.2.0 │ │ ├── build │ │ │ ├── net40 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ └── SnkLib.App.CookieGetter.targets │ │ │ └── net45 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ └── SnkLib.App.CookieGetter.targets │ │ └── lib │ │ │ ├── net40 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ │ │ └── net45 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ ├── SnkLib.App.CookieGetter.2.4.4.0 │ │ ├── build │ │ │ ├── net40 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ └── SnkLib.App.CookieGetter.targets │ │ │ └── net45 │ │ │ │ ├── Deploy.targets │ │ │ │ ├── SnkLib.App.CookieGetter.LibChecker.exe │ │ │ │ └── SnkLib.App.CookieGetter.targets │ │ └── lib │ │ │ ├── net40 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ │ │ └── net45 │ │ │ ├── SnkLib.App.CookieGetter.dll │ │ │ └── SnkLib.App.CookieGetter.xml │ ├── SnkLib.App.CookieGetter.Forms.1.4.1.0 │ │ └── lib │ │ │ ├── net40 │ │ │ ├── SnkLib.App.CookieGetter.Forms.dll │ │ │ └── SnkLib.App.CookieGetter.Forms.xml │ │ │ └── net45 │ │ │ ├── SnkLib.App.CookieGetter.Forms.dll │ │ │ └── SnkLib.App.CookieGetter.Forms.xml │ ├── SnkLib.App.CookieGetter.Forms.1.4.3.0 │ │ ├── lib │ │ │ ├── net40 │ │ │ │ ├── SnkLib.App.CookieGetter.Forms.dll │ │ │ │ └── SnkLib.App.CookieGetter.Forms.xml │ │ │ └── net45 │ │ │ │ ├── SnkLib.App.CookieGetter.Forms.dll │ │ │ │ └── SnkLib.App.CookieGetter.Forms.xml │ │ └── package │ │ │ └── services │ │ │ └── metadata │ │ │ └── core-properties │ │ │ └── fb92d0547bd643ebb6d64cf495002a98.psmdcp │ ├── SuperSocket.ClientEngine.Core.0.10.0 │ │ ├── SuperSocket.ClientEngine.Core.0.10.0.nupkg │ │ └── lib │ │ │ ├── net20 │ │ │ └── SuperSocket.ClientEngine.dll │ │ │ ├── net35-client │ │ │ └── SuperSocket.ClientEngine.dll │ │ │ ├── net40-client │ │ │ └── SuperSocket.ClientEngine.dll │ │ │ ├── net45 │ │ │ └── SuperSocket.ClientEngine.dll │ │ │ ├── netstandard1.3 │ │ │ └── SuperSocket.ClientEngine.dll │ │ │ └── sl50 │ │ │ └── SuperSocket.ClientEngine.dll │ ├── System.Data.SQLite.Core.1.0.108.0 │ │ ├── System.Data.SQLite.Core.1.0.108.0.nupkg │ │ ├── build │ │ │ ├── net20 │ │ │ │ ├── System.Data.SQLite.Core.targets │ │ │ │ ├── x64 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ │ └── x86 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ ├── net40 │ │ │ │ ├── System.Data.SQLite.Core.targets │ │ │ │ ├── x64 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ │ └── x86 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ ├── net45 │ │ │ │ ├── System.Data.SQLite.Core.targets │ │ │ │ ├── x64 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ │ └── x86 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ ├── net451 │ │ │ │ ├── System.Data.SQLite.Core.targets │ │ │ │ ├── x64 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ │ └── x86 │ │ │ │ │ └── SQLite.Interop.dll │ │ │ └── net46 │ │ │ │ ├── System.Data.SQLite.Core.targets │ │ │ │ ├── x64 │ │ │ │ └── SQLite.Interop.dll │ │ │ │ └── x86 │ │ │ │ └── SQLite.Interop.dll │ │ └── lib │ │ │ ├── net20 │ │ │ ├── System.Data.SQLite.dll │ │ │ ├── System.Data.SQLite.dll.config │ │ │ └── System.Data.SQLite.xml │ │ │ ├── net40 │ │ │ ├── System.Data.SQLite.dll │ │ │ ├── System.Data.SQLite.dll.config │ │ │ └── System.Data.SQLite.xml │ │ │ ├── net45 │ │ │ ├── System.Data.SQLite.dll │ │ │ ├── System.Data.SQLite.dll.config │ │ │ └── System.Data.SQLite.xml │ │ │ ├── net451 │ │ │ ├── System.Data.SQLite.dll │ │ │ ├── System.Data.SQLite.dll.config │ │ │ └── System.Data.SQLite.xml │ │ │ └── net46 │ │ │ ├── System.Data.SQLite.dll │ │ │ ├── System.Data.SQLite.dll.config │ │ │ └── System.Data.SQLite.xml │ ├── WebSocket4Net.0.15.2 │ │ ├── WebSocket4Net.0.15.2.nupkg │ │ └── lib │ │ │ ├── net20 │ │ │ └── WebSocket4Net.dll │ │ │ ├── net35 │ │ │ └── WebSocket4Net.dll │ │ │ ├── net40 │ │ │ └── WebSocket4Net.dll │ │ │ ├── net45 │ │ │ ├── SuperSocket.ClientEngine.dll │ │ │ └── WebSocket4Net.dll │ │ │ └── netstandard1.3 │ │ │ └── WebSocket4Net.dll │ ├── WindowsAPICodePack-Core.1.1.2 │ │ └── lib │ │ │ ├── Microsoft.WindowsAPICodePack.dll │ │ │ └── Microsoft.WindowsAPICodePack.xml │ ├── WindowsAPICodePack-Shell.1.1.1 │ │ └── lib │ │ │ ├── Microsoft.WindowsAPICodePack.Shell.dll │ │ │ └── Microsoft.WindowsAPICodePack.Shell.xml │ ├── WindowsAPICodePack-ShellExtensions.1.1.1 │ │ └── lib │ │ │ ├── Microsoft.WindowsAPICodePack.ShellExtensions.dll │ │ │ └── Microsoft.WindowsAPICodePack.ShellExtensions.xml │ ├── detours │ │ └── x64 │ │ │ ├── ChromeCookieKeyGetter.dll │ │ │ ├── CryptPlugin.dll │ │ │ ├── DetoursDll.dll │ │ │ ├── DetoursNet.dll │ │ │ ├── DetoursNetCLR.dll │ │ │ ├── DetoursNetRuntime.dll │ │ │ └── cryptHook.exe │ ├── libcurl_http23 │ │ ├── libcrypto-81_3.dll │ │ ├── libcurl.dll │ │ ├── libssl-81_3.dll │ │ ├── nghttp2.dll │ │ ├── nghttp3.dll │ │ ├── ngtcp2.dll │ │ └── ngtcp2_crypto_openssl.dll │ └── repositories.config ├── readme.html └── rokugaTouroku │ ├── Program.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── app.config │ ├── curl_wrap.dll │ ├── kari.snk │ ├── libcrypto-81_3.dll │ ├── libcurl.dll │ ├── libssl-81_3.dll │ ├── nghttp2.dll │ ├── nghttp3.dll │ ├── ngtcp2.dll │ ├── ngtcp2_crypto_openssl.dll │ ├── packages.config │ ├── rokugaTouroku.OpenCover.Settings │ ├── rokugaTouroku.csproj │ ├── rokugaTouroku.sln │ └── src │ ├── Logger │ └── TraceListener.cs │ ├── config │ └── config.cs │ ├── gui │ ├── MainForm.Designer.cs │ ├── MainForm.cs │ ├── MainForm.resx │ ├── MfaInputForm.Designer.cs │ ├── MfaInputForm.cs │ ├── NicoSessionComboBox2.cs │ ├── QualityForm.Designer.cs │ ├── QualityForm.cs │ ├── QualityForm.resx │ ├── TimeShiftOptionForm.Designer.cs │ ├── TimeShiftOptionForm.cs │ ├── TimeShiftOptionForm.resx │ ├── UpdateForm.Designer.cs │ ├── UpdateForm.cs │ ├── UrlBulkRegistForm.Designer.cs │ ├── UrlBulkRegistForm.cs │ ├── UrlBulkRegistForm.resx │ ├── UrlListSaveForm.Designer.cs │ ├── UrlListSaveForm.cs │ ├── UrlListSaveForm.resx │ ├── VersionForm.Designer.cs │ ├── VersionForm.cs │ ├── VersionForm.resx │ ├── accountForm.Designer.cs │ ├── accountForm.cs │ ├── accountForm.resx │ ├── argOptionForm.Designer.cs │ ├── argOptionForm.cs │ ├── argOptionForm.resx │ ├── fileNameOptionForm.Designer.cs │ ├── fileNameOptionForm.cs │ ├── fileNameOptionForm.resx │ ├── optionForm.Designer.cs │ ├── optionForm.cs │ ├── optionForm.resx │ └── sortableList.cs │ ├── info │ ├── AccountInfo.cs │ ├── RecInfo.cs │ └── TimeShiftConfig.cs │ ├── rec │ ├── CookieGetter.cs │ ├── HosoInfoGetter.cs │ ├── RecDataGetter.cs │ └── RecListManager.cs │ └── util │ ├── Curl.cs │ ├── SourceInfoSerialize.cs │ └── util.cs └── siyou.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## ニコ生 新配信録画ツール(仮) 2 | 3 | ニコ生のHLS新配信を録画するツールです。 4 | このツールを改良していただいても、もし参考になるところがあれば 5 | ソースを使って別のツールを作っていただいても構いません。 6 | リファクタリング大歓迎です。 7 | 8 | 製作中に見つけた[ニコ生新配信の仕様](siyou.md)を記してみました。 9 | ツールのダウンロードは[こちら](https://guest-nico.github.io/pages/downloads.html)   10 | 11 | 12 | ## ライセンス 13 | SnkLib.App.CookieGetter 14 | 15 | Copyright (c) 2014 namoshika様. 16 | Released under the GNU Lesser GPL 17 | 18 | 19 | CookieGetterSharp 20 | 21 | Copyright (c) 2014 halxxxx様、うつろ様、にょんにょん様、炬燵犬様, namoshika様 22 | Released under the GNU Lesser GPL 23 | 24 | WebSocket4Net 25 | 26 | Copyright (c) 2012 Kerry Jiang様 27 | licensed under the Apache License 2.0 28 | 29 | 30 | SuperSocket 31 | 32 | Copyright (c) 2012 Kerry Jiang様 33 | licensed under the Apache License 2.0 34 | 35 | 36 | FFmpeg・ffplay 37 | 38 | Copyright (c) 2000-2018 the FFmpeg developers 39 | GNU Lesser General Public License version 2.1 or later (LGPL v2.1+) 40 | 41 | 42 | Json.NET 43 | 44 | Copyright (c) 2007 James Newton-King 45 | licensed under the MIT License 46 | 47 | 48 | RTMPDump 49 | 50 | Copyright (C) 2009 Andrej Stepanchuk 51 | Copyright (C) 2010-2011 Howard Chu 52 | The Flvstreamer Team 53 | License: GPLv2 54 | 55 | Bouncy Castle 56 | 57 | Copyright (c) 2000 - 2020 The Legion of the Bouncy Castle Inc. 58 | MIT license 59 | 60 | 61 | curl 62 | 63 | Copyright (c) 1996 - 2022, Daniel Stenberg, , and many 64 | contributors, see the THANKS file. 65 | Curl and libcurl are licensed under the license below, which is inspired by MIT/X, but not identical. 66 | 67 | 68 | openssl 69 | 70 | 71 | Copyright (c) 1998-2022 The OpenSSL Project 72 | Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson 73 | Copyright (c) Akamai and Microsoft 74 | Apache License 2.0 75 | 76 | 77 | 78 | nghttp3 79 | 80 | Copyright (c) 2019 nghttp3 contributors 81 | The MIT License 82 | 83 | 84 | ngtcp2 85 | 86 | Copyright (c) 2016 ngtcp2 contributors 87 | The MIT License 88 | 89 | 90 | nicolive-comment-protobuf 91 | 92 | Copyright (c) 2024 n-air-app 93 | MIT License 94 | 95 | 96 | VarintBitConverter 97 | 98 | Copyright (c) 2011 Tomas Pastorek, Ixone.cz. 99 | The 2-Clause BSD License 100 | 101 | 102 | 103 | 104 | 105 | 106 | ## 開発環境 107 | SharpDevelop4.4.2 108 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/(+.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/(+.ico -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/(+3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/(+3.ico -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/(check.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/(check.ico -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/(rec.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/(rec.ico -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/(rec3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/(rec3.ico -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.cs] 4 | indent_size = 4 5 | trim_trailing_whitespace = true -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/.nuget/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | # SharpDevelop 4.4 5 | VisualStudioVersion = 12.0.40629.0 6 | MinimumVisualStudioVersion = 10.0.40219.1 7 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "namaichi", "namaichi\namaichi.csproj", "{5E31FCA6-A895-4706-90BE-5024B24C1043}" 8 | EndProject 9 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "rokugaTouroku", "rokugaTouroku\rokugaTouroku.csproj", "{D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}" 10 | EndProject 11 | Global 12 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 13 | Debug|Any CPU = Debug|Any CPU 14 | Release|Any CPU = Release|Any CPU 15 | EndGlobalSection 16 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 17 | {5E31FCA6-A895-4706-90BE-5024B24C1043}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 18 | {5E31FCA6-A895-4706-90BE-5024B24C1043}.Debug|Any CPU.Build.0 = Debug|Any CPU 19 | {5E31FCA6-A895-4706-90BE-5024B24C1043}.Release|Any CPU.ActiveCfg = Release|Any CPU 20 | {5E31FCA6-A895-4706-90BE-5024B24C1043}.Release|Any CPU.Build.0 = Release|Any CPU 21 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | EndGlobalSection 26 | GlobalSection(SolutionProperties) = preSolution 27 | HideSolutionNode = FALSE 28 | EndGlobalSection 29 | GlobalSection(Performance) = preSolution 30 | HasPerformanceSessions = true 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi.v12.suo -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/Program.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: pc 4 | * Date: 2018/04/06 5 | * Time: 20:55 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Diagnostics; 11 | using System.Windows.Forms; 12 | using System.Net; 13 | 14 | namespace namaichi 15 | { 16 | /// 17 | /// Class with program entry point. 18 | /// 19 | internal sealed class Program 20 | { 21 | public static string arg = ""; 22 | 23 | /// 24 | /// Program entry point. 25 | /// 26 | [STAThread] 27 | private static void Main(string[] args) 28 | { 29 | if (args.Length > 0) arg = util.getRegGroup(args[0], "(lv.+)"); 30 | 31 | AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandleExceptionHandler); 32 | System.Threading.Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(UnhandleExceptionHandler); 33 | AppDomain.CurrentDomain.UnhandledException += UnhandleExceptionHandler; 34 | System.Threading.Thread.GetDomain().UnhandledException += UnhandleExceptionHandler; 35 | Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(threadException); 36 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 37 | System.Threading.Tasks.TaskScheduler.UnobservedTaskException += taskSchedulerUnobservedTaskException; 38 | AppDomain.CurrentDomain.FirstChanceException += firstChanceException; 39 | 40 | Application.EnableVisualStyles(); 41 | Application.SetCompatibleTextRenderingDefault(false); 42 | try { 43 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 44 | } catch (Exception e) { 45 | Debug.WriteLine(e.Message + e.Source + e.StackTrace); 46 | util.isCurl = true; 47 | } 48 | util.isCurl = true; 49 | 50 | // args = new string[]{"-nowindo", "lv316266831", "-stdIO"}; 51 | // args = new String[]{"lv316036760", "-ts-start=5m0s", "-ts-end=5m10s", "-afterConvertMode=4"}; 52 | if (Array.IndexOf(args, "-nowindow") == -1) { 53 | Application.Run(new MainForm(args)); 54 | } else { 55 | util.isShowWindow = false; 56 | var a = new MainForm(args); 57 | while(a.rec.isRecording) System.Threading.Thread.Sleep(1000); 58 | } 59 | 60 | } 61 | private static void UnhandleExceptionHandler(Object sender, UnhandledExceptionEventArgs e) { 62 | util.debugWriteLine("unhandled exception"); 63 | var eo = (Exception)e.ExceptionObject; 64 | util.showException(eo); 65 | 66 | } 67 | static void threadException(object sender, System.Threading.ThreadExceptionEventArgs e) { 68 | util.debugWriteLine("thread exception"); 69 | var eo = (Exception)e.Exception; 70 | util.showException(eo); 71 | 72 | } 73 | static private void taskSchedulerUnobservedTaskException(object sender, 74 | System.Threading.Tasks.UnobservedTaskExceptionEventArgs e) { 75 | util.debugWriteLine("task_unobserved exception"); 76 | var eo = (Exception)e.Exception; 77 | util.showException(eo); 78 | e.SetObserved(); 79 | 80 | } 81 | static private void firstChanceException(object sender, 82 | System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e) { 83 | var frameCount = 0; 84 | try { 85 | frameCount = new System.Diagnostics.StackTrace().FrameCount; 86 | } catch (StackOverflowException) { 87 | //エラーのログを書き込むときにエラーが出た場合はそれ以上ログを書き込まないように 88 | return; 89 | } 90 | #if DEBUG 91 | if (util.isLogFile) { 92 | if (frameCount > 150) { 93 | // util.debugWriteLine("exception stacktrace framecount " + frameCount); 94 | MessageBox.Show("first chance framecount stack " + e.Exception.Message + e.Exception.StackTrace, frameCount.ToString() + " " + DateTime.Now + " " + arg); 95 | // if (e.Exception.GetType() == System.IO.IOException 96 | return; 97 | } 98 | } 99 | #else 100 | 101 | #endif 102 | 103 | util.debugWriteLine("exception stacktrace framecount " + frameCount); 104 | 105 | util.debugWriteLine("firstchance exception"); 106 | var eo = (Exception)e.Exception; 107 | util.showException(eo, false); 108 | } 109 | } 110 | 111 | } 112 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | #region Using directives 2 | 3 | using System; 4 | using System.Reflection; 5 | using System.Runtime.InteropServices; 6 | 7 | #endregion 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("")] 13 | [assembly: AssemblyDescription("")] 14 | [assembly: AssemblyConfiguration("")] 15 | [assembly: AssemblyCompany("")] 16 | [assembly: AssemblyProduct("")] 17 | [assembly: AssemblyCopyright("Copyright 2018")] 18 | [assembly: AssemblyTrademark("")] 19 | [assembly: AssemblyCulture("")] 20 | 21 | // This sets the default COM visibility of types in the assembly to invisible. 22 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. 23 | [assembly: ComVisible(false)] 24 | 25 | // The assembly version has following format : 26 | // 27 | // Major.Minor.Build.Revision 28 | // 29 | // You can specify all the values or you can use the default the Revision and 30 | // Build Numbers by using the '*' as shown below: 31 | [assembly: AssemblyVersion("1.0.*")] 32 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // このコードはツールによって生成されました。 4 | // ランタイム バージョン:4.0.30319.34014 5 | // 6 | // このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 7 | // コードが再生成されるときに損失したりします。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace namaichi.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/Properties/Settings.cs: -------------------------------------------------------------------------------- 1 | using System.Configuration; 2 | 3 | namespace namaichi.Properties 4 | { 5 | internal sealed partial class Settings 6 | { 7 | [UserScopedSetting, SettingsSerializeAs(SettingsSerializeAs.String)] 8 | public SunokoLibrary.Application.CookieSourceInfo SelectedSourceInfo 9 | { 10 | get { return (SunokoLibrary.Application.CookieSourceInfo)this["SelectedSourceInfo"]; } 11 | set { this["SelectedSourceInfo"] = value; } 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/curl_wrap.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/curl_wrap.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/kari.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/kari.snk -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/libcrypto-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/libcrypto-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/libcurl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/libcurl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/libgcc_s_dw2-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/libgcc_s_dw2-1.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/libssl-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/libssl-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/libwinpthread-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/libwinpthread-1.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/nghttp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/nghttp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/nghttp3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/nghttp3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/ngtcp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/ngtcp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/ngtcp2_crypto_openssl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/namaichi/ngtcp2_crypto_openssl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/Logger/TraceListener.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/06/13 5 | * Time: 3:23 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Diagnostics; 11 | 12 | namespace namaichi.Logger 13 | { 14 | /// 15 | /// Description of TraceListener. 16 | /// 17 | public class TraceListener:DefaultTraceListener 18 | { 19 | public TraceListener() 20 | { 21 | } 22 | public override void WriteLine(string msg) { 23 | try { 24 | //var dt = DateTime.Now.ToLongTimeString(); 25 | var dt = DateTime.Now.ToString("dd HH:mm:ss"); 26 | base.WriteLine(dt + " " + msg); 27 | } catch (Exception) { 28 | // util.debugWriteLine("trace listner exception " + e.Message + e.Source + e.StackTrace + e.TargetSite); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/AikotobaInputForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: ajkkh 4 | * Date: 2024/11/19 5 | * Time: 8:09 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi.gui 10 | { 11 | partial class AikotobaInputForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.passText = new System.Windows.Forms.TextBox(); 40 | this.label1 = new System.Windows.Forms.Label(); 41 | this.cancelBtn = new System.Windows.Forms.Button(); 42 | this.label2 = new System.Windows.Forms.Label(); 43 | this.authBtn = new System.Windows.Forms.Button(); 44 | this.msgText = new System.Windows.Forms.Label(); 45 | this.SuspendLayout(); 46 | // 47 | // passText 48 | // 49 | this.passText.Location = new System.Drawing.Point(12, 57); 50 | this.passText.Name = "passText"; 51 | this.passText.Size = new System.Drawing.Size(282, 19); 52 | this.passText.TabIndex = 0; 53 | // 54 | // label1 55 | // 56 | this.label1.Font = new System.Drawing.Font("MS UI Gothic", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); 57 | this.label1.Location = new System.Drawing.Point(12, 18); 58 | this.label1.Name = "label1"; 59 | this.label1.Size = new System.Drawing.Size(305, 16); 60 | this.label1.TabIndex = 1; 61 | this.label1.Text = "放送者から共有された合い言葉を入力してください"; 62 | // 63 | // cancelBtn 64 | // 65 | this.cancelBtn.Location = new System.Drawing.Point(138, 123); 66 | this.cancelBtn.Name = "cancelBtn"; 67 | this.cancelBtn.Size = new System.Drawing.Size(75, 23); 68 | this.cancelBtn.TabIndex = 2; 69 | this.cancelBtn.Text = "キャンセル"; 70 | this.cancelBtn.UseVisualStyleBackColor = true; 71 | this.cancelBtn.Click += new System.EventHandler(this.CancelBtnClick); 72 | // 73 | // label2 74 | // 75 | this.label2.Location = new System.Drawing.Point(13, 79); 76 | this.label2.Name = "label2"; 77 | this.label2.Size = new System.Drawing.Size(319, 27); 78 | this.label2.TabIndex = 1; 79 | this.label2.Text = "※合い言葉は半角英数のみで最大16文字です\r\n※空白を入れず、大文字・小文字に注意して入力してください"; 80 | // 81 | // authBtn 82 | // 83 | this.authBtn.Location = new System.Drawing.Point(219, 123); 84 | this.authBtn.Name = "authBtn"; 85 | this.authBtn.Size = new System.Drawing.Size(75, 23); 86 | this.authBtn.TabIndex = 2; 87 | this.authBtn.Text = "認証する"; 88 | this.authBtn.UseVisualStyleBackColor = true; 89 | this.authBtn.Click += new System.EventHandler(this.AuthBtnClick); 90 | // 91 | // msgText 92 | // 93 | this.msgText.ForeColor = System.Drawing.Color.Red; 94 | this.msgText.Location = new System.Drawing.Point(16, 37); 95 | this.msgText.Name = "msgText"; 96 | this.msgText.Size = new System.Drawing.Size(338, 17); 97 | this.msgText.TabIndex = 3; 98 | // 99 | // AikotobaInputForm 100 | // 101 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 102 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 103 | this.ClientSize = new System.Drawing.Size(344, 170); 104 | this.Controls.Add(this.msgText); 105 | this.Controls.Add(this.authBtn); 106 | this.Controls.Add(this.cancelBtn); 107 | this.Controls.Add(this.label2); 108 | this.Controls.Add(this.label1); 109 | this.Controls.Add(this.passText); 110 | this.Name = "AikotobaInputForm"; 111 | this.Text = "合言葉を入力する"; 112 | this.ResumeLayout(false); 113 | this.PerformLayout(); 114 | } 115 | private System.Windows.Forms.Label msgText; 116 | private System.Windows.Forms.Button authBtn; 117 | private System.Windows.Forms.Label label2; 118 | private System.Windows.Forms.Button cancelBtn; 119 | private System.Windows.Forms.Label label1; 120 | private System.Windows.Forms.TextBox passText; 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/AikotobaInputForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: ajkkh 4 | * Date: 2024/11/19 5 | * Time: 8:09 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Net; 12 | using System.Windows.Forms; 13 | using namaichi.utility; 14 | 15 | namespace namaichi.gui 16 | { 17 | /// 18 | /// Description of AikotobaInputForm. 19 | /// 20 | public partial class AikotobaInputForm : Form 21 | { 22 | string lvid = null; 23 | CookieContainer cc; 24 | public AikotobaInputForm(string lvid, CookieContainer cc) 25 | { 26 | // 27 | // The InitializeComponent() call is required for Windows Forms designer support. 28 | // 29 | InitializeComponent(); 30 | 31 | // 32 | // TODO: Add constructor code after the InitializeComponent() call. 33 | // 34 | this.lvid = lvid; 35 | this.cc = cc; 36 | } 37 | void CancelBtnClick(object sender, EventArgs e) 38 | { 39 | Close(); 40 | } 41 | 42 | void AuthBtnClick(object sender, EventArgs e) 43 | { 44 | string errMsg = null; 45 | if (sendAikotoba(out errMsg)) { 46 | DialogResult = DialogResult.OK; 47 | Close(); 48 | } else { 49 | msgText.Text = errMsg; 50 | } 51 | } 52 | bool sendAikotoba(out string msg) { 53 | msg = null; 54 | 55 | var url = "https://live2.nicovideo.jp/unama/api/v2/programs/" + lvid + "/password/permission"; 56 | var h = util.getHeader(cc, "https://live.nicovideo.jp/", url); 57 | h.Add("X-niconico-session", "cookie"); 58 | h.Add("Content-Type", "application/json"); 59 | var data = "{\"password\":\"" + passText.Text + "\"}"; 60 | 61 | var r = new Curl().getStr(url, h, CurlHttpVersion.CURL_HTTP_VERSION_2TLS, "POST", data, false, true, true); 62 | util.debugWriteLine(r); 63 | if (r.IndexOf("\"status\":200") == -1) { 64 | msg = r; 65 | return false; 66 | } 67 | return true; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/DotNetMessageBox.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/16 5 | * Time: 13:23 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi 10 | { 11 | partial class DotNetMessageBox 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.panel1 = new System.Windows.Forms.Panel(); 40 | this.label2 = new System.Windows.Forms.Label(); 41 | this.button3 = new System.Windows.Forms.Button(); 42 | this.panel1.SuspendLayout(); 43 | this.SuspendLayout(); 44 | // 45 | // panel1 46 | // 47 | this.panel1.BackColor = System.Drawing.Color.White; 48 | this.panel1.Controls.Add(this.label2); 49 | this.panel1.Location = new System.Drawing.Point(0, 0); 50 | this.panel1.Name = "panel1"; 51 | this.panel1.Size = new System.Drawing.Size(365, 82); 52 | this.panel1.TabIndex = 1; 53 | // 54 | // label2 55 | // 56 | this.label2.Font = new System.Drawing.Font("MS ゴシック", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); 57 | this.label2.Location = new System.Drawing.Point(12, 31); 58 | this.label2.Name = "label2"; 59 | this.label2.Size = new System.Drawing.Size(330, 21); 60 | this.label2.TabIndex = 2; 61 | this.label2.Text = "動作には.NET 4.5.2以上が推奨です。"; 62 | // 63 | // button3 64 | // 65 | this.button3.Location = new System.Drawing.Point(254, 102); 66 | this.button3.Name = "button3"; 67 | this.button3.Size = new System.Drawing.Size(88, 26); 68 | this.button3.TabIndex = 3; 69 | this.button3.Text = "OK"; 70 | this.button3.UseVisualStyleBackColor = true; 71 | this.button3.Click += new System.EventHandler(this.Button3Click); 72 | // 73 | // DotNetMessageBox 74 | // 75 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 76 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 77 | this.ClientSize = new System.Drawing.Size(363, 140); 78 | this.Controls.Add(this.button3); 79 | this.Controls.Add(this.panel1); 80 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; 81 | this.Name = "DotNetMessageBox"; 82 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 83 | this.panel1.ResumeLayout(false); 84 | this.ResumeLayout(false); 85 | } 86 | private System.Windows.Forms.Button button3; 87 | private System.Windows.Forms.Label label2; 88 | private System.Windows.Forms.Panel panel1; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/DotNetMessageBox.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/16 5 | * Time: 13:23 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi 14 | { 15 | /// 16 | /// Description of DotNetMessageBox. 17 | /// 18 | public partial class DotNetMessageBox : Form 19 | { 20 | public DotNetMessageBox(double ver, int fontSize) 21 | { 22 | // 23 | // The InitializeComponent() call is required for Windows Forms designer support. 24 | // 25 | InitializeComponent(); 26 | // label2.Text += ver + "です。"; 27 | // 28 | // TODO: Add constructor code after the InitializeComponent() call. 29 | // 30 | util.setFontSize(fontSize, this, false); 31 | } 32 | 33 | void Button3Click(object sender, EventArgs e) 34 | { 35 | Close(); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/MfaInputForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2023/05/03 5 | * Time: 8:37 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi.gui 10 | { 11 | partial class MfaInputForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.sendToLabel = new System.Windows.Forms.Label(); 40 | this.label2 = new System.Windows.Forms.Label(); 41 | this.codeText = new System.Windows.Forms.TextBox(); 42 | this.cancelBtn = new System.Windows.Forms.Button(); 43 | this.okBtn = new System.Windows.Forms.Button(); 44 | this.label1 = new System.Windows.Forms.Label(); 45 | this.SuspendLayout(); 46 | // 47 | // sendToLabel 48 | // 49 | this.sendToLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 50 | | System.Windows.Forms.AnchorStyles.Right))); 51 | this.sendToLabel.Location = new System.Drawing.Point(12, 39); 52 | this.sendToLabel.Name = "sendToLabel"; 53 | this.sendToLabel.Size = new System.Drawing.Size(308, 19); 54 | this.sendToLabel.TabIndex = 0; 55 | this.sendToLabel.Text = " に確認コードを送信しました"; 56 | // 57 | // label2 58 | // 59 | this.label2.Location = new System.Drawing.Point(12, 58); 60 | this.label2.Name = "label2"; 61 | this.label2.Size = new System.Drawing.Size(182, 19); 62 | this.label2.TabIndex = 1; 63 | this.label2.Text = "メールに記載された6桁の数字を入力"; 64 | // 65 | // codeText 66 | // 67 | this.codeText.Location = new System.Drawing.Point(12, 80); 68 | this.codeText.Name = "codeText"; 69 | this.codeText.Size = new System.Drawing.Size(85, 19); 70 | this.codeText.TabIndex = 2; 71 | // 72 | // cancelBtn 73 | // 74 | this.cancelBtn.Location = new System.Drawing.Point(232, 110); 75 | this.cancelBtn.Name = "cancelBtn"; 76 | this.cancelBtn.Size = new System.Drawing.Size(74, 23); 77 | this.cancelBtn.TabIndex = 4; 78 | this.cancelBtn.Text = "キャンセル"; 79 | this.cancelBtn.UseVisualStyleBackColor = true; 80 | this.cancelBtn.Click += new System.EventHandler(this.CancelBtnClick); 81 | // 82 | // okBtn 83 | // 84 | this.okBtn.Location = new System.Drawing.Point(152, 110); 85 | this.okBtn.Name = "okBtn"; 86 | this.okBtn.Size = new System.Drawing.Size(74, 23); 87 | this.okBtn.TabIndex = 3; 88 | this.okBtn.Text = "OK"; 89 | this.okBtn.UseVisualStyleBackColor = true; 90 | this.okBtn.Click += new System.EventHandler(this.OkBtnClick); 91 | // 92 | // label1 93 | // 94 | this.label1.Location = new System.Drawing.Point(12, 20); 95 | this.label1.Name = "label1"; 96 | this.label1.Size = new System.Drawing.Size(257, 19); 97 | this.label1.TabIndex = 1; 98 | this.label1.Text = "ログインするには2段階認証の確認コードが必要です"; 99 | // 100 | // MfaInputForm 101 | // 102 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 103 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 104 | this.ClientSize = new System.Drawing.Size(319, 145); 105 | this.Controls.Add(this.cancelBtn); 106 | this.Controls.Add(this.okBtn); 107 | this.Controls.Add(this.codeText); 108 | this.Controls.Add(this.label1); 109 | this.Controls.Add(this.label2); 110 | this.Controls.Add(this.sendToLabel); 111 | this.Name = "MfaInputForm"; 112 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 113 | this.Text = "2段階認証"; 114 | this.ResumeLayout(false); 115 | this.PerformLayout(); 116 | } 117 | private System.Windows.Forms.Label label1; 118 | private System.Windows.Forms.Button okBtn; 119 | private System.Windows.Forms.Button cancelBtn; 120 | private System.Windows.Forms.TextBox codeText; 121 | private System.Windows.Forms.Label label2; 122 | private System.Windows.Forms.Label sendToLabel; 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/MfaInputForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2023/05/03 5 | * Time: 8:37 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi.gui 14 | { 15 | /// 16 | /// Description of MfaInputForm. 17 | /// 18 | public partial class MfaInputForm : Form 19 | { 20 | public string code = null; 21 | public MfaInputForm(string sendTo) 22 | { 23 | // 24 | // The InitializeComponent() call is required for Windows Forms designer support. 25 | // 26 | InitializeComponent(); 27 | 28 | // 29 | // TODO: Add constructor code after the InitializeComponent() call. 30 | // 31 | if (sendTo != null) { 32 | if (sendTo != "app") 33 | sendToLabel.Text = sendTo + sendToLabel.Text; 34 | else { 35 | sendToLabel.Text = "スマートフォンのアプリを使って確認コードを取得してください"; 36 | label2.Text = "アプリに表示された6桁の数字を入力"; 37 | } 38 | } 39 | } 40 | void OkBtnClick(object sender, EventArgs e) 41 | { 42 | if (codeText.Text.Length != 6) { 43 | MessageBox.Show("入力されたコードが6文字ではありません。"); 44 | return; 45 | } 46 | if (util.getRegGroup(codeText.Text, "(\\D)") != null) { 47 | MessageBox.Show("入力されたコードに数字以外の文字が含まれています。"); 48 | return; 49 | } 50 | code = codeText.Text; 51 | Close(); 52 | } 53 | void CancelBtnClick(object sender, EventArgs e) 54 | { 55 | Close(); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/RecordLogForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: ajkkh 4 | * Date: 2023/07/30 5 | * Time: 8:05 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi.gui 10 | { 11 | partial class RecordLogForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.textBox1 = new System.Windows.Forms.TextBox(); 40 | this.textBox2 = new System.Windows.Forms.TextBox(); 41 | this.label1 = new System.Windows.Forms.Label(); 42 | this.label2 = new System.Windows.Forms.Label(); 43 | this.SuspendLayout(); 44 | // 45 | // textBox1 46 | // 47 | this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 48 | | System.Windows.Forms.AnchorStyles.Right))); 49 | this.textBox1.Location = new System.Drawing.Point(12, 27); 50 | this.textBox1.Multiline = true; 51 | this.textBox1.Name = "textBox1"; 52 | this.textBox1.Size = new System.Drawing.Size(260, 194); 53 | this.textBox1.TabIndex = 0; 54 | // 55 | // textBox2 56 | // 57 | this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 58 | | System.Windows.Forms.AnchorStyles.Left) 59 | | System.Windows.Forms.AnchorStyles.Right))); 60 | this.textBox2.Location = new System.Drawing.Point(12, 248); 61 | this.textBox2.Multiline = true; 62 | this.textBox2.Name = "textBox2"; 63 | this.textBox2.Size = new System.Drawing.Size(260, 73); 64 | this.textBox2.TabIndex = 1; 65 | // 66 | // label1 67 | // 68 | this.label1.Location = new System.Drawing.Point(12, 230); 69 | this.label1.Name = "label1"; 70 | this.label1.Size = new System.Drawing.Size(103, 15); 71 | this.label1.TabIndex = 2; 72 | this.label1.Text = "ファイル取得ログ"; 73 | // 74 | // label2 75 | // 76 | this.label2.Location = new System.Drawing.Point(12, 9); 77 | this.label2.Name = "label2"; 78 | this.label2.Size = new System.Drawing.Size(103, 15); 79 | this.label2.TabIndex = 2; 80 | this.label2.Text = "全般"; 81 | // 82 | // RecordLogForm 83 | // 84 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 85 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 86 | this.ClientSize = new System.Drawing.Size(284, 333); 87 | this.Controls.Add(this.label2); 88 | this.Controls.Add(this.label1); 89 | this.Controls.Add(this.textBox2); 90 | this.Controls.Add(this.textBox1); 91 | this.Name = "RecordLogForm"; 92 | this.Text = "動作記録"; 93 | this.ResumeLayout(false); 94 | this.PerformLayout(); 95 | } 96 | private System.Windows.Forms.Label label2; 97 | private System.Windows.Forms.Label label1; 98 | private System.Windows.Forms.TextBox textBox2; 99 | private System.Windows.Forms.TextBox textBox1; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/RecordLogForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: ajkkh 4 | * Date: 2023/07/30 5 | * Time: 8:05 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi.gui 14 | { 15 | /// 16 | /// Description of RecordLogForm. 17 | /// 18 | public partial class RecordLogForm : Form 19 | { 20 | public RecordLogForm() 21 | { 22 | // 23 | // The InitializeComponent() call is required for Windows Forms designer support. 24 | // 25 | InitializeComponent(); 26 | 27 | // 28 | // TODO: Add constructor code after the InitializeComponent() call. 29 | // 30 | textBox1.Text = RecordLogInfo.getText(); 31 | textBox2.Text = RecordLogInfo.getFileText(); 32 | } 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/UpdateForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/22 5 | * Time: 4:10 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi 10 | { 11 | partial class UpdateForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.panel1 = new System.Windows.Forms.Panel(); 40 | this.label3 = new System.Windows.Forms.Label(); 41 | this.panel3 = new System.Windows.Forms.Panel(); 42 | this.okBtn = new System.Windows.Forms.Button(); 43 | this.panel2 = new System.Windows.Forms.Panel(); 44 | this.panel3.SuspendLayout(); 45 | this.SuspendLayout(); 46 | // 47 | // panel1 48 | // 49 | this.panel1.Dock = System.Windows.Forms.DockStyle.Top; 50 | this.panel1.Location = new System.Drawing.Point(0, 0); 51 | this.panel1.Name = "panel1"; 52 | this.panel1.Size = new System.Drawing.Size(318, 13); 53 | this.panel1.TabIndex = 3; 54 | // 55 | // label3 56 | // 57 | this.label3.Dock = System.Windows.Forms.DockStyle.Top; 58 | this.label3.Location = new System.Drawing.Point(0, 13); 59 | this.label3.Name = "label3"; 60 | this.label3.Size = new System.Drawing.Size(318, 24); 61 | this.label3.TabIndex = 4; 62 | this.label3.Text = "新しいバージョンの全てのファイルをこれまで使っていたフォルダに上書きコピーすると設定を引き継いでアップデートできます。"; 63 | this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 64 | // 65 | // panel3 66 | // 67 | this.panel3.Controls.Add(this.okBtn); 68 | this.panel3.Dock = System.Windows.Forms.DockStyle.Top; 69 | this.panel3.Location = new System.Drawing.Point(0, 47); 70 | this.panel3.Name = "panel3"; 71 | this.panel3.Size = new System.Drawing.Size(318, 33); 72 | this.panel3.TabIndex = 25; 73 | // 74 | // okBtn 75 | // 76 | this.okBtn.AutoSize = true; 77 | this.okBtn.Location = new System.Drawing.Point(127, 3); 78 | this.okBtn.Name = "okBtn"; 79 | this.okBtn.Size = new System.Drawing.Size(64, 24); 80 | this.okBtn.TabIndex = 23; 81 | this.okBtn.Text = "OK"; 82 | this.okBtn.UseVisualStyleBackColor = true; 83 | this.okBtn.Click += new System.EventHandler(this.okBtnClick); 84 | // 85 | // panel2 86 | // 87 | this.panel2.Dock = System.Windows.Forms.DockStyle.Top; 88 | this.panel2.Location = new System.Drawing.Point(0, 37); 89 | this.panel2.Name = "panel2"; 90 | this.panel2.Size = new System.Drawing.Size(318, 10); 91 | this.panel2.TabIndex = 24; 92 | // 93 | // UpdateForm 94 | // 95 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 96 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 97 | this.ClientSize = new System.Drawing.Size(318, 80); 98 | this.Controls.Add(this.panel3); 99 | this.Controls.Add(this.panel2); 100 | this.Controls.Add(this.label3); 101 | this.Controls.Add(this.panel1); 102 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 103 | this.Name = "UpdateForm"; 104 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 105 | this.Text = "更新方法"; 106 | this.panel3.ResumeLayout(false); 107 | this.panel3.PerformLayout(); 108 | this.ResumeLayout(false); 109 | } 110 | public System.Windows.Forms.Button okBtn; 111 | private System.Windows.Forms.Panel panel3; 112 | private System.Windows.Forms.Panel panel2; 113 | private System.Windows.Forms.Label label3; 114 | private System.Windows.Forms.Panel panel1; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/UpdateForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2020/01/11 5 | * Time: 19:35 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi 14 | { 15 | /// 16 | /// Description of UpdateForm. 17 | /// 18 | public partial class UpdateForm : Form 19 | { 20 | public UpdateForm(int fontSize) 21 | { 22 | // 23 | // The InitializeComponent() call is required for Windows Forms designer support. 24 | // 25 | InitializeComponent(); 26 | 27 | // 28 | // TODO: Add constructor code after the InitializeComponent() call. 29 | // 30 | util.setFontSize(fontSize, this, false); 31 | } 32 | void okBtnClick(object sender, EventArgs e) 33 | { 34 | Close(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/VersionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/22 5 | * Time: 4:10 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | using System.Text.RegularExpressions; 13 | using System.Threading.Tasks; 14 | 15 | namespace namaichi 16 | { 17 | /// 18 | /// Description of VersionForm. 19 | /// 20 | public partial class VersionForm : Form 21 | { 22 | private MainForm form; 23 | public VersionForm(int fontSize, MainForm form) 24 | { 25 | // 26 | // The InitializeComponent() call is required for Windows Forms designer support. 27 | // 28 | InitializeComponent(); 29 | this.form = form; 30 | // 31 | // TODO: Add constructor code after the InitializeComponent() call. 32 | // 33 | versionLabel.Text = util.versionStr + " (" + util.versionDayStr + ")"; 34 | //communityLinkLabel.Links.Add(0, communityLinkLabel.Text.Length, "http://com.nicovideo.jp/community/co2414037"); 35 | util.setFontSize(fontSize, this, false); 36 | lastVersionLabel.Font = new Font(lastVersionLabel.Font, FontStyle.Italic); 37 | } 38 | 39 | void okBtnClick(object sender, EventArgs e) 40 | { 41 | Close(); 42 | } 43 | 44 | void communityLinkLabel_Click(object sender, LinkLabelLinkClickedEventArgs e) 45 | { 46 | try { 47 | System.Diagnostics.Process.Start("https://com.nicovideo.jp/community/co2414037"); 48 | } catch (Exception ee) { 49 | util.debugWriteLine(ee.Message + " " + ee.StackTrace); 50 | form.addLogText("ページの表示に失敗しました " + ee.Message + ee.Source + ee.StackTrace + ee.TargetSite); 51 | } 52 | } 53 | 54 | void VersionFormLoad(object sender, EventArgs e) 55 | { 56 | Task.Factory.StartNew(() => checkLastVersion()); 57 | } 58 | private void checkLastVersion() { 59 | var r = util.getPageSource("https://github.com/guest-nico/nicoNewStreamRecorderKakkoKari/commits/master/"); 60 | if (r == null) { 61 | form.formAction(() => 62 | lastVersionLabel.Text = "最新の利用可能なバージョンを確認できませんでした"); 63 | return; 64 | } 65 | var m = new Regex("https://github.com/guest-nico/nicoNewStreamRecorderKakkoKari/releases/download/releases/(.+?).(zip|rar)").Match(r); 66 | if (!m.Success) { 67 | form.formAction(() => 68 | lastVersionLabel.Text = "最新の利用可能なバージョンが見つかりませんでした"); 69 | return; 70 | } 71 | var v = m.Groups[1].Value; 72 | if (v.IndexOf(util.versionStr) > -1) 73 | form.formAction(() => lastVersionLabel.Text = "ニコ生新配信録画ツール(仮は最新バージョンです"); 74 | else { 75 | form.formAction(() => { 76 | lastVersionLabel.Text = v + "が利用可能です"; 77 | lastVersionLabel.Links.Clear(); 78 | lastVersionLabel.Links.Add(0, v.Length, m.Value); 79 | //lastVersionLabel.LinkArea = new LinkArea(0, v.Length); 80 | }); 81 | } 82 | } 83 | 84 | void LastVersionLabelLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 85 | { 86 | form.titleLabel_Click(sender, e); 87 | } 88 | 89 | void DownloadPageLinkLabelLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 90 | { 91 | var url = "https://guest-nico.github.io/pages/downloads.html"; 92 | util.openUrl(url, bool.Parse(form.rec.cfg.get("IsdefaultBrowserPath")), form.rec.cfg.get("browserPath")); 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/argOptionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/05/07 5 | * Time: 16:17 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi.gui 14 | { 15 | /// 16 | /// Description of ArgOptionForm. 17 | /// 18 | public partial class ArgOptionForm : Form 19 | { 20 | public string ret; 21 | 22 | public ArgOptionForm(int fontSize) 23 | { 24 | // 25 | // The InitializeComponent() call is required for Windows Forms designer support. 26 | // 27 | InitializeComponent(); 28 | // 29 | // TODO: Add constructor code after the InitializeComponent() call. 30 | // 31 | util.setFontSize(fontSize, this, false); 32 | setSampleLabel(); 33 | } 34 | 35 | void fileNameTypeOkBtn_Click(object sender, EventArgs e) 36 | { 37 | Close(); 38 | } 39 | 40 | void fileNameTypeText_Changed(object sender, EventArgs e) 41 | { 42 | setSampleLabel(); 43 | } 44 | void setSampleLabel() { 45 | fileNameTypeLabel.Text = 46 | util.getArgTypeSample(fileNameTypeText.Text); 47 | } 48 | 49 | void CopyBtnClick(object sender, EventArgs e) 50 | { 51 | Clipboard.SetText(fileNameTypeText.Text); 52 | } 53 | 54 | void FileNameTypeDefaultBtnClick(object sender, EventArgs e) 55 | { 56 | fileNameTypeText.Text = "-i {i} -c copy {o}.mp4"; 57 | } 58 | 59 | void FileNameTypeDateBtnClick(object sender, EventArgs e) 60 | { 61 | fileNameTypeText.Text = "{nourl}"; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/fileNameOptionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/05/07 5 | * Time: 16:17 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace namaichi 14 | { 15 | /// 16 | /// Description of fileNameOptionForm. 17 | /// 18 | public partial class fileNameOptionForm : Form 19 | { 20 | public string ret; 21 | 22 | public fileNameOptionForm(string filenameformat, int fontSize) 23 | { 24 | // 25 | // The InitializeComponent() call is required for Windows Forms designer support. 26 | // 27 | InitializeComponent(); 28 | 29 | fileNameTypeText.Text = filenameformat; 30 | fileNameTypeLabel.Text = 31 | util.getFileNameTypeSample(filenameformat); 32 | // 33 | // TODO: Add constructor code after the InitializeComponent() call. 34 | // 35 | util.setFontSize(fontSize, this, false); 36 | } 37 | 38 | void fileNameTypeOkBtn_Click(object sender, EventArgs e) 39 | { 40 | if (fileNameTypeText.Text.IndexOf("{0}") < 0) { 41 | //util.showMessageBoxCenterForm(this, "{0}は必ず入れてください", "注意", MessageBoxButtons.OK, MessageBoxIcon.None); 42 | if (MessageBox.Show("{0}がないです。このまま登録しますか?", "注意", MessageBoxButtons.OKCancel) == DialogResult.Cancel) 43 | return; 44 | } 45 | DialogResult = DialogResult.OK; 46 | ret = fileNameTypeText.Text; 47 | Close(); 48 | } 49 | void fileNameTypeCancelBtn_Click(object sender, EventArgs e) 50 | { 51 | DialogResult = DialogResult.Cancel; 52 | Close(); 53 | } 54 | 55 | void fileNameTypeText_Changed(object sender, EventArgs e) 56 | { 57 | fileNameTypeLabel.Text = 58 | util.getFileNameTypeSample(fileNameTypeText.Text); 59 | } 60 | 61 | void fileNameTypeDefaultBtn_Click(object sender, EventArgs e) 62 | { 63 | fileNameTypeText.Text = 64 | "{Y}_{M}_{D}_{h}_{m}_{0}_{1}_{2}_{3}_{4}"; 65 | } 66 | void fileNameTypeNitijiBtn_Click(object sender, EventArgs e) 67 | { 68 | fileNameTypeText.Text = 69 | "{Y}年{M}月{D}日({W}){h}時{m}分{1}_{0}_"; 70 | } 71 | void fileNameTypeSimpleBtn_Click(object sender, EventArgs e) 72 | { 73 | fileNameTypeText.Text = 74 | "{0}_"; 75 | } 76 | void fileNameTypeTitleBtn_Click(object sender, EventArgs e) 77 | { 78 | fileNameTypeText.Text = 79 | "{1}_{0}_"; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/placeHolderText.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/08/14 5 | * Time: 15:07 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi 10 | { 11 | partial class placeHolderText 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the control. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | // 40 | // placeHolderText 41 | // 42 | //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 43 | this.Name = "placeHolderText"; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/gui/placeTextBox5.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/08/13 5 | * Time: 15:36 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace namaichi 10 | { 11 | partial class placeTextBox5 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the control. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | // 40 | // placeTextBox5 41 | // 42 | //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 43 | this.Name = "placeTextBox5"; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/AccountInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2021/09/30 5 | * Time: 13:53 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using System.IO; 12 | using System.Net; 13 | using System.Text; 14 | using System.Xml.Serialization; 15 | using Newtonsoft.Json; 16 | using SunokoLibrary.Application; 17 | 18 | namespace namaichi.info 19 | { 20 | /// 21 | /// Description of AccountInfo. 22 | /// 23 | public class AccountInfo 24 | { 25 | public CookieSourceInfo si; 26 | public string accountId; 27 | public string accountPass; 28 | public string userSession; 29 | public bool isBrowser = false; 30 | public bool isAccount = false; 31 | public bool isUserSession = false; 32 | public AccountInfo(CookieSourceInfo si, string accountId, 33 | string accountPass, string userSession, bool isBrowser, bool isAccount, 34 | bool isUserSession) 35 | { 36 | this.si = si; 37 | this.accountId = accountId; 38 | this.accountPass = accountPass; 39 | this.userSession = userSession; 40 | this.isBrowser = isBrowser; 41 | this.isAccount = isAccount; 42 | this.isUserSession = isUserSession; 43 | } 44 | public static AccountInfo fromJsonArg(string arg) { 45 | util.debugWriteLine("AccountInfo fromJsonArg " + arg); 46 | try { 47 | var serializer = new XmlSerializer(typeof(AccountSetting)); 48 | using (var ms = new MemoryStream()) { 49 | var b = Encoding.UTF8.GetBytes(arg); 50 | ms.Write(b, 0, b.Length); 51 | ms.Flush(); 52 | ms.Seek(0, SeekOrigin.Begin); 53 | var _ai = (AccountSetting)serializer.Deserialize(ms); 54 | if (_ai.isBrowser) { 55 | var si = new CookieSourceInfo(_ai.BrowserName, _ai.ProfileName, _ai.CookiePath, _ai.EngineId, _ai.IsCustomized); 56 | return new AccountInfo(si, null, null, null, true, false, false); 57 | } else if (_ai.isAccount) { 58 | return new AccountInfo(null, _ai.mail, _ai.pass, null, false, true, false); 59 | } else { 60 | return new AccountInfo(null, null, null, _ai.userSession, false, false, true); 61 | } 62 | } 63 | } catch (Exception e) { 64 | util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite); 65 | return null; 66 | } 67 | } 68 | public class AccountSetting { 69 | public bool IsCustomized = false; 70 | public string BrowserName = null; 71 | public string ProfileName = null; 72 | public string CookiePath = null; 73 | public string EngineId = null; 74 | public string mail = ""; 75 | public string pass = ""; 76 | public string userSession = ""; 77 | public bool isBrowser = false; 78 | public bool isAccount = false; 79 | public bool isUserSession = false; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/M3u8Info.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: pc 4 | * Date: 2025/02/05 5 | * Time: 3:06 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using System.Linq; 12 | using System.Net; 13 | using System.Text.RegularExpressions; 14 | using System.Web; 15 | using namaichi.utility; 16 | 17 | namespace namaichi.info 18 | { 19 | /// 20 | /// Description of DliveM3u8Info. 21 | /// 22 | public class M3u8Info 23 | { 24 | public string url = null; 25 | string header = null; 26 | List urlList = new List(); 27 | string localUrl = null; 28 | public M3u8Info(string url, string r, string localUrl) 29 | { 30 | this.url = url; 31 | this.localUrl = localUrl; 32 | 33 | //r = new Regex("\"*(http.+?)\"*").Replace(r, localUrl + HttpUtility.UrlEncode("$1")); 34 | var extinfI = r.IndexOf("#EXTINF"); 35 | if (extinfI == -1) header = r; 36 | header = r.Substring(0, extinfI); 37 | 38 | addUrl(r); 39 | } 40 | public void addUrl(string r) { 41 | var second = 6.0; 42 | var secondSum = 0.0; 43 | foreach (var l in r.Replace("\r", "").Split('\n')) { 44 | if (l.IndexOf("#EXT-X-ENDLIST") > -1) { 45 | urlList.Add(new SegmentInfo("#EXT-X-ENDLIST", true, secondSum, second, int.MaxValue)); 46 | break; 47 | } 48 | var _second = util.getRegGroup(l, "^#EXTINF:([^,]+)"); 49 | if (_second != null) { 50 | second = double.Parse(_second); 51 | 52 | continue; 53 | } 54 | var m = new Regex("(http://.+?(\\d+).cmf[^\"\'\\s]+)").Match(l); 55 | if (!m.Success) continue; 56 | var url = m.Groups[1].Value; 57 | var n = int.Parse(m.Groups[2].Value); 58 | if (l.IndexOf("%2finit") > -1) continue; //n = 0; 59 | if (urlList.Count == 0 || n > urlList[urlList.Count - 1].n) { 60 | urlList.Add(new SegmentInfo(url, false, secondSum, second, n)); 61 | secondSum += second; 62 | } 63 | 64 | //test 65 | //if (urlList.Count > 10) 66 | // break; 67 | } 68 | 69 | } 70 | public string getRes(TimeShiftConfig tsConfig, bool isTimeShift) { 71 | var b = header + "\n"; 72 | var l = urlList.ToList(); 73 | foreach (var u in l) { 74 | if (u.url == "#EXT-X-ENDLIST") { 75 | b += u.url; 76 | break; 77 | } 78 | 79 | if (isTimeShift) { 80 | if (u.startTime + u.second < tsConfig.timeSeconds) 81 | continue; 82 | if (tsConfig.endTimeSeconds != 0 && u.startTime > tsConfig.endTimeSeconds) { 83 | b += "#EXT-X-ENDLIST\n"; 84 | break; 85 | } 86 | } 87 | b += "#EXTINF:6.00000\n"; 88 | b += u.url + "\n"; 89 | 90 | } 91 | return b; 92 | } 93 | class SegmentInfo { 94 | public string url = null; 95 | public bool isExtXEndlist = false; 96 | public double startTime = 0; 97 | public double second; 98 | public int n = 0; 99 | public SegmentInfo(string url, 100 | bool isExtXEndlist, double startTime, 101 | double second, int n) { 102 | this.url = url; 103 | this.isExtXEndlist = isExtXEndlist; 104 | this.startTime = startTime; 105 | this.second = second; 106 | this.n = n; 107 | } 108 | } 109 | } 110 | } 111 | 112 | //audioとvideoのm3u8の最初にinit00001がセグメントとして記述 -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/RecordLogInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: ajkkh 4 | * Date: 2023/07/30 5 | * Time: 0:56 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using namaichi.info; 12 | 13 | //namespace namaichi.info 14 | //{ 15 | /// 16 | /// Description of RecordInfo. 17 | /// 18 | public class RecordLogInfo 19 | { 20 | public static DateTime startTime = DateTime.MinValue; 21 | public static DateTime endTime = DateTime.MinValue; 22 | public static string lvid = ""; 23 | public static string loginType = ""; 24 | public static string foundLastUs = ""; 25 | public static string loginLog = ""; 26 | public static string recType = ""; //realtime timeshift chase 27 | //public static string lastState = ""; 28 | public static string recordedStatus = ""; 29 | public static List recBytesData = new List(); 30 | 31 | public RecordLogInfo() 32 | { 33 | } 34 | public static void clear() { 35 | startTime = endTime = DateTime.MinValue; 36 | lvid = loginType = foundLastUs = loginLog = 37 | recType = recordedStatus = ""; 38 | recBytesData.Clear(); 39 | } 40 | public static string getText() { 41 | var osName = util.osName; 42 | if (osName != null){ 43 | var _osName = util.getRegGroup(util.osName, "(.+)\\("); 44 | if (_osName != null) osName = _osName; 45 | } 46 | var r = "開始時間: " + startTime.ToString() + "\r\n"; 47 | r += "終了時間: " + endTime.ToString() + "\r\n"; 48 | r += "放送ID: " + lvid + "\r\n"; 49 | r += "ログイン方法: " + loginType + "\r\n"; 50 | r += "前回のユーザーセッション: " + foundLastUs + "\r\n"; 51 | r += "ログインログ: " + loginLog + "\r\n"; 52 | r += "動作種別: " + recType + "\r\n";; 53 | r += "転送状況: " + recordedStatus + "\r\n"; 54 | r += "OS: " + osName + "\r\n"; 55 | return r; 56 | } 57 | public static string getFileText() { 58 | var r = string.Join("\r\n", recBytesData.ToArray()); 59 | return r; 60 | } 61 | public static void addrecBytesData(numTaskInfo nti) { 62 | try { 63 | recBytesData.Add(nti.no + "," + (nti.res == null ? "null" : nti.res.Length.ToString()) + "," + nti.second); 64 | } catch (Exception e) { 65 | recBytesData.Add("nti error " + e.Message + e.Source); 66 | } 67 | } 68 | } 69 | //} 70 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/RedistInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: user 4 | * Date: 2018/09/10 5 | * Time: 20:22 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | 11 | namespace namaichi.info 12 | { 13 | /// 14 | /// Description of RedistInfo. 15 | /// 16 | public class RedistInfo 17 | { 18 | public TimeShiftConfig tsConfig; 19 | public string[] qualityRank; 20 | public int afterFFmpegMode; 21 | 22 | public RedistInfo(string[] args) 23 | { 24 | /* 25 | tsConfig = new TimeShiftConfig(int.Parse(args[2]), 26 | int.Parse(args[3]), int.Parse(args[4]), 27 | int.Parse(args[5]), int.Parse(args[6]), 28 | int.Parse(args[7]), int.Parse(args[8]), 29 | bool.Parse(args[9]), bool.Parse(args[10]), 30 | args[11], bool.Parse(args[12]), 31 | double.Parse(args[13]), bool.Parse(args[14])); 32 | qualityRank = args[15].Split(','); 33 | */ 34 | afterFFmpegMode = int.Parse(args[2]); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/WatchingInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: user 4 | * Date: 2018/08/30 5 | * Time: 20:38 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | 11 | namespace namaichi.info 12 | { 13 | /// 14 | /// Description of WatchingInfo. 15 | /// 16 | public class WatchingInfo 17 | { 18 | public string hlsUrl; 19 | public string msUri; 20 | public string chatThread; 21 | public string chatKey; 22 | public string controlThread; 23 | public string controlKey; 24 | public string msVersion; 25 | public long expireIn = 10000; 26 | public DateTime roomSince; 27 | public string visit; 28 | public string comment; 29 | 30 | public WatchingInfo(string res) 31 | { 32 | var ver = System.Environment.OSVersion.Version; 33 | var isSecure = ver.Major >= 6 && ver.Minor >= 1; 34 | 35 | hlsUrl = util.getRegGroup(res, "streamServer\".+?\"url\":\"(.+?)\""); 36 | msUri = util.getRegGroup(res, "\"messageServer\".+?\"" + 37 | ((isSecure) ? "wss" : "ws") + "\"\\:\"(.+?)\""); 38 | chatThread = util.getRegGroup(res, "\"threads\".+?\"chat\"\\:\"(.+?)\""); 39 | chatKey = util.getRegGroup(res, "\"chatThreadKey\"\\:\"(.+?)\""); 40 | controlThread = util.getRegGroup(res, "\"threads\".+?\"control\"\\:\"(.+?)\""); 41 | controlKey = util.getRegGroup(res, "\"controlThreadKey\"\\:\"(.+?)\""); 42 | msVersion = util.getRegGroup(res, "\"version\"\\:(\\d+)"); 43 | var _expireIn = util.getRegGroup(res, "\"expireIn\"\\:(\\d+)"); 44 | if (_expireIn != null) expireIn = long.Parse(_expireIn); 45 | var _roomSince = util.getRegGroup(res, "\"room\".+?\"since\"\\:\"(.+?)\""); 46 | roomSince = DateTime.Parse(_roomSince); 47 | visit = util.getRegGroup(res, "\"statistics\".+?\"viewers\"\\:(\\d+)"); 48 | comment = util.getRegGroup(res, "\"statistics\".+?\"comments\"\\:(\\d+)"); 49 | } 50 | public string[] getMessageRequest(string userId, int resfrom) { 51 | var chat = "[{\"ping\":{\"content\":\"rs:0\"}},{\"ping\":{\"content\":\"ps:0\"}},{\"thread\":{\"thread\":\"" + chatThread + "\",\"version\":\"" + msVersion + "\",\"fork\":0,\"user_id\":\"" + userId + "\",\"res_from\":" + resfrom + ",\"force_184\":\"0\",\"with_global\":1,\"scores\":1,\"nicoru\":0,\"threadkey\":\"" + chatKey + "\",\"service\":\"LIVE\"}},{\"ping\":{\"content\":\"pf:0\"}},{\"ping\":{\"content\":\"rf:0\"}}]"; 52 | var control = "[{\"ping\":{\"content\":\"rs:1\"}},{\"ping\":{\"content\":\"ps:5\"}},{\"thread\":{\"thread\":\"" + controlThread + "\",\"version\":\"" + msVersion + "\",\"fork\":0,\"user_id\":\"" + userId + "\",\"res_from\":" + resfrom + ",\"force_184\":\"0\",\"with_global\":1,\"scores\":1,\"nicoru\":0,\"threadkey\":\"" + controlKey + "\",\"service\":\"LIVE\"}},{\"ping\":{\"content\":\"pf:5\"}},{\"ping\":{\"content\":\"rf:1\"}}]"; 53 | return new string[]{chat, control}; 54 | } 55 | public void setPutWatching(string res) { 56 | 57 | hlsUrl = util.getRegGroup(res, "streamServer\".+?\"url\":\"(.+?)\""); 58 | var _expireIn = util.getRegGroup(res, "\"expireIn\"\\:(\\d+)"); 59 | if (_expireIn != null) expireIn = long.Parse(_expireIn); 60 | visit = util.getRegGroup(res, "\"statistics\".+?\"viewers\"\\:(\\d+)"); 61 | comment = util.getRegGroup(res, "\"statistics\".+?\"comments\"\\:(\\d+)"); 62 | util.debugWriteLine("setPutWatching hlsUrl " + hlsUrl); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/info/numTaskInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: user 4 | * Date: 2018/10/12 5 | * Time: 0:11 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | 11 | namespace namaichi.info 12 | { 13 | /// 14 | /// Description of numTaskInfo. 15 | /// 16 | public class numTaskInfo { 17 | public int no = -1; 18 | public string url = null; 19 | public byte[] res = null; 20 | public double second = 0; 21 | public string fileName = null; 22 | public DateTime dt; 23 | public int originNo = -1; 24 | public double startSecond = -1; 25 | public numTaskInfo(int no, string url, double second, string fileName, double startSecond, int originNo = -1) { 26 | this.no = no; 27 | this.url = url; 28 | this.second = second; 29 | this.fileName = fileName; 30 | dt = DateTime.Now; 31 | this.originNo = (originNo == -1) ? no : originNo; 32 | this.startSecond = startSecond; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/rec/DeflateDecoder.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/05 5 | * Time: 4:20 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.IO; 11 | using System.IO.Compression; 12 | 13 | namespace namaichi.rec 14 | { 15 | /// 16 | /// Description of DeflateDecoder. 17 | /// 18 | public class DeflateDecoder { 19 | private MemoryStream ms = new MemoryStream(); 20 | //private DeflateStream ds; 21 | private StreamReader br; 22 | public DeflateDecoder() { 23 | var ds = new DeflateStream(ms, CompressionMode.Decompress); 24 | br = new StreamReader(ds, System.Text.Encoding.UTF8); 25 | 26 | } 27 | public string decode(byte[] b) { 28 | ms.Position = 0; 29 | ms.SetLength(0); 30 | 31 | ms.Write(b, 0, b.Length); 32 | /* 33 | if (b.Length > 100) 34 | ms.Write(b, 4, b.Length - 4); 35 | else 36 | ms.Write(b, 2, b.Length - 2); 37 | */ 38 | ms.Write(new byte[]{0,0,255,255}, 0, 4); 39 | if (b.Length % 13 != 0 && false) { 40 | var n = (((int)(b.Length / 13)) + 1) * 13 - b.Length; 41 | ms.Write(new byte[n], 0, n); 42 | } 43 | 44 | 45 | ms.Flush(); 46 | //ms.Position -= b.Length; 47 | ms.Position = 0; 48 | 49 | // util.debugWriteLine(string.Join(" ", ms.ToArray())); 50 | //byte[] o = new byte[int.MaxValue]; 51 | try { 52 | //ds.Read(o, 0, o.Length); 53 | //o = br.ReadBytes(int.MaxValue); 54 | //return System.Text.Encoding.UTF8.GetString(br.ReadBytes(int.MaxValue)); 55 | return br.ReadToEnd(); 56 | } catch (Exception e) { 57 | util.debugWriteLine("decode exception " + e.Message + e.StackTrace + b); 58 | //util.debugWriteLine("exception " + o); 59 | return null; 60 | } 61 | 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/rec/IRecorderProcess.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/08/31 5 | * Time: 18:48 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using System.Net; 12 | using System.Threading; 13 | using namaichi.info; 14 | using WebSocket4Net; 15 | 16 | namespace namaichi.rec 17 | { 18 | /// 19 | /// Description of IRecorderProcess1. 20 | /// 21 | abstract public class IRecorderProcess 22 | { 23 | public CookieContainer container = null; 24 | internal RecordingManager rm; 25 | internal RecordFromUrl rfu; 26 | public DateTime tsHlsRequestTime = DateTime.MinValue; 27 | public TimeSpan tsStartTime; 28 | //public bool isTimeShift = false; 29 | public string msUri; 30 | public string[] msReq; 31 | public string msStoreUri; 32 | public string[] msStoreReq; 33 | //public long openTime; 34 | public bool isJikken; 35 | public bool isHokan = false; 36 | public string[] gotTsCommentList; 37 | public double firstSegmentSecond = -1; 38 | 39 | public long serverTime; 40 | public DateTime endTime = DateTime.MinValue; 41 | public RecordInfo ri; 42 | public bool isSaveComment = false; 43 | public long sync = 0; 44 | public bool IsRetry = true; 45 | 46 | public string visitCount = "0"; 47 | public string commentCount = "0"; 48 | public ITimeShiftCommentGetter tscg = null; 49 | public MpnCommentGetter mcg = null; 50 | public List commentReplaceList = null; 51 | public List chaseCommentBuf = new List(); 52 | public TimeSpan jisa; 53 | public bool isDlive = false; 54 | 55 | public IRecorderProcess() 56 | { 57 | } 58 | abstract public void reConnect(); 59 | abstract public void reConnect(WebSocket ws); 60 | // abstract public string[] getRecFilePath(long _openTime); 61 | abstract public string[] getRecFilePath(); 62 | abstract public void sendComment(string s, bool is184); 63 | abstract public void resetCommentFile(); 64 | abstract public void setSync(int no, double second, string m3u8Url); 65 | //abstract public void setRealTimeStatistics(); 66 | public void setRealTimeStatistics() { 67 | try { 68 | if (!visitCount.StartsWith("-")) { 69 | Thread.Sleep(10000); 70 | string visit, comment; 71 | var ret = getStatistics(rfu.lvid, container, out visit, out comment); 72 | if (ret) { 73 | if (!visitCount.StartsWith("-")) { 74 | visitCount = "-" + visit; 75 | commentCount = "-" + comment; 76 | } 77 | } 78 | } 79 | } catch (Exception e) { 80 | util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite); 81 | } 82 | } 83 | abstract internal bool getStatistics(string lvid, CookieContainer cc, out string visit, out string comment); 84 | abstract public void stopRecording(); 85 | abstract public void chaseCommentSum(); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/rec/ITimeShiftCommentGetter.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2022/05/13 5 | * Time: 13:10 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using System.IO; 12 | using namaichi.info; 13 | 14 | namespace namaichi.rec 15 | { 16 | /// 17 | /// Description of ITimeShiftCommentGetter. 18 | /// 19 | public abstract class ITimeShiftCommentGetter 20 | { 21 | public bool isEnd = false; 22 | internal bool isRetry = true; 23 | public List gotCommentList = new List(); 24 | public List gotCommentListBuf = new List(); 25 | internal bool isVposStartTime; 26 | internal int _gotMinTime; 27 | internal string[] _gotMinXml = new string[2]; 28 | //internal string programType; 29 | //internal long openTime = 0; 30 | //internal long _openTime = 0; 31 | internal int gotCount = 0; 32 | internal int gotMinTime; 33 | internal string[] gotMinXml = new string[2]; 34 | internal bool isLog = true; 35 | internal bool isReachStartTimeSave = false; 36 | internal string lastRealTimeComment = null; 37 | internal bool isStore; 38 | //internal string fileName; 39 | internal string recFolderFile; 40 | internal TimeShiftConfig tsConfig = null; 41 | public IRecorderProcess rp; 42 | internal RecordInfo ri = null; 43 | 44 | abstract public void save(); 45 | public void setIsRetry(bool b) { 46 | isRetry = b; 47 | } 48 | internal int commentListCompare(GotCommentInfo x, GotCommentInfo y) { 49 | if (x.no >= 0 && y.no >= 0 && x.no != y.no) { 50 | return x.no - y.no; 51 | } 52 | if (x.date != y.date) 53 | return x.date - y.date; 54 | 55 | if (x.vpos != y.vpos) 56 | return x.vpos.CompareTo(y.vpos); 57 | return x.comment.CompareTo(y.comment); 58 | } 59 | internal void writeXmlStreamInfo(StreamWriter w) { 60 | var startTime = ri.si.openTime; 61 | var vposStartTime = (isVposStartTime) ? (long)rp.firstSegmentSecond : 0; 62 | if (ri.si.type == "official") { 63 | startTime = ri.si._openTime + vposStartTime; 64 | } else { 65 | startTime = ri.si.openTime + vposStartTime; 66 | } 67 | w.WriteLine(""); 68 | w.WriteLine("room"); 69 | w.WriteLine("" + startTime + ""); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/rec/OutputTimeShiftTsUrlList.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: user 4 | * Date: 2018/09/16 5 | * Time: 20:55 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.IO; 11 | using System.Diagnostics; 12 | using System.Threading; 13 | using System.Text.RegularExpressions; 14 | using namaichi.info; 15 | 16 | namespace namaichi.rec 17 | { 18 | /// 19 | /// Description of OutputTimeShiftTsUrlList. 20 | /// 21 | public class OutputTimeShiftTsUrlList 22 | { 23 | TimeShiftConfig tsConfig; 24 | RecordingManager rm; 25 | 26 | int startNum; 27 | public bool isStarted = false; 28 | private string ext = null; 29 | 30 | public OutputTimeShiftTsUrlList(TimeShiftConfig tsConfig, RecordingManager rm) 31 | { 32 | this.tsConfig = tsConfig; 33 | this.rm = rm; 34 | ext = rm.rfu.h5r.ri.isFmp4 ? ".mp4" : ".ts"; 35 | } 36 | public void setStartNum(string playList) { 37 | startNum = int.Parse(util.getRegGroup(playList, "(\\d+)" + ext)); 38 | } 39 | public void write(string playList, string _path, string baseUrl, TimeShiftConfig tsConfig) { 40 | isStarted = true; 41 | var path = _path + ((tsConfig.isM3u8List) ? ".m3u8" : ".txt"); 42 | 43 | var _hasuu = util.getRegGroup(playList, "(\\d\\d+)" + ext); 44 | var hasuu = (_hasuu == null) ? 0 : int.Parse(_hasuu); 45 | hasuu = hasuu % 5000; 46 | var _duration = util.getRegGroup(playList, "#DMC-STREAM-DURATION:(.+)"); 47 | var duration = double.Parse(_duration, System.Globalization.NumberStyles.Float); 48 | var _temp = util.getRegGroup(playList, "(.+\\" + ext + ".+)"); 49 | var temp = baseUrl + _temp; 50 | var tempNum = util.getRegGroup(_temp, "(\\d+)"); 51 | 52 | var ret = ""; 53 | if (startNum >= tsConfig.timeSeconds * 1000) 54 | ret += temp.Replace(tempNum + ext, startNum.ToString() + ext); 55 | for (var i = 5000 + hasuu; i < duration * 1000; i += 5000) { 56 | if (i < tsConfig.timeSeconds * 1000 || 57 | (tsConfig.endTimeSeconds != 0 && i > tsConfig.endTimeSeconds * 1000)) continue; 58 | if (ret != "") ret += "\r\n"; 59 | ret += temp.Replace(tempNum + ext, i + ext); 60 | } 61 | 62 | if (tsConfig.isM3u8List) { 63 | writeM3u8List(path, ret); 64 | } else { 65 | using (var w = new StreamWriter(path, false)) { 66 | w.Write(ret); 67 | //w.Flush(); 68 | //w.Close(); 69 | } 70 | if (tsConfig.isOpenUrlList) 71 | openFile(path); 72 | } 73 | } 74 | private string openFile(string listPath) { 75 | var listDirPath = new FileInfo(listPath).Directory.ToString(); 76 | //var o = listDirPath + "/out" + ext; 77 | //var _command = tsConfig.openListCommand.Replace("{i}", "\"" + listPath + "\""); 78 | //var _i = util.getRegGroup(tsConfig.openListCommand, "(\\{i\\}[^s]*)"); 79 | //var _command = Regex.Replace(tsConfig.openListCommand, "\\{i\\}([^s]*)", "{$1} 80 | var _command = Regex.Replace(tsConfig.openListCommand, "\\{i\\}(\\S*)", "\"" + listPath + "$1\""); 81 | //_command = _command.Replace("{o}", o); 82 | 83 | string f = null; 84 | string arg = null; 85 | if (_command.StartsWith("\"")) { 86 | f = util.getRegGroup(_command, "\"(.+?)\""); 87 | arg = util.getRegGroup(_command, "\".+?\"(.+)"); 88 | } else { 89 | f = util.getRegGroup(_command, "(.+?) "); 90 | arg = util.getRegGroup(_command, ".+? (.+)"); 91 | } 92 | if (f == null || arg == null) return f + " " + arg; 93 | 94 | util.debugWriteLine(f + " " + arg); 95 | var p = new Process(); 96 | p.StartInfo.FileName = f; 97 | p.StartInfo.Arguments = arg; 98 | p.Start(); 99 | return "ok"; 100 | } 101 | private void writeM3u8List(string path, string buf) { 102 | using (var w = new StreamWriter(path, false)) { 103 | w.WriteLine("#EXTM3U"); 104 | w.WriteLine("#EXT-X-VERSION:3"); 105 | w.WriteLine("#EXT-X-TARGETDURATION:" + (tsConfig.m3u8UpdateSeconds + 3).ToString()); 106 | w.Flush(); 107 | var isOpened = false; 108 | foreach(var b in buf.Split('\n')) { 109 | w.WriteLine("#EXTINF:" + tsConfig.m3u8UpdateSeconds.ToString() + ","); 110 | w.WriteLine(b); 111 | w.Flush(); 112 | 113 | if (tsConfig.isOpenUrlList && !isOpened) { 114 | var openRes = openFile(path); 115 | if (openRes != "ok") { 116 | rm.form.addLogText(openRes); 117 | } 118 | isOpened = true; 119 | } 120 | Thread.Sleep((int)(tsConfig.m3u8UpdateSeconds * 1000)); 121 | } 122 | w.WriteLine("#EXT-X-ENDLIST"); 123 | //w.Close(); 124 | } 125 | 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/namaichi/src/util/RegGetter.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/11/16 5 | * Time: 0:21 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Text.RegularExpressions; 11 | 12 | namespace namaichi.utility 13 | { 14 | /// 15 | /// Description of RegGetter. 16 | /// 17 | public class RegGetter 18 | { 19 | //private Regex resStreamDuration; 20 | private Regex extXTargetDuration; 21 | private Regex _extXTargetDuration; 22 | private Regex extInf; 23 | private Regex extXEndlist; 24 | private Regex extXMap; 25 | private Regex streamDuration; 26 | private Regex ts; 27 | private Regex ts2; 28 | private Regex fName; 29 | private Regex extXMediaSequence; 30 | private Regex maxNo; 31 | private Regex lastTsNum; 32 | private Regex renameWithoutTime_time; 33 | private Regex renameWithoutTime_num; 34 | 35 | private Regex wrVisit; 36 | private Regex wrComment; 37 | 38 | public RegGetter() 39 | { 40 | } 41 | /* 42 | public Regex getStreamDuration() { 43 | if (resStreamDuration == null) 44 | resStreamDuration = new Regex("(#STREAM-DURATION)"); 45 | return resStreamDuration; 46 | } 47 | */ 48 | public Regex getExtXTargetDuration() { 49 | if (extXTargetDuration == null) 50 | extXTargetDuration = new Regex("#EXT-X-TARGETDURATION:(\\d+(\\.\\d+)*(e\\d+)*)"); 51 | return extXTargetDuration; 52 | } 53 | public Regex getExtInf() { 54 | if (extInf == null) 55 | extInf = new Regex("^#EXTINF:(.+),"); 56 | return extInf; 57 | } 58 | public Regex get_ExtXTargetDuration() { 59 | if (_extXTargetDuration == null) 60 | _extXTargetDuration = new Regex("^#EXT-X-TARGETDURATION:(\\d+(\\.\\d+)*(e\\d+)*)"); 61 | return _extXTargetDuration; 62 | } 63 | public Regex getExtXMap() { 64 | if (extXMap == null) 65 | extXMap = new Regex("^#EXT-X-MAP:URI=\"(.+)\""); 66 | return extXMap; 67 | } 68 | public Regex getExtXEndlist() { 69 | if (extXEndlist == null) 70 | extXEndlist = new Regex("^(#EXT-X-ENDLIST)$"); 71 | return extXEndlist; 72 | } 73 | public Regex getStreamDuration() { 74 | if (streamDuration == null) 75 | streamDuration = new Regex("#STREAM-DURATION:(.+)"); 76 | return streamDuration; 77 | } 78 | public Regex getTs() { 79 | if (ts == null) 80 | ts = new Regex("(\\d+).(ts|mp4)"); 81 | return ts; 82 | } 83 | public Regex getTs2() { 84 | if (ts2 == null) 85 | ts2 = new Regex("(.+?.(ts|mp4))\\?"); 86 | return ts2; 87 | } 88 | public Regex getFName() { 89 | if (fName == null) 90 | fName = new Regex(".*(\\\\|/|^)(.+)"); 91 | return fName; 92 | } 93 | public Regex getExtXMediaSequence() { 94 | if (extXMediaSequence == null) 95 | extXMediaSequence = new Regex("#EXT-X-MEDIA-SEQUENCE\\:(.+)"); 96 | return extXMediaSequence; 97 | } 98 | public Regex getMaxNo() { 99 | if (maxNo == null) 100 | maxNo = new Regex("(\\d+)\\.(ts|mp4)"); 101 | return maxNo; 102 | } 103 | public Regex getLastTsNum() { 104 | if (lastTsNum == null) 105 | lastTsNum = new Regex("[\\s\\S]+\n(\\d+).(ts|mp4)"); 106 | return lastTsNum; 107 | } 108 | public Regex getRenameWithoutTime_time() { 109 | if (renameWithoutTime_time == null) 110 | renameWithoutTime_time = new Regex("(\\d+h\\d+m\\d+s)"); 111 | return renameWithoutTime_time; 112 | } 113 | public Regex getRenameWithoutTime_num() { 114 | if (renameWithoutTime_num == null) 115 | renameWithoutTime_num = new Regex("\\d+h\\d+m\\d+s_(\\d+)"); 116 | return renameWithoutTime_num; 117 | } 118 | 119 | //websocketRecorder 120 | public Regex getWrVisit() { 121 | if (wrVisit == null) 122 | //wrVisit = new Regex("{\"type\":\"watch\",\"body\":{\"command\":\"statistics\",\"params\":\\[\"(\\d+?)\",\"\\d+?\""); 123 | wrVisit = new Regex("\"data\":{\"viewers\":(\\d*),\"comments\":\\d*"); 124 | 125 | return wrVisit; 126 | } 127 | public Regex getWrComment() { 128 | if (wrComment == null) 129 | wrComment = new Regex("\"data\":{\"viewers\":\\d*,\"comments\":(\\d*)"); 130 | return wrComment; 131 | } 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Microsoft.Web.Xdt.2.1.1/Microsoft.Web.Xdt.2.1.1.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Microsoft.Web.Xdt.2.1.1/lib/net40/Microsoft.Web.XmlTransform.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/Newtonsoft.Json.9.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/Newtonsoft.Json.9.0.1.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net20/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net20/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net35/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net35/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/net45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/netstandard1.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/netstandard1.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/Newtonsoft.Json.9.0.1/tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | # open json.net splash page on package install 4 | # don't open if json.net is installed as a dependency 5 | 6 | try 7 | { 8 | $url = "http://www.newtonsoft.com/json/install?version=" + $package.Version 9 | $dte2 = Get-Interface $dte ([EnvDTE80.DTE2]) 10 | 11 | if ($dte2.ActiveWindow.Caption -eq "Package Manager Console") 12 | { 13 | # user is installing from VS NuGet console 14 | # get reference to the window, the console host and the input history 15 | # show webpage if "install-package newtonsoft.json" was last input 16 | 17 | $consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow]) 18 | 19 | $props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor ` 20 | [System.Reflection.BindingFlags]::NonPublic) 21 | 22 | $prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1 23 | if ($prop -eq $null) { return } 24 | 25 | $hostInfo = $prop.GetValue($consoleWindow) 26 | if ($hostInfo -eq $null) { return } 27 | 28 | $history = $hostInfo.WpfConsole.InputHistory.History 29 | 30 | $lastCommand = $history | select -last 1 31 | 32 | if ($lastCommand) 33 | { 34 | $lastCommand = $lastCommand.Trim().ToLower() 35 | if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json")) 36 | { 37 | $dte2.ItemOperations.Navigate($url) | Out-Null 38 | } 39 | } 40 | } 41 | else 42 | { 43 | # user is installing from VS NuGet dialog 44 | # get reference to the window, then smart output console provider 45 | # show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation 46 | 47 | $instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor ` 48 | [System.Reflection.BindingFlags]::NonPublic) 49 | 50 | $consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor ` 51 | [System.Reflection.BindingFlags]::NonPublic) 52 | 53 | if ($instanceField -eq $null -or $consoleField -eq $null) { return } 54 | 55 | $instance = $instanceField.GetValue($null) 56 | 57 | if ($instance -eq $null) { return } 58 | 59 | $consoleProvider = $consoleField.GetValue($instance) 60 | if ($consoleProvider -eq $null) { return } 61 | 62 | $console = $consoleProvider.CreateOutputConsole($false) 63 | 64 | $messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor ` 65 | [System.Reflection.BindingFlags]::NonPublic) 66 | if ($messagesField -eq $null) { return } 67 | 68 | $messages = $messagesField.GetValue($console) 69 | if ($messages -eq $null) { return } 70 | 71 | $operations = $messages -split "==============================" 72 | 73 | $lastOperation = $operations | select -last 1 74 | 75 | if ($lastOperation) 76 | { 77 | $lastOperation = $lastOperation.ToLower() 78 | 79 | $lines = $lastOperation -split "`r`n" 80 | 81 | $installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1 82 | 83 | if ($installMatch) 84 | { 85 | $dte2.ItemOperations.Navigate($url) | Out-Null 86 | } 87 | } 88 | } 89 | } 90 | catch 91 | { 92 | try 93 | { 94 | $pmPane = $dte2.ToolWindows.OutputWindow.OutputWindowPanes.Item("Package Manager") 95 | 96 | $selection = $pmPane.TextDocument.Selection 97 | $selection.StartOfDocument($false) 98 | $selection.EndOfDocument($true) 99 | 100 | if ($selection.Text.StartsWith("Attempting to gather dependencies information for package 'Newtonsoft.Json." + $package.Version + "'")) 101 | { 102 | # don't show on upgrade 103 | if (!$selection.Text.Contains("Removed package")) 104 | { 105 | $dte2.ItemOperations.Navigate($url) | Out-Null 106 | } 107 | } 108 | } 109 | catch 110 | { 111 | # stop potential errors from bubbling up 112 | # worst case the splash page won't open 113 | } 114 | } 115 | 116 | # still yolo -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Build.2.12.0/NuGet.Build.2.12.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Build.2.12.0/NuGet.Build.2.12.0.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/NuGet.Client.4.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/NuGet.Client.4.2.0.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/lib/net45/NuGet.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/lib/net45/NuGet.Client.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/lib/netstandard1.3/NuGet.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Client.4.2.0/lib/netstandard1.3/NuGet.Client.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.CommandLine.1.0.11220.26/NuGet.CommandLine.1.0.11220.26.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.CommandLine.1.0.11220.26/NuGet.CommandLine.1.0.11220.26.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.CommandLine.1.0.11220.26/Tools/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.CommandLine.1.0.11220.26/Tools/NuGet.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/NuGet.Common.4.6.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/NuGet.Common.4.6.2.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/lib/net46/NuGet.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/lib/net46/NuGet.Common.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/lib/netstandard1.3/NuGet.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Common.4.6.2/lib/netstandard1.3/NuGet.Common.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/NuGet.Frameworks.4.6.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/NuGet.Frameworks.4.6.2.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/net40/NuGet.Frameworks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/net40/NuGet.Frameworks.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/net46/NuGet.Frameworks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/net46/NuGet.Frameworks.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/netstandard1.3/NuGet.Frameworks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/NuGet.Frameworks.4.6.2/lib/netstandard1.3/NuGet.Frameworks.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/x86/SnkLib.App.CookieGetter.x86Proxy.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net40/x86/SnkLib.App.CookieGetter.x86Proxy.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/x86/SnkLib.App.CookieGetter.x86Proxy.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/build/net45/x86/SnkLib.App.CookieGetter.x86Proxy.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/lib/net40/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/lib/net40/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/lib/net45/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.0.0/lib/net45/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net40/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net40/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net45/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/build/net45/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/lib/net40/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/lib/net40/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/lib/net45/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.2.0/lib/net45/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net40/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net40/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net40/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net45/Deploy.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 14 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | $(BuildDependsOn); 30 | CopyEnclosedFiles; 31 | 32 | 33 | $(CleanDependsOn); 34 | CleanEnclosedFiles; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net45/SnkLib.App.CookieGetter.LibChecker.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/build/net45/SnkLib.App.CookieGetter.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | $(BuildDependsOn); 32 | CopyLibCheckerFiles; 33 | 34 | 35 | $(CleanDependsOn); 36 | CleanLibCheckerFiles; 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/lib/net40/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/lib/net40/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/lib/net45/SnkLib.App.CookieGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.2.4.4.0/lib/net45/SnkLib.App.CookieGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net40/SnkLib.App.CookieGetter.Forms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net40/SnkLib.App.CookieGetter.Forms.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net40/SnkLib.App.CookieGetter.Forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SnkLib.App.CookieGetter.Forms 5 | 6 | 7 | 8 | 9 | アカウント一覧の表示用コンボボックス。 10 | 11 | 12 | 13 | 14 | 指定したViewModelでコントロールを初期化します。 15 | 16 | 17 | 18 | 19 | 任意のCookieファイルを指定するためのファイル選択ダイアログを表示する。 20 | 21 | 22 | 23 | 24 | ブラウザ選択のViewModelを取得、設定します。 25 | 26 | 27 | 28 | 29 | ニコニコ動画アカウント一覧の表示用コンボボックス。 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net45/SnkLib.App.CookieGetter.Forms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net45/SnkLib.App.CookieGetter.Forms.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.1.0/lib/net45/SnkLib.App.CookieGetter.Forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SnkLib.App.CookieGetter.Forms 5 | 6 | 7 | 8 | 9 | アカウント一覧の表示用コンボボックス。 10 | 11 | 12 | 13 | 14 | 指定したViewModelでコントロールを初期化します。 15 | 16 | 17 | 18 | 19 | 任意のCookieファイルを指定するためのファイル選択ダイアログを表示する。 20 | 21 | 22 | 23 | 24 | ブラウザ選択のViewModelを取得、設定します。 25 | 26 | 27 | 28 | 29 | ニコニコ動画アカウント一覧の表示用コンボボックス。 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net40/SnkLib.App.CookieGetter.Forms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net40/SnkLib.App.CookieGetter.Forms.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net40/SnkLib.App.CookieGetter.Forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SnkLib.App.CookieGetter.Forms 5 | 6 | 7 | 8 | 9 | アカウント一覧の表示用コンボボックス。 10 | 11 | 12 | 13 | 14 | ブラウザ選択のViewModelを取得、設定します。 15 | 16 | 17 | 18 | 19 | 指定したViewModelでコントロールを初期化します。 20 | 21 | 22 | 23 | 24 | 任意のCookieファイルを指定するためのファイル選択ダイアログを表示する。 25 | 26 | 27 | 28 | 29 | ニコニコ動画アカウント一覧の表示用コンボボックス。 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net45/SnkLib.App.CookieGetter.Forms.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net45/SnkLib.App.CookieGetter.Forms.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/lib/net45/SnkLib.App.CookieGetter.Forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SnkLib.App.CookieGetter.Forms 5 | 6 | 7 | 8 | 9 | アカウント一覧の表示用コンボボックス。 10 | 11 | 12 | 13 | 14 | ブラウザ選択のViewModelを取得、設定します。 15 | 16 | 17 | 18 | 19 | 指定したViewModelでコントロールを初期化します。 20 | 21 | 22 | 23 | 24 | 任意のCookieファイルを指定するためのファイル選択ダイアログを表示する。 25 | 26 | 27 | 28 | 29 | ニコニコ動画アカウント一覧の表示用コンボボックス。 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SnkLib.App.CookieGetter.Forms.1.4.3.0/package/services/metadata/core-properties/fb92d0547bd643ebb6d64cf495002a98.psmdcp: -------------------------------------------------------------------------------- 1 | namoshikaSnkLib.App.CookieGetterを使用し、ブラウザのCookieを取り込む際に使えるUI部品を提供します。SnkLib.App.CookieGetter.Forms1.4.3.0Browser Cookie GetterSnkLib.App.CookieGetter.FormsNuGet, Version=2.8.60318.667, Culture=neutral, PublicKeyToken=null;Microsoft Windows NT 6.2.9200.0;.NET Framework 4 -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/SuperSocket.ClientEngine.Core.0.10.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/SuperSocket.ClientEngine.Core.0.10.0.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net20/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net20/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net35-client/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net35-client/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net40-client/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net40-client/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net45/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/net45/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/netstandard1.3/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/netstandard1.3/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/sl50/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/SuperSocket.ClientEngine.Core.0.10.0/lib/sl50/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/System.Data.SQLite.Core.1.0.108.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/System.Data.SQLite.Core.1.0.108.0.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net20/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net20/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net20/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net20/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net40/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net40/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net40/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net40/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net45/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net45/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net45/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net45/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net451/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net451/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net451/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net451/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net46/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net46/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net46/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/build/net46/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net20/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net20/System.Data.SQLite.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net20/System.Data.SQLite.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net40/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net40/System.Data.SQLite.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net40/System.Data.SQLite.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net45/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net45/System.Data.SQLite.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net45/System.Data.SQLite.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net451/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net451/System.Data.SQLite.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net451/System.Data.SQLite.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net46/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net46/System.Data.SQLite.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/System.Data.SQLite.Core.1.0.108.0/lib/net46/System.Data.SQLite.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/WebSocket4Net.0.15.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/WebSocket4Net.0.15.2.nupkg -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net20/WebSocket4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net20/WebSocket4Net.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net35/WebSocket4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net35/WebSocket4Net.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net40/WebSocket4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net40/WebSocket4Net.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net45/SuperSocket.ClientEngine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net45/SuperSocket.ClientEngine.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net45/WebSocket4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/net45/WebSocket4Net.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/netstandard1.3/WebSocket4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WebSocket4Net.0.15.2/lib/netstandard1.3/WebSocket4Net.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-Core.1.1.2/lib/Microsoft.WindowsAPICodePack.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-Core.1.1.2/lib/Microsoft.WindowsAPICodePack.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-Shell.1.1.1/lib/Microsoft.WindowsAPICodePack.Shell.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-Shell.1.1.1/lib/Microsoft.WindowsAPICodePack.Shell.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-ShellExtensions.1.1.1/lib/Microsoft.WindowsAPICodePack.ShellExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/WindowsAPICodePack-ShellExtensions.1.1.1/lib/Microsoft.WindowsAPICodePack.ShellExtensions.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/ChromeCookieKeyGetter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/ChromeCookieKeyGetter.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/CryptPlugin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/CryptPlugin.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursDll.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursDll.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNet.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNetCLR.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNetCLR.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNetRuntime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/DetoursNetRuntime.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/detours/x64/cryptHook.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/detours/x64/cryptHook.exe -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libcrypto-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libcrypto-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libcurl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libcurl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libssl-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/libssl-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/nghttp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/nghttp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/nghttp3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/nghttp3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/ngtcp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/ngtcp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/ngtcp2_crypto_openssl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/packages/libcurl_http23/ngtcp2_crypto_openssl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/Program.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/10 5 | * Time: 16:20 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Windows.Forms; 11 | using System.Net; 12 | 13 | namespace rokugaTouroku 14 | { 15 | /// 16 | /// Class with program entry point. 17 | /// 18 | internal sealed class Program 19 | { 20 | /// 21 | /// Program entry point. 22 | /// 23 | public static string arg = ""; 24 | 25 | [STAThread] 26 | private static void Main(string[] args) 27 | { 28 | if (args.Length > 0) arg = util.getRegGroup(args[0], "(lv.+)"); 29 | 30 | AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandleExceptionHandler); 31 | System.Threading.Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(UnhandleExceptionHandler); 32 | AppDomain.CurrentDomain.UnhandledException += UnhandleExceptionHandler; 33 | System.Threading.Thread.GetDomain().UnhandledException += UnhandleExceptionHandler; 34 | Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(threadException); 35 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 36 | System.Threading.Tasks.TaskScheduler.UnobservedTaskException += taskSchedulerUnobservedTaskException; 37 | AppDomain.CurrentDomain.FirstChanceException += firstChanceException; 38 | 39 | Application.EnableVisualStyles(); 40 | Application.SetCompatibleTextRenderingDefault(false); 41 | System.Net.ServicePointManager.DefaultConnectionLimit = 20; 42 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 43 | 44 | var form = new MainForm(args); 45 | form.mutex = util.doubleRunCheck(); 46 | if (form.mutex == null) { 47 | Application.Exit(); 48 | return; 49 | } 50 | Application.Run(form); 51 | //args = new string[]{"lv888"}; 52 | //var a = new MainForm(args); 53 | //while(true) System.Threading.Thread.Sleep(1000); 54 | } 55 | private static void UnhandleExceptionHandler(Object sender, UnhandledExceptionEventArgs e) { 56 | util.debugWriteLine("unhandled exception"); 57 | var eo = (Exception)e.ExceptionObject; 58 | util.showException(eo); 59 | 60 | } 61 | static void threadException(object sender, System.Threading.ThreadExceptionEventArgs e) { 62 | util.debugWriteLine("thread exception"); 63 | var eo = (Exception)e.Exception; 64 | util.showException(eo); 65 | 66 | } 67 | static private void taskSchedulerUnobservedTaskException(object sender, 68 | System.Threading.Tasks.UnobservedTaskExceptionEventArgs e) { 69 | util.debugWriteLine("task_unobserved exception"); 70 | var eo = (Exception)e.Exception; 71 | util.showException(eo); 72 | e.SetObserved(); 73 | 74 | } 75 | static private void firstChanceException(object sender, 76 | System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e) { 77 | var frameCount = new System.Diagnostics.StackTrace().FrameCount; 78 | #if DEBUG 79 | if (util.isLogFile) { 80 | if (frameCount > 150) { 81 | MessageBox.Show("first chance framecount stack " + e.Exception.Message + e.Exception.StackTrace, frameCount.ToString() + " " + DateTime.Now + " " + arg); 82 | return; 83 | } 84 | } 85 | #else 86 | 87 | #endif 88 | 89 | util.debugWriteLine("exception stacktrace framecount " + frameCount); 90 | 91 | util.debugWriteLine("firstchance exception"); 92 | var eo = (Exception)e.Exception; 93 | util.showException(eo, false); 94 | 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | #region Using directives 2 | 3 | using System; 4 | using System.Reflection; 5 | using System.Runtime.InteropServices; 6 | 7 | #endregion 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("rokugaTouroku")] 13 | [assembly: AssemblyDescription("")] 14 | [assembly: AssemblyConfiguration("")] 15 | [assembly: AssemblyCompany("")] 16 | [assembly: AssemblyProduct("rokugaTouroku")] 17 | [assembly: AssemblyCopyright("Copyright 2018")] 18 | [assembly: AssemblyTrademark("")] 19 | [assembly: AssemblyCulture("")] 20 | 21 | // This sets the default COM visibility of types in the assembly to invisible. 22 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. 23 | [assembly: ComVisible(false)] 24 | 25 | // The assembly version has following format : 26 | // 27 | // Major.Minor.Build.Revision 28 | // 29 | // You can specify all the values or you can use the default the Revision and 30 | // Build Numbers by using the '*' as shown below: 31 | [assembly: AssemblyVersion("1.0.*")] 32 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/curl_wrap.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/curl_wrap.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/kari.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/kari.snk -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/libcrypto-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/libcrypto-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/libcurl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/libcurl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/libssl-81_3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/libssl-81_3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/nghttp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/nghttp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/nghttp3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/nghttp3.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/ngtcp2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/ngtcp2.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/ngtcp2_crypto_openssl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guest-nico/nicoNewStreamRecorderKakkoKari/9053fa66e30eb9e958437d6423c8efe05ac079f6/nicoNewStreamRecorderKakkoKari/rokugaTouroku/ngtcp2_crypto_openssl.dll -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/rokugaTouroku.OpenCover.Settings: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/rokugaTouroku.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | # SharpDevelop 4.4 5 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "rokugaTouroku", "rokugaTouroku.csproj", "{D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}" 6 | EndProject 7 | Global 8 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 | Debug|Any CPU = Debug|Any CPU 10 | Release|Any CPU = Release|Any CPU 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Release|Any CPU.Build.0 = Release|Any CPU 16 | {D5EF4095-FA38-4ADB-9F7C-3A61BEE2EA98}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | EndGlobalSection 18 | EndGlobal 19 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/Logger/TraceListener.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/06/13 5 | * Time: 3:23 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Diagnostics; 11 | 12 | namespace rokugaTouroku.Logger 13 | { 14 | /// 15 | /// Description of TraceListener. 16 | /// 17 | public class TraceListener:DefaultTraceListener 18 | { 19 | public TraceListener() 20 | { 21 | } 22 | public override void WriteLine(string msg) { 23 | try { 24 | var dt = DateTime.Now.ToLongTimeString(); 25 | base.WriteLine(dt + " " + msg); 26 | } catch (Exception) { 27 | 28 | // util.debugWriteLine("trace listner exception " + e.Message + e.Source + e.StackTrace + e.TargetSite); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/MfaInputForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2023/05/19 5 | * Time: 7:04 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace rokugaTouroku.gui 10 | { 11 | partial class MfaInputForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.sendToLabel = new System.Windows.Forms.Label(); 40 | this.label2 = new System.Windows.Forms.Label(); 41 | this.codeText = new System.Windows.Forms.TextBox(); 42 | this.cancelBtn = new System.Windows.Forms.Button(); 43 | this.okBtn = new System.Windows.Forms.Button(); 44 | this.label1 = new System.Windows.Forms.Label(); 45 | this.SuspendLayout(); 46 | // 47 | // sendToLabel 48 | // 49 | this.sendToLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 50 | | System.Windows.Forms.AnchorStyles.Right))); 51 | this.sendToLabel.Location = new System.Drawing.Point(12, 39); 52 | this.sendToLabel.Name = "sendToLabel"; 53 | this.sendToLabel.Size = new System.Drawing.Size(308, 19); 54 | this.sendToLabel.TabIndex = 0; 55 | this.sendToLabel.Text = " に確認コードを送信しました"; 56 | // 57 | // label2 58 | // 59 | this.label2.Location = new System.Drawing.Point(12, 58); 60 | this.label2.Name = "label2"; 61 | this.label2.Size = new System.Drawing.Size(182, 19); 62 | this.label2.TabIndex = 1; 63 | this.label2.Text = "メールに記載された6桁の数字を入力"; 64 | // 65 | // codeText 66 | // 67 | this.codeText.Location = new System.Drawing.Point(12, 80); 68 | this.codeText.Name = "codeText"; 69 | this.codeText.Size = new System.Drawing.Size(85, 19); 70 | this.codeText.TabIndex = 2; 71 | // 72 | // cancelBtn 73 | // 74 | this.cancelBtn.Location = new System.Drawing.Point(232, 110); 75 | this.cancelBtn.Name = "cancelBtn"; 76 | this.cancelBtn.Size = new System.Drawing.Size(74, 23); 77 | this.cancelBtn.TabIndex = 4; 78 | this.cancelBtn.Text = "キャンセル"; 79 | this.cancelBtn.UseVisualStyleBackColor = true; 80 | this.cancelBtn.Click += new System.EventHandler(this.CancelBtnClick); 81 | // 82 | // okBtn 83 | // 84 | this.okBtn.Location = new System.Drawing.Point(152, 110); 85 | this.okBtn.Name = "okBtn"; 86 | this.okBtn.Size = new System.Drawing.Size(74, 23); 87 | this.okBtn.TabIndex = 3; 88 | this.okBtn.Text = "OK"; 89 | this.okBtn.UseVisualStyleBackColor = true; 90 | this.okBtn.Click += new System.EventHandler(this.OkBtnClick); 91 | // 92 | // label1 93 | // 94 | this.label1.Location = new System.Drawing.Point(12, 20); 95 | this.label1.Name = "label1"; 96 | this.label1.Size = new System.Drawing.Size(257, 19); 97 | this.label1.TabIndex = 1; 98 | this.label1.Text = "ログインするには2段階認証の確認コードが必要です"; 99 | // 100 | // MfaInputForm 101 | // 102 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 103 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 104 | this.ClientSize = new System.Drawing.Size(319, 145); 105 | this.Controls.Add(this.cancelBtn); 106 | this.Controls.Add(this.okBtn); 107 | this.Controls.Add(this.codeText); 108 | this.Controls.Add(this.label1); 109 | this.Controls.Add(this.label2); 110 | this.Controls.Add(this.sendToLabel); 111 | this.Name = "MfaInputForm"; 112 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 113 | this.Text = "2段階認証"; 114 | this.ResumeLayout(false); 115 | this.PerformLayout(); 116 | } 117 | private System.Windows.Forms.Label label1; 118 | private System.Windows.Forms.Button okBtn; 119 | private System.Windows.Forms.Button cancelBtn; 120 | private System.Windows.Forms.TextBox codeText; 121 | private System.Windows.Forms.Label label2; 122 | private System.Windows.Forms.Label sendToLabel; 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/MfaInputForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2023/05/19 5 | * Time: 7:04 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace rokugaTouroku.gui 14 | { 15 | /// 16 | /// Description of MfaInputForm. 17 | /// 18 | public partial class MfaInputForm : Form 19 | { 20 | public string code = null; 21 | public MfaInputForm(string sendTo) 22 | { 23 | // 24 | // The InitializeComponent() call is required for Windows Forms designer support. 25 | // 26 | InitializeComponent(); 27 | 28 | // 29 | // TODO: Add constructor code after the InitializeComponent() call. 30 | // 31 | if (sendTo != null) { 32 | if (sendTo != "app") 33 | sendToLabel.Text = sendTo + sendToLabel.Text; 34 | else { 35 | sendToLabel.Text = "スマートフォンのアプリを使って確認コードを取得してください"; 36 | label2.Text = "アプリに表示された6桁の数字を入力"; 37 | } 38 | } 39 | } 40 | void OkBtnClick(object sender, EventArgs e) 41 | { 42 | if (codeText.Text.Length != 6) { 43 | MessageBox.Show("入力されたコードが6文字ではありません。"); 44 | return; 45 | } 46 | if (util.getRegGroup(codeText.Text, "(\\D)") != null) { 47 | MessageBox.Show("入力されたコードに数字以外の文字が含まれています。"); 48 | return; 49 | } 50 | code = codeText.Text; 51 | Close(); 52 | } 53 | void CancelBtnClick(object sender, EventArgs e) 54 | { 55 | Close(); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UpdateForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/22 5 | * Time: 4:10 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace rokugaTouroku 10 | { 11 | partial class UpdateForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.panel1 = new System.Windows.Forms.Panel(); 40 | this.label3 = new System.Windows.Forms.Label(); 41 | this.panel3 = new System.Windows.Forms.Panel(); 42 | this.okBtn = new System.Windows.Forms.Button(); 43 | this.panel2 = new System.Windows.Forms.Panel(); 44 | this.panel3.SuspendLayout(); 45 | this.SuspendLayout(); 46 | // 47 | // panel1 48 | // 49 | this.panel1.Dock = System.Windows.Forms.DockStyle.Top; 50 | this.panel1.Location = new System.Drawing.Point(0, 0); 51 | this.panel1.Name = "panel1"; 52 | this.panel1.Size = new System.Drawing.Size(318, 13); 53 | this.panel1.TabIndex = 3; 54 | // 55 | // label3 56 | // 57 | this.label3.Dock = System.Windows.Forms.DockStyle.Top; 58 | this.label3.Location = new System.Drawing.Point(0, 13); 59 | this.label3.Name = "label3"; 60 | this.label3.Size = new System.Drawing.Size(318, 24); 61 | this.label3.TabIndex = 4; 62 | this.label3.Text = "新しいバージョンの全てのファイルをこれまで使っていたフォルダに上書きコピーすると設定を引き継いでアップデートできます。"; 63 | this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 64 | // 65 | // panel3 66 | // 67 | this.panel3.Controls.Add(this.okBtn); 68 | this.panel3.Dock = System.Windows.Forms.DockStyle.Top; 69 | this.panel3.Location = new System.Drawing.Point(0, 47); 70 | this.panel3.Name = "panel3"; 71 | this.panel3.Size = new System.Drawing.Size(318, 33); 72 | this.panel3.TabIndex = 25; 73 | // 74 | // okBtn 75 | // 76 | this.okBtn.AutoSize = true; 77 | this.okBtn.Location = new System.Drawing.Point(127, 3); 78 | this.okBtn.Name = "okBtn"; 79 | this.okBtn.Size = new System.Drawing.Size(64, 24); 80 | this.okBtn.TabIndex = 23; 81 | this.okBtn.Text = "OK"; 82 | this.okBtn.UseVisualStyleBackColor = true; 83 | this.okBtn.Click += new System.EventHandler(this.okBtnClick); 84 | // 85 | // panel2 86 | // 87 | this.panel2.Dock = System.Windows.Forms.DockStyle.Top; 88 | this.panel2.Location = new System.Drawing.Point(0, 37); 89 | this.panel2.Name = "panel2"; 90 | this.panel2.Size = new System.Drawing.Size(318, 10); 91 | this.panel2.TabIndex = 24; 92 | // 93 | // UpdateForm 94 | // 95 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 96 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 97 | this.ClientSize = new System.Drawing.Size(318, 80); 98 | this.Controls.Add(this.panel3); 99 | this.Controls.Add(this.panel2); 100 | this.Controls.Add(this.label3); 101 | this.Controls.Add(this.panel1); 102 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 103 | this.Name = "UpdateForm"; 104 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 105 | this.Text = "更新方法"; 106 | this.panel3.ResumeLayout(false); 107 | this.panel3.PerformLayout(); 108 | this.ResumeLayout(false); 109 | } 110 | public System.Windows.Forms.Button okBtn; 111 | private System.Windows.Forms.Panel panel3; 112 | private System.Windows.Forms.Panel panel2; 113 | private System.Windows.Forms.Label label3; 114 | private System.Windows.Forms.Panel panel1; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UpdateForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2020/01/11 5 | * Time: 19:51 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace rokugaTouroku 14 | { 15 | /// 16 | /// Description of UpdateForm. 17 | /// 18 | public partial class UpdateForm : Form 19 | { 20 | public UpdateForm(int fontSize) 21 | { 22 | // 23 | // The InitializeComponent() call is required for Windows Forms designer support. 24 | // 25 | InitializeComponent(); 26 | 27 | // 28 | // TODO: Add constructor code after the InitializeComponent() call. 29 | // 30 | util.setFontSize(fontSize, this, false); 31 | } 32 | void okBtnClick(object sender, EventArgs e) 33 | { 34 | Close(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UrlBulkRegistForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/21 5 | * Time: 4:39 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace rokugaTouroku 10 | { 11 | partial class UrlBulkRegistForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.label1 = new System.Windows.Forms.Label(); 40 | this.registText = new System.Windows.Forms.TextBox(); 41 | this.registBtn = new System.Windows.Forms.Button(); 42 | this.cancelBtn = new System.Windows.Forms.Button(); 43 | this.SuspendLayout(); 44 | // 45 | // label1 46 | // 47 | this.label1.Location = new System.Drawing.Point(13, 8); 48 | this.label1.Name = "label1"; 49 | this.label1.Size = new System.Drawing.Size(218, 52); 50 | this.label1.TabIndex = 0; 51 | this.label1.Text = "(入力例)\r\nhttps://live.nicovideo.jp/watch/XXXXX\r\nhttps://live.nicovideo.jp/watch/YYYYY" + 52 | "\r\nhttps://live.nicovideo.jp/watch/AAAA\r\n"; 53 | // 54 | // registText 55 | // 56 | this.registText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 57 | | System.Windows.Forms.AnchorStyles.Left) 58 | | System.Windows.Forms.AnchorStyles.Right))); 59 | this.registText.Location = new System.Drawing.Point(13, 63); 60 | this.registText.Multiline = true; 61 | this.registText.Name = "registText"; 62 | this.registText.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 63 | this.registText.Size = new System.Drawing.Size(330, 205); 64 | this.registText.TabIndex = 1; 65 | // 66 | // registBtn 67 | // 68 | this.registBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 69 | this.registBtn.Location = new System.Drawing.Point(197, 276); 70 | this.registBtn.Name = "registBtn"; 71 | this.registBtn.Size = new System.Drawing.Size(66, 23); 72 | this.registBtn.TabIndex = 2; 73 | this.registBtn.Text = "登録"; 74 | this.registBtn.UseVisualStyleBackColor = true; 75 | this.registBtn.Click += new System.EventHandler(this.RegistBtnClick); 76 | // 77 | // cancelBtn 78 | // 79 | this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 80 | this.cancelBtn.Location = new System.Drawing.Point(278, 276); 81 | this.cancelBtn.Name = "cancelBtn"; 82 | this.cancelBtn.Size = new System.Drawing.Size(66, 23); 83 | this.cancelBtn.TabIndex = 3; 84 | this.cancelBtn.Text = "キャンセル"; 85 | this.cancelBtn.UseVisualStyleBackColor = true; 86 | this.cancelBtn.Click += new System.EventHandler(this.CancelBtnClick); 87 | // 88 | // UrlBulkRegistForm 89 | // 90 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 91 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 92 | this.ClientSize = new System.Drawing.Size(355, 309); 93 | this.Controls.Add(this.cancelBtn); 94 | this.Controls.Add(this.registBtn); 95 | this.Controls.Add(this.registText); 96 | this.Controls.Add(this.label1); 97 | this.Name = "UrlBulkRegistForm"; 98 | this.ShowIcon = false; 99 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 100 | this.Text = "URL一括登録"; 101 | this.ResumeLayout(false); 102 | this.PerformLayout(); 103 | } 104 | private System.Windows.Forms.Button cancelBtn; 105 | private System.Windows.Forms.Button registBtn; 106 | private System.Windows.Forms.TextBox registText; 107 | private System.Windows.Forms.Label label1; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UrlBulkRegistForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/21 5 | * Time: 4:39 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | using System.Collections.Generic; 13 | 14 | namespace rokugaTouroku 15 | { 16 | /// 17 | /// Description of UrlBulkRegistForm. 18 | /// 19 | public partial class UrlBulkRegistForm : Form 20 | { 21 | public List res = null; 22 | 23 | public UrlBulkRegistForm(int fontSize) 24 | { 25 | // 26 | // The InitializeComponent() call is required for Windows Forms designer support. 27 | // 28 | InitializeComponent(); 29 | 30 | // 31 | // TODO: Add constructor code after the InitializeComponent() call. 32 | // 33 | util.setFontSize(fontSize, this, false); 34 | } 35 | 36 | void CancelBtnClick(object sender, EventArgs e) 37 | { 38 | Close(); 39 | } 40 | 41 | void RegistBtnClick(object sender, EventArgs e) 42 | { 43 | var l = new List(); 44 | foreach (var s in registText.Text.Split('\n')) { 45 | var r = util.getRegGroup(s, "(lv\\d+(,\\d+)*)"); 46 | if (r != null) l.Add(r); 47 | } 48 | res = l; 49 | Close(); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UrlListSaveForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/21 5 | * Time: 5:57 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | namespace rokugaTouroku 10 | { 11 | partial class UrlListSaveForm 12 | { 13 | /// 14 | /// Designer variable used to keep track of non-visual components. 15 | /// 16 | private System.ComponentModel.IContainer components = null; 17 | 18 | /// 19 | /// Disposes resources used by the form. 20 | /// 21 | /// true if managed resources should be disposed; otherwise, false. 22 | protected override void Dispose(bool disposing) 23 | { 24 | if (disposing) { 25 | if (components != null) { 26 | components.Dispose(); 27 | } 28 | } 29 | base.Dispose(disposing); 30 | } 31 | 32 | /// 33 | /// This method is required for Windows Forms designer support. 34 | /// Do not change the method contents inside the source code editor. The Forms designer might 35 | /// not be able to load this method if it was changed manually. 36 | /// 37 | private void InitializeComponent() 38 | { 39 | this.urlListText = new System.Windows.Forms.TextBox(); 40 | this.cancelBtn = new System.Windows.Forms.Button(); 41 | this.saveBtn = new System.Windows.Forms.Button(); 42 | this.SuspendLayout(); 43 | // 44 | // urlListText 45 | // 46 | this.urlListText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 47 | | System.Windows.Forms.AnchorStyles.Left) 48 | | System.Windows.Forms.AnchorStyles.Right))); 49 | this.urlListText.Location = new System.Drawing.Point(13, 29); 50 | this.urlListText.Multiline = true; 51 | this.urlListText.Name = "urlListText"; 52 | this.urlListText.Size = new System.Drawing.Size(267, 198); 53 | this.urlListText.TabIndex = 0; 54 | // 55 | // cancelBtn 56 | // 57 | this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 58 | this.cancelBtn.Location = new System.Drawing.Point(205, 231); 59 | this.cancelBtn.Name = "cancelBtn"; 60 | this.cancelBtn.Size = new System.Drawing.Size(66, 23); 61 | this.cancelBtn.TabIndex = 2; 62 | this.cancelBtn.Text = "閉じる"; 63 | this.cancelBtn.UseVisualStyleBackColor = true; 64 | this.cancelBtn.Click += new System.EventHandler(this.CancelBtnClick); 65 | // 66 | // saveBtn 67 | // 68 | this.saveBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 69 | this.saveBtn.Location = new System.Drawing.Point(105, 231); 70 | this.saveBtn.Name = "saveBtn"; 71 | this.saveBtn.Size = new System.Drawing.Size(93, 23); 72 | this.saveBtn.TabIndex = 1; 73 | this.saveBtn.Text = "ファイルに保存"; 74 | this.saveBtn.UseVisualStyleBackColor = true; 75 | this.saveBtn.Click += new System.EventHandler(this.SaveBtnClick); 76 | // 77 | // UrlListSaveForm 78 | // 79 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 80 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 81 | this.ClientSize = new System.Drawing.Size(292, 266); 82 | this.Controls.Add(this.cancelBtn); 83 | this.Controls.Add(this.saveBtn); 84 | this.Controls.Add(this.urlListText); 85 | this.Name = "UrlListSaveForm"; 86 | this.ShowIcon = false; 87 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 88 | this.Text = "URLリストの保存"; 89 | this.ResumeLayout(false); 90 | this.PerformLayout(); 91 | } 92 | private System.Windows.Forms.Button saveBtn; 93 | private System.Windows.Forms.Button cancelBtn; 94 | private System.Windows.Forms.TextBox urlListText; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/UrlListSaveForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/12/21 5 | * Time: 5:57 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | using System.IO; 13 | 14 | namespace rokugaTouroku 15 | { 16 | /// 17 | /// Description of UrlListSaveForm. 18 | /// 19 | public partial class UrlListSaveForm : Form 20 | { 21 | public UrlListSaveForm(string t, int fontSize) 22 | { 23 | // 24 | // The InitializeComponent() call is required for Windows Forms designer support. 25 | // 26 | InitializeComponent(); 27 | 28 | urlListText.Text = t; 29 | urlListText.SelectionStart = urlListText.Text.Length; 30 | // 31 | // TODO: Add constructor code after the InitializeComponent() call. 32 | // 33 | util.setFontSize(fontSize, this, false); 34 | } 35 | 36 | void CancelBtnClick(object sender, EventArgs e) 37 | { 38 | Close(); 39 | } 40 | 41 | void SaveBtnClick(object sender, EventArgs e) 42 | { 43 | var f = new SaveFileDialog(); 44 | f.DefaultExt = ".txt"; 45 | f.FileName = "URLlist"; 46 | f.Filter = "TEXT形式(*.txt)|*.txt*"; 47 | var a = f.ShowDialog(); 48 | if (a == DialogResult.OK) { 49 | var sw = new StreamWriter(f.FileName, false); 50 | sw.Write(urlListText.Text); 51 | sw.Close(); 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/VersionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/09/22 5 | * Time: 4:10 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | using System.Text.RegularExpressions; 13 | using System.Threading.Tasks; 14 | 15 | namespace rokugaTouroku 16 | { 17 | /// 18 | /// Description of VersionForm. 19 | /// 20 | public partial class VersionForm : Form 21 | { 22 | private MainForm form; 23 | public VersionForm(int fontSize, MainForm form) 24 | { 25 | // 26 | // The InitializeComponent() call is required for Windows Forms designer support. 27 | // 28 | InitializeComponent(); 29 | this.form = form; 30 | 31 | // 32 | // TODO: Add constructor code after the InitializeComponent() call. 33 | // 34 | versionLabel.Text = util.versionStr + " (" + util.versionDayStr + ")"; 35 | //communityLinkLabel.Links.Add(0, communityLinkLabel.Text.Length, "https://com.nicovideo.jp/community/co2414037"); 36 | util.setFontSize(fontSize, this, false); 37 | lastVersionLabel.Font = new Font(lastVersionLabel.Font, FontStyle.Italic); 38 | } 39 | 40 | void okBtnClick(object sender, EventArgs e) 41 | { 42 | Close(); 43 | } 44 | 45 | void communityLinkLabel_Click(object sender, LinkLabelLinkClickedEventArgs e) 46 | { 47 | System.Diagnostics.Process.Start("https://com.nicovideo.jp/community/co2414037"); 48 | } 49 | 50 | void VersionFormLoad(object sender, EventArgs e) 51 | { 52 | Task.Factory.StartNew(() => checkLastVersion()); 53 | } 54 | private void checkLastVersion() { 55 | var r = util.getPageSource("https://github.com/guest-nico/nicoNewStreamRecorderKakkoKari/commits/master/"); 56 | if (r == null) { 57 | form.formAction(() => 58 | lastVersionLabel.Text = "最新の利用可能なバージョンを確認できませんでした"); 59 | return; 60 | } 61 | var m = new Regex("https://github.com/guest-nico/nicoNewStreamRecorderKakkoKari/releases/download/releases/(.+?).(zip|rar)").Match(r); 62 | if (!m.Success) { 63 | form.formAction(() => 64 | lastVersionLabel.Text = "最新の利用可能なバージョンが見つかりませんでした"); 65 | return; 66 | } 67 | var v = m.Groups[1].Value; 68 | if (v.IndexOf(util.versionStr.Substring(3)) > -1) 69 | form.formAction(() => lastVersionLabel.Text = "ニコ生録画登録ツール(仮は最新バージョンです"); 70 | else { 71 | form.formAction(() => { 72 | lastVersionLabel.Text = v + "が利用可能です"; 73 | lastVersionLabel.Links.Clear(); 74 | lastVersionLabel.Links.Add(0, v.Length, m.Value); 75 | //lastVersionLabel.LinkArea = new LinkArea(0, v.Length); 76 | }); 77 | } 78 | } 79 | void LastVersionLabelLinkClicked(object _sender, LinkLabelLinkClickedEventArgs e) 80 | { 81 | util.debugWriteLine("click"); 82 | LinkLabel sender = (LinkLabel)_sender; 83 | if (e.Button == MouseButtons.Left) { 84 | if (sender.Links.Count > 0 && sender.Links[0].Length != 0) { 85 | string url = (string)sender.Links[0].LinkData; 86 | if (bool.Parse(form.config.get("IsdefaultBrowserPath"))) { 87 | System.Diagnostics.Process.Start(url); 88 | } else { 89 | var p = form.config.get("browserPath"); 90 | System.Diagnostics.Process.Start(p, url); 91 | } 92 | } 93 | } else { 94 | // if (sender.Links.Count > 0 && sender.Links[0].Length != 0) { 95 | // labelUrl = (string)sender.Links[0].LinkData; 96 | // mainWindowRightClickMenu.Show(Cursor.Position); 97 | // } 98 | } 99 | } 100 | void DownloadPageLinkLabelLinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) 101 | { 102 | var url = "https://guest-nico.github.io/pages/downloads.html"; 103 | util.openUrlBrowser(url, form.config); 104 | } 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/argOptionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/05/07 5 | * Time: 16:17 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace rokugaTouroku.gui 14 | { 15 | /// 16 | /// Description of ArgOptionForm. 17 | /// 18 | public partial class ArgOptionForm : Form 19 | { 20 | public string ret; 21 | 22 | public ArgOptionForm(int fontSize) 23 | { 24 | // 25 | // The InitializeComponent() call is required for Windows Forms designer support. 26 | // 27 | InitializeComponent(); 28 | // 29 | // TODO: Add constructor code after the InitializeComponent() call. 30 | // 31 | util.setFontSize(fontSize, this, false); 32 | setSampleLabel(); 33 | } 34 | 35 | void fileNameTypeOkBtn_Click(object sender, EventArgs e) 36 | { 37 | Close(); 38 | } 39 | 40 | void fileNameTypeText_Changed(object sender, EventArgs e) 41 | { 42 | setSampleLabel(); 43 | } 44 | void setSampleLabel() { 45 | fileNameTypeLabel.Text = 46 | util.getArgTypeSample(fileNameTypeText.Text); 47 | } 48 | 49 | void CopyBtnClick(object sender, EventArgs e) 50 | { 51 | Clipboard.SetText(fileNameTypeText.Text); 52 | } 53 | 54 | void FileNameTypeDefaultBtnClick(object sender, EventArgs e) 55 | { 56 | fileNameTypeText.Text = "-i {i} -c copy {o}.mp4"; 57 | } 58 | 59 | void FileNameTypeDateBtnClick(object sender, EventArgs e) 60 | { 61 | fileNameTypeText.Text = "{nourl}"; 62 | } 63 | 64 | void GroupBox3Enter(object sender, EventArgs e) 65 | { 66 | 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/gui/fileNameOptionForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2018/05/07 5 | * Time: 16:17 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Drawing; 11 | using System.Windows.Forms; 12 | 13 | namespace rokugaTouroku 14 | { 15 | /// 16 | /// Description of fileNameOptionForm. 17 | /// 18 | public partial class fileNameOptionForm : Form 19 | { 20 | public string ret; 21 | 22 | public fileNameOptionForm(string filenameformat, int fontSize) 23 | { 24 | // 25 | // The InitializeComponent() call is required for Windows Forms designer support. 26 | // 27 | InitializeComponent(); 28 | 29 | fileNameTypeText.Text = filenameformat; 30 | fileNameTypeLabel.Text = 31 | util.getFileNameTypeSample(filenameformat); 32 | // 33 | // TODO: Add constructor code after the InitializeComponent() call. 34 | // 35 | util.setFontSize(fontSize, this, false); 36 | } 37 | 38 | void fileNameTypeOkBtn_Click(object sender, EventArgs e) 39 | { 40 | if (fileNameTypeText.Text.IndexOf("{0}") < 0) { 41 | //util.showMessageBoxCenterForm(this, "{0}は必ず入れてください", "注意", MessageBoxButtons.OK, MessageBoxIcon.None); 42 | if (MessageBox.Show("{0}がないです。このまま登録しますか?", "注意", MessageBoxButtons.OKCancel) == DialogResult.Cancel) 43 | return; 44 | } 45 | DialogResult = DialogResult.OK; 46 | ret = fileNameTypeText.Text; 47 | Close(); 48 | } 49 | void fileNameTypeCancelBtn_Click(object sender, EventArgs e) 50 | { 51 | DialogResult = DialogResult.Cancel; 52 | Close(); 53 | } 54 | 55 | void fileNameTypeText_Changed(object sender, EventArgs e) 56 | { 57 | fileNameTypeLabel.Text = 58 | util.getFileNameTypeSample(fileNameTypeText.Text); 59 | } 60 | 61 | void fileNameTypeDefaultBtn_Click(object sender, EventArgs e) 62 | { 63 | fileNameTypeText.Text = 64 | "{Y}_{M}_{D}_{h}_{m}_{0}_{1}_{2}_{3}_{4}"; 65 | } 66 | void fileNameTypeNitijiBtn_Click(object sender, EventArgs e) 67 | { 68 | fileNameTypeText.Text = 69 | "{Y}年{M}月{D}日({W}){h}時{m}分{1}_{0}_"; 70 | } 71 | void fileNameTypeSimpleBtn_Click(object sender, EventArgs e) 72 | { 73 | fileNameTypeText.Text = 74 | "{0}_"; 75 | } 76 | void fileNameTypeTitleBtn_Click(object sender, EventArgs e) 77 | { 78 | fileNameTypeText.Text = 79 | "{1}_{0}_"; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /nicoNewStreamRecorderKakkoKari/rokugaTouroku/src/info/AccountInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Created by SharpDevelop. 3 | * User: zack 4 | * Date: 2021/09/30 5 | * Time: 3:16 6 | * 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 | */ 9 | using System; 10 | using System.Collections.Generic; 11 | using System.IO; 12 | using System.Net; 13 | using System.Runtime.Serialization; 14 | using System.Text; 15 | using System.Xml.Linq; 16 | using System.Xml.Serialization; 17 | using Newtonsoft.Json; 18 | using SunokoLibrary.Application; 19 | 20 | namespace rokugaTouroku.info 21 | { 22 | /// 23 | /// Description of AccountInfo. 24 | /// 25 | public class AccountInfo 26 | { 27 | public bool isRecSetting = true; 28 | public CookieSourceInfo si; 29 | public string accountId; 30 | public string accountPass; 31 | public string userSession; 32 | public bool isBrowser = false; 33 | public bool isAccount = false; 34 | public bool isUserSession = false; 35 | 36 | public bool useSecondLogin = false; 37 | public string cookieFile; 38 | 39 | public AccountInfo(CookieSourceInfo si, 40 | string accountId, string accountPass, 41 | string userSession, bool isBrowser, bool isAccount, 42 | bool isUserSession, bool isSecondLogin, 43 | bool isRecSetting, string cookieFile) 44 | { 45 | this.si = si; 46 | this.accountId = accountId; 47 | this.accountPass = accountPass; 48 | this.userSession = userSession; 49 | this.isBrowser = isBrowser; 50 | this.isAccount = isAccount; 51 | this.isUserSession = isUserSession; 52 | this.useSecondLogin = isSecondLogin; 53 | this.isRecSetting = isRecSetting; 54 | this.cookieFile = cookieFile; 55 | } 56 | public string getArg() { 57 | try { 58 | if (isRecSetting) return null; 59 | 60 | XmlSerializer serializer = new XmlSerializer(typeof(AccountSetting)); 61 | using (var ms = new MemoryStream()) { 62 | var _ai = new AccountSetting(); 63 | _ai.IsCustomized = si != null ? si.IsCustomized : false; 64 | _ai.BrowserName = si != null ? si.BrowserName : ""; 65 | _ai.ProfileName = si != null ? si.BrowserName : ""; 66 | _ai.CookiePath = si != null && si.CookiePath != null ? si.CookiePath.Replace('\\', '/') : ""; 67 | _ai.EngineId = si != null ? si.EngineId : ""; 68 | _ai.mail = accountId == null ? "" : accountId; 69 | _ai.pass = accountPass == null ? "" : accountPass; 70 | _ai.userSession = userSession == null ? "" : userSession; 71 | _ai.isBrowser = isBrowser; 72 | _ai.isAccount = isAccount; 73 | _ai.isUserSession = isUserSession; 74 | 75 | var ns = new XmlSerializerNamespaces(); 76 | ns.Add(string.Empty, string.Empty); 77 | serializer.Serialize(ms, _ai, ns); 78 | var b = Encoding.UTF8.GetString(ms.ToArray()); 79 | 80 | var a = b.Replace("\n", "").Replace("\r", ""); 81 | a = util.getRegGroup(a, "( 14 | /// Description of TimeShiftConfig. 15 | /// 16 | public class TimeShiftConfig 17 | { 18 | public int startTimeMode = 0; 19 | public int endTimeMode = 0; 20 | 21 | //0-start time 1-continue 22 | private int startType = 0; 23 | public int h = 0; 24 | public int m = 0; 25 | public int s = 0; 26 | public int endH = 0; 27 | public int endM = 0; 28 | public int endS = 0; 29 | 30 | public bool isContinueConcat = false; 31 | public int timeSeconds = 0; 32 | public int timeType = 0; //0-record from 1-recorded until 33 | 34 | public int endTimeSeconds = 0; 35 | public bool isDeletePosTime = false; 36 | public bool isOutputUrlList; 37 | public string openListCommand; 38 | public bool isM3u8List; 39 | public double m3u8UpdateSeconds; 40 | public bool isOpenUrlList; 41 | public bool isVposStartTime; 42 | 43 | public string startTimeStr; 44 | public bool isAfterStartTimeComment; 45 | public bool isBeforeEndTimeComment; 46 | public bool isOpenTimeBaseStartArg; 47 | public bool isOpenTimeBaseEndArg; 48 | 49 | public TimeShiftConfig(int startType, 50 | int h, int m, int s, bool isContinueConcat, 51 | bool isVposStartTime, int startTimeMode, int endTimeMode, 52 | bool isAfterStartTimeComment, bool isOpenTimeBaseStart, 53 | bool isOpenTimeBaseEnd, bool isBeforeEndTimeComment, 54 | bool isDeletePosTime) 55 | { 56 | this.startType = startType; 57 | this.h = h; 58 | this.m = m; 59 | this.s = s; 60 | this.isContinueConcat = isContinueConcat; 61 | this.isVposStartTime = isVposStartTime; 62 | this.startTimeMode = startTimeMode; 63 | this.endTimeMode = endTimeMode; 64 | 65 | timeSeconds = h * 3600 + m * 60 + s; 66 | timeType = (startType == 0) ? 0 : 1; 67 | startTimeStr = (startType == 0) ? (timeSeconds + "s") : 68 | ((isContinueConcat) ? "continue-concat" : "continue"); 69 | this.isAfterStartTimeComment = isAfterStartTimeComment; 70 | this.isBeforeEndTimeComment = isBeforeEndTimeComment; 71 | this.isOpenTimeBaseStartArg = isOpenTimeBaseStart; 72 | this.isOpenTimeBaseEndArg = isOpenTimeBaseEnd; 73 | this.isDeletePosTime = isDeletePosTime; 74 | } 75 | public TimeShiftConfig(int startType, 76 | int h, int m, int s, int endH, int endM, int endS, 77 | bool isContinueConcat, bool isOutputUrlList, 78 | string openListCommand, bool isM3u8List, 79 | double m3u8UpdateSeconds, bool isOpenUrlList, 80 | bool isVposStartTime, int startTimeMode, int endTimeMode, 81 | bool isAfterStartTimeComment, bool isOpenTimeBaseStart, 82 | bool isOpenTimeBaseEnd, bool isBeforeEndTimeComment, 83 | bool isDeletePosTime) 84 | { 85 | this.startType = startType; 86 | this.h = h; 87 | this.m = m; 88 | this.s = s; 89 | this.endH = endH; 90 | this.endM = endM; 91 | this.endS = endS; 92 | this.isContinueConcat = isContinueConcat; 93 | this.isOutputUrlList = isOutputUrlList; 94 | this.openListCommand = openListCommand; 95 | this.isM3u8List = isM3u8List; 96 | this.m3u8UpdateSeconds = m3u8UpdateSeconds; 97 | this.isOpenUrlList = isOpenUrlList; 98 | this.isVposStartTime = isVposStartTime; 99 | this.startTimeMode = startTimeMode; 100 | this.endTimeMode = endTimeMode; 101 | 102 | timeSeconds = (startTimeMode == 0) ? 0 : (h * 3600 + m * 60 + s); 103 | timeType = (startType == 0) ? 0 : 1; 104 | endTimeSeconds = (endTimeMode == 0) ? 0 : (endH * 3600 + endM * 60 + endS); 105 | 106 | startTimeStr = (startType == 0) ? (timeSeconds + "s") : 107 | ((isContinueConcat) ? "continue-concat" : "continue"); 108 | this.isAfterStartTimeComment = isAfterStartTimeComment; 109 | this.isOpenTimeBaseStartArg = isOpenTimeBaseStart; 110 | this.isOpenTimeBaseEndArg = isOpenTimeBaseEnd; 111 | this.isBeforeEndTimeComment = isBeforeEndTimeComment; 112 | this.isDeletePosTime = isDeletePosTime; 113 | } 114 | public TimeShiftConfig() : this(0, 0, 0, 0, 0, 0, 0, 115 | false, false, "notepad {i}", false, 5, false, false, 0, 0, false, false, false, false, true) {} 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /siyou.md: -------------------------------------------------------------------------------- 1 | 2 | ## 製作中に見つけたニコ生新配信仕様 3 | 4 | 誰かの役に立てば幸いです。 5 | 独自の経験のため、間違っている部分もあるかもしれません。 6 | 7 | ### 視聴ページ 8 | - たまに500 internal server errorが返ります。 9 | - 放送終了直後は視聴ページでも放送後の表示のページでもない、非ログインのときに表示されるページ?のようなところに飛ばされることがあります。まだ放送終了後ページが用意されていないのかもしれません。 10 | 11 | ### websocket 12 | 接続時 13 | - まず基本メッセージは{"type":"watch","body":{"command":"getpermit","requirement":{"broadcastId":"6121945301627","route":"","stream":{"protocol":"hls","requireNewStream":true,"priorStreamQuality":"normal","isLowLatency":true},"room":{"isCommentable":true,"protocol":"webSocket"}}}} 14 | - このうちのrequireNewStreamは名前の通り新しい映像ストリームを要請する意味だと思われます。ここにfalseを指定することで既存の映像ストリームを切断することなく既存の映像ストリームを取得することができます。ブラウザでは最初にプレイヤーをロードしたときにはtrueで接続され、プレイヤー右下の更新ボタンを押すとfalseでメッセージが送られるようです。これを利用してツール側でfalseで接続すれば、ある程度はブラウザ視聴に干渉せずに接続することができますが、有料会員限定放送の非会員でも視聴できる部分?などは例外としてfalseで接続しても既存の接続を切断して新規ストリームが返ってくるようです。完全な確認は取れていませんが、どうやらサーバーから送られてきたcurrentstreamのmediaServerAuthがnullでない場合はfalseが効かないような気がします。既存の有効なストリームが存在しない状態でfalseで接続disconnectされて「NO_PERMISSION」が返ってきます。本ツールでは一旦falseで送ってNO_PERMISSIONが返ってきたときだけtrueで接続し直すという手法を取っていますが、映像クオリティ選択機能との兼ね合いで機能しないことも多いです。 15 | - priorStreamQualityは新規に取得したい映像ストリームのクオリティを指定します。ほとんどの放送では自動はabr、3Mbpsはsuper_high、2Mbpsはhigh、1Mbpsはnormal、384kbpsはlow、192kbpsはsuper_lowに対応しており、一部の放送の高画質はhigh、低画質はnormalに対応しています。また、有料放送などでは高画質=highが会員映像、normalが非会員映像に分けられていることもありますがそうでないこともあります。この項目の設定はrequireNewStreamにtrueを指定した場合にのみ有効になります。多くの放送ではsuper_highが存在しない放送にsuper_highを指定したり「abc」などの適当な文字列を指定した場合は前回有効な接続をしたときの設定でストリームが返ってくるようですが、高画質と低画質しか画質選択が存在しない放送でrequireNewStreamがfalseだったとしても、highとnormal以外を指定すると有効なストリームの取得ができなかったことがありました。いきなり目的の画質を指定するとNO_PERMISSIONになる可能性があるので、一旦何も指定せずに投げて、返ってきたcurrentStreamのqualityTypesから目的の画質を指定して送り直すのも手かもしれません。 16 | 17 | サーバーからのcurrentStream 18 | - mediaServerTypeはほとんどがdmcですが、ウェザーニューズなど"limelight"でした。(2018/7/30) 19 | 20 | statistics 21 | - 極希に「{"type":"watch","body":{"command":"statistics","params":["2",null,"0","0"]}}」のようにnullが入っていることがあります。 22 | 23 | disconnect 24 | - disconnectを受け取った後にgetpermitで再接続する際は、requireNewStreamをfalseにしていると前回の切断理由が返ってきて再びdisconnectになってしまうようです。disconnectされた後は一度requireNewStreamをtrueにする必要があるようです。 25 | - NO_PERMISSION: 既存の有効なストリームがない状態でrequireNewStreamをfalseに指定したりなど、getpermitが成功しなかったときに送られてくるようです。 26 | - TAKEOVER: いわゆる追い出しです。rtmp配信と違い、新配信では追い出し時にwebsocketの接続自体が切られてしまいます。 27 | - SERVICE_TEMPORARILY_UNAVAILABLE: ある放送へのアクセス過多?大量のスレッドで集中的にアクセスすると起こりました。放送の最初でも起こりやすい?ただ、それほど人がいない放送の予約枠の最初でも起こっていました。ユーザー側の環境により放送の最初に頻発することもあるようです。ニコ生の「視聴ができない不具合」が発生していたときにもこのエラーが出ていました。 28 | - END_PROGRAM: 番組終了 29 | - TOO_MANY_CONNECTIONS: あるアカウントあたりのある放送への接続が多すぎる。10ぐらい?一つのaudience_tokenごとではなく、アカウントごとの気がします。つまり、一つのアカウントを使って大量の別放送を録画する分には引っかからない、かも。また、逆を言えば一つのアカウントから制限数以下の複数のストリームの取得が可能なので、使い方はありそうです。ただし、一つのアカウントに対して配信されるストリームは一つの映像クオリティのみのようです。 30 | - INTERNAL_SERVERERROR: こちらもあまりよく理解できていませんが、稀に送られてきます。 31 | --------------------------------------------------------------------------------