Ganjoor Projects: an Introduction

ganjoor.net home page

Ganjoor is a set of projects centered on Persian literature trying to make Iranian classic poetry available to interested users.

The current set of Ganjoor projects are:

ganjoor.net

Ganjoor is primarily known by its web site at https://ganjoor.net which technically is a WordPress based web site (for some technical reasons it is based on a pretty old version of WordPress).

For almost 11 years ganjoor.net has earned a reputation for being the primary source for people engaging in Persian classic poetry.

Although it was not the first of its kind and its content had primarily gathered from other online sources which were available prior to it (listed at this page and referenced in detail for almost all poems in their own pages), and although ganjoor.net content has been made available as a public domain and open source database -which resulted in emerging a considerable number of other derivative and similar websites (and applications)- ganjoor.net had gained domination in this domain almost within a year or two from its establishment and kept its position on top until now.


Base on Google Analytics collected data as of October 2018, on average over 1 million users visited ganjoor.net viewing over 5 million pages. For the last month, 83 percent of them came from search engines and 16 percent of them directly entered the web site.
ganjoor.net active users sample data

In addition to being fortunate, the domination of ganjoor.net among competing websites might be in debt of its features -some unique at the time and many unique even by now- which would be described further in the following paragraphs.

The starting point of ganjoor.net experience for users is its home page which contains a grid containing poet names (sorted alphabetically) and pictures assigned to them.

ganjoor.net home page

Users can browse through this catalog of poets (each described with a short biography mostly contributed by a site user volunteered to do so or provided by volunteers who typed the works of poets for ganjoor.net) or search within their works using keywords. The search could be performed on a global scope or could be done in a limited scope such as a specific poet works or a book or a specific part of a book by him or her. Pictures assigned to poets were considered to be a helpful sign and guidance to identify which search result belongs to which poet visually.

ganjoor.net search in the global scope
While browsing a specific poet’s work you have access to a search bar on top of the page which could be scoped to a specific part of the poet’s books and search only within that part.

What’s missing here:

  1. Some categorizations for poets and their works based on century, style, and …
  2. Categorization is centered around authors. There exist books with the unidentified or misidentified author (or assigned to multiple authors) in Persian literature history which may need some other type of classification here. It might be nice if the user can browse through works in a book-centric fashion or even work-type-centric type (poetry or non-poetry, poet type, or …).
  3. The search facilities are in need of improvements by any definition. Actually, for ganjoor.net, thanks to being the first page listed at Google, using Google for searching inside ganjoor.net is more efficient. This is a broad topic, but in addition to keyword-based search, the addition of some poem-specific search utilities might be helpful for professional users.
ganjoor.net pages are mostly the first ones pop up at Google searches even for short phrases belonging to famous poems and this fortune makes Google an ideal aided utility for filling ganjoor.net‘s own gaps and deductions on providing an acceptable search utility.

Whenever users reach contents of a specific part of a book, for example, a list of Ghazals of Hafez, if the part format allows (for example poems are Ghazal or Qasida or Qeta) an alphabetically based look-up utility might be helpful for him or her to go directly to the poem he or she is looking for. This utility (alphabetical search) is the way most paperback classic poetry books are arranged and helps the reader find the poem he or she is looking for. In most cases, the first verse or paragraph of the poem or book part is included in lists to aid users in order to look up the part they are looking for. There are navigation links at the bottom of parts having neighbors at the same level (e.g. different chapters of a book) in order to make navigation among parts easier.

Alphabetical lookup utility helps you if you want to look around a poem you know its rhyme and location and do not bother using the keyword search feature.
Users can navigate among adjacent parts of a book using navigation links which are put at the bottom of each part page.
Page addresses are user friendly and memorable and could be easily kept in mind as they use a conventional format and due to their Latin characters could be directly typed into the browser address bar. Later versions of WordPress (ganjoor.net back-end software) dropped support for repetitive usage of the same slug (“sh1″ in the picture above) for multiple posts and this is the main reason ganjoor.net uses a pretty old version of the software because upgrade would require lots of changed URLs and errors.

Pages for poems include navigation links to go up in the hierarchy the poem belongs to (breadcrumbs) in addition to displaying the location of the current poem in the whole collection.

ganjoor.net breadcrumbs: the title has the link for the current page and using links in the line below the poet picture you can browse through the hierarchies the poem belongs to

Verses are visually displayed according to their poetic roles and there exists a utility to see the order of verses beside them.

Verses are aligned to left, right, or center according to their position in the poem
A utility for putting the order of verses beside them

Users can double click on a word and perform a dictionary lookup for it in two Persian dictionary web sites.

Lots of poems have prosody and rhyme tags which in addition to its informative usefulness, forms an innovative way of finding similar poems: poems that have the same  rhythms and rhymes simultaneously which often indicates a poet has read and referenced another poet’s work in his or her poem.

rhythm and rhyme tags and similar poems link
similar poems

Although a lot of prosody tags had been found and assigned manually, recently by means of a new service for finding prosody information programmatically (although with lower accuracy and correctness) I tried to complete this part of the information and now most of these works have relevant prosody tags.

Users can access an aggregated statistics on each poet’s prosody related data in his or her specific prosody information page. These pages are updated periodically and might become outdated. Clicking on each meter users can browse through all poems by that poet having a selected meter.
Similar poems found using rhythm and prosody data for some duo poet at pages such as this one.
Some additional information such as verses quoted by a poet from another poet had been gathered (using analysis of textual data by computer) and published in pages such as this one.

Users can contribute to ganjoor.net commenting on poems. Although some comments are inappropriate (hateful, racist, or being intolerant on religious topics), some add great value and additional information on poems that are useful by other visitors. A comment abuse reporting tool has been added recently to help moderate sensitive comments.

Two other features of ganjoor.net (the first on music tags and the second one on poem narrations) are discussed later separately.

What’s missing here:

  1. Direct link for verses. There are situations where you might want to directly add a reference to a specific verse. A user-friendly utility to summon the whole collection hierarchy tree and select a specific book, part of a book, or a poem or a verse might become handy here.
  2. Although needing a complex structure, it might be ideal if we can access multiple variations or revisions of poems on a single page. There are lots of differences in different manuscripts of a single poem: some verses are missing in some manuscripts, some words are different, and … . It is more ideal if we can access scanned images of pages of manuscripts through poem pages.
  3. The whole idea of user membership is missing in ganjoor.net. Users need to bookmark poems privately or publicly and keep private notes about each part in their private notebook and also manage their public comments and delete or edit them if necessary. Other membership related utilities such as ratings and discussions (forum) might add values to the whole collection. Fixing spelling errors and things like that could be assigned to contributing members under the moderation of trusted ones.
  4. The whole process of management and maintenance (adding new poems and poets, correcting spelling errors and poems and …) is being done using a cumbersome Windows application. Data is stored in the main database as HTML formatted text including additional HTML tags and whenever needed there are utilities in the management application to strip these tags and produce plain text output. An ideal system for managing this data might have every utility ready online (using public, secure, and open web APIs) and data might be stored in a meaningful structured way without needing HTML tags inside them. Analysis and design of such an online application is a big investment in time and cost and needs a great endeavor.
  5. Some informative tags on poem format, topic, and … could be beneficial for users. There was an attempt to create a tagging system that gathered some data, but abandoned due to abuse or misuse and being vastly in need of moderation.
ganjoor.net is managed using this cumbersome Windows application!

Desktop Ganjoor
(& poem narrations)

Desktop Ganjoor is a free and open-source application initially meant to distribute the ganjoor.net database and make it available as a free and open-source database. This also allows offline access to the ganjoor.net database. The application runs on Windows initially hosted at sf.net and recently moved to github.com. It is written using C# (Windows Forms) and uses an SQLite database for accessing data.

Desktop Ganjoor

One of the major features of Desktop Ganjoor is its poem editor which allows entering new poems and new poet works into the application database. New data could be exported to files and distributed. This helped ganjoor.net to receive considerable contributions from users aiming to add new works to it by sending back works they’ve done using this editor. At the moment more than 20 poets at ganjoor.net are added due to users’ contributions using Desktop Ganjoor editor.

Desktop Ganjoor poem editor

The Desktop Ganjoor database can be updated by downloading new poets or re-downloading existing poets’ works (to have access to updated works of them). There are lots of other user contributions which had not been published at ganjoor.net but their works can be downloaded using Desktop Ganjoor (ganjoor.net is mainly focused on classic poets and also there are some poets belonging to older centuries whose work were not considered to be of enough quality to be published at ganjoor.net).

Desktop Ganjoor poem downloader

One of the major derivative applications of Desktop Ganjoor is another desktop application called Saaghar which is available for more operating systems (Linux and Max OS in addition to Windows). It benefits from its database compatibility with Desktop Ganjoor and can download the same set of new poets and works from the Desktop Ganjoor repository of poets.

Desktop Ganjoor can also download poem narrations (audio files synchronized with text) from ganjoor.net. It is a must-have utility for people interested in narrating poems for ganjoor.net because their narrations are published only if they synchronize their narrations with poem text using Desktop Ganjoor and send their synchronization file (XML) in addition to their recorded audio files (the process, conditions, and instructions in Persian are explain at this page which includes some video tutorials).

 Narration Synchronization in Desktop Ganjoor

The idea of publishing Desktop Ganjoor poem narrations as video clips in social networks resulted in another open-source utility which can mix poem text and audio narrations with background pictures and videos and additional image layers and can produce video clips from them.

Creating video clips from poem narrations

https://youtu.be/FM02wxitcZ8
Sample video clip created using Ganjoor utility from poem narration

Another project related to poem narrations as mentioned earlier is publishing contributed narrations at ganjoor.net which until now resulted in having more than 2400 narrations available, all synchronized with poem texts and all downloadable from a dedicated web site or using Desktop Ganjoor and directly playable at ganjoor.net. Additionally, a Telegram robot developed by Saaghar developer is able to deliver the same audio files to Telegram users.

ganjoor.net narration player

Ganjooroid: an open-source Android app for Ganjoor

Ganjooroid is one of the Desktop Ganjoor derivative works developed for Android users. Although it is incomplete and old (latest version backs to 2013) and does not feature even what it should be considered as minimum requirements for an acceptable app (lacking global search and bookmarking as examples), it is by now the only derivative work for Android which its database is fully compatible with Desktop Ganjoor and because of that, new poets and works from Ganjoor could be downloaded and added to it without delay or need for conversion. Other derivative apps developed by other developers including Sea of Poetry, Meikade (both open-source), and Pardis-e-Parsi for Android and GANJ-AVAR, Shekerestan, and Nooshin for iOS do not have this feature.

Ganjooroid: Ganjoor open-source Android application

Ganjooroid: downloadable collections

Ganjoor e-pub library

Ganjoor e-pub library is a compiled collection of e-books (in e-pub format) available at ganjoor.net in addition to some works only available in Desktop Ganjoor which is updated regularly.

This format is produced using an in-home developed converter -which might be included someday in Desktop Ganjoor as a plugin- which converts Desktop Ganjoor SQLite databases to e-pub format.

A NOKIA 5800 phone displaying Ganjoor e-pubs (using Dorian book reader for Symbian OS)

Music Tagging Project

Starting as a personal project wondering what are singer and specifications a piece of Iranian classical singing a poem found at ganjoor.net, Ganjoor music tagging project is an ongoing crowd-sourced project which users can suggest for any poem at ganjoor.net if it is used a song (using ganjoor.net top google position while searching for these poems). Music could be selected from three different sources (beeptunes.com, an Iranian music store, golha.co.uk an archive of the Golha radio program, and Apple iTunes) which their textual data partially is imported to the ganjoor.net database (none had contributed directly to these project and there is no monetizing involved in this project). The process involves suggestion and moderation phases and aggregated data is published at dedicated pages.

Aggregated data on the ganjoor.net music tagging project is displayed in these two pages: 1.Music grouped by singers 2. Music grouped by poets

OCR Verification Project

OCR is used to extend the ganjoor.net database and add new poets and their works to it. However, accuracy of Persian OCR applications is not acceptable and their results need human verification and correction. Ganjoor OCR verification project is a crowd-sourced project in which thousands of volunteers contributed to it anonymously. Up to now, works of four poets (containing almost 100k verses) have been added using the results of this project.

Ganjoor Codes

Ganjoor Codes was the first attempt to expose a web API for web site owners willing to show random poems at their web site. In addition to JavaScript embedded code block, it can produce JSON or XML output which can be useful for developing applications such as widgets for desktop software.

Website owners can embed blocks of codes inside their web pages to show random verses from ganjoor.net.

Ganjoor blog and social media pages

Since the beginning, Ganjoor Weblog has been the main news publishing channel for Ganjoor and in addition to the announcement of news on Ganjoor, it has been used to promote other related open source or free projects on Persian literature.

Ganjoor has been active on some social media networks such as Facebook and Telegram and has attracted a considerable amount of Iranian users despite the fact that those web sites and services are banned inside Iran by the government.

An introduction to Desktop Ganjoor in Jam-e-Jam newspaper, some other newspapers and magazines, and some TV shows had mentioned Ganjoor projects in their articles and programs including BBC Persian TV, Iranian  Amoozesh TV, etc.
image_pdfimage_print