Example #1
0
        public void GuessExtensionFromFilePath()
        {
            string expected = "jpeg";
            string actual   = MimeGuesser.GuessExtension(ResourceUtils.TestDataPath);

            Assert.Equal(expected, actual);
        }
Example #2
0
        public async Task Konachan(CommandContext ctx, params string[] tag)
        {
            if (tag.Any(x => x.ToLower().Contains("loli")) || tag.Any(x => x.ToLower().Contains("shota")))
            {
                await ctx.RespondAsync("no.");

                return;
            }
            var dan = new BooruClient();
            var res = await dan.GetKonaChanImagesAsync(tag);

            if (res.Count == 0)
            {
                await ctx.RespondAsync("No Results!");
            }
            var          hc  = new HttpClient();
            MemoryStream str = new MemoryStream(await hc.GetByteArrayAsync(Other.resizeLink(res[new Random().Next(0, res.Count)].ImageUrl)));

            str.Position = 0;
            var em = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(str)}");
            em.WithFooter("by Konachan");
            await ctx.RespondWithFileAsync($"image.{MimeGuesser.GuessExtension(str)}", str, embed : em.Build());
        }
Example #3
0
        public void GuessExtensionFromFilePath()
        {
            var    expected = "jpeg";
            string actual   = MimeGuesser.GuessExtension(ResourceUtils.GetFileFixture);

            Assert.Equal(expected, actual);
        }
Example #4
0
        public async Task <ImgData> GetImg(Loids loid, int size = 0)
        {
            WebClient wc      = new WebClient();
            string    ApiJson = await wc.DownloadStringTaskAsync($"https://api.meek.moe/{GetLoid(loid)}");

            ApiResponse  ar = JsonConvert.DeserializeObject <ApiResponse>(ApiJson);;
            MemoryStream im;

            if (size < 0)
            {
                im = new MemoryStream(await wc.DownloadDataTaskAsync(ar.Url))
                {
                    Position = 0
                };
            }
            else
            {
                im = new MemoryStream(await wc.DownloadDataTaskAsync($"https://api.meek.moe/im/?image={ar.Url}&resize={size}"))
                {
                    Position = 0
                };
            }
            ImgData iu = new ImgData
            {
                Url      = ar.Url,
                ProxyUrl = $"https://api.meek.moe/im/?image={ar.Url}&resize=500",
                Creator  = ar.Creator,
                Image    = im,
                FileType = MimeGuesser.GuessExtension(im)
            };

            return(iu);
        }
Example #5
0
        public async Task KTetoPic(CommandContext ctx)
        {
            var c   = new HttpClient();
            var res = JsonConvert.DeserializeObject <Entities.MeekMoe>(await c.GetStringAsync($"https://api.meek.moe/teto"));
            var img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(res.url)))
            {
                Position = 0
            };
            var emim = new DiscordEmbedBuilder
            {
                Description = $"[Full Source Image Link]({res.url})",
                ImageUrl    = $"attachment://image.{MimeGuesser.GuessExtension(img)}"
            };

            if (res.creator.Length != 0)
            {
                emim.AddField("Creator", res.creator);
            }
            emim.WithAuthor(name: "via api.meek.moe", url: "https://api.meek.moe/");
            emim.WithFooter("Requested by " + ctx.Message.Author.Username, ctx.Message.Author.AvatarUrl);

            DiscordMessageBuilder builder = new();

            builder.WithFile($"image.{MimeGuesser.GuessExtension(img)}", img);
            builder.WithEmbed(emim.Build());
            await ctx.RespondAsync(builder);
        }
Example #6
0
 public async Task Tiger(CommandContext ctx)
 {
     var    c       = new HttpClient();
     var    ImgLink = JsonConvert.DeserializeObject <AnIdiotsGuide>(await c.GetStringAsync("https://animals.anidiots.guide/tiger"));
     Stream img     = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(ImgLink.link)));
     await ctx.RespondWithFileAsync(fileName : "image." + MimeGuesser.GuessExtension(img), fileData : img);
 }
Example #7
0
        public void GuessExtensionFromBuffer()
        {
            byte[] buffer   = File.ReadAllBytes(ResourceUtils.TestDataPath);
            string expected = "jpeg";
            string actual   = MimeGuesser.GuessExtension(buffer);

            Assert.Equal(expected, actual);
        }
Example #8
0
        public void GuessExtensionFromStream()
        {
            using var stream = File.OpenRead(ResourceUtils.GetFileFixture);
            string expected = "jpeg";
            string actual   = MimeGuesser.GuessExtension(stream);

            Assert.Equal(expected, actual);
        }
Example #9
0
        public void GuessExtensionFromBuffer()
        {
            byte[] buffer   = File.ReadAllBytes(ResourceUtils.GetFileFixture);
            var    expected = "jpeg";
            string actual   = MimeGuesser.GuessExtension(buffer);

            Assert.Equal(expected, actual);
        }
Example #10
0
        public async Task Lizard(CommandContext ctx)
        {
            var c   = new HttpClient();
            var get = await Web.GetNekos_Life("https://nekos.life/api/lizard");

            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(get.Url)));
            await ctx.RespondWithFileAsync(fileName : "image." + MimeGuesser.GuessExtension(img), fileData : img);
        }
Example #11
0
        public AnalyzerResult Analyze(FileItem file)
        {
            var result = new AnalyzerResult();

            result.Properties.Add("mime_type", MimeGuesser.GuessMimeType(file.AbsolutePath));
            result.Properties.Add("mime_extension", MimeGuesser.GuessExtension(file.AbsolutePath));

            return(result);
        }
Example #12
0
        public void GuessExtensionFromStream()
        {
            using (var stream = File.OpenRead(ResourceUtils.TestDataPath))
            {
                string expected = "jpeg";
                string actual   = MimeGuesser.GuessExtension(stream);

                Assert.Equal(expected, actual);
            }
        }
Example #13
0
        public async Task DDLC(CommandContext ctx)
        {
            var    e   = JsonConvert.DeserializeObject <Derpy>(await new WebClient().DownloadStringTaskAsync($"https://derpyapi.glitch.me/ddlc"));
            Stream img = new MemoryStream(await new WebClient().DownloadDataTaskAsync(Other.resizeLink(e.url)));
            var    em  = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by Derpy API");
            em.WithDescription($"{e.url}");
            await ctx.RespondWithFileAsync(fileData : img, fileName : $"image.{MimeGuesser.GuessExtension(img)}", embed : em.Build());
        }
Example #14
0
        public async Task Cat(CommandContext ctx)
        {
            var ImgURL = await Web.GetNekos_Life("https://nekos.life/api/v2/img/neko");

            Stream img = new MemoryStream(await new WebClient().DownloadDataTaskAsync(Other.resizeLink(ImgURL.Url)));
            var    em  = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by nekos.life");
            await ctx.RespondWithFileAsync(embed : em.Build(), fileData : img, fileName : $"image.{MimeGuesser.GuessExtension(img)}");
        }
Example #15
0
        public async Task Duck(CommandContext ctx)
        {
            var    c   = new HttpClient();
            var    dc  = JsonConvert.DeserializeObject <Random_D>(await c.GetStringAsync("https://random-d.uk/api/v1/random"));
            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(dc.message)));
            var    em  = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by random-d.uk", "https://random-d.uk/favicon.png");
            em.WithDescription($"[Full Image]({dc.message})");
            await ctx.RespondWithFileAsync(fileData : img, fileName : $"image.{MimeGuesser.GuessExtension(img)}", embed : em.Build());
        }
Example #16
0
        public async Task Lizard(CommandContext ctx)
        {
            var c   = new HttpClient();
            var get = await Web.GetNekos_Life("https://nekos.life/api/lizard");

            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(get.Url)));

            DiscordMessageBuilder builder = new();

            builder.WithFile($"image.{MimeGuesser.GuessExtension(img)}", img);
            await ctx.RespondAsync(builder);
        }
Example #17
0
        public async Task Slap(CommandContext ctx, DiscordMember m)
        {
            var c      = new HttpClient();
            var weeurl = await Bot._weeb.GetRandomAsync("slap", new[] { "" });

            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(weeurl.Url)));
            var    em  = new DiscordEmbedBuilder();

            em.WithDescription($"{ctx.Member.Mention} slaps {m.Mention} ÒwÓ");
            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by nekos.life");
            await ctx.RespondWithFileAsync(embed : em.Build(), fileData : img, fileName : $"image.{MimeGuesser.GuessExtension(img)}");
        }
Example #18
0
        public async Task DDLC(CommandContext ctx)
        {
            var c   = new HttpClient();
            var e   = JsonConvert.DeserializeObject <Entities.Derpy>(await c.GetStringAsync($"https://miku.derpyenterprises.org/ddlcjson"));
            var img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(e.url)));
            var em  = new DiscordEmbedBuilder();

            img.Position = 0;
            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by Derpy API");
            em.WithDescription($"{e.url}");
            await ctx.RespondWithFileAsync(fileData : img, fileName : $"image.{MimeGuesser.GuessExtension(img)}", embed : em.Build());
        }
Example #19
0
        public async Task DivaPic(CommandContext ctx)
        {
            var    myresponse  = JsonConvert.DeserializeObject <ImgRet>(await new WebClient().DownloadStringTaskAsync($"https://api.meek.moe/diva"));
            Stream dataStream2 = new MemoryStream(await new WebClient().DownloadDataTaskAsync(Other.resizeLink(myresponse.url)));
            var    emim        = new DiscordEmbedBuilder
            {
                Description = $"[Full Source Image Link]({myresponse.url.ToString()})",
                ImageUrl    = $"attachment://image.{MimeGuesser.GuessExtension(dataStream2)}"
            };

            emim.WithAuthor(name: "via api.meek.moe", url: "https://api.meek.moe/");
            emim.WithFooter("Requested by " + ctx.Message.Author.Username, ctx.Message.Author.AvatarUrl);
            Console.WriteLine(MimeGuesser.GuessExtension(dataStream2));
            await ctx.RespondWithFileAsync(fileName : $"image.{MimeGuesser.GuessExtension(dataStream2)}", fileData : dataStream2, embed : emim.Build());
        }
Example #20
0
        public static async Task <Derpy> GetDerpy(string url)
        {
            var          hc  = new HttpClient();
            var          dl  = JsonConvert.DeserializeObject <Derpy>(await hc.GetStringAsync(url));
            MemoryStream str = new MemoryStream(await hc.GetByteArrayAsync(Other.resizeLink(dl.url)));

            str.Position = 0;
            dl.Data      = str;
            dl.Filetype  = MimeGuesser.GuessExtension(str);
            var em = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{dl.Filetype}");
            em.WithFooter("by derpyenterprises.org");
            dl.Embed = em.Build();
            return(dl);
        }
Example #21
0
        public async Task Cat(CommandContext ctx)
        {
            var c      = new HttpClient();
            var ImgURL = await Web.GetNekos_Life("https://nekos.life/api/v2/img/neko");

            var img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(ImgURL.Url)));
            var em  = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by nekos.life");

            DiscordMessageBuilder builder = new();

            builder.WithFile($"image.{MimeGuesser.GuessExtension(img)}", img);
            builder.WithEmbed(em.Build());
            await ctx.RespondAsync(builder);
        }
Example #22
0
        public async Task Dog(CommandContext ctx)
        {
            var    c   = new HttpClient();
            var    dc  = JsonConvert.DeserializeObject <DogCeo>(await c.GetStringAsync("https://dog.ceo/api/breeds/image/random"));
            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(dc.message)));
            var    em  = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by dog.ceo", "https://dog.ceo/img/favicon.png");
            em.WithDescription($"[Full Image]({dc.message})");

            DiscordMessageBuilder builder = new();

            builder.WithFile($"image.{MimeGuesser.GuessExtension(img)}", img);
            builder.WithEmbed(em.Build());
            await ctx.RespondAsync(builder);
        }
Example #23
0
        public static async Task <KsoftSiRanImg> GetKsoftSiRanImg(string tag, bool nsfw = false)
        {
            var c = new HttpClient();

            c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Bot.cfg.KsoftSiToken);
            var          v   = JsonConvert.DeserializeObject <KsoftSiRanImg>(await c.GetStringAsync("https://api.ksoft.si/images/random-image?tag=hentai_gif&nsfw=true"));
            MemoryStream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(v.url)));

            v.Data     = img;
            v.Filetype = MimeGuesser.GuessExtension(img);
            var em = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{v.Filetype}");
            em.WithFooter("by KSoft.si");
            v.Embed = em.Build();
            return(v);
        }
Example #24
0
        public async Task Poke(CommandContext ctx, DiscordMember m)
        {
            var c      = new HttpClient();
            var weeurl = await Bot._weeb.GetRandomAsync("poke", new[] { "" });

            Stream img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(weeurl.Url)));
            var    em  = new DiscordEmbedBuilder();

            em.WithDescription($"{ctx.Member.Mention} pokes {m.Mention} ÓwÒ");
            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by nekos.life");

            DiscordMessageBuilder builder = new();

            builder.WithFile($"image.{MimeGuesser.GuessExtension(img)}", img);
            builder.WithEmbed(em.Build());
            await ctx.RespondAsync(builder);
        }
Example #25
0
        public static async Task <NekoBot> GetNekobot(string url)
        {
            var          hc  = new HttpClient();
            var          dl  = JsonConvert.DeserializeObject <NekoBot>(await hc.GetStringAsync(url));
            MemoryStream str = new(await hc.GetByteArrayAsync(Other.resizeLink(dl.message)))
            {
                Position = 0
            };

            dl.Data     = str;
            dl.Filetype = MimeGuesser.GuessExtension(str);
            var em = new DiscordEmbedBuilder();

            em.WithImageUrl($"attachment://image.{dl.Filetype}");
            em.WithFooter("by nekobot.xyz");
            dl.Embed = em.Build();
            return(dl);
        }
Example #26
0
        public async Task DivaPic(CommandContext ctx)
        {
            var c   = new HttpClient();
            var res = JsonConvert.DeserializeObject <Entities.MeekMoe>(await c.GetStringAsync($"https://api.meek.moe/diva"));
            var img = new MemoryStream(await c.GetByteArrayAsync(Other.resizeLink(res.url)))
            {
                Position = 0
            };
            var emim = new DiscordEmbedBuilder
            {
                Description = $"[Full Source Image Link]({res.url})",
                ImageUrl    = $"attachment://image.{MimeGuesser.GuessExtension(img)}"
            };

            emim.WithAuthor(name: "via api.meek.moe", url: "https://api.meek.moe/");
            emim.WithFooter("Requested by " + ctx.Message.Author.Username, ctx.Message.Author.AvatarUrl);
            Console.WriteLine(MimeGuesser.GuessExtension(img));
            await ctx.RespondWithFileAsync(fileName : $"image.{MimeGuesser.GuessExtension(img)}", fileData : img, embed : emim.Build());
        }
Example #27
0
        public static async Task <WeebSh> GetWeebSh(CommandContext ctx, string query, string[] tags = null, NsfwSearch nsfw = NsfwSearch.False)
        {
            var weeurl = await Bot._weeb.GetRandomAsync(query, tags, nsfw : nsfw);

            var          hc  = new HttpClient();
            MemoryStream img = new MemoryStream(await hc.GetByteArrayAsync(weeurl.Url));

            img.Position = 0;
            var em = new DiscordEmbedBuilder();

            //em.WithDescription($"{ctx.Member.Mention} hugs {m.Mention} uwu");
            em.WithImageUrl($"attachment://image.{MimeGuesser.GuessExtension(img)}");
            em.WithFooter("by weeb.sh");
            //await ctx.RespondWithFileAsync(embed: em.Build(), fileData: img, fileName: $"image.{MimeGuesser.GuessExtension(img)}");
            return(new WeebSh {
                ImgData = img,
                Extension = MimeGuesser.GuessExtension(img),
                Embed = em
            });
        }
Example #28
0
        private void backgroundWorkerPopulate_DoWork(object sender, DoWorkEventArgs e)
        {
            addLVI        addListViewItemDelegate = AddListViewItem;
            setDetailText setDetailTextDelegate   = SetDetailText;

            /* Full path */
            var fullPath      = new ListViewItem("Location");
            var fullPathValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.ParentDirectoryPath
            };

            fullPath.SubItems.Add(fullPathValue);
            fullPath.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { fullPath });

            /* Windows extension */
            var windowsExtension      = new ListViewItem("Indicated Extension");
            var windowsExtensionValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.Extension.Name
            };

            windowsExtension.SubItems.Add(windowsExtensionValue);
            windowsExtension.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { windowsExtension });

            /* Detected extension */
            var detectedExtension      = new ListViewItem("Detected Extension");
            var detectedExtensionValue = new ListViewItem.ListViewSubItem
            {
                Text = MimeGuesser.GuessExtension(fileItem.AbsolutePath)
            };

            detectedExtension.SubItems.Add(detectedExtensionValue);
            detectedExtension.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { detectedExtension });

            /* MIME Type */
            var mimeType      = new ListViewItem("Detected MIME Type");
            var mimeTypeValue = new ListViewItem.ListViewSubItem
            {
                Text = MimeGuesser.GuessMimeType(fileItem.AbsolutePath)
            };

            mimeType.SubItems.Add(mimeTypeValue);
            mimeType.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { mimeType });

            /* MIME Details */
            var    builder = new StringBuilder();
            string details = detailMagic.Read(fileItem.AbsolutePath);

            details = details.Replace("- data", string.Empty);

            foreach (var component in details.Split(','))
            {
                if (!component.Equals("- data"))
                {
                    builder.AppendLine(component.Trim());
                }
            }

            BeginInvoke(setDetailTextDelegate, new object[] { builder.ToString() });

            /* Size */
            var size      = new ListViewItem("Size");
            var sizeValue = new ListViewItem.ListViewSubItem
            {
                Text = Utils.GetDynamicFileSize(fileItem.AbsolutePath)
            };

            size.SubItems.Add(sizeValue);
            size.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { size });

            /* Creation date + time */
            var creationDateTime      = new ListViewItem("Creation Date");
            var creationDateTimeValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.CreationTimeAsText
            };

            creationDateTime.SubItems.Add(creationDateTimeValue);
            creationDateTime.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { creationDateTime });

            /* Access date + time */
            var accessDateTime      = new ListViewItem("Last Access Date");
            var accessDateTimeValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.LastAccessTimeAsText
            };

            accessDateTime.SubItems.Add(accessDateTimeValue);
            accessDateTime.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { accessDateTime });

            /* Modify date + time */
            var modifiedDateTime      = new ListViewItem("Last Modification Date");
            var modifiedDateTimeValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.LastWriteTimeAsText
            };

            modifiedDateTime.SubItems.Add(modifiedDateTimeValue);
            modifiedDateTime.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { modifiedDateTime });

            /* Attributes */
            var attributes      = new ListViewItem("Windows Attributes");
            var attributesValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.AttributesAsText
            };

            attributes.SubItems.Add(attributesValue);
            attributes.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { attributes });

            /* Owner */
            var owner      = new ListViewItem("Owner");
            var ownerValue = new ListViewItem.ListViewSubItem
            {
                Text = fileItem.Owner
            };

            owner.SubItems.Add(ownerValue);
            owner.SubItems.Add("No");
            BeginInvoke(addListViewItemDelegate, new object[] { owner });
        }