Esempio n. 1
0
 public static string ExtractTextValues(NamedValues <ZValue> infos, string s)
 {
     // French | PDF | 107 MB -*- French | PDF |  22 Pages | 7 MB -*- PDF | 116 pages | 53 Mb | French -*- Micro Application | 2010 | ISBN: 2300028441 | 221 pages | PDF
     // pb : |I|N|F|O|S|, |S|Y|N|O|P|S|I|S|, |T|E|L|E|C|H|A|R|G|E|R|
     // example http://www.telechargement-plus.com/e-book-magazines/bande-dessines/136846-season-one-100-marvel-syrie-en-cours-10-tomes-comicmulti.html
     if (s.Contains('|'))
     {
         //Trace.CurrentTrace.WriteLine("info \"{0}\"", s);
         foreach (string s2 in zsplit.Split(s, '|', true))
         {
             string s3 = s2;
             NamedValues <ZValue> values = _textInfoRegexList.ExtractTextValues(ref s3);
             infos.SetValues(values);
             s3 = s3.Trim();
             if (s3 != "")
             {
                 infos.SetValue(s3, null);
             }
         }
         return("");
     }
     else
     {
         NamedValues <ZValue> values = _textInfoRegexList.ExtractTextValues(ref s);
         infos.SetValues(values);
         return(s);
     }
 }
Esempio n. 2
0
        public PrintTextValues GetTextValues(IEnumerable <string> texts, string title, bool extractValuesFromText = true)
        {
            // read : title
            // modify : infos, description, language, size, nbPages

            PrintTextValues textValues  = new PrintTextValues();
            List <string>   description = new List <string>();

            _exportDataWriter.zWriteStartDocument();
            _exportDataWriter.zWrite("Title", title);
            _exportDataWriter.zWriteStartArray("Texts");

            string name = null;

            foreach (string s in texts)
            {
                _exportDataWriter.zWrite(s);
                if (__trace)
                {
                    pb.Trace.WriteLine("SetTextValues : \"{0}\"", s);
                }

                string name2;
                string text2;
                // Editeur : Presse fr
                bool textValues2 = false;
                if (extractValuesFromText)
                {
                    textValues2 = ExtractTextValues2(s, out name2, out text2);

                    if (s == "\r\n" || textValues2)
                    {
                        if (name != null)
                        {
                            if (__trace)
                            {
                                pb.Trace.WriteLine("SetTextValues SetValue : \"{0}\" = null", name);
                            }
                            textValues.infos.SetValue(name, null);
                        }
                        name = null;

                        if (textValues2)
                        {
                            if (__trace)
                            {
                                pb.Trace.WriteLine("SetTextValues SetValue : \"{0}\" = \"{1}\"", name2, text2);
                            }
                            if (text2 != null)
                            {
                                textValues.infos.SetValue(name2, new ZString(text2));
                            }
                            else
                            {
                                name = name2;
                            }
                        }
                    }
                }

                if (!textValues2)
                {
                    // PDF | 116 pages | 53 Mb | French
                    string s2 = ExtractTextValues(textValues.infos, s);
                    s2 = Trim(s2);
                    if (__trace)
                    {
                        pb.Trace.WriteLine("SetTextValues ExtractTextValues : \"{0}\" - \"{1}\"", s, s2);
                    }

                    if (s2 != "" && s2 != title)
                    {
                        if (s2.StartsWith(title))
                        {
                            s2 = Trim(s2.Substring(title.Length));
                        }

                        if (name != null)
                        {
                            if (__trace)
                            {
                                pb.Trace.WriteLine("SetTextValues SetValue : \"{0}\" = \"{1}\"", name, s2);
                            }
                            textValues.infos.SetValue(name, new ZString(s2));
                            name = null;
                        }
                        else
                        {
                            NamedValues <ZValue> values = _textInfoRegexList.ExtractTextValues(ref s2);
                            textValues.infos.SetValues(values);

                            if (s2 != "")
                            {
                                if (__trace)
                                {
                                    pb.Trace.WriteLine("SetTextValues description.Add : \"{0}\"", s2);
                                }
                                description.Add(s2);
                            }
                        }
                    }
                }
            }
            if (name != null)
            {
                if (__trace)
                {
                    pb.Trace.WriteLine("SetTextValues SetValue : \"{0}\" = null", name);
                }
                textValues.infos.SetValue(name, null);
            }

            textValues.description = description.ToArray();

            _exportDataWriter.zWriteEndArray();
            _exportDataWriter.zWriteName("PrintTextValues");
            //_exportDataWriter.zWriteStartDocument("PrintTextValues");
            _exportDataWriter.zSerialize(textValues);
            //_exportDataWriter.zWriteEndDocument();
            _exportDataWriter.zWriteEndDocument();
            _exportDataWriter.zWriteName("fake");    // ??? pour éviter l'erreur : WriteString can only be called when State is Value or Initial, not when State is Name (System.InvalidOperationException)
            _exportDataWriter.zWriteLine();
            return(textValues);
        }