Пример #1
0
        static void Main(string[] args)
        {
            String[] parts = Assembly.GetExecutingAssembly().FullName.Split(',');
            String applicationName = parts[0];
            String applicationVersion = parts[1].Split('=')[1];

            Console.WriteLine("{0} {1} - YLE Texti TV text reader\n(c) 2013 Vurdalakov - https://github.com/vurdalakov/ylettv\n", applicationName, applicationVersion);

            if (0 == args.Length)
            {
                Console.WriteLine("Usage:\n{0} api_key\n\nExample:\n{0} a1b2c3d4", applicationName);
                return;
            }

            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fi-FI");

            String apiKey = args[0];

            YleTtvCachingReader yleTtvReader = new YleTtvCachingReader(apiKey);

            YleTtvPage[] yleTtvPages;
            try
            {
                yleTtvPages = yleTtvReader.Read(100);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error reading teletext: {0}", ex.Message);
                return;
            }

            while (true)
            {
                if (yleTtvPages.Length != 1)
                {
                    Console.WriteLine("Page not found");
                    return;
                }

                YleTtvPage yleTtvPage = yleTtvPages[0];

                Int32 subpage = 0;
                Int32 action = 0;
                Int32 pageToGo = -1;

                while (true)
                {
                    YleTtvSubpage yleTtvSubpage = yleTtvPage.Subpages[subpage];

                    Console.Clear();
                    Console.WriteLine("=== Page {0}, subpage {1}/{2} (updated at {3}) | Press Esc to exit",
                        yleTtvPage.Number, yleTtvSubpage.Number, yleTtvPage.Subpages.Length, yleTtvSubpage.Timestamp);
                    Console.WriteLine("=== Type page number, change pages with ↑ and ↓, change subpages with ← and →");

                    for (int i = 0; i < yleTtvSubpage.TextLines.Length - 1; i++)
                    {
                        Console.WriteLine(yleTtvSubpage.TextLines[i]);
                    }
                    Console.Write(yleTtvSubpage.TextLines[22]);

                    Int32 digit1 = -1;
                    Int32 digit2 = -1;
                    pageToGo = -1;

                    while (true)
                    {
                        ConsoleKeyInfo key = Console.ReadKey(true);

                        action = 0;

                        if ((key.Key >= ConsoleKey.D0) && (key.Key <= ConsoleKey.D9))
                        {
                            int digit = key.Key - ConsoleKey.D0;
                            if (digit1 < 0)
                            {
                                digit1 = digit;
                                continue;
                            }
                            else if (digit2 < 0)
                            {
                                digit2 = digit;
                                continue;
                            }
                            else
                            {
                                pageToGo = digit1 * 100 + digit2 * 10 + digit;
                                break;
                            }
                        }

                        switch (key.Key)
                        {
                            case ConsoleKey.LeftArrow:
                                subpage--;
                                if (subpage < 0)
                                {
                                    subpage = yleTtvPage.Subpages.Length - 1;
                                }
                                break;
                            case ConsoleKey.RightArrow:
                                subpage++;
                                if (subpage >= yleTtvPage.Subpages.Length)
                                {
                                    subpage = 0;
                                }
                                break;
                            case ConsoleKey.UpArrow:
                                action = -1;
                                break;
                            case ConsoleKey.DownArrow:
                                action = +1;
                                break;
                            case ConsoleKey.Escape:
                                Console.WriteLine("\n");
                                return;
                            default:
                                continue;
                        }

                        break;
                    }

                    if ((action != 0) || (pageToGo >= 0))
                    {
                        break;
                    }
                }

                try
                {
                    if (pageToGo >= 0)
                    {
                        yleTtvPages = yleTtvReader.Read(pageToGo);
                    }
                    else
                    {
                        yleTtvPages = action > 0 ? yleTtvReader.ReadNext(yleTtvPage.Number) : yleTtvReader.ReadPrev(yleTtvPage.Number);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error reading teletext: {0}", ex.Message);
                    return;
                }
                subpage = 0;
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            String[] parts = Assembly.GetExecutingAssembly().FullName.Split(',');
            String applicationName = parts[0];
            String applicationVersion = parts[1].Split('=')[1];

            Console.WriteLine("{0} {1} - YLE Texti TV text tester\n(c) 2013 Vurdalakov - https://github.com/vurdalakov/ylettv\n", applicationName, applicationVersion);

            if (0 == args.Length)
            {
                Console.WriteLine("Usage:\n{0} api_key [page1 [page2 [...]]]\n\nExample:\n{0} a1b2c3d4 867 868", applicationName);
                return;
            }

            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fi-FI");

            String apiKey = args[0];

            List<Int32> pages = new List<Int32>();
            if (1 == args.Length)
            {
                pages.Add(100);
            }
            else
            {
                for (int i = 1; i < args.Length; i++)
                {
                    Int32 page;
                    if (!Int32.TryParse(args[i], out page))
                    {
                        Console.WriteLine("Wrong page number: {0}", args[i]);
                        return;
                    }

                    pages.Add(page);
                }
            }

            YleTtvPage[] yleTtvPages;
            try
            {
                YleTtvCachingReader yleTtvReader = new YleTtvCachingReader(apiKey);
                yleTtvPages = yleTtvReader.Read(pages.ToArray());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error reading teletext: {0}", ex.Message);
                return;
            }

            foreach (YleTtvPage yleTtvPage in yleTtvPages)
            {
                Console.WriteLine("\n{1}\n=== Page {0}\n{1}", yleTtvPage.Number, new String('=', 46));

                foreach (YleTtvSubpage yleTtvSubpage in yleTtvPage.Subpages)
                {
                    Console.WriteLine("\n{2}\n=== Subpage {3}/{0} at {1}\n{2}\n", yleTtvSubpage.Number, yleTtvSubpage.Timestamp, new String('=', 46), yleTtvPage.Number);

                    int line = 1;
                    foreach (String textLine in yleTtvSubpage.TextLines)
                    {
                        Console.WriteLine("{0:D2} {1:D2} {2}", line, textLine.Length, textLine);
                        line++;
                    }
                }
            }
        }