with Lorelle and Brent VanFossen

Importing Into WordPress with the Import-mt

I finally got the import-mt.php import file that comes with the default WordPress installation to work. Whew! What a long and hard ride, but I learned a lot and I hope you will find some lessons here, too.

Some of the following information might be a little redundant, but if you are finding this page first, and not reading through all my previous attempts YET, then this article will be of more value than the others. I do recommend you take a peek at them as you will learn a whole lot about this process.

The magic of making the import for MoveableType work for static HTML pages having consistent formatting on every page. On my original pages, every title was in an H2 heading which is never used elsewhere on the page. The author is also in a unique div, as is the content and footer, and so on. The more uniform your page’s code layout, the easier this process will be.

First, copy your HTML code to a text editor. If you use Word or WordPerfect or other word-processing program, you are asking for mistakes unless you are an expert at tweaking that program so it will not convert quote marks or hyphens into character codes, will not screw up your html tags, and – well, if you know what I’m talking about, you can use a word processor. If you don’t – don’t use one. Trust me. You are only asking for totally borked code. So get a powerful text or html editor and you are good to go.

The only criteria, and this makes things a little more difficult, is that the program should have extensive search and replace capabilities, specifically searching and replacing multiple lines of text.

During this process, we recommend you make many backups along the way for you will make mistakes. It’s part of the process. Make many and frequent backups. Name the backups by the date and time so you can easily go back to the most recent one if you make a mistake.

During the extensive search and replace process to turn your html document into the form needed for the import-mt, your goal is to emulate the following example of the end result you need in order to import your data using this import technique that emulates the MoveableType import/export format. The information MUST BE IN THIS EXACT ORDER AND LAYOUT.

--------
AUTHOR: Author Name
TITLE: Title of the Post or Article
STATUS: Publish
ALLOW COMMENTS: 0
CONVERT BREAKS: 0
ALLOW PINGS: 0
PRIMARY CATEGORY: Home
CATEGORY: About
DATE: 7/10/2000 03:10:03 PM
-----
BODY:
<Article text is here with html and all kinds of information including <i class="red">html using quotes</i> lots of lists and other information....on and on to the end.</p>
-----
EXTENDED BODY:
A rattling on of the article information.
-----
EXCERPT:
A summary of the information which is about nothing important.
-----
KEYWORDS:
fred, sally, nothing, important, but keywords, here
-----
COMMENT:
AUTHOR: ben
EMAIL: something@something.org
IP: 123-45-6789
URL: http://www.asite.com
DATE: 10/07/2002 06:58:26 PM
So...How did you do?
-----
COMMENT:
AUTHOR: fred smith
EMAIL: somethingelse@something.org
IP: 123-45-6789
URL: http://www.asite.com
DATE: 10/08/2002 08:58:34 AM
Comment here that rattles on about something important.
-----
--------
AUTHOR: Silly Person
TITLE: Some Fascinating Idea
STATUS: Publish
ALLOW COMMENTS: 2
CONVERT BREAKS: 0
ALLOW PINGS: 0
PRIMARY CATEGORY:
DATE: 10/05/2002 03:10:03 PM
-----
BODY:
.....and it continues on.

Begin The Process

Copy each html page into the editor and put an 8 dashed line (——–) in between each html page, taking advantage of the doctype or <html> that begins every web page to use for your search and replace. This dashed line is the divider between your “records” (individual web pages).

Now, we are going to use that 8 dash line as our starting point for the next search and replace sequence. Search for the 8 dashes followed by a hard return (line break):

——–

and replace it with the 8 dashes, the hard return (line break) and the following:

--------
AUTHOR: Author Name
TITLE: Title of the Post or Article
STATUS: Publish
ALLOW COMMENTS: 2
CONVERT BREAKS: 0
ALLOW PINGS: 0
PRIMARY CATEGORY: Home
DATE: 7/10/2000 03:10:03 PM
-----
BODY:

Between BODY and the line above is a five dash line (—–). This is the separator between fields.
Adjust the information to your needs. Some of this information may need to be individually searched and replaced. For example, my articles have the author name in a unique DIV, so I searched and replaced:

<div id=author>Author Name</div>

with:

AUTHOR: Author Name

Replacing “Author Name” with the correct name.

At the end of the post, before comments and other information, at the end of the post information, search and replace the post ending code with a five dash line. For example, I had a DIV that states:

<div id="next"><p><a title="next article in the series href="article42.html">Next Article: Article Name 42</a></p></div>

This is consistent (with a different file name) at the end of every article, so I could easily replace:

<div id="next">

with the 5 dash line as the field separator:

-----

Now, you will have a lot of excessive information still left in your file, meta tags, sidebar information, CSS, and other lines of code that you won’t need any more. If they are consistent, search and replace to get rid of them. If they aren’t, get rid of as much as you can and then you will have to clean up the rest manually.

HTML Meets XHTML

To make sure that everything is XML compliant and ready for WordPress, I went through and checked all the code. Here are a list of my search and replaces:

  • <hr> --> <hr />
  • <br> --< <br />
  • Curly Quotes to text quotes (no character codes only quote marks)
  • Curly Apostrophes to plain apostrophes (no character codes only apostrophes)
  • [hyphen] --> - (hard encoded dash – usually formed by holding down the Cntrl+hyphen key)
  • Double Blank Lines --> Single Blank Lines
  • img tag endings from "> to " /> (inspect each one before changing as "> is found on hyperlinks)

These are the most common. Your html code may be different, so either have it converted using special software or manually inspect for your own needs.

Manually Check the Data

Besides checking for XML and non-friendly WordPress characters, I go through the data and clean up things that either might mess up the import, or that just need cleaning.

For instance, occasionally I would break a title into two lines with a line break. This won’t work, so I manually had to go through and clean those out. I sometimes also use ID in the DIV such as <h2 id=”information”> which would be missed in a simple <h2> search and replace. This has to be caught and corrected.

Other code, tags, and information that didn’t belong any more, and that wasn’t consistent across multiple pages, had to be deleted. This is time consuming, but it has to be removed.

When you think you have it all cleaned up, you probably don’t. Go through every bit of data and double check it. As you go, you will need to fill in the “missing” information from your earlier search and replaces. Check the following:

Author
Enter the name(s) of the article or post author(s). If these names deviate in any way from the spelling of the WordPress administrator, new Author User Profiles will be created and the maximum permission level these users will have is 9. By ignorance, I set my User Profile name to be “Lorelle” and yet my import listed “Lorelle VanFossen”. “Lorelle” has level 10 top administrator status, but “Lorelle VanFossen” is stuck at user level 9. Do check your name carefully if you are the only author so your posts will be put into the administrator’s name.
Title
Add the title for each article or post. < a title="article about the compromises made by switching to WordPress" href="index.php?p=588">Think about the post title as you add it. If you choose to use permalinks, these will become the new link titles for your post. If your title was “Another Day at the Office” the permalink would become:

http://example.com/another-day-at-the-office

If this is the point of the post, leave it. If the story of the post is about the copy machine breaking down and your attempts to confront its innards results in a burst of toner that covers you from head to toe and the panic that followed, maybe the title should be more fitting and be “Assaulted by Copier” or something more memorable.

STATUS
You have two choices for your post status: publish or draft. If ”’draft”’ is chosen, the post will be added to your draft post list and you can access and edit it from the Write Post screen from a link below the menu tabs. If you choose ”’publish”’ the post will be immediately viewable after import on your website.
ALLOW COMMENTS
You have two choices here, too. If you put the number 1 here, comments will be open. If you use a number 0, comments for this post will be closed. You can open them later, and it’s recommended that you set them to be closed until you have finished all the editing and checks after the import has been made, or people might be writing comments about how messed up the post is and you will spend more time checking comments than cleaning up your site. It’s up to you.

CONVERT BREAKS
Again, you have two value choices. To not convert breaks, use 0, and to convert breaks, use 1.
ALLOW PINGS
To allow pings, use the value 1, and to turn them off on this post, use 0.

PRIMARY CATEGORY
You have two choices for your categories, a primary category and a subcategory, called “category”. WordPress uses parent categories and the subcategories are also known as children categories. If your post has only one category, list it here. The category can be one or more words with spaces or dashes in between, but no commas or other characters.
Category
If your post is also in a subcategory or is a child category, state the subcategory here. If the post isn’t in a subcategory, remove this line.
Date
Manually edit the date based upon the American format of month/date/year and include the time as follows:

07/21/2003 03:10:03 PM

If you want a different date format, that is controlled from within WordPress. WordPress sorts posts chronologically from most recent to oldest. If dates aren’t important to your content, they are important to creating an order to the posts in a series. Posts which run in series should be dated as follows:

Article 1 March 15
Article 2 March 14
Article 3 March 13
Article 4 March 12
Article 5 March 11
Article 6 March 10

This way, the order is preserved even if the dates are unimportant.

Recheck Manually

Eyes get tired going through all this data, but take time to rest them by saving this information and then coming back to it at least six hours later. Overnight is even better. This way, you are refreshed and ready to look at all of this with new eyes.

Look for little details that might have gotten forgotten or missed in the first manual edits. Stray unwanted code might have been missed, a title or author forgotten, or some other detail. Go through it all with a mental magnifying glass to see if you can catch anything that you don’t want or that might get in the way of the import.

Make sure that every web page record has the record divider of the 8 dashes and the fields are separated by 5 dashes. If anything is blank, delete it. Leave only the barest essentials you need for the import.

If you are really serious about this, spell check your post content and then do one more thorough edit to see if there is anything more than can be cleaned up.

With the HTML inside of the post content, make sure that all the tags are still there, and all open tags are closed and all self-closing tags are closed.

Things You Need To Know

A lot of questions come up during these imports and here are a few of them with the answers:

What about my intra-site links?
Intra-site links are links within a post or article that link to another one on your site. Leave them. They will import just fine and you can later either manually edit them to the correct URL address or redirect the links through the use of the .htaccess file rewrites and redirects.
Will quote marks or apostrophes halt my import?
Unlike an import directly into the MySQL database, WordPress’s import-mt process ignores quotes and apostrophes in the post content section so they will import without any problems. Just leave them alone.
What about links to my graphics and photographs? Will I lose them?
If you leave your graphics and photographs in the same folders that they currently reside in, and remove the relative links to them, so instead of the image link being:

../../photos/travel/spain/barcelona42.jpg

You remove the dots and slashes to the following, if photos is in your site’s root folder:

/photos/travel/spain/barcelona42.jpg

If it isn’t, then add the parent folder before photos folder with a forward slash in front of it. If you keep all your graphics and photographs in specific folders, this can be easily changed later, after the import, if you have problems seeing the images.

What will happen to my styles listed in the head of each web page?
If you have any styles listed in the head of any web pages, this information must be moved into the core style.CSS for the WordPress Theme you are using, or set into another separate style sheet that you can add later using one of the many WordPress conditional tags within the WordPress PHP Loop. If it is not saved, it will be lost, as such information must be removed from the import file.

Any inline styles such as:

<p style="font-size:110%; color: green; margin: 10px">

will remain undisturbed so you can leave them.

Will it import duplicate posts?
By default, the WordPress import scripts will not import duplicate posts, saving you a lot of time and effort to track those down.

Begin the Import

Once you have triple checked your import document, and your concerns have been answered, then it is time to put WordPress’ import-mt.php to work.

Save the file as import.txt, making sure that the file is indeed a text file and not any other type. Upload the file to the wp-admin folder on your WordPress site. Then direct your browser to the following address, using your specific website information:

http://example.com/wp-admin/import-mt.php

The rest of the process is up to WordPress.

If you do get an error, it is usually very specific so you can track it down. Or not all of the posts will import. It will show you the list of what has been imported. If some haven’t been imported, this is usually because the 8 and 5 dashes lines weren’t set right, or there is some other detail that is not right in the import file, like “category” being misspelled. Carefully check that post against the other ones to help find the error.

If you find the error, you can either copy and paste that page record into its own import.txt file and repeat the import, or reimport the fixed original import.txt files, as WordPress will not permit duplicate posts to be imported. The fixed post will be imported and the rest should be ignored.

If you are really having trouble with a particular post, then manually add it to WordPress through the Administration Write Post screen, copying each bit of information into the right spot.

If it worked great and everything imported, then it’s time to start checking the results in WordPress. To view the new material, type your site’s URL in the browser and crawl around looking. There may be a few little bits and pieces that aren’t right, but you can now go into the WordPress Admin area and edit your posts to clean up these details. As long as they are in the database, you can do anything you want with them.

Our goal as been achieved!

Mardi Gras in Mobile, Alabama

This year, Mardi Gras in Mobile, Alabama, the “original” Mardi Gras, began January 8 and runs through the big events on February 8. I didn’t realize that the events for Mardi Gras had already begun since the local newspaper here had a huge mention that the January 23 issue would have a full schedule of events. Well, folks, the parades and hullabaloo has already begun.

The schedule of Mardi Gras events in Mobile include parades and balls all month long, including February 3 when there is a Mystic Striper Parade.

Unfortunately, I’ll be out of town for the rest of the time period, so I’ll have to schedule my travels better for next year.

When next year? Here are the dates of the end of the Mardi Gras fun in Mobile, Alabama, in the future:

Future Mardi Gras Day Dates:
2006 – January 28 – February 28
2007 – January 20 – February 20
2008 – January 5 – February 5
2009 – January 24 – February 24

Get out your calendars!

What is Brent Working On?

Everyone is asking me about what is Brent working on with his new job in Mobile, Alabama. Well, folks, the basic description is that he is working on technology that will allow airline travelers to surf while they fly – wireless internet connections via a built-in satellite onboard the airplane allowing passengers to stay in touch and surf the net.

Here is what is being called the first Live Chat at 35,000 Feet, uses the technology built by the company Brent now works for on a Lufthansa flight.

WOW!

This is state-of-the-art stuff and Brent is having a blast working on the project.

Voices in the Wilderness – Iraq

There is always another side to war, occupation, fighting for freedom, resistance, and whatever you want to name the violence that comes with other people wanting to impose their will upon others. An interesting site, Voices in the Wilderness, seems to represent a group of non-violent protestors and helpers reporting on what is going on in Iraq.

All sides are worth considering. I just wish they were all considered before the US moved.

Deciding Where and When to Go During the Seasons

compass, map, and moon prediction book and sotware for the photographerWhen a photographer is planning a trip, season plays a big part in the decision-making process. There are unique photographic opportunities specifically related to weather and the seasons: fall colors, winter whites, spring flowers, summer heat. The seasons come at different times to different locations. Fall colors begin in late August and early September for Alaska and the far north of Canada. Following the color south through the Rockies and on to the plains, fall arrives in Oklahoma by October. Spring begins throughout most of the continental United States in March and April, but in the high mountain alpine meadows, spring may be as late as July. Planning your travels means researching prime times specific to a location.

The coming and going of the seasons isn’t consistent from year to year. This can present some scheduling challenges. Dependent upon weather conditions for the past few months or even the past year or more, Spring is great for wildflowers in Texas, photo by Brent VanFossenspring bloom, for instance, can be difficult to plan on. The famous Skagit Valley Tulip Festival in Mt. Vernon, Washington is usually in April. People come from all over the world to see the tulip fields at their peak. During intense effects from the El Niño weather inversion, tulips have bloomed up several weeks early, leaving the festival and parades celebrated among wilting or faded fields. Double check with local authorities, information or visitor’s bureaus for times and availability as things change from year to year.

graphic of spring timeSpring is a time of change. It is time for baby animals, new growth, rainbow fields of flowers, light rain and fog throughout much of the Northern Hemisphere. The hardy explorers are out early with their cameras while the crowds are still few. It’s a good time for easy access and great weather conditions for photography. Spring storms offer excellent light and dramatic skies. Birds usually turn out in splendid and colorful jackets, sparkling in the sun. Look for new growth on trees and plants. Spring in the Texas Hill Country means wildflowers growing all along the road sides and everywhere. The plains get a new sparkle in their green fields. Everywhere things are usually luscious green and growing as the blanket of winter rolls up.

graphic of summer timeSummer is the time when more film is consumed than any other, besides holidays. People are outside, wandering around, kids are out of school, vacation time abounds, and the weather is such – you just want to be out there – along with everyone else. Summer, for the outdoor photographer, is not always the best time to photograph. The magic sunrise and sunset light comes and goes quickly, and overhead sunlight casts harsh shadows, exceeding the tonal range of the film.

During the summer, many popular outdoor recreation areas fill up quickly on weekends or holidays. Wherever there are lots of people, the incidents of crime escalate. You have to not only battle the heat and the harsh sunlight, you must fight the crowds. Security issues, advance planning, and reservations become even more important.

graphic of an Autumn LeafIn fall the leaves turn all shades of red, photo by Brent VanFossenMany nature and outdoor photographers shun the heat and vote for travel and exploration of our natural areas during the less crowded seasons from Fall to Spring. Bright overcast days are more common during the fall and winter, bringing out the natural colors of your subject. Early morning and late afternoon light lasts longer, warming up your scenic or subject with rich and intense tones. Autumn is a time when all that is green or turned brown begins to radiate in rich, warm colors of red, orange, and gold. Trees begin their preparations for winter by changing color and losing their leaves. Many mammals also finish their preparations for winter with new warm fur growths and mating season rituals. Frost starts appearing again as the nights grow colder, creating fascinating patterns on leaves and plants. It is a last minute rush as nature begins to slow down for winter.

graphic of winter timeIn extreme cold conditions, icicles form along streams, photo by Brent VanFossenWinter makes the land turn into an interesting variety of textures, patterns, lines, and shapes. Winter whites, patterns in the snow, storms, ice, and the potential for winter photography is limited only by the photographer’s imagination. When snow and freezing temperatures are not available, work with the patterns in leafless trees, the bare ground, and other remnants of a warmer existence in nature. Window panes become frosted art exhibitions, icicles edge roofs like Christmas lights, and snow seems to change everything into a monochrome world. The crowds disappear into their warm homes and the nature areas return to the business of nature not tourists. Some areas, unbearably hot during the rest of the year, like the desert, are great places to visit with the drop in temperature during the winter.

When considering seasonal chases, here are some ideas to get you motivated: wildflowers, winter snows, fall color, pumpkins and scarecrows, icicles, grasslands in different seasons, winter wildlife, spring baby mammals, migrating birds, mammals with their heavy coats, rutting season, berry blossoms, berries in season, apples and other fruits at harvest time, migration time. Go out and put some season in your images.

The Art of Navigation – Maps, Tracks and Getting Lost

Animated graphic of giving directions.We have every kind of map you can imagine for our life on the road. Street maps, local maps, fold-out maps, computerized maps (two different programs!), maps in books, maps on backs of flyers and, our personal favorite, hand drawn maps from people we meet along the way with a locale in mind that we CANNOT miss. With all these maps, you would think we’d have mastered the art of navigation. Well, we’re getting better but it’s still a challenge.

The art of navigation entails several finely honed skills. First, an acute ability to read maps of all kinds. Being raised by parents in the real estate and construction business, not only can I read maps, I’m fantastic with blue prints. Driving around with my mother looking at homes for sale, I became the official map reader for her at an early age.

Santa Fe to Los Alamos Highway, New Mexico. Photo by Brent VanFossenSecond, you must have the ability to gauge distance. Maps are strange things. One inch on one map is 1 mile and on another it is 25 miles and on the next it’s 100 miles. Travel outside the US and those miles become kilometers and for those unfamiliar with the metric system, like me, you have no clue how far 1 kilometer or 20 kilometers is. In one huge US atlas, Texas covers two pages, as does Florida, but Alaska is on the same page with Hawaii. As we drive into a town, we move from the state map with the highways to the city maps with the street names, and I often forget on how far it is on which map I’m reading. I will think it’s a good distance when it’s only a mile. Or the mile I was familiar with on one map will become twenty on the next. So I have to stay “distance conscious” all the time.

Third, and probably the most important of the skills, you must have the ability to communicate and translate the map to the driver. You become the talking map. I long for the day when computers in cars will replace me as the speaker for the map, but until then I have to do the talking.

Speaking for the map is not an easy chore. There are rarely landmarks on the map other than the occasional school or public building, so the additional skill involved in speaking for the map is having sharp eyes to actually find the street signs. So not only is the map reader reading the map and speaking the map to the driver, but she has to be watching the road and scanning streets for identifying landmarks and street signs at the same time. This goes beyond head patting and tummy rubbing.

Animated graphic of mapsThe language of the map is not an easy one. Sometimes, as soon as I find the identifying street sign on the map, we are past it. So this involves planning ahead. I’ll say to the driver, usually my patient husband, “We’ve just passed Smith Street. The next one is Anderson. Then Harold. After that is Jackson. Turn right there.” This tells the driver to move over into the right lane to turn, and he has three blocks to do it in. Or at least that is what you think he understood you to say. You have to think ahead all the time, translating into driver language as you go.

No map can help the lack of a good highway access sign. On the map, the highway passes right over the road we are on. The information we are lacking is whether or not the on-ramp to the north is accessed from the right or left side of the road. Or is it before or after the overpass? It always happens that we decide which one we want to chance, and it’s the opposite way, across three lanes of traffic.

VanFossen Trailer on the Arkansa Talamena Drive, photo by Lorelle VanFossen
Pulling a 30 foot fifth wheel behind a crew cab/long bed pickup is not anyone’s idea of a good time when it comes to shifting across three lanes of busy traffic, especially at short notice. We’ve decided that this is some kind of joke perpetrated by road construction crews to get revenge for the long hours, lousy work conditions, and low pay. They are sitting there, somewhere, watching, laughing at us all the time. “Caught another sucker, Fred!”

One of our favorite books for life on the road is “The Exit Book”. Available at major truck stops and camping stores, this book lists the major businesses, gas stations, repair facilities, and food sources at all exits along Interstate highways. This is a lifesaver for the highway traveler. It tells you which side of the highway things are on, and really helps you plan your strategy. Unfortunately, leave the Interstates and you are out of luck.

graphic of highway interchangeHighway access signs, those that should direct you from the center of town to the highway, or from the highway to the center of town or another highway, are sorely lacking in most communities. Even in major cities, we can be paralleling a major highway for twenty blocks, see it through the buildings, but never see a sign pointing towards the access ramp. We drove around in circles through Charleston, SC, in the old part of town trying to find access to the highway passing right over our heads. Why they do this is just another nightmare for the navigator to lose sleep over.

Tips and Tricks
for the Navigator
(or The Speaker for the Map)

To help those of you who have either volunteered or been forced into the role as speaker of the map for your family, here are a few tricks and tips I’ve learned along the highways, byways, and U-turns of North America.

Check the symbols and the distance scale on every map
Not only will this information give you the visual “measurement” of the map, but you will have a quick refresher course on the symbols this particular map maker uses to identify landmarks. On most maps, the symbol for camping is a tent. On a map we have in Israel, the tent is the symbol for a picnic area and a picnic table is the symbol for a camping spot. Confusing! We arrived at what we thought was a camping spot to find only picnic tables and no camping signs. It was another hour to the closest real camping spot. Familiarize yourself with each map’s symbols so you don’t make the same mistake.
Chart your course in advance
Graphic of deciding which way to go.Sit down outside of the vehicle with the driver and talk out your course. Do this when time and tempers are relaxed. Go through the map and point out landmarks. Discuss the route thoroughly, highlighting the landmarks, so that you both understand in advance what is going to happen. No surprises means no temper flares or arguments during the voyage.
Look for alternative routes “just in case”
Being unfamiliar with the territory you are exploring means you might not know where the congestion points are. The map won’t tell you about construction or detours. In some cities you can guess when rush hour is, but not always. It’s dependent upon the major industry and their particular schedule. Always plan on running into interference, so prepare yourself by having a backup route figured out. You might never use it, but it helps when you are reading street signs, reading the map, speaking for the map to the driver, AND you are suddenly called upon to reroute your course.
Announce landmarks in advance
When you give the driver the landmarks in advance, you help chart the course with ease. For instance, “Turn right at the next light after the gas station, and move into the left lane. You’ll be making a left at the first street after the turn.” Or you can list the upcoming streets as landmarks: “The next street is Smith, and the one after that is Alexander, and the next one is Johnson and that’s the street we want. We’ll be turning right on Johnson so be in the turn lane by Alexander.” This gives the driver time to anticipate and plan ahead and know when the turn is coming.
Breathe, relax, take it easy
As the official speaker for the map, the job is incredibly stressful. Sometimes you need a vacation to recover from 3 hours of map speaking. Take time during the straight path intervals to breathe deeply and relax. Don’t stress out. Everyone makes mistakes, even drivers! Lift your eyes up from the map and look at the pretty sky, a bird in the air, the nice flowers and trees whizzing by, and give your brain and head a rest once in a while. Remember, this trip was supposed to be a good thing for everyone.
Look ahead
Keep your course charted a mile or more ahead of your current position. By helping the driver plan ahead, particularly in the city where turns come quickly, you will have a much happier driver. This will not only let you proceed with your map speaking in a more relaxed fashion, it will help you anticipate your course changes.
When in doubt, stop
Look for viewpoints and rest stops to pull off and reevaluate your course.Don’t be afraid to ask the driver to stop so you all can confer with the map. Plan ahead for a pull off or to turn into a gas station or school, a place which is safe to stop and you have plenty of room to get back out with ease. Stop and take your time to look at the map together and make sure you know where you are going.

EXTRA: Story from the Telling Zone about Asking for Directions

 
 

Archiving the Smithsonian Websites

And I think I have problems converting my site over to WordPress. This is an amazingly thorough study called Archiving Smithsonian Websites: An Evaluation and Recommendation for a Smithsonian Institution Archives Pilot Project. It looks, step-by-painful-step, at the process the Smithsonian took to convert their websites to database driven power sites. WOW!

I will be careful complaining. They had a terrible task and did it well. We can all learn from them.

Taking a Trip – But Not By Train

Our “stuff” from Israel has finally made it across the sea, through TWO f#$*&%#$! $#%@# %*&%!! #$%*&(*@#$!!!!ing inspections by the @$#%!*# %$*# @ and @#$%(*)(@ing Homeland Security Customs Inspection Team – other than two gas masks, why would they think WE are terrorists? And the stuff has come all the way from New York, through the great blizzards and freezing temperatures, to land in our storage room in Tulsa. weeee.

So I’m making plans to fly there in a few days to unpack our stuff, check for damages, pull out the few items we need, and then repack everything back up and stuff it in the storage room until….well, whenever.

In making plans, since I am still a cripple (more on that later), I thought it might be nice to do a little healing in a day or so of training across the south to Tulsa from Mobile. After all, the train tracks are a rock’s throw from our trailer (yes, we are not only trailer trash but on the wrong side of the tracks, too.). I hear the train passing through at night and I thought, “Oh, how romantic. How exciting to take the train in stead of those damn airplanes with their paranoia!”

I checked with Amtrak, since I know of no other train service in the US, and this is the fastest trip they came up with for me.

Departing: Mobile – Greyhound Bus, AL (MOG) To Tulsa, OK (TLS)

Via Greyhound Bus from Mobile, AL, to Atlanta, GA
6:15 am 17-JAN-05
Arriving: Atlanta, GA (ATL) 4:30 pm
Duration: 9h 15m

Departing: Atlanta, GA (ATL)
Union Train Station
8:06 pm 17-JAN-05
Arriving: Washington, DC Union Station (WAS)
9:50 am 18-JAN-05
Duration: 13h 44m

Departing: Washington, DC Union Station (WAS)
5:20 pm 18-JAN-05
Arriving: Chicago, IL Union Station (CHI)
10:19 am 19-JAN-05
Duration: 17h 59m

Departing: Chicago, IL Union Station (CHI)
3:15 pm 19-JAN-05
Arriving: Kansas City, MO (KCY)
10:11 pm 19-JAN-05
Duration: 6h 56m

Departing: Via Bus from Kansas City, MO (KCY)
12:10 am 20-JAN-05
Arriving: Tulsa, OK Bus Station (TLS)
4:45 am 20-JAN-05
Duration: 4h 35m

All this for only USD$281.00. And yes, you guessed it, no freakin’ way! So I will pay the same price and suffer the indignities of airline travel today and fly to Tulsa in four to six hours. No wonder the United States is going downhill – or rather, backwards, north, west, and then south – rather confusing, isn’t it.

Trains, planes and automobiles, I’m embarrassed for this country that we don’t have any modern transportation systems in place. So sad.

Really Rocking with WordPress

After treading carefully around the PHP and coding of WordPress, I have become fearless. I just installed the WP Plugin Manager and wish I had done this months ago.

Today I bravely added the following plug-ins, hacks and changes, and I am thrilled with the results.

StatTraq
A PHP function that works with WordPress to keep track of your blog’s visitor statistics.
Breadcrumbs by Technicallyincorrect
I’m not totally happy with this, but it is a very simple and clean breadcrumbs link. Right now, it lists the “home” and then the categories, and the title of the post. I don’t want the title of the post because this is right next to the title of the post and its redundant.
Nice Archives
Want a table of contents that is sortable. Nice Archives creates an independent page like a sortable table of contents.
Changing the Display of the Post ID and Title
Change the “string” to display before or after the Post ID and Title , so you could have something like >>>ID @@@Post Title. The default is blank, but you could have some fun with this.
Changing the “Read More”
To change the content of the “read more” link to “Continue Reading” or “Want to keep reading?” or whatever you want it to say.
Next and Previous Post Links
To make Next and Previous Post Links work, you have to post the following inside of the WordPress Loop, right after “if single” for this to show up on your single posts. Just below that type: <?php next_post() ?><?php previous_post() ?>

Fixes You Can’t See

There are always changes going on under the surface to make what you see better, and a lot of these things just aren’t visible to the viewer. Here are some of the changes I’ve bravely made.

Batch Edit Categories
An edit to the WordPress “edit.php” file to edit a batch of categories and moving the posts within them to new categories.
WordPress Database One Click Backup
A “one click” backup and restore feature to add to the administration page of WordPress.
Permalinks
There is nothing more “unpretty” than seeing a web page address of www.sitename/index.php?p=342. Permalinks changes that to something more recognizable like www.sitename/category/2005/5/15 for a post in a category with a date of May 15, 2005. My dream is to have the links on my site be organized by category names, like folders, instead of dates, but for now, I have to use some form of date system along with the categories until I find something better. If I’m a viewer and I’m looking for information on how to fix a problem with WordPress, I’d look under the category of WordPress, then a subcategory related to my interest like “Permalinks” or “Hacks” and not by date since I’d have no clue when such a post was written. As soon as I get this figured out, I’ll let you know. To access Permalinks from WordPress Admin screen, go to Options > Permalinks and follow the instructions. Hint: .htaccess has to be in the WordPress main directory in order for the Permalinks to work.

Things I Might Add Later

There are always things that can be done later, and these are a few of the ones I’m working on:

Dropdown List of Categories
By placing the code:

<?php dropdown_cats() ?>

out of the WordPress Loop, it will display a list of:

<option name="x"> category-name </option >

To use this, add this form where you want the drop down list to appear:

<form action="<?php echo $PHP_SELF ?>" method="get">
<?php dropdown_cats() ?>
<input type="submit" name="submit" value="view" />
</form>

Notify by Email of Updates to Blog
This is a clever plugin that will notify people on your “list” of updates to your blog. Unfortunately, it only works with the newer version of WordPress 1.3 (aka 1.5) and not with the current version I have. When I upgrade to the new one, this will be wonderful to have.
Plugin to Play Random Files
I love the little “bonus” we feature on our web site sidebar that features one of our nature images with a quote and below that a tip on traveling or photography every day. With this plugin, I should be able to add a similar feature.

The Help I Needed To Get The Job Done

I could never have done this without all the little people I stomped upon to get to where I am….okay, enough silliness. I’ve been working on this for weeks and learning a lot from people much smarter and wiser than I. Here are a few of the helpers that I have crawled upon my knees to.

Plugins I’ve Used So Far

Copied straight from my administration plugin page, here is a list of the plugins I am using – which might entice you to try a few yourself. Some require activation and they work without any more effort, while others need a step or three done to implement their activity. I adore them all.

BackupRestore – v1.3.b
Mark Ghosh – Simple way to backup and restore a WordPress MySql database and wordpress folder
Breadcrumb Navigation – v0.8.1
Mark A. Shields – Breadcrumb-style navigation. Shows current viewing post, search results, category, and author. Compatible with WordPress 1.2+. Experimental compatibility with WordPress 1.3. Based on the breadcrumb plugin by lennart (http://www.lennartgroetzbach.de/blog)
Condensed Content for Date and Category Archives – v0.93
Rich Manalang – Date and category archive pages are typically lenghty depending on the number of posts within an archive. This plugin is used to filter the_content() to return a condensed version of a post when viewed as a date (i.e., monthly, yearly, or weekly) or category archive.
Customizable Post Listings – v1.1
Scott Reilly – Display Recent Posts, Recently Commented Posts, Recently Modified Posts, Random Posts, and other post listings using the post information of your choosing in an easily customizable manner. You can narrow post searches by specifying categories and/or authors, among other things.
Flood Protection by URL
Charles Gagalac – Protects against a comment flood based on the commenter’s URL
HeadMeta – v1.0
Dougal Campbell – Add meta and link tags to the page head based on post custom fields.
Kitten’s Spam Words – v2.1.1
Kitten – This plugin adds a “Delete comments as spam” button to the comments mass editing page. When used to delete unwanted comments, the email address, url, and IP address, and any links in the comment body, will be added to your spam words list. Future comments matching any of those items will automatically be moderated.
© 2004, licensed under the GPL
Read Post In – v0.1
Mike Rainey – A plugin that calculates the average read time of a post. Original concept by Lucas Zallio.
Related Posts – v1.1
Alexander Malov – Returns a list of the related posts. Original code by Mike, I just made it into a WP 1.2+ plug-in. Please refer to included readme for installation instructions.
Kitten’s Spaminator – v0.6b
Kitten – Spam prevention and blocking using tarpitting, comments are assigned points and a comment that meets the criteria for spam is blocked from posting.
StatTraq – v1.0a beta
Randy Peterman – This plugin will allow you to keep track of every hit on your public WordPress site (note that it does not track admin activity)
WP-Lists – v0.9
Navid Azimi – This plugin facilitates the use and management of lists directly from the WordPress Administrative User Interface. It also provides several API methods to display and manipulate those lists throughout your website.

A Tribute to Flo Hein

This is the newspaper death announcement my mother, Ramona Fletcher, wrote about one of her very long time best friends, and a mentor to me.

Florence Rose Hein

Photograph of Flo HeinFlorence Rose Hein, of Marysville, Washington, died of cancer December 27, 2004, at the age of 78. Her last days were at Everett Transition Care, where she received loving care. Her friends, Ramona (Boylan) Fletcher, Robert Fletcher, Margaret Moore, and Michele Martineau spent many hours at her bedside, holding her hand and helping to make her comfortable.

Flo’s husband, Clinton “Bud” Hein, her step-son, Rod Hein, her parents and grandparents preceded her in death. She leaves Rod’s children, Jennifer Wooll and Carrie Hein and their families, Bud’s sisters, who treated her like a sister, Julie Davis Dill and Islay Mae Gourlay and families, all of California. Flo leaves a half-sister, LaVerne Donovan and her family in Bellingham. Flo’s very special friend and companion was Jack Hovik. Jack and Flo had many good times together. Jack’s family was wonderful to Flo and included her with love.

Flo managed a jewelry store in California after graduating from high school, but spent most of her working life in the real estate business in Washington. In 1971, Bud and Flo became part owners of Capri Realty, Inc., and after the company closed, Flo worked in the mortgage business before joining American Properties NW Inc. In 1979, Flo served as President of the Snohomish County-Camano Board of Realtors. She was proud of her service to the real estate industry and cherished her many Realtor friends and friends at Wishing Well II, in Marysville, where she lived her last years.

We love you Flo, and will never forget you. You are a classy lady even when playing poker or blackjack, enjoying a martini, canning peaches, or doing the jitterbug. At Flo’s request, no services will be held. Her friends plan an informal gathering in her memory in the near future. Call 425-252-0711.

Compromises Along the WordPress Import Path

Okay, I made a lot of mistakes along the way to forcing my static HTML information into the WordPress database. In an effort to help others learn from my mistakes and compromises, I present mine to the world so you can see that a lot of hard work and screw ups went into the finished product.

The first mistake I made wasn’t so much of a mistake as lack of information and lessons learned by trial and error. That was the issue of the order of the fields in the MoveableType import file. It has to be in that order and there is nothing you can do about it.

The list of mistakes is long, but the point of these mistakes was the lack of information to help me avoid them, so I wanted to list that information here, to help others avoid the same mistakes.

I also had to make a lot of compromises along the way to importing my entire 500 plus static html web page site into WordPress. Some compromises were content issues, some were technical, and a lot were design issues. This is just a start of the list of compromises I had to make related to importing my site and stripping out html, Javascript, and other code elements. I’ll get to the rest of them as I start to work on the design elements.

Giving Up Meta Tags

For the past five years, I’ve worked long hours researching meta tags, their use, purpose, and assistance for users and search engines. I’ve analyzed what tags were the best to have, even going to the lengths to have the PICS tag for approval of the site as “not harmful to children” with a good G rating. I also have tags for “abstract”, “categories” and others specifically targeted towards each individual article. These have been lovingly created and I’d hate to loose them.

I had to give them up. Well, not totally. I had to give up the ones customized for every page. Through the use of plugins, which I’ll get to later, I was able to add in keywords, but the description, abstract, categories, and a lot of other meta tags had to go bye-bye. Not just because they aren’t useful any more, and some aren’t, but because WordPress adds so much more to the package, these are almost redundant.

Clean Page URLs

This was the hardest for me to compromise on. Every category was represented by a folder name which matched the category name. So an article in the Learning Zone from the section on Photographic Equipment had a nice URL:

http://www.cameraontheroad.com/learn/equipt/buyingcamera.html

By default, in WordPress this might become:

http://www.cameraontheroad.com/index.php?p=432

WordPress has a powerful feature called Permalinks. Permalinks allow readable links to be created as links to your data. From the above example, it might become:

http://www.cameraontheroad.com/tips-on-buying-a-camera

You can also set the categories to be visible with a name, like category or archives or fred if you wanted, so the above link might look like:

http://www.cameraontheroad.com/fred/tips-on-buying-a-camera

With the new version of WordPress 1.5 came the ability to include the actual category that a post is in. For the above URL, since it is from the learn category, the link might look like:

http://www.cameraontheroad.com/learn/tips-on-buying-a-camera

Fantastic, right! Enter the compromises. My website hosts is several versions behind in their Apache software, and their version won’t handle the rewrite codes that make this process possible. My site totally chokes on this. I’ve written, voiced, and chatted with them to encourage them to upgrade their software, but all I get are “soon”, whatever and whenever “soon” means. So for now, I live with the ugly index.php?=432 until my server gets on the ball, or I change them. I may switch to the simple permalinks, but that means I’ll have to add redirects when my host server upgrades….and I have over 500 redirects from my old site to my WordPress site URLs….and I’m tired of them.

Styles in the Header

You might think that this topic would be found in my article on the compromises I had to make in the design of my new site, but it totally impacted my import. Since I had a lot of styles within the header on a good number of pages, styles unique to that page or to the series of articles I was working on, these would be lost in the import unless I took special care of them. I soon realized that the majority of these were in one category of articles associated with web page design and development. Since I couldn’t leave them in the header, as the header is a template file used for every page generated, I had to make a compromise about how I would have normally handled these.

Since the majority of these were in the one category, I figured that I would have to make a style sheet that would be added to the posts if they were in that category. How I would do that would have to wait, but I needed to preserve the styles.

As I encountered these embedded styles, I copied them and put them in a special style sheet, with a comment about which article these came from. Tedious, but I needed to do this to keep the design elements.

Article Series or Multiple Pages

Since I tend to work in series rather than individual articles, I have broken up my articles into smaller chunks on many occasion so the user can just click to the next page in the series. Since the ability to maintain articles or posts within a series is more challenging in WordPress, I debated over what to do about the shorter article series.

Some research uncovered a multiple page ability within WordPress. By using the quicktags NEXT in the Write Post edit screen, I could insert a “next page” into an article so that it would be read across several web pages while still being only one post.

This meant I had to remove the titles, authors, and excerpt information and merge the content together in the linked articles, making them into one giant article. After they are imported, as I go through and do my edits within WordPress to make sure everything is working and made it into the import, I can insert the <--next--> tag into the spots where I want the pages to “break”.

Article Titles

I’m not so sure I would call this a compromise, but in a way it is. I had to deal with the titles of my articles that highlight the fact that this article is part of a series. Since the different parts are actually separate articles within the same topic but different information, they were:

Closeups in Nature Photography Part 1
Closeups in Nature Photography Part 2
Closeups in Nature Photography Part 3

I needed to help the user understand that this is part of a series when the article title is turned into a permalink or while navigating the site, while not having the title sound too similar. Each title has to be unique and make sense. I decided to change them to something more useful:

view of new page titles from our sitemap in WordPressCloseups in Nature Photography
Closeups – Macro Photography Equipment
Closeups – Lighting For Macro Photography

This not only expanded the title to match more of the content, it helped make the articles stand on their own. I also decided to write a little more to help give them some more punch to stand on their own better, while still being part of the series.

Pages and Posts

WordPress works with posts (aka articles in my lingo) and individual Pages. The posts are in the database and work within what is called the WordPress Loop, a fascinating piece of PHP coding that pulls the post information from the database and displays it, depending upon the type of request by the user, be it “view a specific category”, “view the front page”, “view archives”, “view an individual post”, and more. A WordPress Page is different. While its information is stored in the database, too, it actually works “outside” of the WordPress loop, acting more like a static page. It isn’t static. It’s a generated web page, but it works and acts differently from the regular posts or articles. Typically, individual Pages are used to create web pages like “About us”, “Contact us”, and “Events and Schedules”, web pages that hold information in a more permanent manner.

Since I was coming from a world of every web page being a static html page, I needed to look at my pages differently. I’ll go more into the how and why I chose which pages to become Pages and not posts later, but for now, I had to debate over which ones I would import as regular posts, and which ones I would hold back to keep as Pages. Not as easy a choice as you might imagine, but one faced by everyone using WordPress.


I wish I could say that this process was easy, but I kept feeling like I was the first one to actually convert a static HTML site into a relational database system like WordPress. I know I’m not, but I searched for ages to find answers to the simplest of questions about this process and could find very little in the way of helpful resources. It was hit and miss, backup and restore, or just plain start over for about two months until I struck gold. I hope that you learn how to avoid these mistakes, because if I did it right to begin with, using all this information, the process might have taken one to two weeks of hard core work and not two months of hit and miss struggles.

That is the purpose of writing all this down. This is one of the main reasons we have this website. Whether it is working on the computer, on the Internet, with web pages, or photography, travel, or life on the road, I write these things down because I want others not to suffer in the way we have. And boy, have we suffered. Hee hee, sigh.

Manually Importing Into WordPress Databases

Throughout this long and tedious process, I even tried manually importing my static html pages into WordPress, after they had been converted to XHTML, cleaned up and restructured to meet the manual MySQL import layout. Since I was working with material I’d already cleaned up, changing it from the import-mt format to the MySQL import format was fairly simple, but not that easy.

This process will work if you have already installed WordPress and everything is working fine in the default format. You’ve done a few test posts and everything is good, then you can do the manual import. Again, for those just jumping into this WordPress import process, the import data must be XML validated, so make sure it is validated as XML before you begin. And some cleanup after the import will also have to happen, but the majority of your critical data will be in the database.

view of the SQL panel of PHPMyAdminThere are two methods to get the information into your database. One is INSERT and the other is LOAD DATA INFILE. After a lot of research, I thought the best one for me was INSERT as it felt much more open and easy to work with, but it turned out that LOAD DATA INFILE, while requiring the data to be in the exact field in order, was the best for importing the majority of the information directly into the database. I did use INSERT later, as I became more familiar with the process, but only for much smaller file uploads.

Using LOAD DATA INFILE

The LOAD DATA INFILE gets information from a specific import file and loads it into the database. The import file must be on the server site. The format which follows comes form the MySQL documents on the LOAD DATA command. The format is:

LOAD DATA LOCAL INFILE 'file_name.txt'
     [REPLACE | IGNORE]
      INTO TABLE tbl_name
     [FIELDS
     [TERMINATED BY '\t']
     [[OPTIONALLY] ENCLOSED BY '']
     [ESCAPED BY '' ]
  ]
   [LINES
     [STARTING BY '']
     [TERMINATED BY '\n']
  ]
   [IGNORE number LINES]
   [(col_name,...)]

The WordPress v1.5 wp-post table has the following fields to import into, and while these are the default fields, they may be different in your database. Check your database’s WordPress installation to make sure they match.

1. ID
2. post_author
3. post_date
4. post_date_gmt
5. post_content
6. post_title
7. post_category
8. post_excerpt
9. post_status
10. comment_status
11. ping_status
12. post_password
13. post_name
14. to_ping
15. pinged
16. post_modified
17. post_modified_gmt
18. post_content_filtered
19. post_parent
20. guid
21. menu_order

Look at your data and determine which elements you need. I needed:

post_author
post_date
post_content
post_title
post_category
post_excerpt
post_status

Like the MoveableType import, the order of the data is critical and you must know the specific names of the fields and their place in the structure in order to properly import the information into your database.

The structure of the import file must be one “record” per line (with no line breaks inside the record) and quotes marks and commas between each “field”. This complicates things a little.

The catch is that the quote marks in the HTML won’t allow the import file to actually import into the database. The quote marks have to be “escaped”. This means that they have to be hidden from the import process.

Let’s make this easier to understand since it took me days to figure it out. If the import process detects a quote mark, it thinks the import is finished, at the end of record, or something other than what your intention is. To keep the quote marks around things like:

<img src="ball.fig" height="50" width="45" />

in your import, and not make the import break when it encounters the quote mark, you have to put a a backslash before EVERY quote mark in your data. This sounds like the perfect solution, but wait! There is hope.

As you do the massive search and replace process to change the form you have the information in to match the form and order structure of the import, when you are ready to begin searching and replacing the identifying text and markers for the beginning of the different table fields, STOP.

In the fourth line of the MySQL import format for LOAD DATA INFILE you will see the “Fields”. This is where the fields need to be set, as listed above. Each Field is separated by a quote mark, comma, quote mark. If we put these into the import file, then search and replace every quote mark with a backslash quote mark (“) to “escape” the quote marks, we’ve just killed our fields.

Before putting in these field separators, we need to “make our escape” – search and replace every quote mark with the backslash quote mark (“). Once that is done, then we can search and replace each of the line breaks or dividing codes to replace them with quote mark, comma, quote mark (“,”).

It is very important that all of the information in the import file be ONE LINE PER RECORD. That means that every “page” is a record and it must not have an ENTER, line break, or hard return (whatever you want to call it) inside of the record as that means it is the end of the record. To create this break-less record, all of the line breaks in your HTML must be removed. I recommend that you first set the beginning and ending of the record sections with some unique markings like XXXQQQ so you know where the record begins and ends. Then search the entire document for line breaks and replace them with nothing. Not even a space bar. Then search for the XXXQQQ and replace it with the closing quote, line break, open quote to end the field previous and start the next field and record. Be sure and add the missing quotes at the beginning of the very first record at the top of the document, and also check for a closing quote on the very last one at the bottom of the document, as those can get forgotten.

If you are using a text editor that forces line breaks, this is bad news. Make sure whatever program you are using will not force line breaks while you are using it, or while saving the file as that will totally screw up the import.

My import command using LOAD DATA INFILE looked like this:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
     (post_author,post_date,post_content,post_title,post_category,post_excerpt,post_status)
     FIELDS TERMINATED BY ','
     ENCLOSED BY '"'
     LINES TERMINATED BY '\n';
     ESCAPED BY '';

And the first two records (pages) of the condensed version of the import file looked like this:

"Lorelle VanFossen","11/25/2004 03:31:05 PM","<div class="boxblue"><div class="bluetitle"><span>Checking Content</span></div><div class="bluebody"><span>Begin your web page validation</span> by checking the content of your page. It's actually fairly simple. Is everything spelled correctly? Are the sentences compete? Is the grammar right? While this should be done at the time of creation, after you've messed around with the code for a while, you often have a fresh perspective on the content, so take another look to make sure it says what you want it to say, and it says it well and accurately......","Validating the Code Behind the Page","Learn","Working with HTML, CSS, and web page validators to validate web pages for accessibility and search engines.","publish"
"Lorelle VanFossen","11/25/2004 03:31:05 PM","<p>In 2003, experts are saying that the ratio of virus-infected messages to other e-mail traffic increased by nearly 85 percent. If this doesn't scare you into purchasing an anti-virus software program and keeping your operating system up-to-date, I don't know what will.</p><p>If you haven't protected your computer against the people with too much time on their hands who think that violence and trouble is a way to win favor in the world, we have some tips to help you get started leraning about.....","Viruses, Trojans, Worms, and Other Email Miseries","Learn","Tips on avoiding and stopping viruses, trojans, worms, and email invaders and spam.","publish"

I also learned quickly that the size of the file to import had to be less than 2 megabytes. Maybe this is a limitation of my host server’s MySQL version, or something else, I could not find the reason, but if I passed 2 megabytes in the file size, it often choked. So this was piece meal work, but it worked.

Using MySQL INSERT

I also tried to use the MySQL INSERT command, which worked great for small imports, like for categories with only a few posts. I was trying everything, so here is my attempt to use MySQL INSERT to get my web pages into WordPress.

Like LOCAL DATA INFILE, I had to “escape” the quote marks and keep each record on its own line, but I could play with the order of the fields using INSERT because their structure is set in the first part of the SQL statement. Here is a condensed version of two of my web pages being loaded into the WordPress database on my site using INSERT:

INSERT INTO wp-posts ("post_excerpt", "post_title", "post_author", "post_date", "post_category", "post_content", "post_status")
VALUES ("Working with HTML, CSS, and web page validators to validate web pages for accessibility and search engines.","Validating the Code Behind the Page","Lorelle VanFossen","11/25/2004 03:31:05 PM","Learn","<div class="boxblue"><div class="bluetitle"><span>Checking Content</span></div><div class="bluebody"><span>Begin your web page validation</span> by checking the content of your page. It's actually fairly simple. Is everything spelled correctly? Are the sentences compete? Is the grammar right? While this should be done at the time of creation, after you've messed around with the code for a while, you often have a fresh perspective on the content, so take another look to make sure it says what you want it to say, and it says it well and accurately......","publish"
"Tips on avoiding and stopping viruses, trojans, worms, and email invaders and spam.","Viruses, Trojans, Worms, and Other Email Miseries","Lorelle VanFossen","11/25/2004 03:31:05 PM","Learn","<p>In 2003, experts are saying that the ratio of virus-infected messages to other e-mail traffic increased by nearly 85 percent. If this doesn't scare you into purchasing an anti-virus software program and keeping your operating system up-to-date, I don't know what will.</p><p>If you haven't protected your computer against the people with too much time on their hands who think that violence and trouble is a way to win favor in the world, we have some tips to help you get started learning about.....","publish")

Either method will work, so you can try them when the normal import methods fail for getting your web page material into the WordPress database.

Lorelle’s List of Spam Words for WordPress

After battling long and hard with spammers, I’ve created a huge comment spam words list for filtering out the nasty comment spammers on my site. If you have WordPress or any other blogging or CMS software, add these to your comment spam list. You can also use this if your email software permits such word filters.


-4u
-consultant
-e-bank
-online
-platinum
-site
1-poker-games
1-texas-holdem
4-free-web-hosting
4u
8gold
12.147.139.209
12.158.228.18
12.169.162.25
12.177.13.252
12.217.120.212
24.2.224.221
24.3.4.232
24.6.7.120
24.7.213.223
24.11.33.70
24.12.65.149
24.13.177.211
24.13.185.46
24.14.95.147
24.15.88.195
24.17.35.216
24.18.97.201
24.19.138.79
24.20.137.124
24.21.116.159
24.21.154.115
24.30.120.71
24.33.14.33
24.62.135.6
24.72.61.254
24.73.149.165
24.92.94.209
24.93.130.158
24.98.17.204
24.98.139.116
24.99.203.58
24.106.12.180
24.129.68.77
24.130.37.51
24.147.220.218
24.154.242.109
24.155.47.177
24.165.97.96
24.193.23.58
24.193.110.88
24.196.168.132
24.203.182.48
24.208.20.160
24.215.156.243
24.224.169.80
24.247.37.201
24.251.240.23
24.254.95.15
38.119.107.77
38.119.204.203
61.2.130.3
61.7.96.15
61.8.253.164
61.9.2.115
61.11.26.134
61.11.26.142
61.11.56.195
61.14.87.181
61.19.243.11
61.19.243.12
61.22.3.192
61.22.236.158
61.25.173.240
61.95.221.81
61.95.226.18
61.123.210.71
61.131.53.109
61.131.55.138
61.131.63.62
61.145.123.203
61.150.115.237
61.150.115.245
61.152.94.147
61.175.225.135
61.181.156.3
61.182.39.219
61.189.235.207
61.200.113.213
61.218.101.215
61.221.30.167
61.222.119.127
61.239.247.73
62.0.80.219
62.0.85.117
62.2.204.30
62.4.77.222
62.5.156.46
62.14.104.36
62.22.98.154
62.22.98.155
62.39.107.121
62.39.118.246
62.39.252.124
62.45.37.178
62.48.171.21
62.49.144.85
62.57.108.38
62.58.32.36
62.67.235.111
62.68.64.8
62.72.99.34
62.85.205.202
62.87.152.58
62.99.210.222
62.110.191.106
62.129.172.74
62.134.152.2
62.135.103.130
62.140.74.15
62.141.204.223
62.146.143.219
62.150.20.166
62.152.115.69
62.153.78.22
62.154.190.68
62.160.219.222
62.166.90.121
62.215.3.51
62.215.3.61
62.231.38.245
62.231.50.79
62.233.165.67
62.234.154.230
62.240.110.75
62.242.164.244
62.251.122.161
63.72.136.96
63.100.211.203
63.110.140.28
63.145.26.34
63.173.65.21
63.200.216.142
63.214.2.74
63.226.96.241
63.227.76.25
63.241.72.171
63.246.7.29
63.252.191.105
64.5.152.131
64.5.152.195
64.28.14.137
64.46.86.151
64.60.147.28
64.105.141.99
64.110.74.244
64.124.92.199
64.125.108.5
64.125.108.114
64.132.198.149
64.136.207.28
64.141.68.16
64.160.151.6
64.219.107.253
64.222.187.118
65.5.74.2
65.26.219.58
65.31.153.185
65.33.25.145
65.37.95.84
65.43.192.10
65.60.119.164
65.68.242.121
65.75.139.90
65.75.175.30
65.83.21.11
65.118.10.18
65.162.198.12
65.167.186.127
65.203.88.43
65.220.53.179
65.245.103.190
65.254.45.163
66.49.36.196
66.56.92.212
66.63.240.2
66.83.186.194
66.90.155.243
66.92.33.104
66.98.139.133
66.98.190.10
66.99.19.36
66.119.34.57
66.119.34.59
66.120.210.29
66.132.140.15
66.133.39.54
66.151.181.247
66.160.92.90
66.161.5.186
66.171.139.52
66.176.106.94
66.176.126.116
66.176.238.224
66.177.105.171
66.179.93.149
66.193.87.170
66.204.14.3
66.208.244.234
66.213.135.3
66.231.168.82
66.237.84.20
67.19.91.50
67.22.46.193
67.52.64.174
67.72.25.2
67.86.142.70
67.97.98.151
67.100.174.122
67.107.73.195
67.108.123.68
67.112.7.253
67.123.152.83
67.133.123.36
67.153.168.162
67.165.39.223
67.170.128.74
67.173.145.239
68.1.236.218
68.11.71.17
68.12.179.223
68.13.4.151
68.32.28.30
68.33.60.242
68.37.253.96
68.39.209.63
68.47.42.60
68.50.181.206
68.53.179.15
68.55.206.38
68.59.144.215
68.78.30.249
68.83.42.181
68.85.97.114
68.89.20.132
68.97.139.174
68.98.206.172
68.104.150.239
68.107.121.185
68.108.47.227
68.111.220.85
68.125.183.249
68.148.234.199
68.157.81.120
68.162.202.229
68.164.171.236
68.165.169.202
68.167.94.202
68.169.2.31
68.169.173.30
68.174.137.117
68.194.120.218
68.195.151.73
68.225.67.84
68.229.190.61
68.229.246.43
68.230.223.211
68.233.135.42
68.234.92.103
68.236.84.4
68.251.10.245
69.9.8.68
69.14.191.28
69.15.36.193
69.15.56.187
69.20.9.22
69.26.195.134
69.28.64.146
69.44.154.204
69.44.155.157
69.50.64.5
69.55.227.156
69.59.170.52
69.59.170.100
69.66.53.210
69.112.228.203
69.113.43.43
69.139.153.101
69.148.200.14
69.163.158.82
69.175.225.182
69.192.54.5
69.196.206.23
69.199.80.43
69.226.79.82
69.242.163.211
69.243.95.188
80.5.160.5
80.5.160.6
80.5.160.25
80.13.18.27
80.16.191.106
80.18.225.2
80.22.92.178
80.23.100.213
80.51.229.90
80.53.47.142
80.53.64.26
80.53.69.170
80.53.171.122
80.53.255.174
80.55.59.52
80.55.185.126
80.55.195.214
80.55.205.22
80.58.1
80.58.1.46
80.58.1.111
80.58.1.170
80.58.2.44
80.58.2.174
80.58.2.235
80.58.2.237
80.58.3.172
80.58.3.235
80.58.3.237
80.58.3.239
80.58.4.44
80.58.4.107
80.58.4.111
80.58.5.46
80.58.9
80.58.9.111
80.58.9.172
80.58.9.237
80.58.10.170
80.58.11.107
80.58.11.170
80.58.12.107
80.58.13.44
80.58.14.42
80.58.14.107
80.58.20.42
80.58.23.235
80.58.32.171
80.58.33
80.58.33.46
80.58.33.107
80.58.33.172
80.58.34.170
80.58.34.237
80.58.37.107
80.58.38.44
80.58.40
80.58.40.172
80.58.41.44
80.58.42.42
80.58.42.44
80.58.42.173
80.58.43.107
80.58.44.42
80.58.46.42
80.58.46.235
80.58.47.107
80.58.50.42
80.58.50.107
80.58.50.174
80.58.51.170
80.58.55.42
80.65.102.162
80.65.121.214
80.68.91.254
80.78.132.96
80.78.164.114
80.86.225.4
80.95.128.11
80.97.210.51
80.97.210.72
80.118.36.213
80.127.3.63
80.164.199.218
80.168.63.70
80.168.182.129
80.191.68.194
80.191.199.195
80.191.203.9
80.200.243.151
80.200.243.152
80.200.243.153
80.201.241.47
80.207.25.114
80.223.246.97
80.227.56.42
80.227.56.46
80.230.124.247
80.230.213.230
80.230.216.23
80.237.203.93
80.245.71.67
80.248.1.3
81.0.141.245
81.56.6.67
81.57.252.110
81.80.43.105
81.80.153.241
81.86.13.189
81.93.7.110
81.110.124.10
81.112.93.140
81.115.31.217
81.115.170.2
81.115.229.202
81.117.88.91
81.117.178.44
81.134.166.209
81.138.10.219
81.144.221.210
81.144.240.215
81.165.67.249
81.168.4.198
81.168.201.95
81.192.48.26
81.195.254.250
81.204.108.252
81.208.62.130
82.43.60.76
82.66.49.123
82.67.36.5
82.67.178.45
82.77.16.86
82.81.228.82
82.112.196.50
82.116.128.141
82.127.77.38
82.142.142.136
82.147.174.96
82.194.62.16
82.194.62.17
82.196.202.234
82.201.187.136
82.222.56.18
82.225.68.165
82.228.240.47
82.230.128.78
83.16.79.106
83.130.173.23
83.170.54.4
83.219.166.14
111@gghf.com
128.192.202.132
129.118.23.46
130.226.80.238
130.233.26.200
131.215.145.190
132.248.66.18
133.3.135.20
133.65.181.63
134.99.218.101
136.145.22.9
136.183.135.54
140.122.77.8
142.169.254.194
147.231.100.130
148.78.243.25
148.223.48.226
148.223.132.121
148.223.216.174
148.233.165.151
148.233.165.152
148.235.6.199
148.244.150.57
148.244.150.58
151.8.7.15
151.11.129.154
151.142.207.11
151.202.154.243
152.98.206.87
155.158.104.80
155.207.28.74
155.212.212.137
157.200.12.200
157.200.12.201
159.16.1.53
160.44.68.20
160.252.73.2
163.23.113.129
163.28.48.70
163.121.128.210
164.100.17.17
165.138.213.230
165.173.60.25
165.173.80.23
165.194.121.227
166.114.30.40
167.206.198.115
167.206.204.182
168.10.46
168.10.46.125
168.143.113.30
168.143.113.124
168.143.113.126
168.143.113.128
192.102.15.253
192.114.189.65
192.150.249.88
193.25.96.40
193.41.196.22
193.79.18.243
193.83.117.114
193.87.71.3
193.92.94.228
193.95.70.74
193.95.113.114
193.121.103.18
193.129.22.146
193.145.88.17
193.145.222.70
193.145.222.72
193.150.237.250
193.151.75.22
193.165.223.2
193.170.65.247
193.170.65.249
193.173.115.179
193.188.77.2
193.188.105.16
193.191.141.65
193.194.79.194
193.194.84.195
193.206.222.2
193.220.170.14
193.251.60.99
193.251.137.13
193.251.137.14
193.255.207.253
194.19.70.2
194.19.226.3
194.23.40.121
194.25.116.227
194.51.67.137
194.55.113.4
194.63.128.2
194.63.201.137
194.63.235.147
194.63.235.148
194.63.235.155
194.63.235.156
194.63.235.157
194.63.235.163
194.63.235.165
194.63.235.166
194.63.250.203
194.87.225.89
194.105.171.55
194.117.134.72
194.117.217.227
194.140.95.54
194.143.75.179
194.172.17.76
194.176.88.28
194.184.42.12
194.213.41.11
194.213.41.12
194.213.41.13
194.213.41.14
194.219.20.121
194.224.225.235
194.250.97.49
195.6.54.61
195.24.72.116
195.24.206.18
195.27.14.2
195.43.187.235
195.53.194.98
195.57.165.180
195.61.146.130
195.65.177.44
195.85.209.50
195.87.69.26
195.94.74.100
195.95.17.245
195.99.141.35
195.99.141.75
195.110.211.81
195.117.13.130
195.117.196.6
195.132.141.251
195.140.251.142
195.141.64.150
195.144.131.2
195.144.131.10
195.149.144.90
195.153.172.214
195.158.141.11
195.159.168.216
195.167.228.85
195.172.182.228
195.175.37.6
195.175.37.22
195.182.127.170
195.184.37.21
195.202.37.66
195.202.37.67
195.205.141.8
195.228.69.35
195.229.241.169
195.229.241.183
195.229.241.187
195.235.180.15
195.244.195.23
195.245.247.155
196.15.156.190
196.20.24.162
196.20.31.121
196.28.48.100
196.32.128.250
196.41.30.38
196.45.188.9
196.46.196.42
198.54.202.4
198.76.25.7
198.165.90.74
198.165.90.75
199.45.143.227
200.4.196.122
200.11.92.234
200.12.61.231
200.12.238.23
200.12.238.31
200.13.188.18
200.13.246.66
200.14.206.166
200.21.45.4
200.21.45.11
200.24.23.113
200.30.142.18
200.30.164.27
200.31.23.195
200.31.79.213
200.31.79.214
200.32.86.243
200.34.99.9
200.35.81.51
200.35.83.27
200.35.96.38
200.39.200.132
200.42.189.10
200.42.212.42
200.44.157.84
200.45.71.40
200.48.218.178
200.48.218.179
200.54.153.122
200.55.156.254
200.56.224.5
200.56.232.210
200.56.233.5
200.60.199.234
200.60.207.58
200.67.5.171
200.67.149.183
200.67.165.180
200.67.239.225
200.68.74.209
200.68.102.61
200.68.112.65
200.69.231.181
200.74.139.5
200.75.112.28
200.76.39.3
200.79.91.5
200.79.91.6
200.84.76.149
200.87.46.130
200.87.141.37
200.89.163.202
200.90.76.149
200.91.71.13
200.93.32.134
200.93.135.227
200.94.109.9
200.94.196.243
200.96.170.81
200.104.62.111
200.104.184.35
200.109.231.102
200.118.117.97
200.118.118.4
200.140.112.122
200.141.76.227
200.144.124.2
200.160.22.66
200.161.28.151
200.167.171.2
200.168.62.134
200.168.143.213
200.171.38.181
200.171.128.210
200.171.132.131
200.171.155.92
200.189.96.3
200.193.237.91
200.207.76.36
200.212.114.3
200.223.0.21
200.226.137.9
200.226.137.13
200.242.249.70
200.245.65.25
201.3.191.139
201.6.153.2
201.7.98.147
201.12.13.170
201.14.69.18
201.14.69.35
201.14.69.82
201.14.69.150
201.135.219.38
201.135.230.152
201.224.75.198
201.224.192.18
201.240.17.106
201.243.205.250
201.248.102.247
201.249.28.91
202.3.241.84
202.8.254.54
202.14.68.239
202.29.14.251
202.29.69.2
202.41.106.101
202.47.247.146
202.54.54.194
202.54.61.202
202.56.231.117
202.57.35.130
202.74.185.219
202.74.207.139
202.83.35.110
202.83.175.98
202.83.175.124
202.86.196.18
202.86.196.19
202.92.97.37
202.95.132.125
202.99.211.4
202.106.132.130
202.109.72.39
202.113.49.22
202.125.129.138
202.129.45.245
202.130.84.133
202.134.0.136
202.134.0.137
202.134.193.102
202.138.166.178
202.141.239.6
202.144.39.154
202.146.195.5
202.147.176.37
202.149.34.242
202.149.200.81
202.151.142.229
202.152.53.147
202.155.18.230
202.155.36.178
202.155.71.41
202.156.2.114
202.159.121.100
202.160.9.11
202.160.25.46
202.163.115.202
202.163.115.203
202.163.115.205
202.168.70.54
202.175.95.47
202.175.95.48
202.175.234.163
202.179.109.110
202.190.126.40
202.194.250.10
202.201.163.4
202.234.131.166
202.248.22.236
203.16.182.77
203.22.71.37
203.23.253.10
203.43.104.251
203.56.119.103
203.59.162.122
203.82.48.55
203.87.147.166
203.94.240.181
203.101.31.16
203.101.31.54
203.101.41.151
203.101.85.97
203.101.108.130
203.112.194.83
203.113.29.1
203.113.29.2
203.113.29.3
203.113.132.50
203.113.132.62
203.115.21.155
203.116.214.2
203.120.188.3
203.121.0.18
203.121.0.19
203.121.60.198
203.121.131.47
203.122.56.106
203.126.142.123
203.126.142.126
203.127.190.22
203.130.30.3
203.130.249.6
203.150.234.46
203.151.40.252
203.160.186.69
203.162.3.77
203.162.3.78
203.162.92.126
203.162.168.150
203.172.154.114
203.172.181.166
203.177.51.237
203.177.51.238
203.190.146.50
203.190.254.9
203.195.105.34
203.195.105.35
203.195.201.29
203.197.22.84
203.197.140.100
203.197.169.19
203.197.203.35
203.197.234.177
203.208.193.68
203.215.81.16
203.227.166.71
203.227.166.76
203.246.165.35
203.247.202.85
203.250.250.11
204.60.65.164
204.167.116.2
204.169.23.246
205.149.4.75
205.206.12.202
205.206.61.233
205.208.226.59
205.218.254.250
205.232.210.35
206.27.244.9
206.128.0.171
206.163.199.1
206.173.147.133
206.204.190.7
206.212.187.26
206.241.4.6
207.44.152.39
207.44.152.100
207.44.154.35
207.44.188.57
207.58.132.242
207.63.185.100
207.127.0.2
207.127.8.66
207.134.108.85
207.157.69.68
207.213.145.240
207.218.184.142
207.237.245.132
207.239.220.116
207.241.82.98
207.248.159.230
207.250.10.170
208.4.85.110
208.27.204.4
208.31.142.13
208.34.225.202
208.53.138.8
208.59.239.18
208.63.116.194
208.167.47.9
208.189.22.184
208.189.87.64
209.0.207.248
209.10.153.41
209.10.233.153
209.12.132.243
209.19.202.160
209.33.210.2
209.50.130.89
209.57.6.2
209.58.48.147
209.58.48.148
209.62.215.3
209.66.18.104
209.74.43.164
209.80.169.243
209.83.240.203
209.88.12.61
209.88.128.9
209.94.127.82
209.131.210.141
209.151.52.61
209.158.99.14
209.158.113.3
209.158.164.11
209.161.85.7
209.173.144.78
209.176.76.14
209.177.4.130
209.183.197.121
209.184.108.162
209.191.9.237
209.193.36.80
209.195.246.75
209.201.13.34
209.203.20.230
209.203.45.190
209.208.100.210
209.208.100.226
209.208.219.233
209.210.227.43
209.213.81.172
209.214.214.32
209.214.248.34
209.227.31.7
209.232.65.47
210.0.180.113
210.0.200.2
210.0.209.47
210.5.71.242
210.5.71.243
210.14.31.101
210.20.183.31
210.50.90.230
210.50.163.198
210.87.254.40
210.90.161.112
210.95.105.131
210.111.226.21
210.143.118.141
210.150.226.1
210.169.210.113
210.177.15.97
210.187.110.230
210.200.64.131
210.200.64.132
210.212.6.132
210.212.204.241
210.212.204.242
210.212.205.38
210.222.18.163
210.243.242.211
211.20.131.90
211.24.161.10
211.24.161.11
211.34.4.188
211.36.207.158
211.40.153.4
211.42.26.90
211.92.108.205
211.97.235.34
211.110.18.131
211.114.68.61
211.126.196.172
211.147.225.100
211.185.38.61
211.185.39.3
211.185.204.130
211.239.170.46
211.248.154.4
211.249.118.252
211.250.15.65
211.250.81.252
212.0.138.14
212.0.145.10
212.7.134.159
212.11.123.242
212.15.27.6
212.17.56.2
212.24.138.228
212.29.206.70
212.33.86.47
212.37.48.115
212.47.27.186
212.54.109.42
212.68.194.124
212.78.165.10
212.79.176.4
212.85.1.101
212.91.171.252
212.97.4.47
212.117.152.70
212.137.49.29
212.138.47.11
212.138.47.12
212.138.47.13
212.138.47.16
212.138.47.17
212.138.47.20
212.138.47.21
212.138.47.26
212.138.47.29
212.138.64.171
212.138.64.172
212.138.64.173
212.138.64.174
212.138.64.176
212.158.135.166
212.160.128.114
212.165.158.75
212.165.158.100
212.169.188.212
212.179.50.75
212.203.71.247
212.219.119.198
212.219.189.230
212.227.193.184
212.234.82.241
212.235.10.3
212.235.29.99
212.235.30.162
212.235.31.253
212.235.41.203
212.235.66.240
212.235.70.157
212.238.217.227
212.238.227.82
212.239.72.10
212.241.87.160
212.249.11.84
213.4.105.231
213.8.52.84
213.10.51.167
213.11.77.162
213.24.183.163
213.29.2.249
213.30.164.240
213.39.32.3
213.41.1.222
213.41.1.226
213.42.2.11
213.42.2.21
213.42.2.23
213.53.223.114
213.56.68.29
213.56.73.3
213.64.226.191
213.69.149.153
213.84.110.214
213.91.216.36
213.91.217.77
213.91.217.78
213.91.217.116
213.92.99.73
213.112.92.165
213.112.195.17
213.115.111.135
213.130.53.94
213.130.118.121
213.131.110.150
213.132.32.130
213.137.189.237
213.139.44.10
213.155.143.19
213.156.63.50
213.166.40.170
213.167.97.194
213.172.36.62
213.172.127.70
213.174.190.219
213.174.191.234
213.176.161.200
213.186.83.3
213.194.110.199
213.201.177.75
213.219.85.138
213.224.138.94
213.249.236.146
213.253.217.29
216.23.53.244
216.46.130.227
216.63.70.130
216.72.28.100
216.73.24.194
216.83.96.37
216.104.196.225
216.135.202.146
216.138.195.15
216.146.79.61
216.148.246.153
216.151.84.21
216.151.119.159
216.164.99.102
216.195.206.249
216.204.237.7
216.204.237.10
216.205.208.108
216.208.38.76
216.208.223.67
216.234.203.132
216.244.142.204
216.248.4.24
216.249.43.4
216.250.213.154
216.253.170.5
217.6.75.11
217.7.101.178
217.14.219.34
217.23.37.86
217.33.216.141
217.37.30.34
217.37.102.225
217.45.185.113
217.52.41.194
217.57.78.70
217.57.96.114
217.57.199.10
217.57.199.12
217.65.159.99
217.110.35.24
217.110.71.114
217.117.225.34
217.132.97.187
217.132.157.26
217.132.201.12
217.132.204.190
217.132.215.171
217.145.29.200
217.148.186.2
217.158.98.5
217.167.6.177
217.172.65.146
217.172.70.182
217.172.174.228
217.199.123.27
217.205.157.54
217.207.156.6
217.215.34.195
217.218.195.137
217.218.233.74
217.219.16.197
217.219.163.9
217.219.166.37
217.227.65.51
218.4.189.197
218.5.191.126
218.7.36.82
218.10.248.79
218.12.171.14
218.13.33.247
218.56.32.230
218.57.113.11
218.58.50.68
218.58.63.38
218.58.76.22
218.59.146.164
218.75.117.194
218.76.51.3
218.78.213.152
218.89.107.2
218.89.189.241
218.98.38.70
218.114.204.17
218.145.25.11
218.145.25.84
218.201.40.138
218.244.225.180
219.49.168.128
219.76.190.217
219.93.190.194
219.93.211.74
219.101.248.131
219.117.236.15
219.140.161.24
219.147.36.253
219.163.100.195
219.223.112.1
219.232.128.14
219.235.236.225
219.238.6.194
219.240.37.28
220.55.220.63
220.90.132.183
220.99.118.172
220.110.89.242
220.110.175.26
220.110.194.146
220.130.133.38
220.130.249.238
221.10.7.35
221.15.5.45
221.32.160.38
221.132.39.253
221.142.244.144
221.186.74.196
221.186.122.98
221.186.126.218
221.214.4
221.214.12.163
221.214.209.194
222.35.11.126
888
abc-online-mortgage-4u
absinth
absinth97@mail.ru
absinth219@mail.ru
absinth231@mail.ru
absinth264@mail.ru
absinth307@mail.ru
absinth484@mail.ru
absinth635@mail.ru
absinth686@mail.ru
absinth734@mail.ru
absinth811@mail.ru
absinth823@mail.ru
absinth838@mail.ru
absinth869@mail.ru
absinth909@mail.ru
absinth989@hotmail.com
absinth993@hotmail.com
absinth1014@hotmail.com
absinth1056@hotmail.com
absinth1083@hotmail.com
absinth1158@hotmail.com
absinth1160@hotmail.com
absinth1183@hotmail.com
absinth1211@hotmail.com
absinth1435@rocketmail.com
absinth1471@rocketmail.com
absinth1479@rocketmail.com
absinth1527@rocketmail.com
absolut4620@arrivo.br
absolut4678@arrivo.br
absolut4697@arrivo.br
absolut4719@arrivo.br
absolut4725@arrivo.br
absolut4769@freemail.com
absolut4806@freemail.com
absolut4808@freemail.com
absolut4810@freemail.com
absolut4841@freemail.com
absolut4882@freemail.com
absolut4892@freemail.com
absolut4991@freemail.com
absolut4995@freemail.com
absolut5001@freemail.com
absolut5029@freemail.com
absolut5062@freemail.com
absolut5085@freemail.com
absolut5112@freemail.com
absolut5169@freemail.com
absolut5217@freemail.com
absolut5315@mail.nu
absolut5324@mail.nu
absolut5333@mail.nu
absolut5350@mail.nu
absolut5363@mail.nu
access-online-casinos
adipex
adult-dvd-top-shop
adult-free56@yahoo.com
adult-free1735@yahoo.com
adult-galleries225@yahoo.com
adult-galleries725@yahoo.com
adult-galleries736@yahoo.com
adult-galleries870@yahoo.com
adult-galleries1198@yahoo.com
adult-galleries1384@yahoo.com
adult-galleries1560@yahoo.com
advice-2001
advice-2004
advicer
aijpupvopuoopqr
air-travel-e-site
aixuopqr
akieyropqr
akoysauopqr
alberthardyIgNoR3Th1s@1Gnor3ThiSgmail.com
AliceWalker@postmaster.co.uk
alloha
aloha@alloha.info
alojamientoglobal
amateur-thumbs
ambien
americacashfast
anal
angeltowns2
aniiraddopqr
anurl
anxietydisorders
aquapurificacion
asian-tramps
ass
auctions-online-emall-site
audio-free465@hotmail.com
auto-insurancedeals-4u
auto-loans
azaddin6
azaddin6161@mail.me
azaddin6173@mail.me
azaddin6176@mail.me
azaddin6200@home.com
azaddin6240@home.com
azaddin6274@home.com
azaddin6302@home.com
azaddin6427@home.com
azaddin6529@home.com
azaddin6537@home.com
azaddin6657@home.com
azaddin6784@work.com
azaddin6831@work.com
azaddin6875@work.com
baccarrat
bad-credit
BanderSo@Hotmail.Com
bartlett_john@bloginc.com
bertadaniels@rediffmail.com
best-buy-site-2001
best-deal-site-4u
best-deal-site-2002
best-deals
best-deals-
best-deals-cheap-airline-tickets
best-deals-flowers
best-deals-online-4u
best-deals-online-24x7
best-deals-poker
best-deals-texas-hold-em
best-deals-texas-holdem
best-internet-blackjack-gambling-4u
best-odds
best-odds-2000
best-odds-2002
best-online-casinos-tips
best-online-deals-2000
best-online-deals-prescription
best-online-shop-2004
best-online-shop-drugstore
best-online-shopping-site-4u
best-online-site-123
best-online-site-2002
best-online-site-2004
best-slots-gambling-4u
bestbuys-online
bestbuys-online-24x7
bestbuys-win
bestbuys-winner
bestdeals
bestdeals-winner
bestgames-winner
bestonline-medication
bestonline-shopping
bestonline-site
bhattathiry@yahoo.com
billige-fahrraeder
bimbo
bing
Bing@bmw.com
Bing@hello.com
Bing@mail.com
Bing@microsoft.com
Bing@yahoo.com
birth-control
birth-control-pill-top-pharmacy
birthcontrol
bitch
black-jack-4u
blackjack
blackjack-4u
blackjack-123
blackjack-777
blackjack-gambling-4u
blackjack-winner
blackjack777
blackjacksite
bllogspot
blowjob
bmotmkopqr
booker
Boz
boz
Boz@freedom.com
Boz@germany.com
Boz@gmail.com
Boz@love.com
brautkleid-hochzeitskleid
brettspiele-rollenspiele
british-hardcore
Buddy555@germany.com
Buddy555@peace.com
build-texas-holdem-table-4u
bushmills
bushmills1588@rocketmail.com
bushmills1605@rocketmail.com
bushmills1614@rocketmail.com
bushmills1784@rocketmail.com
bushmills1850@rocketmail.com
bushmills2017@mail.com
bushmills2065@mail.com
bushmills2099@mail.com
bushmills2181@mail.com
bushmills2198@mail.com
bushmills2204@mail.com
business-grants
buspar-top-pharmacy
bwvopopqr
byob
byob@y295o.com
byob@y382o.com
byob@y485o.com
byob@y507o.com
byob@y557o.com
byob@y627o.com
byob@y638o.com
byob@y886o.com
byob@y922o.com
byob@y1125o.com
byob@y1294o.com
byob@y1385o.com
byob@y1521o.com
byob@y1612o.com
byob@y1654o.com
byob@y1684o.com
byob@y1871o.com
byob@y1986o.com
byob@y2009o.com
byob@y2176o.com
byob@y2323o.com
byob@y2458o.com
byob@y2569o.com
byob@y2893o.com
byob@y2938o.com
byob@y2943o.com
byob@y3017o.com
byob@y3303o.com
byob@y3333o.com
byob@y3408o.com
byob@y3427o.com
byob@y3681o.com
byob@y4105o.com
byob@y4232o.com
byob@y4305o.com
byob@y4654o.com
byob@y4784o.com
byob@y4823o.com
byob@y4849o.com
byob@y4884o.com
byob@y5068o.com
byob@y5426o.com
byob@y5638o.com
byob@y5685o.com
byob@y5724o.com
byob@y5816o.com
byob@y6031o.com
byob@y6223o.com
byob@y6248o.com
byob@y6507o.com
byob@y6740o.com
byob@y6766o.com
byob@y6771o.com
byob@y6855o.com
byob@y6863o.com
byob@y6876o.com
byob@y6958o.com
byob@y6963o.com
byob@y6993o.com
byob@y7316o.com
byob@y7351o.com
byob@y7394o.com
byob@y7430o.com
byob@y7510o.com
byob@y7635o.com
byob@y7917o.com
byob@y8014o.com
byob@y8029o.com
byob@y8055o.com
byob@y8089o.com
byob@y8259o.com
byob@y8293o.com
byob@y8305o.com
byob@y8540o.com
byob@y8569o.com
byob@y8625o.com
byob@y8767o.com
byob@y8937o.com
bytcpuezopqr
calculator-car-loan-e-site
cameltoe
cameras-esite
canadian-online-pharmacy-top-pharmacy
canadianlabels
car-fuck
car-insurancedeals-4u
car-rental-e-site
car-rentals-e-site
card-credit-secured-e-site
card-holdem-odds-texas-games
carisoprodol
Casey1@freedom.com
Casey1@love.com
Casey1@microsoft.com
Casey1@msn.com
Casey1@peace.com
Casey1@yahoo.de
casino
casino-jp
casinogamesplus
casinogamesvegas
casinos
casinos-jp
catch.com
Catfishy@love.com
Catfishy@mail.com
Catfishy@msn.com
Catfishy@peace.com
Catfishy@whitehouse.com
Catfishy@yahoo.com
cehaiptqopqr
celebrex-top-pharmacy
chat-nett
chatroom
cheap-
cheap-airfare-airline-ticket
cheap-airline-tickets
cheap-hotels-e-site
cheapest-shop
cheapest-shop-4u
cheapest-shop-2000
Chi34@comeback.com
Chi34@freedom.com
Chi34@love.com
Chi34@peace.com
Chi34@usa.net
Chi34@yahoo.de
christian-consolidation
christian-consolidation-debt-e-site
christian-singles-e-site
cialis
cialis-dot
cialis-express
cialis-rx
city-mortgage-national-e-site
cknbcsopqr
claritin-d-top-pharmacy
clit
club-online-poker
cock
combaltec
community-credit-union-e-bank
company-mortgage-e-site
condom
consolidate-debt-4u
consolidator-debt-advisor
consumer-credit
consumer-credit-counseling-advisor
counseling-advisor
counseling-debt-4u
countrywide-home-loans-e-site
crack-turbo-texas-holdem-4-win
crap-site
craps-online-2002
crazy-game-of-poker-2002
crazybobseo@gmail.com
credit-and-debt-counseling-advisor
credit-card-applications-4u
credit-cards
credit-report
credit-report-4u
credit-report-repair-consultant
credit-reports-4u
credit-scores-4u
credit-union-4u
crescentarian
cskfhcweopqr
cum
cunt
cwas
cyclen
cyclobenzaprine
dacuopqr
daily-sex
damenfahrrad-26
danksagung-silberhochzeit
danor@Hotmail.com
dating-e-site
dating-services
dating-services-e-site
dating-site-e-site
day-trading
deal-e-site
debt-4u
debt-consolidation
debt-consolidation-consultant
debt-national-e-bank
debt-negotiation-advisor
debt-recovery-advisor
debt-reduction-4u
derik@x-kuize.de
devonanal
diamond-online-casinos
dick
diclofenac
diet-pills-4me
diethylpropion-top-pharmacy
dietingweb
dietpillssite
digital-camera-esite
digital-cameras-esite
digitaltwist
dimmie@westcoastcustomz.com
direct-tv-online
discounts24x7
Discover-card-com-4u
discreetordering
dish
dish-network
dish-network-w
dishnetwork
Dizzy@gmail.com
Dizzy@hello.com
Dizzy@msn.com
Dizzy@msn.de
Dizzy@peace.com
Dizzy@russia.ru
Dizzy@whitehouse.com
Dizzy@yahoo.co.uk
downloadable-computer-software-holdem-game
drugstore
Duke56@germany.com
Duke56@love.com
Duke56@usa.net
duty-free
dutyfree
dvd-top-shop
dxpbxfxahopqr
dznpmzopqr
e-debt-consolidation
e-online-poker
e-site
eadsy@melia.tv
eaisrknieejopqr
easy-online-casinos
easyrecorder
ebookers
edeoeeelnopqr
editors-pick-4you
editors-pick-2001
eeiwsfsiaopqr
efmuvwxseopqr
elonek@loaksmr.com
emall-site
epubyopqr
equity-home-loan-4u
ermcgluopqr
erotic-free
erotic4free
fahrad-fahraeder
fahrrad-zoll
fahrradhandel-online
fahrradladen-internet
fahrradzubehoer-katalog
famvir-top-pharmacy
fargo-mortgage-well-e-bank
fart
fat
fatass
fateback
Fats@microsoft.com
Fats@yahoo.de
Fats_32@freedom.com
Fats_32@microsoft.com
Fats_32@peace.com
Fats_32@whitehouse.com
Fats_32@yahoo.co.uk
fetish
fightfetish
finance-honda-e-bank
finance-stock-4u
finance-toyota-e-bank
finance-transouth-advisor
financing-home-improvement-4u
financing-home-mobile-advisor
fioricet
flash-texas-holdem-top-site
flfppoafopqr
flowers
flowers-leading
flowers-leading-site
footjob
ford-credit-consultant
foreign-pharmacy-top-pharmacy
formulare-vertraege
fovoopqr
free-adult1703@yahoo.com
free-black-pussy-photos-sex
free-casino-games-000
free-download-texas-holdem-game
free-galleries744@yahoo.com
free-galleries1239@yahoo.com
free-holdem-downloads-games
free-no-dowload-holdem-poker-win
free-no-limit-texas-holdem-computer-game-4u
free-no-limit-texas-holdem-download-games
free-no-limit-texas-holdem-top-site
free-on-line-slots-gambling-4u
free-online-poker-000
free-online-poker-777
free-porn-porn
free-slot-gambling-4u
free-slots-gambling-4u
free-texas-holdem-downloads-top-site
free-texas-holdem-games-top-site
free-webspace
freegovmoney
freenet-shopping
fuck
fucker
galleries-adult285@yahoo.com
galleries-adult460@yahoo.com
galleries-adult1648@yahoo.com
galleries-adult1682@yahoo.com
galleries-free572@yahoo.com
galleries-free1340@yahoo.com
galsonbed
gamble
gambler
gambling
gambling-website
gameshareint
gay
geoxiqqopqr
gethelp24x7
getstarted24x7
gocha9262@does.it
gocha9285@does.it
gocha9301@does.it
gocha9317@does.it
gocha9326@does.it
gocha9383@does.it
gocha9407@does.it
gocha9549@see.it
gocha9599@see.it
gocha9860@see.it
gocha9864@see.it
gocha9866@see.it
gocha9872@see.it
gocha9887@see.it
gocha9939@see.it
gold-online-casinos
goldene-hochzeitszeitung
golf-balls-e-course
golf-e-course
google163
Goose@hello.com
Goose@mail.com
Goose@microsoft.com
Goose@msn.com
Goose@msn.de
Goose@whitehouse.com
Goose@yahoo.co.uk
Goose@yahoo.de
government--grant
government-grants
government-loans-e-site
great-e-site
grey_goose
grey_goose3861@aol.com
grey_goose3873@aol.com
grey_goose4030@aol.com
grey_goose4039@aol.com
grey_goose4040@aol.com
grey_goose4049@aol.com
grey_goose4062@aol.com
grey_goose4089@aol.com
grey_goose4092@aol.com
grey_goose4149@aol.com
grey_goose4155@aol.com
grey_goose4179@aol.com
grey_goose4214@aol.com
grey_goose4238@aol.com
grey_goose4326@arrivo.br
grey_goose4328@arrivo.br
grey_goose4331@arrivo.br
grey_goose4554@arrivo.br
grey_goose4575@arrivo.br
grey_goose4582@arrivo.br
handjob
headachetreatment
health-insurancedeals-4u
hentaiporn
her@willfulexpose.com
herrenfahrrad-28
high-risk-loans-consultant
hitparade-charts
Hoagy@whitehouse.com
Hoagy@yahoo.com
hochzeit-danksagung
hochzeitsdekoration
hochzeitseinladung
hochzeitseinladungen
hochzeitsgeschenk
hochzeitsgeschenke
hochzeitskleidung
hochzeitsringe-bilder
hochzeitsservice
hochzeitszeitungen
hokitika
hold-em
holdem
holdem-4u
holdem-calculator-4u
holdem-download-no-limit-texas-hold-em-win
holdem-hand-odds-win
holdem-poker-777
holdem-poker-card-counting-game
holdem-poker-partypokercom-4u
holdem-poker-win
holdem-software-top-site
holdem-tables-top-site
holdem-tables-win
holdem-texas-holdem-strategy-win
holdem-texas-holdem-top-site
holdem-tips-4u
holdem-top-site
holdemeyer-games
holdemtexasturbowilson-4u
holubopqr
home-loan-
home-made-texas-holdem-tables-games
home-mortgage-financing-consultant
homo
honeymoon-destination-a
hotel-dealse-site
hotele-site
hotels-e-site
hotelse-site
hotsexonly
household-auto-finance-e-bank
how-to-host-a-texas-holdem-game-game
how-to-play-black-jack-2004
how-to-play-texas-hold-em-poker-4-you
how-to-program-texas-holdem-games
how-to-run-a-texas-holdem-game-4u
how-to-win-at-slots-gambling-4u
how-to-win-texas-holdem-games
huy_lo
huy_lo5488@mail.nu
huy_lo5490@mail.nu
huy_lo5502@mail.nu
huy_lo5506@mail.nu
huy_lo5597@mail.nu
huy_lo5607@mail.nu
huy_lo5625@mail.nu
huy_lo5662@mail.nu
huy_lo5771@mail.me
huy_lo5797@mail.me
huy_lo5886@mail.me
huy_lo5898@mail.me
huy_lo5989@mail.me
huy_lo6091@mail.me
huy_lo6143@mail.me
huy_lo6148@mail.me
i-debt-consolidation
i8.com
idpuaioekjopqr
ildmhhnfziopqr
ilsgxlyopqr
imatmstbaopqr
incest
indiabook
indian-gambling-best-internet-site
insurance-quotesdeals-4u
insurancedeals-4u
interest-only-loan-consultant
international-pharmacy-top-pharmacy
internet-blackjack-gambling-4u
internet-poker-123
ioobopqr
iorrfuexopqr
jane_doe
jane_doe6967@work.com
jane_doe6996@work.com
jane_doe7024@work.com
jane_doe7268@classnet.pl
jane_doe7371@classnet.pl
jane_doe7494@classnet.pl
jane_doe7531@classnet.pl
jane_doe7620@come.to
jDoc@gmx.com
jDoc@hello.com
jDoc@microsoft.com
Jelly5@love.com
Jelly5@whitehouse.com
jerking
jewellery-depo
jizz
john@loki.net
johndoe7807@come.to
johndoe8035@come.to
johndoe8142@see.to
joshua-holdeman-win
jtieivaopqr
ktiwopqr
kveaioeuopqr
laijswaopqr
las-vegas-hotels-e-site
lazifuoopqr
learn-texas-holdem-4u
learnhowtoplay
lebonpost
levitra
lilo@suddenenlightenment.us
liquor-cellar
list-123
list-2003
live-texas-holdem-tournaments-games
loan-4u
loan-amortization
loans-4-u
louisville-texas-holdem-games
low-limit-holdem-4u
luba
luba8695@tech.tv
luba8846@tech.tv
luba8978@tech.tv
luba8996@tech.tv
macinstruct
magazines4cheap
maloylawn
mariagarant26@correoweb.com
Mary_Stuart@postmaster.co.uk
masturbating
maxphentermine
me@you.com
meridia
mindtangle
mlenqgiopqr
mobile-home-loans-ebanking
mofo
mortgage
mortgage-4-u
mortgage-calculators-ebanking
mosaik-silver-card-4u
mycheapcigstore
myworld
nada
nagu@mindtangle.net
napoleon
napoleon2357@mail.com
napoleon2359@mail.com
napoleon2695@bigfoot.com
napoleon2925@usmail.com
nawggjvhiuoopqr
new-leading-e-shop
no-limit-holdem-poker-win
no-limit-texas-hold-em-poker-4-win
no-limit-texas-holdem-strategies-games
no-limit-texas-holdem-top-site
no-limit-texas-holdem-win
nsqoaohkomcopqr
odds-in-texas-holdem-4u
odds-texas-holdem-4u
offline-texas-holdem-win
ogramire@aol.com
oiimdegchuaopqr
ojurzloeopqr
one-phentermine
online-auctions-site
online-casino-001
online-casino-luck
online-casino-special
online-dating-e-site
online-deal
online-deals-2002
online-gambling
online-gambling-i
online-holdem-poker-4u
online-poker
online-poker-333
online-poker-net
online-poker-net
online-poker-now
online-roulette-gambling-4u
online-shop
online-shopping-site-24x7
online-texas-holdem-games-4u
online-texas-holdem-top-site
onlinegambling-4u
otard3107@usmail.com
otard3550@yahoo.com
otiteefhcwdopqr
ottawavalleyag
ouendopqr
owns1.com
ownsthis
pacificpoker
palm-texas-holdem-game
partypokeronline
pasajesparami
paxil
payday-loans
penis
personal-injuries-law
personal-loan-ebanking
pharmacy
phentermine
pillslim
platinum-celebs
play-free-texas-holdem-poker-win
play-poker-for-free-list
play-slots-gambling-4u
play-texas
pocketsound
poker
poker--games
poker-books-texas-holdem-game
poker-chip
poker-rooms-777
poker-rooms-texas-holdem-top-site
poker-rules-texas-holdem-games
poker-software-texas-holdem-win
poker-supply-4u
poker-texas-holdem-floor-rules-4u
poker-texas-holdem-top-site
porn
pornography
poze
prescription
preteen
princeofprussia
principal-mortgage-ebanking
private-mortgage-insurance-ebanking
psxtreme
ptlrlubkuopqr
pubes
purchase-online-2001
purchase-online-2004
purchase-online-medication
pussy
pzhekzaraopqr
qjgzxuvaqgqopqr
qzowmhrgaopqr
rank-of-texas-holdem-hands-4u
ranking-holdem-poker-hands-4u
rate-4u
refinance-auto-loan-ebanking
rental-car-e-site
rimjob
roulette-gambling-4u
rules-texas-holdem-win
rv-loans-ebanking
searchenginetweakers
sex
sextoys
sexvideos
shop-online-site
shop-online-site-4you
shop-online-site-2003
shop-online-site-2004
sicarrow
site-2002
site-prescription
slang-terms-for-texas-holdem-big-slick-4u
slot-gambling-4u
slot-games-gambling-4u
slot-machine
slot-tokens-gambling-4u
slotmachine-gambling-4u
slots
slots-gambling-4u
slots-w
slut
software-texas-holdem-win
soma
sperm
strip-texas-holdem-top-site
student-loans
student-loans-ebanking
suddenenlightenment
swingersunidos
swiss-deals
taboo
tax-planning-software-advisor
tax-software-online-advisor
taxas-holdem-poker-games
taxas-holdem-software-game
teen
terashells
texas
texas--hold--em
texas-hold-em
texas-hold-em-poker-free-best-winning-chances
texas-hold-em-poker-rules-best-internet-site
texas-hold-em-software-best-winning-chances
texas-holdem
texas-holdem-0
texas-holdem-4u
texas-holdem-betting-rules-win
texas-holdem-bot-top-site
texas-holdem-calculator-for-palm-games
texas-holdem-card-games-games
texas-holdem-card-games-top-site
texas-holdem-computer-game-4u
texas-holdem-crack-games
texas-holdem-downloads-top-site
texas-holdem-for-fun-win
texas-holdem-forums-4u
texas-holdem-free-download-games
texas-holdem-free-game-download-game
texas-holdem-free-poker-top-site
texas-holdem-fund-raising-games
texas-holdem-games
texas-holdem-games-top-site
texas-holdem-hand-probabilities-win
texas-holdem-hand-rankings-win
texas-holdem-history-top-site
texas-holdem-i
texas-holdem-kit-game
texas-holdem-odds-calculator-4u
texas-holdem-odds-top-site
texas-holdem-palm-game
texas-holdem-percents-win
texas-holdem-pocket-pc-4u
texas-holdem-poker-free-top-site
texas-holdem-poker-stratigies-win
texas-holdem-poker-tables-top-site
texas-holdem-program-games
texas-holdem-rules-for-a-flush-game
texas-holdem-rules-hoyle-4u
texas-holdem-shareware-4u
texas-holdem-sites-games
texas-holdem-table-plans-4u
texas-holdem-table-top-game
texas-holdem-tables-top-site
texas-holdem-top-site
texas-holdem-tournament-host-games
texas-holdem-tournaments-game
texas-holdem-tourneys-games
texas-holdem-video-game-win
texasproptax
thorcarlson
tit
tlbasopqr
top-deal-4u
top-e-site
top-place
top-shop-online-drugstore
top-shopping
top-texas-holdem-cards-game
tramadol
tramadol-prescription
travel-e-site
trim-spa
turbo-texas-holdem-top-site
two-feet-texas-hold-em-best-internet-site
ubaaufopqr
ufipopqr
ufwluirtzopqr
ultram
uninventory
uounuhixeopqr
vagina
valeofglamorganconservatives
vegas-online-casino
vegas-texas-hold-em-best-winning-chances
vgaoabnfoaiopqr
viagra
video
video-slots-gambling-4u
virgin
watch-replicas-deals
wgtyssopqr
wheel-of-fortune-slots-gambling-4u
where-can-i-play-texas-holdem-for-free-game
whore
willfulexpose
winning-no-limit-texas-holdem-win
wkeenulrjopqr
wlayjnopqr
woodyracing
worldwide-deals
xanax
xaofopqr
xenical-web
xfiiyljaopqr
xklpqwroapaopqr
xssezopqr
xubuizneuzuopqr
yelucie
yjmofqopqr
Yogi_mo@love.com
yuiwiphbvppopqr
yxegfopqr
yycvukkwbbmopqr
zkjaifvjmopqr
zoiuyxyiopqr
zolus
zteqnopqr
zulnizccopqr

Creating One Big Import File

I’d validated a lot of the HTML of my web pages, then ran it through a conversion from HTML to XHTML, and searched and replaced across the multiple files to eliminate the redundant styles, HTML structures, meta tags, javascripts, and unwanted elements, reducing it down to the Title, Author, Excerpt, and Body content. What remained was a lot of blank lines and empty space.

I needed to now import all of this information from my 65 test pages into one file to prepare it for import into the WordPress database. But I wanted to make one last clean up of all the “spaces” in the HTML files.

Using the multiple file search and replace utility which permits multiple line search and replace within HotDog Pro, I simply replaced three empty line breaks with two. Luckily for me, HotDog Pro goes through every file until ALL of the replacements are done, so I didn’t have to repeat the search. You might want to repeat the search a couple of times if you are following the bouncing Lorelle on her path and repeating her mistakes and using different search and replace software.

There, now I felt it was ready to become one big messy file instead of 65 individually messed up files.

Considering the WordPress Date

I don’t care what date an article was written or published, though I do like knowing the last time it was updated, which keeps me on track of things I need to check, especially with timely information. In WordPress, though, the date plays several key roles.

WordPress organizes all posts in chronological order. Since it is designed and developed for bloggers, date and time plays a critical role in being “the first out of the gate” with information, or following the chronological “story” of a person’s journal, like a diary. Since both of these don’t matter to me, I needed to understand how WordPress controls the “next” and “previous” posts using dates in order to keep my article series in some kind of order.

After a bit of research, I learned that articles/posts are organized by most recent to oldest. Therefore, in an article series, the date order should be:

Article 1 March 15
Article 2 March 14
Article 3 March 13
Article 4 March 12
Article 5 March 11
Article 6 March 10

This meant that I would have to order the Dates manually, from most recent date to oldest date, in order to maintain some element of sequence of articles as people moved through my site. Oh, joy. I still needed to set the date for each page in the import file. So I had to add the WordPress Date issues to the things I have to fuss over when it comes time to handle the manual edits of my import file.

Grouped by Categories

On my static HMTL site, all of my pages were grouped by category, using the category as the folder name. By working on each folder, one at a time, instead of the whole site, it was now easier to add the categories for each set of files. At least one part of this process might be easy after all. Later I can easily add subcategories for these in WordPress, but for now, they are all categorized nicely.

So I did a search and replace across the multiple files in the Learning folder for the import file title PRIMARY CATEGORY: and replaced it with PRIMARY CATEGORY: Learning – or whatever the category is. Simple and easy.

Remember Those Backups

Again, I had to be very careful with my search and replaces. A little slip screwed things up. I had to make frequent backups as I went along. Let me take a moment to tell you how I did this.

Since everything I’m working on is a copy of the files from my website, and I was working in a test folder on my hard drive, I would simply right click on that folder and save it to a zip or RAR file. I’d back sure that the options were set for preserving folders, and within a few seconds, that folder would be completely backed up – for that “just in case” moment that happens, more often than I’d care to admit. Since it does happen, this fast backup process became routine to make after every five changes I’d make, or before I knew I was going to try something risky and wanted “to be safe”.

I’d just rename the backup file each time to the date and time, so they would look like this:

site011005-1036.zip
site011005-2150.zip

Which would represent a backup on January 10, 2005, at 10:36 AM and the second one on the same date at 9:50 PM, using military time. Very simple and easy to identify. When I’m finally done with all of this and a month has gone by, unless I need the hard drive space before, then I will delete all these backups…again, just in case I find out I really screwed up way back when.

Preparing the Single Import File

Now that I’ve done most of the search and replaces of the easy code, I need to merge all the multiple files into one and work on that in preparation for importing.

There are several freeware and shareware programs out there which merge files together. I choose Fauland’s A.F.7.’s Merge which is simple and easy to use. Within less than 5 seconds it merged 65 html files and allowed me to save the file as html, txt, or whatever. That’s nice.

Now, the following is a warning to those who don’t know much about computers and software in general. I do not recommend you do what I did, use WordPerfect for all my final preparation for the import file for WordPress. I recommend that you stick with a basic text editor like PSPad. If you do go ahead, consider yourself warned. Word processing programs, unless they are tweaked to death to prevent problems, are terrible to use to write software code. You are warned.

With all of the 65 documents set in one file, I needed to clean it up and go through and manually edit all the information that was missing or needed moving.

Confronted with a bunch of similar but unique bits on information left on each page, like the meta tags, I needed to come up with a way to quickly remove the information without going through hundreds of physical pages. So I created a macro in WordPerfect.

Instead of manually removing every one of them, I created a macro in WordPerfect with a repeating loop. Before creating the macro, I did a search and replace for the front element of the information I wanted removed. In one of the example items I needed to remove, this is what it originally looked like:

<meta name="abstract" content="Search Engine Preparation - Designing a web page with search engines in mind.">

I did a search for:

<meta name="abstract" content="

and replaced it with XXXX:. The result in my example became:

XXXX:Search Engine Preparation - Designing a web page with search engines in mind.">

The XXXX: is a unique string of characters that wouldn’t be found within the document, so each line to be deleted now had a specific marker. I repeated this for the rest of the unique elements and tags that would need to be deleted from the document.

Using the powerful macro capabilities in WordPerfect, I created a macro that searched for XXXX: and then from the EDIT menu choose SELECT > PARAGRAPH. I did this twice and turned off the macro recorder to make sure I had the process embedded in the macro. I then edited the macro with a loop to repeat. In WordPerfect 12, the macro looks like this (you can copy and paste this into your own macro if you want):

Application (WordPerfect; "WordPerfect"; Default!; "EN")
Label (one)
SearchString (StrgToLookFor: "XXXX:")
SearchNext (SearchMode: Extended!)
SelectParagraph ()
DeleteCharNext ()
SearchString (StrgToLookFor: "XXXX:")
SearchNext (SearchMode: Extended!)
SelectParagraph ()
DeleteCharNext ()
Go (one)

When it reaches the end, because there is no “end-if” statement, it just reports an error of “not found”, for which you click “okay” and it’s done. This isn’t pretty, just quick.

If any of these lines had line breaks, I knew I would still have to manually go through and remove them, but the more removed in the process, the less I have to do manually. This quickly did away with all the little bits and pieces not going into the final import file.

Manually Inspect Your Import File

It was finally the moment I’d dreaded. It was time to go through and manually inspect the file to see what damage I’d done or hadn’t done. I found some things in my test batch of 65 files that will improve the process for me in the future, but there are still some things that are harder to fix.

I left the big spaces from all the removed meta tags in the document at this point because the huge space was a clue to the break between sections as I scrolled down the huge merged file. But this wasn’t good enough for really “seeing” what was where and where it should and shouldn’t be. With everything black and white on the screen, I was having trouble seeing what was HTML code and what was junk that had to be removed.

Using all the tools at my hand, I copied the content from WordPerfect and pasted it into a blank file in HotDog Pro so that the HTML tags would be colorized, helping me distinguish between what is HTML and what is text. The dividers for the fields come out as text, without tags around them, so they are clearly visible as I scrolled through the document.

Because I chose to use my H2 header as my title, there were line breaks inside of the header which had to be manually removed. I also found bits and pieces of left over H1 titles that also needed to be removed.

On a few of my test pages, I had some CSS style elements in the header, and these needed to either be incorporated into my style sheet, a style sheet of their own, or eliminated. I decided to put them into a style sheet of their own, since they apply to a specific category of articles, and maybe I can still use these when I get ready for the design work. So I cut and pasted them all into a blank css file.

I also have a lot of lists of links to pages within my site set up in a box on each page within a series, so all the series pages are linked together. With PHP, I can bring these in without hard coding, so these had to go. As I stumbled upon these in the file, I could quickly do a search and replace to remove them since they were the same on all of the involved files. Since they are unique to a series of articles, I’d forgotten about them while doing the other major search and replaces, but I could easily catch them now.

You, too, will find elements you can do without, unique to your own design. Make notes so you can fix these things as you move through your different folders.

As I went through the new single file, I put in dates, trying to keep some kind of order to them, taking the WordPress date controls into mind, and randomly choosing dates to get the material in some kind of ordered.

I also had to manually move the EXCERPT from above the TITLE where it sat during the multiple file cleanup, to below the BODY field, keeping things in order.

After removing all the junk, moving the EXCERPT, and setting the dates and categories, I needed to get rid of the empty spaces, so a few search and replaces for line breaks (hard returns) and double and triple space bars and tabs, the file was cleaned up and ready for a final last manual inspection before importing the test files into the database.

Prepare to Engage Warp Engines

I was very proud of myself and all my hard work, which in the end didn’t really take that long, once I got the hang of it. The macro I created with WordPerfect really cleaned things up and saved a lot of time. Too bad I can’t use that across multiple files! My last manual check of everything caught a few more little buggers, but they were quickly cleaned up. All the records (pages) were divided with the 8-dash lines and the fields cleanly separated by five-dash lined…I was ready to go.

I saved the file to a text file and uploaded it to my wordpress/wp-admin/ folder on my website where I’d installed my test version of WordPress. I then typed in the URL in my browser of the import-mt.php which resides in the wordpress/wp-admin/ folder and started praying.

Now, I have to be honest with you. You come here because you expect honesty from Lorelle. She won’t lie to you. She’ll exaggerate and say something she believes to be true, until proven otherwise, and then freely admit that she screwed up. So you will get the truth here.

Yes, I screwed up and had to try this import-mt business several times before I figured out that 1) the order of the fields in the import file mattered, 2) a stray bit of code left it will cut your import short very quickly, and 3) everything you’ve read up until this point includes the fixes I found AFTER I reached this point. So you are getting the truth about how I did this, but the edited version. I didn’t want anyone following along and then emailing me that I was some kind of idiot because it didn’t work. I discovered it didn’t work and had to fix it – so you are getting the benefit of my aches and pains, trials and errors.

But don’t worry. The next entry covers my trials and tribulations, so maybe someone can learn from them.

So, once I’d done it “right”, my test web pages were now imported into the database and WordPress could find them, and now it was time to really see what had gone in, and what had not, and to start to get to work on designing the website so all of this work would look pretty when finally finished.

Imitating MovableType Import File

When I’d search and replaced the parts of each page that could be eliminated, I needed to start the next series of search and replaces which would turn the information into the MoveableType format. Following the guidelines set up in the article MoveableType Instructions for Importing Data, I had a format to follow and a lot of work ahead of me to squish my static HTML files into MovableType entries.

The format features “fields” of data separated by dashed lines. Records (pages) are divided by an eight dash line followed by a line break code like this between each record (page of data):

--------\n

Between each field of the record there needed to be a five dash line and line break code:

-----\n

Not every bit of information is cleanly separated. Some of it is grouped together with related bits of information into a single “field”. The first group of information looks like this:

--------\n
-----\n
TITLE: Foo Bar
AUTHOR: Bar Foo
DATE: 11/25/2004 03:31:05 PM
PRIMARY CATEGORY: Fruit
CATEGORY: Apple
-----\n

The Order of the Import File Data

At this point, I started questioning the order of the information in the import file. If the import-mt.php file could recognize the titles for TITLE, AUTHOR, DATE, etc., then wouldn’t they just grab the correct information and stick it in the right database field without there being an order to the information. If I had it AUTHOR, DATE, TITLE, etc., would it care?

Well, I did a couple of tests and found out that the import-mt.php file from WordPress does care. It cares VERY precisely. The order has to be:

--------\n
TITLE
AUTHOR
DATE
PRIMARY CATEGORY
CATEGORY
-----\n
BODY
-----\n
EXTENDED BODY
-----\n
EXCERPT
-----\n
COMMENT
AUTHOR
DATE
IP
EMAIL
This is the body of this comment.
-----\n
COMMENT
AUTHOR
DATE
IP
EMAIL
This is the body of another comment. It goes up to here.
-----\n
PING
TITLE
URL
IP
BLOG NAME
DATE
Pinged entry text goes here.
-----\n
--------\n

While the order is critical, if the item is blank, it can be left blank or just removed and it will still work. It just has to be in that order, or you end up getting your Date information in your Title, etc.

This conceptual process had started out simple and easy – find the code and replace it with nothing to erase it, or replace it with the new code that I needed for the import. Now I had to consider the order of the data and how to minimize manual editing. It was time to become a WordPress Importing Detective.

Always think five steps ahead
but prepare to take two steps backwards.
My motto for this endeavor.

Enter the Importing Detective

Looking over my remaining data from my static HTML pages and the structure of the import file layout, I worked to match related material. Part of it was easy.

I knew I would be importing ALL of these pages into a single document, so I needed to divide up each one with the beginning and ending tags as used in the MovableType import file. Every HTML document begins with an <html> tag. While I’d cleaned out the document type codes, I still had the HTML tag in place, thinking ahead. So I searched and replaced the HTML tag across the multiple files with:

--------\n

The dashed lines after the post/article content, called the Body in Movabletype, also turned out to be easy. Since I know the code for separating records (pages) is the eight dashed line, I can replace each page’s end HTML codes:

</body>
</html>

With:

-----\n
--------\n

I knew that there would be code between the record start set of dashed lines and the end of the Body data and the closing field and record codes, but I’d deal with that in the manual edits.

The elements I had clearly defined during my first multiple file search and replaces were the author and body. The title was a little more difficult.

If your page <title> is the same as the actual title of your page, you don’t have a problem. Search and replace just got very easy. The problem for me is that my <title> tag contains a combination of the article series title and the title of the article. So instead of just being “Validating Your Website”, the HTML page <title> is “Website Development – Validating Your Website”. Within the actual body of the article, I keep the article series title in H1 and the article title in H2. WordPress sees things differently, as does the import file, which is another reason why it is so important to understand how WordPress interprets different bits of information compared to your site, so you know where to make your compromises, pushes, and shoves to turn your material into WordPress material.

I debated over this for a while, trying to figure out which would be smarter, to use the web page title or the article tile in the H2 tags. I finally decided to keep my article title in the H2 heading and deal with the article series within WordPress categories. I now needed to figure out how to change my H2 tag to match the needs of the import.

In my HTML, I began with this:

<h2>Start With Compliance</h2>

The first search and replace changed it to:

-----\n
TITLE: Start With Compliance</h2>

This meant I had the start of the first field of information, along with the TITLE: tag. Yes, there is still code and junk between the beginning “record” line and the Title tag, but this was a start to form the final file.

Now, if I hadn’t been thinking ahead, I would have simply done a search and replace for the

and replaced it with nothing, since that would match what I wanted (which I did and then realized my mistake and took a step backwards), but I had to think ahead and do some seriously planning.

The rest of the field included the Author, Date, Primary Category, and Category and then a field end and then the BODY. Since I don’t have the first three items in my HTML files, I needed to put them in manually add the information later. I also needed to but them in the right “place” in the order of the import. Trying to find another unique identifier such as the closing tag of h2 meant serious work.

The AUTHOR follows the TITLE, and in my HTML, that was also the case. So what I needed to do was search and replace the AUTHOR tags to change them to the MoveableType format and then add the import information regarding the Date, Primary Category, Category, and Body as placeholders, awaiting my manual edit time so I could add the information then.

I decided I would first replace the author tags, before doing the title tags, so I would still have the closing H2 tag to clean up the title tags, if needed.

On our site, we have three authors: Brent VanFossen, Lorelle VanFossen, and Lorelle and Brent VanFossen. This meant I had to do the search and replace three times to cover the three name combinations. Using the first one, I did a search for:

<div id="author">By Brent VanFossen</div>

Replacing it with:

AUTHOR: Brent VanFossen
DATE:
PRIMARY CATEGORY:
CATEGORY:
-----\n
BODY:

Since that worked, I did another search and replace to get rid of the closing H2 tag (</h2>). Ah, success by the WordPress Importing Detective!

Before celebrating, though, I soon realized I would have to go through manually and delete the <TITLE> and H1 information. I will have a good bit of manual cleaning to do as I sometimes have line breaks in my <h2> tags, and there will be a bit of unwanted but unique code that will have to be removed manually, but I have an idea on how to expedite this process…later.

Last Bits of Multiple File Search and Replaces

I now had only a few bits of information that I could realistically do over multiple file search and replaces. Much of the rest of the data would have to be inspected manually.

Since I don’t have any comments or pings, that part of the import could be ignored. But there was more to deal with.

The Excerpt turned out to not be simple. My static HTML files didn’t have excerpts. I wrote them myself on the static category and information pages. With the move to dynamically generated web pages, an Excerpt would have more power.

I decided that I would make an attempt to at least have some kind of Excerpt by using the meta tag “description” for each web page. Since this information was still laying in the multiple test files because it was unique to every page, and awaiting manual editing, I figured I could use it until I changed my mind.

The tag for the Excerpt just needed replacing at the beginning:

<meta name="description" content="

with:

-----\n
EXCERPT:

The problem was that the ending tag wasn’t anything special. Just a quote and a space />. If I searched and replaced that, I would have a mess of all of my self-closing XHTML tags. I needed to find something unique to match that ending tag, or manually delete it during the edit phase.

The unique match was the keywords meta tag I had still remaining below the description meta tag. This is one of the reasons why using a search and replace program or utility needs to be able to do multiple lines. I did a search for:

" />
<meta name="keywords"

and replaced it with:

-----\n
<meta name="keywords"

I decided to replace the “meta name” information as I was still undecided about how to handle the keywords, and if WordPress would even have a place for them in their database. More stuff to research and learn.

With the core elements in place, or close to it, I took another look at what elements I could search and replace to eliminate. I found some Amazon ads that I would replace in the template files, javascript codes I wouldn’t be using any more, some stray bits of redundant code, and actually managed to shrink my former static html web pages to mostly the content needed to go into the database via the import file. Using the search and replace method across multiple files cleaned things up.

It was now time to bring in my test html files into a single document in preparation for the final cleaning and importing into WordPress. The hard work is just beginning.