コード例 #1
0
ファイル: Client.cs プロジェクト: EKonyvtar/OszkApi
        public async Task <Book> GetBook(string catalogId)
        {
            var urlId    = CatalogResolver.Resolve(catalogId).UrlId;
            var uri      = new Uri($"{MEK_ENDPOINT_URL}/{urlId}/index.xml");
            var response = await GetAsync(uri);

            var html = MekConvert.ToUtf8(await response.Content.ReadAsByteArrayAsync());

            return(MekFactory.CreateBookFromIndex(html));
        }
コード例 #2
0
        public void MekIndexParseTest()
        {
            string pagecontent = File.ReadAllText(@"./fixtures/index.xml");

            Assert.NotEmpty(pagecontent);

            var book = MekFactory.CreateBookFromIndex(pagecontent);

            Assert.NotNull(book);
            Assert.NotEmpty(book.Title);
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: EKonyvtar/OszkApi
        public async Task <IQueryable <Book> > FindAudioBook(string query = "")
        {
            var uri      = new Uri($"{MEK_ENDPOINT_URL}/katalog/kataluj.php3");
            var postData = $"szerint=cimsz&s1=dc_format+format_name&m1=MP3&muv1=and&s2=dc_creator_o+FamilyGivenName&m2={query}&muv2=or&s3=dc_title+subtitle&m3=&muv3=or&s4=dc_subject+keyword&m4=&muv4=or&s5=dc_subject+keyword&m5=&subid=&x=31&y=8&sind1=0&sind2=7&sind3=16&sind4=13&sind5=18&muv1index=0&muv2index=0&muv3index=0&muv4index=0&subid_check=&ekezet_check=&ekezet=ektelen";
            var content  = new FormUrlEncodedContent(MekConvert.ToKeyValuePair(postData));

            var response = await new HttpClient().PostAsync(uri, content);
            var html     = MekConvert.ToUtf8(await response.Content.ReadAsByteArrayAsync());
            var books    = MekFactory.CreateBookListFromResultPage(html);

            return(books);
        }
コード例 #4
0
        public void MekMp3BookPageParseTest()
        {
            string pagecontent = File.ReadAllText(@"./fixtures/mek_page_mp3.html");

            Assert.NotEmpty(pagecontent);

            var audioBook = MekFactory.CreateAudioBookFromMP3Page("", pagecontent);

            Assert.NotNull(audioBook.Tracks);
            Assert.NotEmpty(audioBook.Tracks);

            //All tracks should be parsed
            Assert.Equal(audioBook.Tracks.Count(), 26);
        }
コード例 #5
0
        public void MekContentsParseTest()
        {
            string pagecontent = File.ReadAllText(@"./fixtures/mek_page_fulszoveg.html");

            Assert.NotEmpty(pagecontent);

            var book = MekFactory.CreateBookFromContentsPage(pagecontent);

            Assert.NotNull(book);
            Assert.NotEmpty(book.Contents);
            Assert.NotEmpty(book.Prologue);
            Assert.NotEmpty(book.Epilogue);
            Assert.NotEmpty(book.Summary);
        }
コード例 #6
0
ファイル: Client.cs プロジェクト: EKonyvtar/OszkApi
        public async Task <AudioBook> GetAudioBook(string catalogId)
        {
            var urlId    = CatalogResolver.Resolve(catalogId).UrlId;
            var url      = $"{MEK_ENDPOINT_URL}/{urlId}/mp3/";
            var response = await GetAsync(new Uri(url));

            var html      = MekConvert.ToUtf8(await response.Content.ReadAsByteArrayAsync());
            var audioBook = await GetBook(catalogId);

            var trackBook = MekFactory.CreateAudioBookFromMP3Page(url, html);

            trackBook.Copy(audioBook);

            return(trackBook);
        }
コード例 #7
0
        public static async Task <IQueryable <Book> > SearchAsync(string query = "", string format = "")
        {
            var uri    = new Uri($"{Client.MEK_ENDPOINT_URL}/katalog/kataluj.php3");
            var filter = new List <KeyValuePair <string, string> >();

            filter.Add(data("szerint", "cimsz"));

            //TODO: Resolve field Indexes
            filter.AddRange(SearchFilter(0, "dc_format+format_name", format, "and", 1));
            filter.AddRange(SearchFilter(7, "dc_creator_o+FamilyGivenName", query, "or", 2));
            filter.AddRange(SearchFilter(16, "dc_title+subtitle", "", "or", 3));
            filter.AddRange(SearchFilter(13, "dc_subject+keyword", "", "or", 4));
            filter.AddRange(SearchFilter(18, "dc_subject+keyword", "", "", 5));

            filter.Add(data("ekezet", "ektelen"));

            filter.Add(data("x", "31"));
            filter.Add(data("y", "8"));

            //filter.Add(data("subid", ""));
            filter.Add(data("sind1", "0"));
            filter.Add(data("sind2", "7"));
            filter.Add(data("sind3", "16"));
            filter.Add(data("sind4", "13"));
            filter.Add(data("sind5", "18"));

            filter.Add(data("muv1index", "0"));
            filter.Add(data("muv2index", "0"));
            filter.Add(data("muv3index", "0"));
            filter.Add(data("muv4index", "0"));

            filter.Add(data("subid_check", ""));

            filter.Add(data("ekezet_check", ""));



            var content  = new FormUrlEncodedContent(filter);
            var response = await new HttpClient().PostAsync(uri, content);
            var html     = MekConvert.ToUtf8(await response.Content.ReadAsByteArrayAsync());

            return(MekFactory.CreateBookListFromResultPage(html));
        }