Categories
Personal Work

Twitter Bot Earns Me Money :)

Well, this came up as a pleasant surprise to me when I logged into my GetAFreeLancer.com account to deactivate the email notification. I have earned $34.2 in August 2009 from affiliate activity. I was puzzled first and then checked out the whole thing. One of the people whom I referred to GAF, created two projects there and I got the commission.

I am quite active on scriptlance and was getting bored with GAF for their very frequent email notification. Finally, I decided to turn off the notifications and deactivate my account. But now that GAF is earning me money from referrals, I am quite happy with them.

The referral links are being spread over the microblogsphere by my twitter bot that collects direct links to available projects on GAF and tweets them. I set up the bot out of experimental purpose but now it looks like it’s gonna be a good money maker as well.

Being inspired by this little surprise , I made some upgrades to the bot. The bot now adds hash sign (#) before important key words to make it search friendly. I also activated a identi.ca and a friendfeed clone of the same bot.

I am thinking of selling this entire bot script at $30. Anyone interested? Bargaining allowed for sure ;-).

Categories
PHP

Archiving Remote Files Using PHP

We can easily archive remote files on our server and put the archive for download by our users.

Here’s a code snippet:

It uses the ZipArchive built in class of PHP to archive the target file which is stored on a remote host. It reads the remote file using “file_get_contents()” function and uses the “addFromString()” method of the ZipArchive object to add the data as a local file inside the archive. The first parameter of this method is the name of the file which will be inside the archive. This file is usually called “local file”. The second parameter is the file contents in raw string format. Instead of the file_get_contents(), we could use alternative fopen(), fread() or fgets() functions to get the file contents as string. But when we have better and quicker solution, why should we go for complex ones ?

Enjoy 🙂

Categories
Python

Using web.py with Google App Engine

I love coding in Python and have been exploring the excellent web.py framework lately. From what I’ve seen, web.py is a very simple yet powerful python based web framework. It’d take me a lot of time to learn django (if I ever manage to make up my mind into it) and it already took around a couple of hours to understand the Google App Engine’s default webapp framework.

web.py includes a built in web server to develop an application locally. But I am a Google fan and was thinking of deploying web.py on Google App Engine. I believed GAE and web.py together can help me put up a web app in minutes. And so did they… 😀

The first question came to my mind was “How am I going to install web.py on my GAE account ?”. Well, it was pretty easy in the end. Just extract the web.py package and put the “web” directory inside your application directory. That is the “web” directory would be in the same directory where the app.yaml file resides. Now, in app.yaml file, map all URLs to a single python file. In my case, it was “main.py”.

Now develop the application in the normal web.py way. “It’s easy as pie!” — I thought. But it was not that easy in fact. I had to make a couple of changes.

The app I wrote didn’t do what I expected it to. Rather it raised an “import error” 🙁 Later, I found out that I have to use “web.application.cgirun()” method instead of the normal “run()” method.

Then I reloaded the app. But this time I got an “internal server error”. After visiting the web.py cookbook, I found out that, to use web.py templates on GAE, I have to compile all templates using the “web/template.py –compile templates” command. I did so. All my templates were compiled into python source code. Cool !

Now my app was running smooth and working fine ! So, at last I made it… Yahoo ! I am loving python, web.py and Google App Engine together 😉

PS: I am using web.py 0.3 where I have the cgirun() method. In older versions of web.py, you have to be tricky. In that case, please consult this thread:

http://bit.ly/EoVyM

Here’s the source code (Without the template):

Here’s the “templates/masnun.htm”: