Beispiel #1
0
        public void TestDefaultConfig()
        {
            var config = new SlugHelper.Config();

            Assert.Equal(1, config.StringReplacements.Count);
            Assert.Equal("-", config.StringReplacements[" "]);
        }
Beispiel #2
0
        static Class()
        {
            var config = new SlugHelper.Config();

            config.StringReplacements[" "] = "_";
            _slugHelper = new SlugHelper(config);
        }
Beispiel #3
0
 public void TestEmptyConfig()
 {
     SlugHelper.Config config = new SlugHelper.Config();
     Assert.IsTrue(config.ForceLowerCase);
     Assert.IsTrue(config.CollapseWhiteSpace);
     Assert.AreEqual(1, config.CharacterReplacements.Count);
     Assert.IsNotNull(new Regex(config.DeniedCharactersRegex));
 }
Beispiel #4
0
        public void TestDefaultConfig()
        {
            KeyValuePair <string, string> defaultReplacement = new KeyValuePair <string, string>(" ", "-");

            SlugHelper.Config config = new SlugHelper.Config();

            Assert.AreEqual(1, config.CharacterReplacements.Count);
            Assert.AreEqual("-", config.CharacterReplacements[" "]);
        }
Beispiel #5
0
        public void TestCharacterReplacement()
        {
            String original = "abcde";
            String expected = "xyzde";

            SlugHelper.Config config = new SlugHelper.Config();
            config.CharacterReplacements.Add("a", "x");
            config.CharacterReplacements.Add("b", "y");
            config.CharacterReplacements.Add("c", "z");

            SlugHelper helper = new SlugHelper(config);

            Assert.AreEqual(expected, helper.GenerateSlug(original));
        }
Beispiel #6
0
        static void Main(string[] args)
        {
#if DEBUG
            Console.WriteLine("Attach debugger now, then press key to continue");
            Console.ReadKey();
#endif

            if (args.Length != 2)
            {
                Console.WriteLine("Usage: Blogger2Ghost <bloggerexport.xml> <outputfolder>");
            }

            var bloggerXmlFile    = args[0]; //@"C:\Users\Paul\Downloads\blog-04-23-2016.xml"
            var ghostOutputFolder = args[1]; //"ghost.json"

            //var bloggerXmlFile = @"C:\Users\Paul\Downloads\blog-04-23-2016.xml";
            //var ghostOutputFolder = ".";

            ghostOutputFolder = CleanseFolderPath(ghostOutputFolder);

            var slugConfig = new SlugHelper.Config
            {
                ForceLowerCase        = true,
                CharacterReplacements = new Dictionary <string, string>()
                {
                    { " ", "_" },
                    { "'", "_" },
                    { "&", "_" },
                    { "-", "_" }
                }
            };

            _slugifyHelper = new SlugHelper(slugConfig);
            var masterTerms = new List <string>();


            var root = XElement.Load(bloggerXmlFile);

            var ghostImport = new GhostImport()
            {
                db = new List <Db>()
                {
                    new Db()
                    {
                        meta = new Meta()
                        {
                            version     = "004",
                            exported_on = DateTime.UtcNow.ToEpochTimeInMilliseconds()
                        }
                    }
                }
            };

            int postId = 0;
            foreach (var element in root.Elements().Where(e => e.Name.LocalName == "entry"))
            {
                var category = element.Elements().Single(e => e.Name.LocalName == "category" && e.Attribute("scheme").Value == "http://schemas.google.com/g/2005#kind");
                var terms    = element.Elements().Where(e => e.Name.LocalName == "category" && e.Attribute("scheme").Value == "http://www.blogger.com/atom/ns#");

                //add any new terms
                foreach (var termValue in terms.Select(term => term.Attribute("term").Value).Where(termValue => !masterTerms.Contains(termValue)))
                {
                    masterTerms.Add(termValue);
                }

                //It's a post
                if (category.Attribute("term").Value == "http://schemas.google.com/blogger/2008/kind#post")
                {
                    var post = CreatePostFromElement(postId, element);
                    if (String.IsNullOrEmpty(post.slug))
                    {
                        post.slug = "Untitled_" + postId;
                    }
                    if (String.IsNullOrEmpty(post.title))
                    {
                        post.title = "Untitled " + postId;
                    }

                    ghostImport.db[0].data.posts.Add(post);

                    postId++;
                }
            }

            var json            = JsonConvert.SerializeObject(ghostImport);
            var targetDirectory = ghostOutputFolder + "B2G_" + DateTime.UtcNow.ToString("yyyyMMdd_HHmmss") + "\\";
            Directory.CreateDirectory(targetDirectory);
            File.WriteAllText(targetDirectory + "ghost.json", json);
            var imagesDirectory = targetDirectory + "images\\";
            Directory.CreateDirectory(imagesDirectory);

            foreach (var downloadImage in _downloadImages)
            {
                WebClient client = new WebClient();
                client.DownloadFile(downloadImage.Key, imagesDirectory + downloadImage.Value);
            }
        }