diff --git a/Discord Media Loader/App.config b/Discord Media Loader/App.config index 731f6de..ca5f785 100644 --- a/Discord Media Loader/App.config +++ b/Discord Media Loader/App.config @@ -1,6 +1,18 @@  + + +
+ + + + + + + + + \ No newline at end of file diff --git a/Discord Media Loader/Discord Media Loader.csproj b/Discord Media Loader/Discord Media Loader.csproj index 0245593..274394d 100644 --- a/Discord Media Loader/Discord Media Loader.csproj +++ b/Discord Media Loader/Discord Media Loader.csproj @@ -32,6 +32,9 @@ prompt 4 + + Serraniel-64x64.ico + ..\packages\Discord.Net.0.9.6\lib\net45\Discord.Net.dll @@ -74,6 +77,12 @@ + + Form + + + LoginForm.cs + Form @@ -82,6 +91,12 @@ + + LoginForm.cs + + + MainForm.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -90,6 +105,7 @@ True Resources.resx + True @@ -105,6 +121,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8b////VP///3////+m////zP// + /+T////1//////////r////u////3f///8z///+m////f////1T///8b////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////M////5D////b//////// + //////////////////////////////////////////////////////////////////////////////// + /9v///+Q////M////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///w3///90////1v// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////W////dP///w3///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A2K4AANiuAADYrgAA2K4AANiuAADfswAA////EP// + /4D////t////////////////////////////////////////////////9/zq/7XiQ/+340n/w+ho/9Pu + kf/m9b//+Pzt///////////////////////////////////////////////////////////t////gf// + /xCa2AAAmtgAAJrYAACa2AAAmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANiuAADYrgAA2K4AANiu + AAD///8B////Yf///+v//////////////////////////////////////////////////////////+z4 + z/+a2AD/mtgA/5rYAP+a2AD/mtgA/6TcGf+65VL/3fKo//n98P////////////////////////////// + ///////////////////////r////Yf///wGa2AAAmtgAAJrYAACa2AAA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wDYrgAA2K4AANiuAAD///8k////xP////////////////////////////////////////////////// + ///////////////////h87P/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+n3SD/zOt+//X7 + 5v/////////////////////////////////////////////////////E////I5rYAACa2AAAmtgAAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A2K4AANiuAAD///9V////8f////////////////////////////////// + ////////////////////////////////////////0+6Q/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+k3Bn/0e2K//v+9v////////////////////////////////////////////// + //H///9VmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wH///+M//////////////////////// + /////////////////////////////////////////////////////////////8bpbv+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+u4DP/5/bD//////////////////// + /////////////////////////////////4z///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wb///+l//////// + //////////////////////////////////////////////////////////////////////////////// + //+55E//mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5zZ + Bv/P7Ib/////////////////////////////////////////////////////pf///wb///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3//////////////////////////////////////////////////////////////////////// + ///////////////////+//3/rd8x/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/7zlV//5/fH///////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wH///+k//////////////////////////////////////////////////////// + ////////////////////////////////////////+f3v/6PcF/+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/seE7//X75v////////////// + /////////////////////////////////6T///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///+K//////////////////////////////////////// + /////////////////////////////////////////////////////////////+751f+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+s3y7/9Pvi////////////////////////////////////////////////i////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///s+M//rd8w/6XcHf+c2Qb/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/6zfLv/1++f///////////////////////////////////////// + //////9V////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8j////8P// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v/6/fL/8PnZ/97yrP/E6Gv/qd4l/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/suE8//v99P////////////// + ////////////////////////////8P///yP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8B////xP////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////v9 + 9f/e8qz/s+JA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP/A51/////////////////////////////////////////////////E////Af///wD///8A////AP// + /wD///8A////AP///wD///8A////Yf////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////f867/rN8t/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/9jwnP////////////////////////////////////////////// + /2H///8A////AP///wD///8A////AP///wD///8A////EP///+r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////r98//I6nX/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+h2xL/8/rh//////////////////// + ///////////////////////q////Ev///wD///8A////AP///wD///8A////AP///3////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////9/yrf+h2xL/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8Dn + X////////////////////////////////////////////////4D///8A////AP///wD///8A////AP// + /w3////u//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////7PjQ/6reKP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+c2QX/7vjT///////////////////////////////////////////u////Df// + /wD///8A////AP///wD///90//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////0++L/qd4n/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8PoaP////////////////////////////// + /////////////////3T///8A////AP///wD///8B////2/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+360P+k4g3/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+j2xb/+Pzu//// + ///////////////////////////////////////b////Af///wD///8A////O/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////wNCY/53dAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/9/zr////////////////////////////////////////////////zv///8A////AP// + /5D///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////f39/+Puin/n+AA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP/F6W3///////////////////////////////////////// + //////+Q////AP///wD////Y//////////////////////////////////////////////////////// + /////////////////////////////+3t7f+3t7f/jIyM/3Nzc/9oaGj/a2tr/35+fv+dnZ3/xsbG//Hx + 8f////////////////////////////////////////////////////////////////////////////// + ////////iZNy/5zbAP+b2QD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/s+JA//////////////////// + ////////////////////////////2f///wD///8d//////////////////////////////////////// + ////////////////////////////////////////9fTx/46Pk/9BQUH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv9ERET/fn5+/8rKyv////////////////////////////////////////////// + /////////////////////////////4iHjP98qA3/n+AA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6ne + J/////////////////////////////////////////////////////8e////Vv////////////////// + ////////////////////////////////////////////////////////+fDL/45/Qv8kJjH/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Xl5e/7e3t//+/v7///////// + //////////////////////////////////////////////////9vbXX/T2Ig/57fAP+a2QD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+l3Bz/////////////////////////////////////////////////////Vv// + /4T/////////////////////////////////////////////////////////////////////8+ax/+O5 + D/92ZBv/JCYx/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/YGBg/8jIyP/////////////////////////////////////////////////09PT/QkJE/zEz + Lf+Mwgb/nd0A/5rYAP+a2AD/mtgA/5rYAP+a2AD/pdwb//////////////////////////////////// + /////////////////4T///+t//////////////////////////////////////////////////////// + ////////8+ez/9mwB//htQD/dWMb/yQnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/dHR0/97e3v////////////////////////////// + ////////r6+v/y4uLv8nIzH/bZET/6HiAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6neJv////////////// + //////////////////////////////////////+t////zP////////////////////////////////// + ////////////////////////+PHS/9qyDv/YrgD/4rUA/3lmGf8kJjH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Ozs7/1ZWVv90dHT/jo6O/5mZmf/Hx8f//v7+//// + ////////////////////////7+/v/0dHR/8uLi7/KCUw/1BkH/+f4AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+z4T7/////////////////////////////////////////////////////zP///+X///////////// + /////////////////////////////////////////v35/+C/N//YrgD/2K4A/+O2AP+Dbhf/IyYx/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/1VVVf+QkJD/xsbG/+rq6v////////////// + ////////////////////////////////////////+vr6/2tra/8uLi7/Li4u/yspL/86Qij/ltEC/5va + AP+a2AD/mtgA/5rYAP+a2AD/x+ly//////////////////////////////////////////////////// + /+D////y//////////////////////////////////////////////////////Dfm//YrgD/2K4A/9iu + AP/itQD/k3oT/yUnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/cHBw/8bGxv/8/Pz///////// + ////////////////////////////////////////////////////////7+/v/3BwcP8uLi7/Li4u/y4u + Lv8tLC7/Ly8u/4e7CP+e3gD/mtgA/5rYAP+a2AD/mtgA/+X1vf////////////////////////////// + ///////////////////////s//////////////////////////////////////////////////////79 + +f/euyr/2K4A/9iuAP/YrgD/4LQA/6iKDf8oKTD/Li4u/y4uLv8uLi7/Li4u/y4uLv9QUFD/xMTE//// + ////////////////////////////////////////////////////////////////////////w8PD/1BQ + UP8uLi7/Li4u/y4uLv8uLi7/Li4u/yknMP95pA7/n+EA/5rYAP+a2AD/mtgA/6neJ//8/vj///////// + ////////////////////////////////////////////+f////////////////////////////////// + ///////////////////168D/2K4A/9iuAP/YrgD/2K4A/92yAP+/mwf/MTAt/ywtLv8uLi7/Li4u/y4u + Lv9wcHD/8PDw//////////////////////////////////////////////////////////////////r6 + +v/ExMT/bm5u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/a44U/6HiAP+a2AD/mtgA/5rY + AP/W75j///////////////////////////////////////////////////////////n////y//////// + ////////////////////////////////////////6tR3/9iuAP/YrgD/2K4A/9iuAP/arwD/06oB/0VA + J/8pKi//Li4u/y4uLv9ra2v/+vr6//////////////////////////////////////////////////39 + /f/n5+f/wsLC/4yMjP9SUlL/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/JyMx/2F+ + GP+h4wD/mtgA/5rYAP+v4DX//P74//////////////////////////////////////////////////// + ///////s////5f///////////////////////////////////////////////+LDQv/YrgD/2K4A/9iu + AP/YrgD/2K4A/+C0AP9oWh7/JCcx/y4uLv9GRkb/7u7u/////////////////////////////v7+/8fH + x/+VlZX/iYmJ/3BwcP9TU1P/OTk5/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/ygkMf9bdRv/oOEA/5rYAP+g2g7/7fjR//////////////////////////////////// + ////////////////////////////4P///8z///////////////////////////////////////////// + ///euyj/2K4A/9iuAP/YrgD/2K4A/9iuAP/itQD/ln0S/yQnMf8uLi7/ra2t//////////////////// + ///////////////////i4uL/e3t7/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/WXEc/6DhAP+d2Qf/4fOy//////////////////// + /////////////////////////////////////////////////8z///+t//////////////////////// + ////////////////////////3Lcc/9iuAP/YrgD/2K4A/9iuAP/YrgD/3LEA/8agBf82NCz/Pj9C//T0 + 9P/////////////////////////////////////////////////Ozs7/ZmZm/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/KCQx/1pzHP+m4w//4POx//// + //////////////////////////////////////////////////////////////////////+t////hP// + /////////////////////////////////////////////9y3Hf/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/gtAD/Z1ke/2lrcv////////////////////////////////////////////////////////////// + //++vr7/ZGRk/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/ygk + Mf93i0X/7PnL//////////////////////////////////////////////////////////////////// + ////////////hP///1T////////////////////////////////////////////////euyr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/4LQA/66OC/+Dg4b///////////////////////////////////////// + ///////////////////////////////////Pz8//hISE/0hISP8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/0JCQv+RkJX/9PXy//////////////////////////////////////////////////// + /////////////////////////////////1b///8c//////////////////////////////////////// + ////////48RG/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9mvAP/dsgD/kopq//////////////////// + ///////////////////////////////////////////////////////////////////09PT/y8vL/6Ki + ov+Dg4P/cXFx/21tbf94eHj/kJCQ/7q6uv/v7+////////////////////////////////////////// + //////////////////////////////////////////////////////8d////AP///9f///////////// + /////////////////////////////+rTdP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4LQA/72f + Iv/09PT///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////Y////AP// + /wD///+P///////////////////////////////////////////06Lb/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/esgD/zsKO//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////kP///wD///8A////Ov///////////////////////////////////////////fvx/9y2 + Gv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+G3Cf/578j///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////zr///8A////AP///wH////a//////////////////////// + ///////////////////p0nD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/3bgh//r0 + 3P////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////9v///8B////AP///wD///8A////dP// + ////////////////////////////////////////+fPZ/9mxCP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/duCH/9+7I//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////90////AP// + /wD///8A////AP///wz////t///////////////////////////////////////////oz2n/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9qyDf/x4qT///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////Df///wD///8A////AP///wD///8A////f/////////////////////////////////// + ////////+/fm/9u1Fv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+nQ + bP/8+u7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////f////wD///8A////AP///wD///8A////AP///xD////q//////// + ///////////////////////////////////x4qX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/3ron//Hipf///v3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////6v///xD///8A////AP///wD///8A////AP// + /wD///8A////YP///////////////////////////////////////////////+jPaf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4cA5//HipP/9+/H///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////2H///8A////AP// + /wD///8A////AP///wD///8A////AP///wH////D//////////////////////////////////////// + ///+/fj/4sRE/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/3bgf/+fNY//x4qX/+PHT//367//+/vv////+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /8P///8B////AP///wD///8A////AP///wD///8A////AP///wD///8A////Iv////D///////////// + //////////////////////////////z57f/gvzX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9ivA//cthj/37wr//fuyv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////D///8i////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///9U////////////////////////////////////////////////+/jo/+C/Nf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/48NH///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////9V////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///4j///////////////////////////////////////////// + ///8+ev/4sND/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/btBP//Pns//////////////////////////////////////////////////// + //////////////////////////////////////////////////////+J////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////pP////////////////// + //////////////////////////////789v/nzGD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/37wt///+/P////////////////////////////// + //////////////////////////////////////////////////////////////////////+k////Af// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3/////////////////////////////////////////////////////+7bj//asQr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+PGSv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////Bv///6X///////////////////////////////////////////// + ////////9+7K/+HBO//YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/oz2n///////////////////////////////////////////////////////////////////////// + //////////////////////+l////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////jP////////////////// + ///////////////////////////////////+/fr/7t2T/924Hv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/7dqL//////////////////////////////////////////////////// + //////////////////////////////////////+M////Af///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A2K4AANiu + AAD///9V////8f/////////////////////////////////////////////////////8+ev/7dmH/966 + Jv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A//Plrv////////////////////////////// + //////////////////////////////////////////////////H///9VmtgAAJrYAAD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ANiuAADYrgAA2K4AAP///yT////E//////////////////////////////////////// + ///////////////////9/PT/8+av/+bLWv/duB7/2K4A/9iuAP/YrgD/2K4A/9iuAP/37sv///////// + /////////////////////////////////////////////////////////////////8T///8jmtgAAJrY + AACa2AAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wDYrgAA2K4AANiuAADYrgAA////Af///2D////r//////// + /////////////////////////////////////////////////////////fvx//btxv/v3pf/6dJw/+TH + T//jxEX/+/jo////////////////////////////////////////////////////////////////6/// + /2D///8BmtgAAJrYAACa2AAAmtgAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////EP///3/////t//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////f////xD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////Df///3T////V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////9X///90////Df///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /zP///+N////1/////////////////////////////////////////////////////////////////// + ///////////////////////X////jf///zP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8b////VP///33///+l////y////+P////y//////// + ///////y////4////8v///+l////ff///1T///8b////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////4Af///////wAAD//////8AAAD/////+AAAAB/////wAAAAD////8AAAAAD////gAAAAA + H///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//gAAAAAAAH/8AAAAAAAAP/gA + AAAAAAAf+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA + AAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AA + AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/4AAAAAAAAH/wAAAAAAAA//gAAAAAA + AH/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//wAAAAAAD///gAAAAAAf///gAAAAAH////AAAAAA///// + AAAAAP/////AAAAD//////AAAA///////AAAP///////4Af///8= + + + \ No newline at end of file diff --git a/Discord Media Loader/MainForm.Designer.cs b/Discord Media Loader/MainForm.Designer.cs index bc07087..879ad82 100644 --- a/Discord Media Loader/MainForm.Designer.cs +++ b/Discord Media Loader/MainForm.Designer.cs @@ -28,11 +28,283 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.lbPath = new System.Windows.Forms.Label(); + this.btnSearch = new System.Windows.Forms.Button(); + this.tbxPath = new System.Windows.Forms.TextBox(); + this.dtpLimit = new System.Windows.Forms.DateTimePicker(); + this.btnDownload = new System.Windows.Forms.Button(); + this.cbLimitDate = new System.Windows.Forms.CheckBox(); + this.lbThread = new System.Windows.Forms.Label(); + this.cbChannels = new System.Windows.Forms.ComboBox(); + this.nupThreadCount = new System.Windows.Forms.NumericUpDown(); + this.lbChannel = new System.Windows.Forms.Label(); + this.lbScanCount = new System.Windows.Forms.Label(); + this.lbUsername = new System.Windows.Forms.Label(); + this.lbDownload = new System.Windows.Forms.Label(); + this.cbGuilds = new System.Windows.Forms.ComboBox(); + this.lbGuild = new System.Windows.Forms.Label(); + this.cbSkip = new System.Windows.Forms.CheckBox(); + this.lbCopyright = new System.Windows.Forms.Label(); + this.lbGithub = new System.Windows.Forms.LinkLabel(); + this.lbAbout = new System.Windows.Forms.LinkLabel(); + this.lbVersion = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.nupThreadCount)).BeginInit(); + this.SuspendLayout(); + // + // lbPath + // + this.lbPath.AutoSize = true; + this.lbPath.Location = new System.Drawing.Point(12, 110); + this.lbPath.Name = "lbPath"; + this.lbPath.Size = new System.Drawing.Size(32, 13); + this.lbPath.TabIndex = 8; + this.lbPath.Text = "Path:"; + // + // btnSearch + // + this.btnSearch.Location = new System.Drawing.Point(403, 105); + this.btnSearch.Name = "btnSearch"; + this.btnSearch.Size = new System.Drawing.Size(25, 23); + this.btnSearch.TabIndex = 9; + this.btnSearch.Text = "..."; + this.btnSearch.UseVisualStyleBackColor = true; + this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); + // + // tbxPath + // + this.tbxPath.Location = new System.Drawing.Point(50, 107); + this.tbxPath.Name = "tbxPath"; + this.tbxPath.Size = new System.Drawing.Size(342, 20); + this.tbxPath.TabIndex = 7; + // + // dtpLimit + // + this.dtpLimit.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dtpLimit.Location = new System.Drawing.Point(158, 70); + this.dtpLimit.Name = "dtpLimit"; + this.dtpLimit.Size = new System.Drawing.Size(95, 20); + this.dtpLimit.TabIndex = 6; + // + // btnDownload + // + this.btnDownload.Location = new System.Drawing.Point(12, 167); + this.btnDownload.Name = "btnDownload"; + this.btnDownload.Size = new System.Drawing.Size(415, 23); + this.btnDownload.TabIndex = 20; + this.btnDownload.Text = "Start downloading"; + this.btnDownload.UseVisualStyleBackColor = true; + this.btnDownload.Click += new System.EventHandler(this.btnDownload_Click); + // + // cbLimitDate + // + this.cbLimitDate.AutoSize = true; + this.cbLimitDate.Checked = true; + this.cbLimitDate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbLimitDate.Location = new System.Drawing.Point(15, 73); + this.cbLimitDate.Name = "cbLimitDate"; + this.cbLimitDate.Size = new System.Drawing.Size(137, 17); + this.cbLimitDate.TabIndex = 5; + this.cbLimitDate.Text = "Only media posted after"; + this.cbLimitDate.UseVisualStyleBackColor = true; + this.cbLimitDate.CheckedChanged += new System.EventHandler(this.cbLimitDate_CheckedChanged); + // + // lbThread + // + this.lbThread.AutoSize = true; + this.lbThread.Location = new System.Drawing.Point(12, 141); + this.lbThread.Name = "lbThread"; + this.lbThread.Size = new System.Drawing.Size(64, 13); + this.lbThread.TabIndex = 11; + this.lbThread.Text = "Thread limit:"; + // + // cbChannels + // + this.cbChannels.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbChannels.FormattingEnabled = true; + this.cbChannels.Location = new System.Drawing.Point(264, 32); + this.cbChannels.Name = "cbChannels"; + this.cbChannels.Size = new System.Drawing.Size(164, 21); + this.cbChannels.TabIndex = 4; + // + // nupThreadCount + // + this.nupThreadCount.Location = new System.Drawing.Point(82, 139); + this.nupThreadCount.Name = "nupThreadCount"; + this.nupThreadCount.Size = new System.Drawing.Size(70, 20); + this.nupThreadCount.TabIndex = 12; + this.nupThreadCount.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + // + // lbChannel + // + this.lbChannel.AutoSize = true; + this.lbChannel.Location = new System.Drawing.Point(224, 38); + this.lbChannel.Name = "lbChannel"; + this.lbChannel.Size = new System.Drawing.Size(34, 13); + this.lbChannel.TabIndex = 3; + this.lbChannel.Text = "Guild:"; + // + // lbScanCount + // + this.lbScanCount.AutoSize = true; + this.lbScanCount.Location = new System.Drawing.Point(12, 203); + this.lbScanCount.Name = "lbScanCount"; + this.lbScanCount.Size = new System.Drawing.Size(102, 13); + this.lbScanCount.TabIndex = 13; + this.lbScanCount.Text = "Messages scanned:"; + // + // lbUsername + // + this.lbUsername.AutoSize = true; + this.lbUsername.Location = new System.Drawing.Point(12, 9); + this.lbUsername.Name = "lbUsername"; + this.lbUsername.Size = new System.Drawing.Size(58, 13); + this.lbUsername.TabIndex = 2; + this.lbUsername.Text = "Username:"; + // + // lbDownload + // + this.lbDownload.AutoSize = true; + this.lbDownload.Location = new System.Drawing.Point(234, 203); + this.lbDownload.Name = "lbDownload"; + this.lbDownload.Size = new System.Drawing.Size(92, 13); + this.lbDownload.TabIndex = 14; + this.lbDownload.Text = "Files downloaded:"; + // + // cbGuilds + // + this.cbGuilds.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbGuilds.FormattingEnabled = true; + this.cbGuilds.Location = new System.Drawing.Point(52, 32); + this.cbGuilds.Name = "cbGuilds"; + this.cbGuilds.Size = new System.Drawing.Size(164, 21); + this.cbGuilds.TabIndex = 1; + this.cbGuilds.SelectedIndexChanged += new System.EventHandler(this.cbGuilds_SelectedIndexChanged); + // + // lbGuild + // + this.lbGuild.AutoSize = true; + this.lbGuild.Location = new System.Drawing.Point(12, 35); + this.lbGuild.Name = "lbGuild"; + this.lbGuild.Size = new System.Drawing.Size(34, 13); + this.lbGuild.TabIndex = 0; + this.lbGuild.Text = "Guild:"; + // + // cbSkip + // + this.cbSkip.AutoSize = true; + this.cbSkip.Checked = true; + this.cbSkip.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbSkip.Location = new System.Drawing.Point(227, 141); + this.cbSkip.Name = "cbSkip"; + this.cbSkip.Size = new System.Drawing.Size(106, 17); + this.cbSkip.TabIndex = 16; + this.cbSkip.Text = "Skip existing files"; + this.cbSkip.UseVisualStyleBackColor = true; + // + // lbCopyright + // + this.lbCopyright.AutoSize = true; + this.lbCopyright.Location = new System.Drawing.Point(12, 274); + this.lbCopyright.Name = "lbCopyright"; + this.lbCopyright.Size = new System.Drawing.Size(151, 13); + this.lbCopyright.TabIndex = 22; + this.lbCopyright.Text = "Copyright (c) 2017 by Serraniel"; + // + // lbGithub + // + this.lbGithub.AutoSize = true; + this.lbGithub.Location = new System.Drawing.Point(169, 274); + this.lbGithub.Name = "lbGithub"; + this.lbGithub.Size = new System.Drawing.Size(40, 13); + this.lbGithub.TabIndex = 23; + this.lbGithub.TabStop = true; + this.lbGithub.Text = "GitHub"; + this.lbGithub.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lbGithub_LinkClicked); + // + // lbAbout + // + this.lbAbout.AutoSize = true; + this.lbAbout.Location = new System.Drawing.Point(223, 274); + this.lbAbout.Name = "lbAbout"; + this.lbAbout.Size = new System.Drawing.Size(35, 13); + this.lbAbout.TabIndex = 24; + this.lbAbout.TabStop = true; + this.lbAbout.Text = "About"; + this.lbAbout.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lbAbout_LinkClicked); + // + // lbVersion + // + this.lbVersion.Location = new System.Drawing.Point(328, 274); + this.lbVersion.Name = "lbVersion"; + this.lbVersion.Size = new System.Drawing.Size(100, 13); + this.lbVersion.TabIndex = 25; + this.lbVersion.Text = "version"; + this.lbVersion.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Text = "MainForm"; + this.ClientSize = new System.Drawing.Size(439, 296); + this.Controls.Add(this.lbVersion); + this.Controls.Add(this.lbAbout); + this.Controls.Add(this.lbGithub); + this.Controls.Add(this.lbCopyright); + this.Controls.Add(this.cbSkip); + this.Controls.Add(this.lbDownload); + this.Controls.Add(this.lbScanCount); + this.Controls.Add(this.nupThreadCount); + this.Controls.Add(this.lbThread); + this.Controls.Add(this.btnDownload); + this.Controls.Add(this.tbxPath); + this.Controls.Add(this.lbPath); + this.Controls.Add(this.btnSearch); + this.Controls.Add(this.dtpLimit); + this.Controls.Add(this.cbLimitDate); + this.Controls.Add(this.cbChannels); + this.Controls.Add(this.lbChannel); + this.Controls.Add(this.lbUsername); + this.Controls.Add(this.cbGuilds); + this.Controls.Add(this.lbGuild); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Discord Media Loader"; + this.Shown += new System.EventHandler(this.MainForm_Shown); + ((System.ComponentModel.ISupportInitialize)(this.nupThreadCount)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion + + private System.Windows.Forms.Label lbPath; + private System.Windows.Forms.Button btnSearch; + private System.Windows.Forms.TextBox tbxPath; + private System.Windows.Forms.DateTimePicker dtpLimit; + private System.Windows.Forms.Button btnDownload; + private System.Windows.Forms.CheckBox cbLimitDate; + private System.Windows.Forms.Label lbThread; + private System.Windows.Forms.ComboBox cbChannels; + private System.Windows.Forms.NumericUpDown nupThreadCount; + private System.Windows.Forms.Label lbChannel; + private System.Windows.Forms.Label lbScanCount; + private System.Windows.Forms.Label lbUsername; + private System.Windows.Forms.Label lbDownload; + private System.Windows.Forms.ComboBox cbGuilds; + private System.Windows.Forms.Label lbGuild; + private System.Windows.Forms.CheckBox cbSkip; + private System.Windows.Forms.Label lbCopyright; + private System.Windows.Forms.LinkLabel lbGithub; + private System.Windows.Forms.LinkLabel lbAbout; + private System.Windows.Forms.Label lbVersion; } } \ No newline at end of file diff --git a/Discord Media Loader/MainForm.cs b/Discord Media Loader/MainForm.cs index ac1598f..957aa1e 100644 --- a/Discord Media Loader/MainForm.cs +++ b/Discord Media Loader/MainForm.cs @@ -1,20 +1,297 @@ using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; +using System.Diagnostics; +using System.IO; using System.Linq; -using System.Text; +using System.Net; +using System.Reflection; using System.Threading.Tasks; using System.Windows.Forms; +using Discord; +using Discord.Net; +using ConnectionState = Discord.ConnectionState; namespace Discord_Media_Loader { public partial class MainForm : Form { + private DiscordClient Client { get; } = new DiscordClient(); + private event EventHandler UpdateProgress; + private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public MainForm() { InitializeComponent(); + + UpdateProgress += (s, e) => + { + SetControlPropertyThreadSafe(lbDownload, "Text", $"Files downloaded: {e.Downloaded}"); + SetControlPropertyThreadSafe(lbScanCount, "Text", $"Messages scanned: {e.Scanned}"); + }; + } + + private delegate void SetControlPropertyThreadSafeDelegate(Control control, string propertyName, object propertyValue); + + private static void SetControlPropertyThreadSafe(Control control, string propertyName, object propertyValue) + { + if (control.InvokeRequired) + { + control.Invoke(new SetControlPropertyThreadSafeDelegate(SetControlPropertyThreadSafe), control, propertyName, propertyValue); + + } + else + { + control.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, control, new[] { propertyValue }); + } + } + + public async Task Login() + { + var email = Properties.Settings.Default.email; + var abort = false; + + while (Client.State != ConnectionState.Connected && !abort) + { + string password; + + if (LoginForm.Exec(ref email, out password)) + { + try + { + Cursor = Cursors.WaitCursor; + try + { + await Client.Connect(email, password); + + Properties.Settings.Default.email = email; + Properties.Settings.Default.Save(); + } + finally + { + Cursor = Cursors.Default; + } + } + catch (HttpException) + { + // ignore http exception on invalid login + } + } + else + { + abort = true; + } + } + + return !abort; + } + + private async void MainForm_Shown(object sender, EventArgs e) + { + lbVersion.Text = $"v{Assembly.GetExecutingAssembly().GetName().Version}"; + + SetEnabled(false); + + if (!await Login()) + { + Close(); + } + else + { + cbGuilds.Items.AddRange((from g in Client.Servers orderby g.Name select g.Name).ToArray()); + cbGuilds.SelectedIndex = 0; + lbUsername.Text = $"Username: {Client.CurrentUser.Name}#{Client.CurrentUser.Discriminator}"; + + SetEnabled(true); + } + } + + private Server FindServerByName(string name) + { + return (from s in Client.Servers where s.Name == name select s).FirstOrDefault(); + } + + private Channel FindChannelByName(Server server, string name) + { + return (from c in server.TextChannels where c.Name == name select c).FirstOrDefault(); + } + + private void SetEnabled(bool enabled) + { + foreach (Control c in Controls) + { + SetControlPropertyThreadSafe(c, "Enabled", enabled); + //c.Enabled = enabled; + } + } + + private void cbGuilds_SelectedIndexChanged(object sender, EventArgs e) + { + Cursor = Cursors.WaitCursor; + try + { + Server guild = FindServerByName(cbGuilds.Text); + + if (guild != null) + { + cbChannels.Items.Clear(); + cbChannels.Items.AddRange((from c in guild.TextChannels orderby c.Position select c.Name).ToArray()); + + cbChannels.SelectedIndex = 0; + } + } + finally + { + Cursor = Cursors.Default; + } + } + + private void cbLimitDate_CheckedChanged(object sender, EventArgs e) + { + dtpLimit.Enabled = cbLimitDate.Checked; + } + + private void btnSearch_Click(object sender, EventArgs e) + { + var dlg = new FolderBrowserDialog(); + if (dlg.ShowDialog() == DialogResult.OK) + { + tbxPath.Text = dlg.SelectedPath; + } + } + + private void OnUpdateProgress(UpdateProgessEventArgs e) + { + EventHandler handler = UpdateProgress; + handler?.Invoke(this, e); + } + + private static long DateTimeToUnixTimeStamp(DateTime dateTime) + { + TimeSpan elapsedTime = dateTime - Epoch; + return (long)elapsedTime.TotalSeconds; + } + + + private void btnDownload_Click(object sender, EventArgs e) + { + var path = tbxPath.Text; + var useStopDate = cbLimitDate.Checked; + var stopDate = dtpLimit.Value; + var threadLimit = nupThreadCount.Value; + var skipExisting = cbSkip.Checked; + + if (!Directory.Exists(path)) + { + MessageBox.Show("Please enter an existing directory."); + return; + } + + SetEnabled(false); + + var guild = FindServerByName(cbGuilds.Text); + var channel = FindChannelByName(guild, cbChannels.Text); + + var clients = new List(); + + var limit = 100; + var stop = false; + var lastId = ulong.MaxValue; + var isFirst = true; + + ulong msgScanCount = 0; + ulong downloadCount = 0; + var locker = new object(); + + Task.Run(async () => + { + + while (!stop) + { + Discord.Message[] messages; + + if (isFirst) + messages = await channel.DownloadMessages(limit, null); + else + messages = await channel.DownloadMessages(limit, lastId); + + isFirst = false; + + foreach (var m in messages) + { + if (m.Id < lastId) + lastId = m.Id; + + if (useStopDate && m.Timestamp < stopDate.Date) + { + stop = true; + continue; + } + + foreach (var a in m.Attachments) + { + if (!path.EndsWith(@"\")) + path += @"\"; + + var fname = $"{guild.Name}_{channel.Name}_{DateTimeToUnixTimeStamp(m.Timestamp)}_{a.Filename}"; + fname = Path.GetInvalidFileNameChars().Aggregate(fname, (current, c) => current.Replace(c, '-')); + fname = path + fname; + + if (skipExisting && File.Exists(fname)) + continue; + + while (clients.Count >= threadLimit) + { + // wait + } + var wc = new WebClient(); + clients.Add(wc); + + wc.DownloadFileCompleted += (wcSender, wcE) => + { + clients.Remove(wc); + lock (locker) + { + downloadCount++; + OnUpdateProgress(new UpdateProgessEventArgs() { Downloaded = downloadCount, Scanned = msgScanCount }); + } + }; + + wc.DownloadFileAsync(new Uri(a.Url), fname); + } + + msgScanCount++; + OnUpdateProgress(new UpdateProgessEventArgs() { Downloaded = downloadCount, Scanned = msgScanCount}); + } + + stop = stop || messages.Length < limit; + } + + await Task.Run(() => + { + while (clients.Count > 0) + { + // wait until download finished + } + }); + + Process.Start(path); + SetEnabled(true); + }); + } + + private void lbGithub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Process.Start("https://github.com/Serraniel/DiscordMediaLoader/releases"); + } + + private void lbAbout_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + MessageBox.Show(Properties.Resources.AboutString); } } + + internal class UpdateProgessEventArgs : EventArgs + { + internal ulong Scanned { get; set; } + internal ulong Downloaded { get; set; } + } } diff --git a/Discord Media Loader/MainForm.resx b/Discord Media Loader/MainForm.resx new file mode 100644 index 0000000..88e8a1f --- /dev/null +++ b/Discord Media Loader/MainForm.resx @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8b////VP///3////+m////zP// + /+T////1//////////r////u////3f///8z///+m////f////1T///8b////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////M////5D////b//////// + //////////////////////////////////////////////////////////////////////////////// + /9v///+Q////M////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///w3///90////1v// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////W////dP///w3///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A2K4AANiuAADYrgAA2K4AANiuAADfswAA////EP// + /4D////t////////////////////////////////////////////////9/zq/7XiQ/+340n/w+ho/9Pu + kf/m9b//+Pzt///////////////////////////////////////////////////////////t////gf// + /xCa2AAAmtgAAJrYAACa2AAAmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANiuAADYrgAA2K4AANiu + AAD///8B////Yf///+v//////////////////////////////////////////////////////////+z4 + z/+a2AD/mtgA/5rYAP+a2AD/mtgA/6TcGf+65VL/3fKo//n98P////////////////////////////// + ///////////////////////r////Yf///wGa2AAAmtgAAJrYAACa2AAA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wDYrgAA2K4AANiuAAD///8k////xP////////////////////////////////////////////////// + ///////////////////h87P/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+n3SD/zOt+//X7 + 5v/////////////////////////////////////////////////////E////I5rYAACa2AAAmtgAAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A2K4AANiuAAD///9V////8f////////////////////////////////// + ////////////////////////////////////////0+6Q/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+k3Bn/0e2K//v+9v////////////////////////////////////////////// + //H///9VmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wH///+M//////////////////////// + /////////////////////////////////////////////////////////////8bpbv+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+u4DP/5/bD//////////////////// + /////////////////////////////////4z///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wb///+l//////// + //////////////////////////////////////////////////////////////////////////////// + //+55E//mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5zZ + Bv/P7Ib/////////////////////////////////////////////////////pf///wb///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3//////////////////////////////////////////////////////////////////////// + ///////////////////+//3/rd8x/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/7zlV//5/fH///////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wH///+k//////////////////////////////////////////////////////// + ////////////////////////////////////////+f3v/6PcF/+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/seE7//X75v////////////// + /////////////////////////////////6T///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///+K//////////////////////////////////////// + /////////////////////////////////////////////////////////////+751f+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+s3y7/9Pvi////////////////////////////////////////////////i////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///s+M//rd8w/6XcHf+c2Qb/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/6zfLv/1++f///////////////////////////////////////// + //////9V////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8j////8P// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v/6/fL/8PnZ/97yrP/E6Gv/qd4l/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/suE8//v99P////////////// + ////////////////////////////8P///yP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8B////xP////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////v9 + 9f/e8qz/s+JA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP/A51/////////////////////////////////////////////////E////Af///wD///8A////AP// + /wD///8A////AP///wD///8A////Yf////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////f867/rN8t/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/9jwnP////////////////////////////////////////////// + /2H///8A////AP///wD///8A////AP///wD///8A////EP///+r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////r98//I6nX/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+h2xL/8/rh//////////////////// + ///////////////////////q////Ev///wD///8A////AP///wD///8A////AP///3////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////9/yrf+h2xL/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8Dn + X////////////////////////////////////////////////4D///8A////AP///wD///8A////AP// + /w3////u//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////7PjQ/6reKP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+c2QX/7vjT///////////////////////////////////////////u////Df// + /wD///8A////AP///wD///90//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////0++L/qd4n/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8PoaP////////////////////////////// + /////////////////3T///8A////AP///wD///8B////2/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+360P+k4g3/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+j2xb/+Pzu//// + ///////////////////////////////////////b////Af///wD///8A////O/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////wNCY/53dAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/9/zr////////////////////////////////////////////////zv///8A////AP// + /5D///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////f39/+Puin/n+AA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP/F6W3///////////////////////////////////////// + //////+Q////AP///wD////Y//////////////////////////////////////////////////////// + /////////////////////////////+3t7f+3t7f/jIyM/3Nzc/9oaGj/a2tr/35+fv+dnZ3/xsbG//Hx + 8f////////////////////////////////////////////////////////////////////////////// + ////////iZNy/5zbAP+b2QD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/s+JA//////////////////// + ////////////////////////////2f///wD///8d//////////////////////////////////////// + ////////////////////////////////////////9fTx/46Pk/9BQUH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv9ERET/fn5+/8rKyv////////////////////////////////////////////// + /////////////////////////////4iHjP98qA3/n+AA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6ne + J/////////////////////////////////////////////////////8e////Vv////////////////// + ////////////////////////////////////////////////////////+fDL/45/Qv8kJjH/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Xl5e/7e3t//+/v7///////// + //////////////////////////////////////////////////9vbXX/T2Ig/57fAP+a2QD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+l3Bz/////////////////////////////////////////////////////Vv// + /4T/////////////////////////////////////////////////////////////////////8+ax/+O5 + D/92ZBv/JCYx/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/YGBg/8jIyP/////////////////////////////////////////////////09PT/QkJE/zEz + Lf+Mwgb/nd0A/5rYAP+a2AD/mtgA/5rYAP+a2AD/pdwb//////////////////////////////////// + /////////////////4T///+t//////////////////////////////////////////////////////// + ////////8+ez/9mwB//htQD/dWMb/yQnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/dHR0/97e3v////////////////////////////// + ////////r6+v/y4uLv8nIzH/bZET/6HiAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6neJv////////////// + //////////////////////////////////////+t////zP////////////////////////////////// + ////////////////////////+PHS/9qyDv/YrgD/4rUA/3lmGf8kJjH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Ozs7/1ZWVv90dHT/jo6O/5mZmf/Hx8f//v7+//// + ////////////////////////7+/v/0dHR/8uLi7/KCUw/1BkH/+f4AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+z4T7/////////////////////////////////////////////////////zP///+X///////////// + /////////////////////////////////////////v35/+C/N//YrgD/2K4A/+O2AP+Dbhf/IyYx/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/1VVVf+QkJD/xsbG/+rq6v////////////// + ////////////////////////////////////////+vr6/2tra/8uLi7/Li4u/yspL/86Qij/ltEC/5va + AP+a2AD/mtgA/5rYAP+a2AD/x+ly//////////////////////////////////////////////////// + /+D////y//////////////////////////////////////////////////////Dfm//YrgD/2K4A/9iu + AP/itQD/k3oT/yUnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/cHBw/8bGxv/8/Pz///////// + ////////////////////////////////////////////////////////7+/v/3BwcP8uLi7/Li4u/y4u + Lv8tLC7/Ly8u/4e7CP+e3gD/mtgA/5rYAP+a2AD/mtgA/+X1vf////////////////////////////// + ///////////////////////s//////////////////////////////////////////////////////79 + +f/euyr/2K4A/9iuAP/YrgD/4LQA/6iKDf8oKTD/Li4u/y4uLv8uLi7/Li4u/y4uLv9QUFD/xMTE//// + ////////////////////////////////////////////////////////////////////////w8PD/1BQ + UP8uLi7/Li4u/y4uLv8uLi7/Li4u/yknMP95pA7/n+EA/5rYAP+a2AD/mtgA/6neJ//8/vj///////// + ////////////////////////////////////////////+f////////////////////////////////// + ///////////////////168D/2K4A/9iuAP/YrgD/2K4A/92yAP+/mwf/MTAt/ywtLv8uLi7/Li4u/y4u + Lv9wcHD/8PDw//////////////////////////////////////////////////////////////////r6 + +v/ExMT/bm5u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/a44U/6HiAP+a2AD/mtgA/5rY + AP/W75j///////////////////////////////////////////////////////////n////y//////// + ////////////////////////////////////////6tR3/9iuAP/YrgD/2K4A/9iuAP/arwD/06oB/0VA + J/8pKi//Li4u/y4uLv9ra2v/+vr6//////////////////////////////////////////////////39 + /f/n5+f/wsLC/4yMjP9SUlL/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/JyMx/2F+ + GP+h4wD/mtgA/5rYAP+v4DX//P74//////////////////////////////////////////////////// + ///////s////5f///////////////////////////////////////////////+LDQv/YrgD/2K4A/9iu + AP/YrgD/2K4A/+C0AP9oWh7/JCcx/y4uLv9GRkb/7u7u/////////////////////////////v7+/8fH + x/+VlZX/iYmJ/3BwcP9TU1P/OTk5/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/ygkMf9bdRv/oOEA/5rYAP+g2g7/7fjR//////////////////////////////////// + ////////////////////////////4P///8z///////////////////////////////////////////// + ///euyj/2K4A/9iuAP/YrgD/2K4A/9iuAP/itQD/ln0S/yQnMf8uLi7/ra2t//////////////////// + ///////////////////i4uL/e3t7/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/WXEc/6DhAP+d2Qf/4fOy//////////////////// + /////////////////////////////////////////////////8z///+t//////////////////////// + ////////////////////////3Lcc/9iuAP/YrgD/2K4A/9iuAP/YrgD/3LEA/8agBf82NCz/Pj9C//T0 + 9P/////////////////////////////////////////////////Ozs7/ZmZm/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/KCQx/1pzHP+m4w//4POx//// + //////////////////////////////////////////////////////////////////////+t////hP// + /////////////////////////////////////////////9y3Hf/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/gtAD/Z1ke/2lrcv////////////////////////////////////////////////////////////// + //++vr7/ZGRk/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/ygk + Mf93i0X/7PnL//////////////////////////////////////////////////////////////////// + ////////////hP///1T////////////////////////////////////////////////euyr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/4LQA/66OC/+Dg4b///////////////////////////////////////// + ///////////////////////////////////Pz8//hISE/0hISP8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/0JCQv+RkJX/9PXy//////////////////////////////////////////////////// + /////////////////////////////////1b///8c//////////////////////////////////////// + ////////48RG/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9mvAP/dsgD/kopq//////////////////// + ///////////////////////////////////////////////////////////////////09PT/y8vL/6Ki + ov+Dg4P/cXFx/21tbf94eHj/kJCQ/7q6uv/v7+////////////////////////////////////////// + //////////////////////////////////////////////////////8d////AP///9f///////////// + /////////////////////////////+rTdP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4LQA/72f + Iv/09PT///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////Y////AP// + /wD///+P///////////////////////////////////////////06Lb/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/esgD/zsKO//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////kP///wD///8A////Ov///////////////////////////////////////////fvx/9y2 + Gv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+G3Cf/578j///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////zr///8A////AP///wH////a//////////////////////// + ///////////////////p0nD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/3bgh//r0 + 3P////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////9v///8B////AP///wD///8A////dP// + ////////////////////////////////////////+fPZ/9mxCP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/duCH/9+7I//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////90////AP// + /wD///8A////AP///wz////t///////////////////////////////////////////oz2n/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9qyDf/x4qT///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////Df///wD///8A////AP///wD///8A////f/////////////////////////////////// + ////////+/fm/9u1Fv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+nQ + bP/8+u7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////f////wD///8A////AP///wD///8A////AP///xD////q//////// + ///////////////////////////////////x4qX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/3ron//Hipf///v3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////6v///xD///8A////AP///wD///8A////AP// + /wD///8A////YP///////////////////////////////////////////////+jPaf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4cA5//HipP/9+/H///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////2H///8A////AP// + /wD///8A////AP///wD///8A////AP///wH////D//////////////////////////////////////// + ///+/fj/4sRE/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/3bgf/+fNY//x4qX/+PHT//367//+/vv////+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /8P///8B////AP///wD///8A////AP///wD///8A////AP///wD///8A////Iv////D///////////// + //////////////////////////////z57f/gvzX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9ivA//cthj/37wr//fuyv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////D///8i////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///9U////////////////////////////////////////////////+/jo/+C/Nf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/48NH///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////9V////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///4j///////////////////////////////////////////// + ///8+ev/4sND/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/btBP//Pns//////////////////////////////////////////////////// + //////////////////////////////////////////////////////+J////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////pP////////////////// + //////////////////////////////789v/nzGD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/37wt///+/P////////////////////////////// + //////////////////////////////////////////////////////////////////////+k////Af// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3/////////////////////////////////////////////////////+7bj//asQr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+PGSv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////Bv///6X///////////////////////////////////////////// + ////////9+7K/+HBO//YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/oz2n///////////////////////////////////////////////////////////////////////// + //////////////////////+l////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////jP////////////////// + ///////////////////////////////////+/fr/7t2T/924Hv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/7dqL//////////////////////////////////////////////////// + //////////////////////////////////////+M////Af///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A2K4AANiu + AAD///9V////8f/////////////////////////////////////////////////////8+ev/7dmH/966 + Jv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A//Plrv////////////////////////////// + //////////////////////////////////////////////////H///9VmtgAAJrYAAD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ANiuAADYrgAA2K4AAP///yT////E//////////////////////////////////////// + ///////////////////9/PT/8+av/+bLWv/duB7/2K4A/9iuAP/YrgD/2K4A/9iuAP/37sv///////// + /////////////////////////////////////////////////////////////////8T///8jmtgAAJrY + AACa2AAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wDYrgAA2K4AANiuAADYrgAA////Af///2D////r//////// + /////////////////////////////////////////////////////////fvx//btxv/v3pf/6dJw/+TH + T//jxEX/+/jo////////////////////////////////////////////////////////////////6/// + /2D///8BmtgAAJrYAACa2AAAmtgAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////EP///3/////t//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////f////xD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////Df///3T////V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////9X///90////Df///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /zP///+N////1/////////////////////////////////////////////////////////////////// + ///////////////////////X////jf///zP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8b////VP///33///+l////y////+P////y//////// + ///////y////4////8v///+l////ff///1T///8b////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////4Af///////wAAD//////8AAAD/////+AAAAB/////wAAAAD////8AAAAAD////gAAAAA + H///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//gAAAAAAAH/8AAAAAAAAP/gA + AAAAAAAf+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA + AAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AA + AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/4AAAAAAAAH/wAAAAAAAA//gAAAAAA + AH/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//wAAAAAAD///gAAAAAAf///gAAAAAH////AAAAAA///// + AAAAAP/////AAAAD//////AAAA///////AAAP///////4Af///8= + + + \ No newline at end of file diff --git a/Discord Media Loader/Program.cs b/Discord Media Loader/Program.cs index a3a1342..837140a 100644 --- a/Discord Media Loader/Program.cs +++ b/Discord Media Loader/Program.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; namespace Discord_Media_Loader diff --git a/Discord Media Loader/Properties/AssemblyInfo.cs b/Discord Media Loader/Properties/AssemblyInfo.cs index c941cf7..5dacbc3 100644 --- a/Discord Media Loader/Properties/AssemblyInfo.cs +++ b/Discord Media Loader/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // Allgemeine Informationen über eine Assembly werden über die folgenden @@ -10,7 +9,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Discord Media Loader")] -[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyCopyright("Copyright © 2017 by Serraniel")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +31,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("0.1.0.51")] +[assembly: AssemblyFileVersion("0.1.0.51")] diff --git a/Discord Media Loader/Properties/Resources.Designer.cs b/Discord Media Loader/Properties/Resources.Designer.cs index 4fb9e89..116551a 100644 --- a/Discord Media Loader/Properties/Resources.Designer.cs +++ b/Discord Media Loader/Properties/Resources.Designer.cs @@ -1,71 +1,79 @@ //------------------------------------------------------------------------------ // // Dieser Code wurde von einem Tool generiert. -// Laufzeitversion: 4.0.30319.42000 +// Laufzeitversion:4.0.30319.42000 // -// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn -// der Code neu generiert wird. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ -namespace Discord_Media_Loader.Properties -{ - - +namespace Discord_Media_Loader.Properties { + using System; + + /// /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse - // über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Discord_Media_Loader.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Discord Media Loader by Serraniel - Apache 2.0 License + ///https://github.com/Serraniel/DiscordMediaLoader/ + /// + ///Made with: + ///Discord.Net (Copyright (c) 2015 RogueException - MIT License) + ///Newtonsoft.Json (Copyright (c) 2007 James Newton-King - MIT License) + ///Nito.AsyncEx (Copyright (c) 2014 StephenCleary - MIT License) + ///WebSocket4Net (Copyright (c) kerryjiang - Apache 2.0 License) ähnelt. + /// + internal static string AboutString { + get { + return ResourceManager.GetString("AboutString", resourceCulture); + } + } } } diff --git a/Discord Media Loader/Properties/Resources.resx b/Discord Media Loader/Properties/Resources.resx index af7dbeb..03f47a6 100644 --- a/Discord Media Loader/Properties/Resources.resx +++ b/Discord Media Loader/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,19 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Discord Media Loader by Serraniel - Apache 2.0 License +https://github.com/Serraniel/DiscordMediaLoader/ + +Made with: +Discord.Net (Copyright (c) 2015 RogueException - MIT License) +Newtonsoft.Json (Copyright (c) 2007 James Newton-King - MIT License) +Nito.AsyncEx (Copyright (c) 2014 StephenCleary - MIT License) +WebSocket4Net (Copyright (c) kerryjiang - Apache 2.0 License) + \ No newline at end of file diff --git a/Discord Media Loader/Properties/Settings.Designer.cs b/Discord Media Loader/Properties/Settings.Designer.cs index c7eab6a..89a3e69 100644 --- a/Discord Media Loader/Properties/Settings.Designer.cs +++ b/Discord Media Loader/Properties/Settings.Designer.cs @@ -1,30 +1,38 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ -namespace Discord_Media_Loader.Properties -{ - - +namespace Discord_Media_Loader.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string email { + get { + return ((string)(this["email"])); + } + set { + this["email"] = value; + } + } } } diff --git a/Discord Media Loader/Properties/Settings.settings b/Discord Media Loader/Properties/Settings.settings index 3964565..1b74a55 100644 --- a/Discord Media Loader/Properties/Settings.settings +++ b/Discord Media Loader/Properties/Settings.settings @@ -1,7 +1,9 @@  - - - - - - + + + + + + + + \ No newline at end of file diff --git a/Discord Media Loader/Serraniel-64x64.ico b/Discord Media Loader/Serraniel-64x64.ico new file mode 100644 index 0000000..485aa3e Binary files /dev/null and b/Discord Media Loader/Serraniel-64x64.ico differ