RMuseum User login/logout/register/... login loginViewModel LoggedOnUserModel renew an expired session user session id LoggedOnUserModel options service constructor gets specified publish artifact item info (including images + attributes) get all published artifacts (including CoverImage info but not items info) get list of artifact statuses user can see get all artifacts visible by user (including CoverImage info but not items info) gets specified publish artifact info (including CoverImage + images) get specific artifact info with limited number of images get artifact images according to start and count params remove unpublished artifact having no notes and not bookmarked gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag gets specified publish artifact info (including CoverImage + images) gets specified publish artifact info (including CoverImage + images) gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag edit artifactt master record (user should have additional permissions artifact:awaiting and artifact:publish to change status of artifact) editing related collections such as images and attributed or complex properties such as CoverImage is ignored Set Artifact Cover Item Index get tag bundle by frindly url add new tag only name is processed get all tags edit tag editable fields are limited changes order of tags based on their position in artifacts up / down the other tag which its Order got replaced with the input id changes order of tags based on their position in artifact items up / down the other tag which its Order got replaced with the input id get tag value bundle by frindly url get tag value by frindly url add new tag value to artifact only name is processed edit artifact attribute value editable fields are limited apply on all same value tags remove tag from artifact add new tag value to item only name is processed edit item attribute value editable fields are limited apply on all same value tags remove tag from item changes order of tag values based on their position in an artifact up / down the other tag which its Order got replaced with the input id changes order of tag values based on their position in an item up / down the other tag which its Order got replaced with the input id update an artifact item info gets specified publish artifact item info (including images + attributes) Add new artifact (multipart/form-data) const data = new FormData(); data.append('name', 'تست'); data.append('description', ''); data.append('srcUrl', ''); data.append('picTitle', 'تست'); data.append('picDescription', ''); data.append('file', this.file); data.append('picSrcUrl', ''); import from external resources pdf/loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl/append/iiif 119/foldername golestan-baysonghori/artifact id keep alive (for import background service) true retry import due to a bug in loc json outputs some artifacts with more than 1000 pages were downloaded incompletely 123456 bookmark artifact bookmark item item bookmarks info fav artifact fav item artifact bookmarks info item bookmarks info user bookmarks user favorites add note for artifact add note for artifact item Edit User Notes a note can not be edited by a user other than its owner or another using having note:moderate permission only htmlContent is processed delete user notes 1. a note can not be deleted by a user other than its owner or another using having note:moderate permission 2. all notes which have refernce to deleting note (sent in reply to it) would be deleted irrelevant of their ownership list of notes deleted get private notes for artifact get private notes for artifact get private notes for artifact item get public notes for artifact item user public notes user public notes all users public notes report a public note id of saved report Get a list of reported notes delete a report for abuse in public user notes delete a reported user note (accept the complaint) suggest ganjoor link get suggested ganjoor links finds next unsynchronized suggested link with an aleady synched one from the artificat if exists, return value might be null or an array with length 1 or 2 (has paging-headers) has paging-headers return value might be null or an array with length 1 or 2 review suggested ganjoor link mark suggested ganjoor link as synchronized display ogn page remove ganjoor link toc / temporary one time api / to be removed get suggested pinterest links suggest pinterest link for ganjoor review suggested ganjoor pinterest link mark suggested pinterest ganjoor link as synchronized remove pinterest link start filling GanjoorLink table OriginalSource values start removing original images search artifacts search artifact items start setting an artifact items as a category poems text original source upload artifact to external server create images for ganjoor create images for ganjoor - offline add a new item to an artifact readonly mode constructor Artifact Service IUserPermissionChecker instance IMemoryCache Captcha service IAppUserService instance Configuration Audit Log Controller Base constructor user contribution daily stats poemcorrections sectioncorrections catcorrections suggestedsongs quoteds comments recitations museumlinks pinterestlinks poetspeclines poetpix usernotes datatype grouped by user poemcorrections sectioncorrections catcorrections suggestedsongs quoteds comments recitations museumlinks pinterestlinks poetspeclines poetpix usernotes summed up stats of data poemcorrections sectioncorrections catcorrections suggestedsongs quoteds comments recitations museumlinks pinterestlinks poetspeclines poetpix usernotes service IMemoryCache constructor returns all donations donation by id add donation + regenerate donations page update donation date and donorname + regenerate donations page delete donation + regenerate donations page returns all expenses expense by id add expense + regenerate donations page update expense date and description + regenerate donations page delete expense one time import regenerate donations page is account info settings is on or off (for deciding to regenerate donations page based on it) donation service queued ftp uploads process ftp queue reset ftp queue FTP Service constructor get published categories get all categories get category by id add a new faq category update an existing faq category delete a faq category get published pinned items get published category items get all category items get item by id get published item by id add a new faq item update an existing faq item delete a faq item FAQ Service constructor get list of published poets without their biography gets list of poets grouped by centuries (first one is the pinned ones) get list of all poets (including unpublished ones) with their bio poet by id poet by url update poet info (except for image) regenerate half centuries create new poet starts deleting poet job ` get poet image with png ext sample: hafez get poet image sample: hafez set poet image poet image cat by id cat by full url set category extra info only RImageId field is valid generate missing book covers list of books batch rename cat poems batch resulg category poems set category poems language tag set category poems language tag fill missing poem formats start assigning poem rhythms delete a category Start Finding Missing Rhythms generate category toc directly insert generated TOC start generating sub cats TOC regenerate TOCs page by url modify page modify poem => only these fields: NoIndex, RedirectFromFullUrl, MixedModeOrder clean cache by id delete page older versions of a page (modifications history except for current version) get old version of page page url by id get redirect url for a url get poem by id not implemented yet next/previous get poem verses by id get poem by url not implemented yet not implemented yet not implemented yet next/previous get poem recitations (PlainText/HtmlText are intentionally empty) get user upvoted recitations of a poem get poem images (PlainText/HtmlText are intentionally empty) get poem songs Get Poem Comments Get Section Related ones zero or less than it means all find poem section rhyming letters delete a poem section (section should not be linked to a poem verse of types other than paragraphs or comments) delete a poem send poem corrections delete unreviewed user corrections for a poem returns last unreviewed correction from the user for a poem get list of user suggested corrections get list of all suggested corrections userId effective corrections for poem get correction by id get next unreviewed correction moderate poem correction break a poem from a verse forward id of new poem suggest song for poem get next unreviewed song get song by id history of suggested songs by a user user suggested songs review song modify a published song delete a poem song by id directly insert a poem related song get a random poem from hafez get a random poem from a poet (c.ganjoor.net replacement), 0 means random poet, حافظ (2)، خیام (3)، ابوسعید ابوالخیر (26)، صائب (22)، سعدی (7)، باباطاهر (28)، مولوی (5)، اوحدی (19)، خواجو (20)، شهریار (35)، عراقی (21)، فروغی بسطامی (32)، سلمان ساوجی (40)، محتشم کاشانی (29)، امیرخسرو دهلوی (34)، سیف فرغانی (31)، عبید زاکانی (33)، هاتف اصفهانی (25) یا رهی معیری (41) get a single comment information (only published comments, replies are not included) get recent comments get logged on users recent comments get awaiting comments delete awaiting comment publish awaiting comment post new comment edit user's own comment link or unlink user's own comment to a coupletIndex couplet summary for linked comment delete user's own comment report a comment id of reported record delete a report (without deleting corresponding comment) get list of reported comments delete reported other users comment imports data from ganjoor SQLite database (form file) import category data from ganjoor SQLite database (form file) Apply corrections from sqlite export a poet to sqlite database start exporting all poets Get user public profile Get Similar Poems accroding to prosody and rhyme informations cannot be empty can be empty send 0 for all send 0 for all return value is not complete or valid for some parts, you should use only the valid parts! language tagged poem sections fa-IR, ar, ... 0 means all poets search returns ganjoor metre list ordered by rhythm find poem rhyme analysis poem to find its prosody information examine site pages for broken links examine comments for long links start filling poems couplet indices refill couplet indices for poem fill section couplet counts regenerate poem full titles to fix an old bug start finding rhymes separate verses in poem.PlainText with Environment.NewLine instead of SPACE if it is 0 it is ignored start building sitemap build tj.ganjoor.net site map regenerate stats page start updating mundex page switch bookmark if you send a negative number it means you are trying to bookmark a comment switch bookmark and return bookmark id ('0' for switching off a bookmark) if you send a negative number it means you are trying to bookmark a comment Bookmark couplet if it is not delete bookmark modify bookmark private note get poem user bookmarks (only Id, CoupletIndex and DateTime are valid in the output view model) is the poem couplet is bookmarked by user user bookmarks a phrase to be searched through user private notes start generating related sections info for wholepoem sections get next ganjoor poem probable metre get a list of ganjoor poems probable metres save ganjoor poem probable metre dismiss ganjoor poem probable metre Finding Category Poems Duplicates manually add a duplicate for a poems delete a duplicate list of category saved duplicated poems start removing category duplicates get couplet sections get all poem sections regenerate poem sections (dangerous: wipes out existing data) update related sections manually regenerate category related sections category id get a specific poem section start band couplets fix returns last unreviewed correction from the user for a section section id send a correction for a section moderate poem section correction delete unreviewed user corrections for a poem section get section correction by id get next unreviewed correction for poem sections get list of user suggested corrections get list of all suggested corrections effective corrections for section transfer poems and sections from a meter to another one and delete the source meter get poem tags ordered by LunarDateTotalNumber then by Id add poem geo tag update poem tag delete poem tag get a categoty poem tags synchronize https:://naskban.ir links (logs in and then out to naskban.ir using auth info) number of synched links mark naskban links for poems of a categiory and its children as human reviewed mark naskban links a text original for a category import naskban ganjoor matchings discover poet naskban paper sources delete poem related naskban images by url import paper sources from museum get paper sources for a catgeory get category poem related images extracting quoted poems regenerate related poems pages regenerate two poets similar page discover related poems get quoted poems for a poem two poems quoted records get quoted poems get quoted by id insert quoted update quoted delete quoted suggest new quote (for normal users) get list of user suggested corrections next unmoderated quoted poem moderate quoted poems digital source from tag tag category with source update digital sources stats add new page build word counts one time fixer for word counts new RowNmbrInCat fields one time fixer for category word count summries category word counts can be empty category words summary comparison of word counts for poets can be null or can be extracted from poetId is not necessary unless you mean a specific poet and do not provide catId CategoryWordCount for a specific term in a category tajik poets tajik page by url search tajik poems fill couplet summaries using open ai fill poem summaries using open ai geo tag poems using AI send cat corrections delete unreviewed user cat corrections for a poem returns last unreviewed correction from the user for a cat get list of user suggested cat corrections get list of all suggested cat corrections userId effective corrections for a cat get cat correction by id get next unreviewed cat correction moderate cat correction readonly mode Ganjoor Service IAppUserService instance for client IP resolution Image Service IMemoryCache aggressive cache Configuration constructor returns list of suggested photos for a poet poet id returns a single suggested photo return the next unpublished suggested line for poets add a suggestion for poets photos (send form) with these fields: poetId, title, description, srcUrl and an image attachment modify a suggestion for poets photos reject a suggestion for poets photos delete published suggested photo Poets Photos Service constructor returns list of suggested spec lines for a poet poet id returns specific suggested line for poets return the next unpublished suggested line for poets add a suggestion for poets spec lines modify a suggestion for poets spec lines reject a suggestion for poets spec lines delete published suggested spec line Ganjoor Service constructor get all locations get location by id add new location update an existing location readonly mode Configuration location service constructor returns image stream with image/jpeg MIME type norm/orig/thumb returns image stream with image/webp MIME type Rotate Image in 90 deg. multiplicants: 90, 180 or 270 replace an image Generate Cropped Image Based On ThumbnailCoordinates For Notes id of cropped image constructor Artifact Service golha collection programs collection id program tracks Catalogue Service constructor Notifications controller constructor get all numberings get numbering by id get all numberings related to a category category id get all numbering patterns for a couplet add new numbering update an existing numbering recount a numbering generate missing default numberings and start counting readonly mode Configuration numbering service constructor returns paginated published recitations (if poetId or catId is non-zero its ordered by poemId ascending if not it is ordered by publish date descending) if PageSize is -1 or is more than 1000 it resets to 1000 empty: no search term, non-empty: searches within AudioArtist, AudioTitle, poem.FullTitle and poem.PlainText simultaneously get published recitation by id creates an RSS file from recent published recitations Gets audio narrations, user must have recitation::moderate permission to be able to see all users narrations default: false, user must have recitation::moderate permission to be able to see all users narrations default: -1, unfiltered additional headers: paging-headers, audio-upload-enabled get the corresponding mp3 file for the narration it could be protected (Authorized), but I guess I would have problems with available client components support, so I preferred it to be anonymous, as it does not harm anybody I guess get the corresponding xml file contents (xml) for the narration it could be protected (Authorized), but I guess I would have problems with available client components support, so I preferred it to be anonymous, as it does not harm anybody I guess get the corresponding xml file for the recitation it could be protected (Authorized), but I guess I would have problems with available client components support, so I preferred it to be anonymous, as it does not harm anybody I guess Gets Verse Sync Information narration id updates narration metadata reviewstatus cannot be set to Approved or Rejected using this method, use moderate method instead only these set of fields are updatable: AudioTitle, AudioArtist, AudioArtistUrl, AudioSrc, AudioSrcUrl, ReviewStatus (Draft to Pending and vice versa and Approved/Rejected to Pending) only narrator or a moderator can update the narration Moderate pending narration (for moderating other users' recitations you also need recitation:moderate permission) Delete a recitation Get User Uploads default: false, user must have recitation::moderate permission to be able to see all users uploads additional headers: paging-headers, audio-upload-enabled upload, update, moderate and delete operations on recitations might temporarily become disabled, this method gets the current status remarks: the value of this flag is provided as a custom header called audio-upload-enabled in some common GET methods in order to reduce the need for a separate query Reciation Upload if you send true to replace parameter, if there is an existing recitation for the poem from the user with the same Audio Artist name corresponding mp3+xml files are replaced an no other changes is applied (no new post, preserving recitation position) Get User Profiles Get User Default Profile Add a narration profile Update a narration profile Delete a narration profile publishing tracker data Transfer Recitations Ownership (for recitations owned by current user) number of transfered items Synchronization Queue report an error in a recitation get errors reported for recitations reject a reported error for recitations and notify the reporter (and deletes the report) accepts a reported error for recitations, change status of the recitation to rejected and notify the reporter and recitation owner (and deletes the report) accepts a reported error for recitations, add mistake to approve the mistake and notify the reporter and recitation owner (and deletes the report) edit approved mistake of a recitation text remove approved mistake up vote a recitation revoke recitaion up vote revoke recitaion up vote get user upvoted recitations compute poem recitations order (no update) starts checking recitaions with missing files and add them to reported errors list job retry publish unpublished narrations Makes recitations of فریدون فرح‌اندوز first recitations get category top one recitations check if a category has any recitations rss for category top one recitations readonly mode constructor Artifact Service IUserPermissionChecker instance IAppUserService instance Configuration options constructor Generic Image Provider constructor Long Running Jobs constructor roles constructor add site banner (send form) with these fields: alt, url and an image attachment modify site banner delete site banner get all defined site banners get a random active site banner Ganjoor Service constructor get all languages get language by id add new language update an existing language get published poem translations get published poem translation in a specific language get all translations of a poem in a specific language send -1 for all languages last language user has contributed in its translation add translation for a poem (please specify verses VORder, Id is not processed) get all poem translations (for export utility) get translation by id readonly mode translation service Configuration constructor user visits tracking controller get user history add a user history track delete a user history track start or stop tracking user User Visits Tracking Service constructor Museum Database Context Picture Files Item Attributes Artifacts Items Import Jobs Tags User Bookmarks User Notes Ganjoor Links Pinterest Links Ganjoor Audio Files Upload Sessions Uploaded files User Recitation Profiles Ganjoor Poets Ganjoor Categories Ganjoor Poems Ganjoor Verses Narration Publishing Tracker Ganjoor Pages Ganjoor Metres singers music tracks golha tracks GolhaCollection GolhaPrograms PoemMusicTracks Ganjoor Comments Ganjoor Reported Comments Ganjoor Page Snapshots Ganjoor Site Bannaers Ganjoor Health Check Errors donations expenses donation expenditures poem corrections languages for translation poem translations ganjoor bookmarks ganjoor numbering schemas ganjoor verse numbers ganjoor half centuries ganjoor cities related poems to each poem (having same rhyme letters and prosody metre) Reported User Notes recitation error reports recitation user up votes recitation approved mistakes probable metres ganjoor user history track items (stored by his or her choice) suggested spec line for poets suggested pictures for poets faq categories faq items Temporary Model contianing duplicated poems information poem sections related sections to each section (having same rhyme letters and prosody metre) section correctons Updating related sections logs PoemGeoDateTags People tags Books (PDF Library) Authurs Multi Volume PDF Collections PDF Books PDF Pages PDF Sources Queued FTP Uploads PDF Ganjoor Links OCR Queue Items PDF Download Queue Related Poems discover quoted q items paper sources digital sources Category Word Counts Category Word Count Summaries tajik poets tajik cats tajik poems tajik verse tajik pages ganjoor cat corrections donation expenditures Id GanjoorDonation Id GanjoorDonation amount Ganjoor Donation (based on donation records saved in old html format of https://ganjoor.net/donate/) id date: (donation dates have been collected in different formats, so instead of keeping their dates in a DateTime field I ought to use a string field) record date donation amount (0 for old imported records) Amount Unit amount string (avoiding to parse different formats of old html text) donor name donor link (unused) remaining (it could be ignored later when our data has been normalized enough and be calculated using related data) expenditure desc record is imported from old HTML text of donation page Ganjoor Expenses Id date amount unit description donation expenitures Ganjoor Donation View Model id - null for POST api - record date donation amount (0 for old imported records) "تومان" is good, Amount Unit, if you send another Unit it would be consumed with EXPENSES of the same Unit, if it send EMPTY it wotld not be consumed! donor name null for POST api - date: (donation dates have been collected in different formats, so instead of keeping their dates in a DateTime field I ought to use a string field) null for POST api -amount string (avoiding to parse different formats of old html text) null for POST api -remaining (it could be ignored later when our data has been normalized enough and be calculated using related data) null for POST api -expenditure desc null for POST api - record is imported from old HTML text of donation page update date and description view model (donation + expense limited update api) date description Items or pictures status Id parent id Order in Collections Friendly Url Name Name In English Description Description In English Main Image Last Modified for caching purposes All Images Attributes Museum Master Item Id Friendly Url Publish Status Name Name In English Description Description In English Date/Time Last Modified for caching purposes Cover Item Index Cover Image Cover Image Id Parts of this item Item Count (for lists and queries) Attributes to view model Artifact Picture Files Title Title in English Description Description in English Publish status order in the collection it belongs to it نام فایل ذخیره شده با بالاترین کیفیت e0d7050a-7e30-4a2f-b181-0daa4a1e1068.jpg نام فایل ذخیره شده با بالاترین کیفیت fbe9cc8e-12fa-4cb9-8f09-bbf353333383.jpg عرض تصویر مناسب نمایش در صفحهٔ اختصاصی طول تصویر مناسب نمایش در صفحهٔ اختصاصی عرض تصویر با اندازه مناسب نمایش در صفحات لیستی طول تصویر با اندازه مناسب نمایش در صفحات لیستی source url Last Modified for caching purposes url to access this image from THE external host, contains '/norm/' which when you replace it with '/thumb/' you would have ExternalThumbnailImageUrl and if you replace it with '/orig/' you would have a url for ExternalOriginalSizeImageUrl which MIGHT NOT EXIST and end in a 404 error duplicated a picture record (Id is missing so you should store this to get a new Id) Item Attribute Id Order tag type Friendly Url Publish Status Name Name In English Plural Name Plural Name In English Value is normally changed globally نوع ویژگی عادی پیوند جستجو پیوند و جستجو متن چپ به راست بدون مقدار عنوان در فهرست IIIF لینک در نسخه - برای نمایش انجامه‌ها Attribute Value Id Friendly Url Publish Status Value Values In English link or .... new artifact view model RArtifactItemRecord with additional info main item info parent parent name parent image parent image external url parent item count empty or null means this is last item next image next image external url empty or null means this is first item prev image prev image external url Formatted Tags Museum Master Item View Model Id Friendly Url Publish Status Name Name In English Description Description In English Date/Time Last Modified for caching purposes Cover Item Index Cover Image Cover Image Id Parts of this item Item Count (for lists and queries) Attributes Tags Binary Tagged Items Titles of Items in Contents Artifact Tag (RTag with grouped related RTagValues of Artifact) Id Order tag type Friendly Url Publish Status Name Name In English Plural Name Plural Name In English Value is normally changed globally Values Tag Bundle View Model Item Title Item Friendly Url Items Count Item Image Id url to access the image from THE external host, contains '/norm/' which when you replace it with '/thumb/' you would have ExternalThumbnailImageUrl and if you replace it with '/orig/' you would have a url for ExternalOriginalSizeImageUrl which MIGHT NOT EXIST and end in a 404 error Tag Bundle View Model Id Friendly Url Name Plural Name Values Artifact Binary Tagged items Summation Tag Name Tag Friendly Url Item Count Title of an Item in Artifact Contents Title Order Level Item Friendly Url specific forms and permission artifact tag note view drafts edittag awaiting publish import moderate review suggested ganjoor links audio narrations ganjoor contents FAQ contents reorder review suggested songs add song from any source manage footer bannaers donations translations photos pdf ftp list of forms and their permissions ganjoor user public profile Id user image nick name biography web site LoginViewModel with app specfic properties keep user browsing history if he or she wants so Bookmark Type Private Bookmark Public Favorite Private Note (GanjoorComment) User Bookmarks Id User Id User Master Record Id Master Record Item Record Id Item Record DateTime Type User Note Id User Id Master Record Item Record DateTime Type User Note Queued FTP Upload id local file path remote file path delete file after upload queue date processing process date error FAQ Category Id title order description published category items FAQ Item id question excerpt answer pinned item order category id category item order in category content search hashtag 1 hashtag 2 hashtag 3 hashtag 4 published Audio Review Status All / Unfiltered (for queris) Draft pending for review approved Rejected after initial review Rejected due to errors Audio Synchronization Status (binary combination is acceptable) no changed new upload meta data should be updated sound files should be reuploaded (this means xml file is also needs to reuploaded) Item should be deleted Poem Narration Id Owner User Owner User Id Final data is actually exported to a MySQL database which this auto increment field is its key Ganjoor Post Id Caution: this could become a relation with newly added table but if we do this we lose the ability to drop and create without losing narration data This determines where an audio is displayed between a list of sounds related to a specfic poem Using this field content you would determine xml, mp3 and ogg file names combining this with + .ext would preduce relative path of sound files on our file server the full path would become [HOMEPath] + '/i/' + this value "a2" We had previously used different pathes because when a directory became overcrowded our connection time would increase unbearably due to IRAN internet problems, so it is sensible to store it per record and not as a global option value MP3 File Path MP3 url This is also a legacy field "/a2/x" XML Schema is defined based on Desktop Ganjoor (https://github.com/ganjoor/ganjoor) code, for more information take a look at this code: https://github.com/ganjoor/ganjoor/blob/master/ganjoor/Audio%20Support/PoemAudioListProcessor.cs XML url Audio Title Audio Artist Audio Artist Url Audio Source Audio Src Url Legacy Audio Guid Audio File CheckSum mp3 size in bytes ogg size in bytes Upload Date File Last Updated Review Date (Approve or Reject) MP3 File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted) XML File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted) AudioSyncStatus Review Status Reviewer user Reviewer user Review Message initial score for ordering recitations Recitation Type in sync with text Recitation approved mistake id recitation id recitation mistake number of verses affected couplet index Error Report for recitations Id Recitation Id Recitation Reason Text Reporter User Id Reporter User DateTime number of verses affected couplet index Narration Publishing Tracker Id Poem Narration Id Poem Narration Start Date XML File Copied MP3 File Copied First MySql DB Updated Second DB Updated Finished Finish Date Last Excecption recitation type normal recitations commantaries unfiltered recitation user up vote (the records would be deleted manually if the owner user account gets deleted) Id Recitation Id Recitation User Id, defining it this way causes no cascade relation User date time Narration Profiles for users Id User UserId Profile Name this would be appended to audio files names prefixed by a dash to make them unique and specfic to user filenames usually would look like {GanjoorPostId}-{FileSuffixWithoutDash}.{ext} for example 2200-hrm.xml artist name artist url audio src audio src url is default Moderation Result no moderation approve reject Public (no user specific data) for publish recitations Audio Id Ganjoor Post Id Poem Full Title Poem Full Url (without domain name) Audio Title Audio Artist Audio Artist Url Audio Source Audio Src Url Legacy Audio Guid Audio File CheckSum mp3 size in bytes Publish Date File Last Updated Mp3 Url Xml Text, xml file url is {WebServiceUrl.Url}/api/audio/file/{audio.Id}.xml Poem Plain Text Poem Html Text mistakes This determines where an audio is displayed between a list of sounds related to a specfic poem Recitation Type in sync with text upvoted by current user (filled at client) Post Error Report for recitations Id Recitation Id Reason Text recitation number of verses affected couplet index DateTime approved mistake view model id mistake number of verses affected couplet index Poem Narration Moderation View Model Moderation Result Rejection Message Recitation Ordering View Model recitation earlyness advatage initial score upvotes from users other than the owner approved mistaked total scores computed order recitation (it is null by default and you should fill it using a separate api call based on RecitationId) RecitationPublishingTracker View Model user email Poem Full Title Artist Name Operation In Progress XML File Copied MP3 File Copied First MySql DB Updated Second DB Updated Succeeded Error Exception Start Date Finish Date Verse Sync Range Verse Order Verse Text Audio Start in Milliseconds Poem Narration view model parameterless constructor for deserialization support constructor Id Owner User Final data is actually exported to a MySQL database which this auto increment field is its key Ganjoor Post Id Poem Full Title Poem Full Url (without domain name) This determines where an audio is displayed between a list of sounds related to a specfic poem Using this field content you would determine xml, mp3 and ogg file names combining this with + .ext would preduce relative path of sound files on our file server the full path would become [HOMEPath] + '/i/' + this value "a2" We had previously used different pathes because when a directory became overcrowded our connection time would increase unbearably due to IRAN internet problems, so it is sensible to store it per record and not as a global option value MP3 File Path MP3 url OGG File Path OGG url This is also a legacy field "/i/a2/x" XML Schema is defined based on Desktop Ganjoor (https://github.com/ganjoor/ganjoor) code, for more information take a look at this code: https://github.com/ganjoor/ganjoor/blob/master/ganjoor/Audio%20Support/PoemAudioListProcessor.cs XML url Audio Title Audio Artist Audio Artist Url Audio Source Audio Src Url Legacy Audio Guid Audio File CheckSum mp3 size in bytes ogg size in bytes Upload Date File Last Updated Review Date (Approve or Reject) MP3 File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted) XML File local path on Windows Server (if item is not rejected probably it is not valid and it is deleted) Value is one or a combination of Review Status Review Message Recitation Type in sync with text UserNarrationProfile View Model Id Do not fill it in POST api User Do not fill it in POST api UserId Do not fill it in POST api Profile Name this would be appended to audio files names prefixed by a dash to make them unique and specfic to user filenames usually would look like {GanjoorPostId}-{FileSuffixWithoutDash}.{ext} for example 2200-hrm.xml update [4/10/2021]: you can send this one empty artist name artist url audio src audio src url is default ganjoor link for artifacts and items Id Ganjoor Post Id ganjoor url ganjoor title Artifact Id artifact Artifact Item Id Artifact Item User Id who suggested the link Suggestion Date User who suggested the link User id who reviewed the link User who reviewed the link Review Date review result Synchronized with ganjoor display this image on poem page original source url link to original source is text original source Ganjoor Paper Source Id poet id cat id cat full title cat full url book type book full url naskban book id book title description is the text original source for the category? cover thumbnail image url match percent reviewed by a human position in sorting Link Type Custom Museum Pinterest Instagram Naskban PDFBook Ganjoor Link Id Ganjoor Post Id ganjoor url ganjoor title pdf book id page number User Id who suggested the link Suggestion Date User who suggested the link User id who reviewed the link User who reviewed the link Review Date review result Synchronized with ganjoor is the is the text original source? PDF Page Title external thumbnail image url suggested using machine computations pinterest link Id Ganjoor Post Id ganjoor url ganjoor title alt text link type pinterest url pinterest image url User Id who suggested the link (this would always be null for anonyous suggestions, kept it so that someday it would be used to integerate GanjoorLink into this class) Suggestion Date User who suggested the link User id who reviewed the link User who reviewed the link Review Date review result review description Artifact Id artifact Artifact Item Id Artifact Item Synchronized with ganjoor is the is the text original source? pdf book id page number naskban link id match percent reviewed by a human Review Result Awaiting (default) Approved Rejected Ganjoor Link View Model Id Ganjoor Post Id ganjoor url ganjoor title entity name entity friendly url entity image id review result Synchronized with ganjoor suggested by is text original source url to access this image from THE external host, contains '/norm/' which when you replace it with '/thumb/' you would have ExternalThumbnailImageUrl and if you replace it with '/orig/' you would have a url for ExternalOriginalSizeImageUrl which MIGHT NOT EXIST and end in a 404 error Link Suggestion Ganjoor Post Id ganjoor url ganjoor title Artifact Friendly Url Artifact Item Id Safe pinterest link view model Id Ganjoor Post Id ganjoor url ganjoor title alt text link type pinterest url pinterest image url Suggestion Date User id who reviewed the link Review Date review result review description Artifact Id Artifact Item Id Synchronized with ganjoor entity name entity friendly url entity image id pinterest / ganjoor link suggestion view model Ganjoor Post Id ganjoor url ganjoor title alt text link type pinterest url pinterest image url id CatId Word Count row number in category id CatId unique word count total word count correction review result id source url slug short name full name source category couplets count discover quoted q item id poet id poem id related poet id related poem id id poem id poet id poem order poet name poet image url poem full url poem full title excerpt other poems id poem id poem section index poet id order poet name poet image url poem full url poem full title excerpt target poem id target section index other poems Ganjoor Category id poet_id poet text parent_id parent url => slug sample: /hafez/ghazal TOC Style Category Type additional description or note html mode of additional description or note order when mixed with poems published category book name poet image user image id sum up sub categories geo locations category map name correct id category id category additional description or note html mode of additional description or note additional description or note html mode of additional description or note note date user Id user reviewed reviewdate review note reviewer id reviwer user id application order for category review result for description had any effect on category after moderation? effective in history hide the editors name page id Ganjoor Category Type half century id name order start end show in time line poets half century id order poet id poet Ganjoor Comment Id Ganjoor Poem Id Ganjoor Poem Id user id user author name (MySql imported field) author email (MySql imported field) author url (MySql imported field) author IP address (MySql imported field) comment date comment In Reply to Other Comment Reference Comment Id publish status related verse 1 Id, this is always null, because verses are removed and created on operations like editing and their Ids changed, so later I decided to rely on (PoemId + CoupletIndex) instead do not use related verse 2 Id, this is always null, because verses are removed and created on operations like editing and their Ids changed, so later I decided to rely on (PoemId + CoupletIndex) instead do not use couplet index Comment Abuse Report id comment id comment reason code for better grouping: offensive, bogus, other some explanotory text provided by reporter reported by id reported by user Temporary Model contianing duplicated poems information Id source category id (this category is about to be deleted and redirected) source poem id source poem destination poem id destination poem Geo Locations (Cities) referred by Ganjoor Metadata id name Latitude Longitude AI generated Ganjoor Page Health Check log id referer url broken link multiple targets for a page target url Language or system of writing for translating poems id name code native name is right to left description language from code Poem prosodic Metre Id Url Slug Rythm مفاعیلن مفاعیلن فعولن Name هزج مسدس محذوف Description Total Verse Count (its actually couplet count) Numbering Schema id name starting category id ending category ending category id ending category lines count verse count total poem couplets total paragraphs last counting date Ganjoor Page id Page Type Published page order title cat + parent cats title + title url => slug sample: /hafez/ghazal/sh1 Html Text parent id parent related poet id related poet related category id related category related poem id related poem second poet id second poet post date no index (search engines are blocked to index the page) if a page url is changed, store the old URL here to be redirected automatically snapshot of ganjoor pages to keep track of their changes id ganjoor page id ganjoor page id - this record is then modified by this user and made obsolete this record is then modified by this user and made obsolete record date a description of the modfication title url => slug Html Text Poem Rhythm rhyme letters source name source url slug old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....) old collection page url e.g /saadi/tayyebat Ganjoor Page Type None Poet Page Cat Page Poem Page Prosody Similars Hashieha Page Similar Poems of two poets Prosody and Statistics Ganjoor Poem id cat-id cat title cat + parent cats title + title url => slug sample: /hafez/ghazal/sh1 verses text verses text as html (ganjoor.net format) prosody information in fact this should be a many-to-many relationship, but our current dataset lacks such a relationship instance and because in fact it is actually this relationship should exists between a non-existant entity called block of poem I ignored this relationship to take care of it whenever the block entity would be added to the data structure metre rhyme letters source name source url slug old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....) old collection page url e.g /saadi/tayyebat order when mixed with categories published language (this is intended to affect html page encodings and not determine actuallly accents and ....) poem summary poem is claimed by multiple poets poem correction Correction Id poem Id poem modified verses title original title rhythm original rhythm note date user Id user reviewed reviewdate review note reviewer id reviwer user id application order for poem review result for title review result for rhythm had any effect on poem after moderation? effective in history rhythm 2 original rhythm 2 review result for rhythm 2 rhythm 3 original rhythm 3 review result for rhythm 3 rhythm 4 original rhythm 4 review result for rhythm 4 rhyme letters original rhyme letters rhyme letters review result language original language language review resukt suggested poem summary original poem summary summary review result hide the editors name poem format original poem format poem format review result poem format unknown غزل قصیده مثنوی قطعه رباعی دوبیتی غزل/قصیده/قطعه ترکیب بند تک بیت نیمایی ترکیب بند مسمط مثلث مستزاد رباعی مستزاد مسمط مربع مسمط مخمس سپید نیمایی یا سپید مسمط مسدس مسمط مثمن مسمط چهارپاره چند بندی بحر طویل Probable Prosody Information for a poem Id poem id poem metre section id Ganjoor Poem Section record id Poem Id Poem poet id might be different from GanjoorPoem.PoetId poet might be different from GanjoorPoem.PoetId use this field instead of Id for referencing to ease record deletion for verses, Index starts at 0, each poem should have at least one non-virtual part ordered by Index without break for lots of poems Number equals to Index + 1, but for rare ones such as a paragraph containing multi-band poem this could be different, 0 means no visible numbers section type how GanjoorPoemSection is linked to GanjoorVerse prosody information in fact this should be a many-to-many relationship, but our current dataset lacks such a relationship instance metre for non WholePoem sections, there must be a reference section for meters in order to make them updatable rhyme letters verses text verses text as html (ganjoor.net format) valid for whole poem sections first couplet index language, null means farsi couplets count top 6 related sections old metre id to see it needs refreshing related sections old rhyme letters to see it needs refreshing related sections modified excerpt poem section correction Correction Id section id section rhythm original rhythm review result for rhythm rhythm 2 original rhythm 2 review result for rhythm2 break from verse1 VOrder review result for break from verse1 VOrder break from verse2 VOrder review result for break from verse2 VOrder break from verse3 VOrder review result for break from verse3 VOrder break from verse4 VOrder review result for break from verse4 VOrder note date user Id user reviewed reviewdate review note reviewer id reviwer user id application order for poem had any effect on poem after moderation? effective in history break from verse5 VOrder review result for break from verse5 VOrder break from verse6 VOrder review result for break from verse6 VOrder break from verse7 VOrder review result for break from verse7 VOrder break from verse8 VOrder review result for break from verse8 VOrder break from verse9 VOrder review result for break from verse9 VOrder break from verse10 VOrder review result for break from verse10 VOrder rhyme letters original rhyme letters rhyme letters review result language original language language review result poem format original poem format poem format review result hide the editors name poem translation id language id language poem id poem title translation verses published user id user date/time comments Ganjoor Poet cat_id field is removed, it is retrievable by querying where == and == null id name description short name poet image user image id published on website birth year in lunar hijri death year in lunar hijri Home page pin order (zero means not pinned) BirthYearInLHijri, for some poets it is only indicator of their century of birth and should not be relied as their valid birth date DeathYearInLHijri, for some poets it is only indicator of their century of death and should not be relied as their valid death date birth location id birth location death location id death location Ganjoor Poet Picture id Poet Id Poet order picture id picture suggested by id suggested by published selected publication date Ganjoor Poet Specification Id Poet Id Poet order Contents published suggested by id suggested by publication date related poem to a poem record id poem id poem related poem id (this could be a poem we do not have it available) this poem is written and should be displayed prior to the related poem if the related poet poem has multiple poems related to this poem, which one is chosen to be shown at main poems pages? this sort order can be used to pin a record on top related poem peot death date in hijri (used for sorting) related poem poet name related poem poet url related poem poet image full title full url couplet 1 verse 1 is main part couplet 1 verse 2 is main part couplet 1 index related couplet 1 verse 1 is main part related couplet 1 verse 2 is main part related couplet 1 index description published (approved) when a poem contains more than one quoted couplet from another one this should be more than 1 poems (same poem) are claimed by both poets poet id (redundant for simplifying queries) related poet id related indirectly Suggested by user id Suggested by user suggestion date review date reviewer id reviwer user id instead of deleting rejected quotes keep them for user (not published + not rejected means not reviewed) review note a person refered by a poem id name description wikipedia url birth year in lunar hijri death year in lunar hijri BirthYearInLHijri, for some poets it is only indicator of their century of birth and should not be relied as their valid birth date DeathYearInLHijri, for some poets it is only indicator of their century of death and should not be relied as their valid death date birth location id birth location death location id death location AI generated ganjoor.net site banner id banner image image id alternate text target url active id tajik title additional description or note in Tajik poet_id poet id verses text as html (ganjoor.net format) id cat id title verses text sample: /hafez/ghazal/sh1 cat + parent cats title + title cat id tajik nick name additional description or note in Tajik birth year in lunar hijri id poem_id vorder tajik text ganjoor TOC options Ganjoor Bookmark Id User Id User Poem Id Poem couplet index Verse Id, this is always null, because verses are removed and created on operations like editing and their Ids changed, so later I decided to rely on (PoemId + CoupletIndex) instead Verse 2 Id, this is always null, because verses are removed and created on operations like editing and their Ids changed, so later I decided to rely on (PoemId + CoupletIndex) instead DateTime private note for bookmark ganjoor user history track item (stored by his or her choice) id user id (nullable to prevent a db cascade relation) user poem id poem date/time Ganjoor Verse global id, auto generated (missing in Ganjoor Desktop database) poem_id poem vorder position text couplet index GanjoorPoemSection index second GanjoorPoemSection index third GanjoorPoemSection index forth GanjoorPoemSection index language id language couplet summary id Numbering schema Id Numbering schema Poem Id (no relation is defined) verse couplet index (do not add related verses here) line number is poem verse or paragraph number based on type of line: is it a poem verse or a paragraph Verse translation id verse id verse translated text Verse Vorder / Text record id verse order text original text review result note couplet indexs verse position original verse position verse position result mark for delete mark for delete result new verse, if it is a new verse you should insert it in VORder position and shift verses previously positioned at VORder and after that new verse result language id original language id language review result suggested couplet summary original couplet summary summary review result Geo + date tags for poems Id Poem Id Poem couplet index location geo location Hijri Ghamari year Hijri Ghamari month Hijri Ghamari day sample: 14440101, would be used in sorting events verified date ignore in category related person id related person AI generated poem related track id poem id poem track type artist name artist url album name album url track name track url GanjoorTrack Id singer singer id GanjoorTrack GolhaTrack Id GolhaTrack description approved Suggested by user id Suggested by user approval user would be extractable from AuditLogs approval date broken link instead of deleting rejected songs keep track of them rejection cause Song Order poem music track type all https://beeptunes.com/or https://khosousi.com http://www.golha.co.uk itunes.com https://open.spotify.com/ poem section type sections like paragraphs or poems within paragraphs of text bands of a multi-band poem band couplets (virtual) some are virtual because they contain verse from different parts of poems (like verses from all band couplets) couplets (virtual) for Masnavi Updating related sections logs id meter id rhyme letters date/time how GanjoorPoemSection is linked to GanjoorVerse معنی فیلد position در جدول verse با توجه به مقادیر این ساختار داده مشخص می شود. imported from Desktop Ganjoor source First Verse in a normal Beyt Second Verse in a normal Beyt First Verse or the only one in a Band Beyt Second Verse in a Band Beyt Free form verse Comment Non-poem paragraph Verse Position strings Verse Position Text default verse positions get verse position text Ganjoor Batch Naming Model Start with (not including required spaces) شمارهٔ remove previous pattern from start until any numbers remove set of characters other than spaces from beginning and end .- simulate naming correct id category id additional description or note html mode of additional description or note additional description or note html mode of additional description or note note date user Id nickname reviewed reviewdate review note review result for description hide the editors name page id cat view model id text url => slug full url TOC Style Category Type additional description or note html mode of additional description or note order when mixed with poems published category book name user image id sum up sub categories geo locations category map name Next Category without Ancestors/Children/Poems info Previous Category without Ancestors/Children/Poems info ancestors cat children poems paper sources new image GanjoorCentury View Model id name order start end show in time line poets GanjoorCommentAbuseReport View Model id reason code for better grouping: offensive, bogus, other some explanotory text provided by reporter comment Id author name (MySql imported field) author url (MySql imported field) comment date comment status User Id in reply to poem this can be used by clients verse1 id verse2 id couplet index couplet summary new comment model Poem Id comment in reply to couplet index - send null for unrelated to a couplet comment GanjoorComment Summary View Model Id author name (MySql imported field) author url (MySql imported field) comment date comment status in reply to User Id replies this can be used by clients couplet index couplet summary for client Ganjoor Couplet Number View Model name number is poem verse or paragraph number based on type of line: is it a poem verse or a paragraph total couplets total poem couplets total paragraphs Ganjoor Duplicate View Model Id Source Poem Id Source Poem cat + parent cats title + title Source Poem sample: /hafez/ghazal/sh1 Source Poem First Verse destination poem id destination Poem cat + parent cats title + title destination Poem sample: /hafez/ghazal/sh1 destination poem first verse Rhyme Analysis Result rhyme the verse analysis stopped at modify page view model title url => slug Html Text Poem Rhythm Second Poem Rhythm Third Poem Rhythm rhyme letters source name source url slug old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....) old collection page url e.g /saadi/tayyebat no index (search engines are blocked to index the page) if a page url is changed, store the old URL here to be redirected automatically order when mixed with categories published language (this is intended to affect html page encodings and not determine actuallly accents and ....) TOC Style Category Type additional description or note html mode of additional description or note a description of the modfication Ganjoor Page View Model id Ganjoor Page Type title cat + parent cats title + title url => slug sample: /hafez/ghazal/sh1 Html Text no index (search engines are blocked to index the page) if a page url is changed, store the old URL here to be redirected automatically Poet or Cat Poem Second Poet next normal page previous normal page GanjoorPageSnapshot summary view model id record date a description of the modfication Ganjoor Page: Summary View Model id title FullUrl a more complete GanjoorPoem View Model Id title cat + parent cats title + title url => slug sample: /hafez/ghazal/sh1 verses text verses text as html (ganjoor.net format) source name source url slug old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....) old collection page url e.g /saadi/tayyebat order when mixed with categories published language poem summary category Next Poem Previous Poem verses Recitations Images Songs Comments poem sections geo/date tags top 6 quoted poems section index poem is claimed by multiple poets couplets count poem correction view model Correction Id poem Id modified verses title original title rhythm original rhythm note date user Id nickname reviewed reviewdate review note review result for title review result for rhythm rhythm 2 original rhythm 2 review result for rhythm 2 rhythm 3 original rhythm 3 review result for rhythm 3 rhythm 4 original rhythm 4 review result for rhythm 4 rhyme letters original rhyme letters rhyme letters review result language original language language review resukt suggested poem summary original poem summary summary review result poem format original poem format poem format review result hide the editors name poem section correction view model Correction Id section id rhythm original rhythm review result for rhythm rhythm 2 original rhythm 2 review result for rhythm2 break from verse1 VOrder review result for break from verse1 VOrder break from verse2 VOrder review result for break from verse2 VOrder break from verse3 VOrder review result for break from verse3 VOrder break from verse4 VOrder review result for break from verse3 VOrder break from verse5 VOrder review result for break from verse5 VOrder break from verse6 VOrder review result for break from verse6 VOrder break from verse7 VOrder review result for break from verse7 VOrder break from verse8 VOrder review result for break from verse8 VOrder break from verse9 VOrder review result for break from verse9 VOrder break from verse10 VOrder review result for break from verse10 VOrder note date user Id nickname reviewed reviewdate review note poem Id poem Id rhyme letters original rhyme letters rhyme letters review result language original language language review resukt poem format original poem format poem format review result hide the editors name poem summary id title url => slug excerpt text whole poem sections poem translation view model id language poem id translated title published comments or description might be empty in anonymous apis contributer name - might be empty in anonymous apis datetime translated verses to string Poet Complete Information poet info poet cat info id Poet Id order Title Description image url suggested by id published selected rejection cause external normal size image url Ganjoor Poet Specification view model Id Poet Id order Contents published suggested by id rejection cause Ganjoor Poet id name description urlslug root cat id short name published on website image url birth year in lunar hijri BirthYearInLHijri, for some poets it is only indicator of their century of birth and should not be relied as their valid birth date death year in lunar hijri DeathYearInLHijri, for some poets it is only indicator of their century of death and should not be relied as their valid death date Home page pin order (zero means not pinned) birth place birth place latitude birth place longitude death place death place latitude death place longitude report comment view model comment id reason code for better grouping: offensive, bogus, other some explanotory text provided by reporter moderation view model record id approved review note quoted poem view model constructor copy constructor record id poem id poem related poem id (this could be a poem we do not have it available) this poem is written and should be displayed prior to the related poem if the related poet poem has multiple poems related to this poem, which one is chosen to be shown at main poems pages? this sort order can be used to pin a record on top related poem peot death date in hijri (used for sorting) related poem poet name related poem poet url related poem poet image full title full url couplet 1 verse 1 is main part couplet 1 verse 2 is main part couplet 1 index related couplet 1 verse 1 is main part related couplet 1 verse 2 is main part related couplet 1 index description published (approved) when a poem contains more than one quoted couplet from another one this should be more than 1 poems (same poem) are claimed by both poets poet id (redundant for simplifying queries) related poet id related indirectly approved review note suggested by Ganjoor Verse View Model global id, auto generated (missing in Ganjoor Desktop database) vorder position text GanjoorSiteBanner PUT ViewModel alternate text target url active Ganjoor Site Banner View Model id image url alternate text target url active Id poet name poet image url poem full title sample: /hafez/ghazal/sh1 couplet index verse1 text verse2 text DateTime private note for bookmark verse translation view mode verse translated text Ganjoor Verse View Model global id, auto generated (missing in Ganjoor Desktop database) vorder couplet index position GanjoorPoemSection index second GanjoorPoemSection index third GanjoorPoemSection index forth GanjoorPoemSection index text language id couplet summary Ganjoor Poem related music track model id poem id a track type artist name artist url album name album url track name track url description broken link golha id approved instead of deleting rejected songs keep track of them rejection cause Suggested by user id (only filled for review) Suggested by user name (only filled for review) to string Related Image Type musueum.ganjoor.net link external link Poem Related Images link id Image Order poem related image type thumbnail image url target page url alternate text is text original source poem id poem url poem full title poem + verse order poem id verse order user contributions user id poem corrections section corrections cat edit corrections suggested songs quoted poems comments recitations museum links pinterest links poet spec links poet pictures public user notes history of suggested songs by a user approved rejected grouped by date / user date (day date or month or ...) number of clicks user id user name date (day date or month or ...) number of clicks grouped by user view model number of clicks user id user name summed up view model Number of days Total number Total Number of UserIds Import Job Job Type music catalogue album id singer id singer name url tracks music catalogue singer id name url poet image user image id albums music catalogue track id album id album name url blocked from suggestion reason track is purely music and no singing is done through it http://www.golha.co.uk offline catalogue id name url programs Golha Program id GolhaCollection Id GolhaCollection title program order url mp3 tracks id GolhaProgram Id GolhaProgram track no timing title singer id singer blocked from suggestion reason track is purely music and no singing is done through it Golha Program View Model id title program order url mp3 Golha Track View Model id track no timing title Note Type private public User Note Id User Id User Master Record Id Master Record Item Record Id Item Record DateTime Is Updated by User Last Modified Private / Public content In Reply to Other Note Reference Note Id Status (Public) User Notes Abuse Report Id Note Id Note some explanotory text provided by reporter reporting user Id (nullable to allow deleting users and keeping this part of data if needed) reporting user user note report view model note Id reason text New User Note For Artifact Artifact / Item Id Note Type Contents Reference Note Id (Public) User Notes Abuse Report View Model Id some explanotory text provided by reporter note Safe User Note View Model Id User Id User Name (FirstName + SurName) user image id DateTime Is Updated by User Last Modified Private / Public content Reference Note Id Status Related Entity (Artifact/Item) Name It is set only in cummulative api calls Realated entity Image Id It is set only in cummulative api calls Realated entity Friendly Url (for artifact items it would be ParentFiendlyUrl/ItemFriendlyUrl ) It is set only in cummulative api calls Related entity external normal size image url Related Item Artifact Name It is set only in cummulative api calls child notes It os set only in certain cases prepare note datetime Author Id Name Name in original language bio Cover Image Cover Image Id external image url Last Modified Author Role Id Author Role a book might have different PDFBook or MultiVolumePDFCollection instances Id book name description Cover Image Cover Image Id external cover image url Last Modified Authors Attributes pdf books Book Script Type Printed Manuscript id cat id cat full title cat full url start from this poem book id book title page number threshold queue time started start time last update updated by user current poem id progress current page number finished finish time Multi Volume Book Id book id book Name Description volume count pdf books OCR Queued Item id PDF Book Id PDF Book Id book id book Publish Status Title secondary or complementary title authors (descriptive) ISBN description language is translation translators (descriptive) title in original language publisher (descriptive) publishing date (descriptive) publishing location (descriptive) publishing number (تیراژ) claimed page count MultiVolumePDFCollection Id MultiVolumePDFCollection Volume Order Date/Time Last Modified for caching purposes PDF File external url for PDF File Cover Image Cover Image Id external cover image url original source name original source url original file url contributers Pages page count Attributes file check sum original file name storage folder name Book Script Type PDF Source Id PDF Source tags view models Binary Tagged Items Titles of Items in Contents ocred ocr date time book text PDF Page Id PDF Book Id page number Thumbnail Image Thumbnail Image Id external thumbnail image url description Last Modified Attributes full resolution image width full resolution image height ocred ocr date time page text pdf book tags view models PDF Source (Web Sites) id Name Url Description a fake PDFBook for scheduling downloads Id Download Order Title authors (descriptive) description language is translation translators (descriptive) original source name original source url original file url processed process result result id Author Role Count Role Counts New PDFBook view model PDF File Path skip uploading to external FTP Site book id Title secondary or complementary title authors (descriptive) ISBN description language is translation translators (descriptive) title in original language publisher (descriptive) publishing date (descriptive) publishing location (descriptive) publishing number (تیراژ) claimed page count MultiVolumePDFCollection Id Volume Order original source name original source url original file url writer id writer 2 id writer 3 id writer 4 id translator id translator 2 id translator 3 id translator 4 id collector id (مصحح) collector 2 id (مصحح) Other contributing role other contributing role Other contributing role 2 other contributing role 2 PDF Source Id Book Script Type PDFBook Ganjoor Link Suggestion Ganjoor Post Id ganjoor url ganjoor title pdf book id page number is this the text original source? PDF Page OCR Data View Model Id full resolution image width full resolution image height ocred page text Upload Session Id Session Type User User Id Upload Start Time Upload End Time Process Start Time Process End Time Process Progress Status Uploaded Files Upload Session File Id Upload Session Id ContentDisposition ContentType FileName Length Name File Path File check sum for mp3 files Process Result Process Result Message Upload Session Process Status Not Started Started Finished Upload Session Types Generic New Audio New or replace audio Uploaded Item View Model filename process result process result message Upload End Time Upload User Name Process Start Time progress progress process end time Artifact Item Service get all artifacts (including CoverImage info but not items or attributes info) get tagged publish artifacts (including CoverImage info but not items or tagibutes info) gets specified artifact info (including CoverImage + images + attributes) get specific artifact info with limited number of images get artifact images according to start and count params gets specified artifact info (including CoverImage + images + tagibutes) edit master record Set Artifact Cover Item Index get tag bundle by frindly url get max lastmodified artifact date for caching purposes get all tags get tag bu friendly url add tag edit tag changes order of tags based on their position in artifacts true => up, false => down the other tag which its Order has been changed changes order of tags based on their position in artifact items true => up, false => down the other tag which its Order has been changed add artifact tag value changes order of tag values based on their position in an artifact true => up, false => down the other tag value which its Order has been changed changes order of tag values based on their position in an item true => up, false => down the other tag value which its Order has been changed get tag value bundle by frindly url get tag value by frindly url edit artifact tagibute value apply on all same value tags remove artfiact tag value add item tag value edit item tag value apply on all same value tags remove item tag value gets specified artifact item info (including images + attributes) update artifact item add new artifact import from external resources loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl 119 golestan-baysonghori reschedule jobs due to a bug in loc json outputs some artifacts with more than 1000 pages were downloaded incompletely import jobs Bookmark Artifact get artifact user bookmarks Bookmark Item get item user bookmarks update bookmark note delete user bookmark /// get user bookmarks (artifacts and items) Add Note to Artifact Add Note to Artifact Item Edit Note sending null here means user is a moderator delete note sending null here means user is a moderator or the note is being deleted in a recursive delete of referenced notes list of notes deleted get artifact private user notes get artifact public user notes get item artifact private user notes get item artifact item public user notes Get All USer Notes Get All Public Notes suggest ganjoor link get Unsynchronized image count finds what the method name suggests get suggested ganjoor links Review Suggested Link remove ganjoor link Temporary api Synchronize suggested link get suggested pinterest links suggest pinterest link Review Suggested Pinterest Link remove pinterest link Synchronize suggested pinterest link an incomplete prototype for removing artifacts start filling GanjoorLink table OriginalSource values report a public note id of report record Get a list of reported notes delete a report for abuse in public user notes delete a reported user note (accept the complaint) start removing original images Search Artifacts search artifact items start setting an artifact items as text original source upload artifact to external server create images for ganjoor create images for ganjoor - offline add item to an artifact ai contributions stats service user contributions approved edits daily approved edits grouped by user summed up stats of approved poem corrections approved section edits daily approved section edits grouped by user summed up stats of approved section corrections approved cat edits daily approved cat edits grouped by user summed up stats of approved cat corrections approved related songs daily approved related songs grouped by user summed up stats of approved related songs approved quoted poems daily approved quoted poems grouped by user summed up stats of approved quoted poems approved comments daily approved comments grouped by user summed up stats of approved comments approved recitations daily approved recitations grouped by user summed up stats of approved recitations approved museum links daily approved museum links grouped by user summed up stats of approved museum links approved pinterest links daily approved pinterest links grouped by user summed up stats of approved pinterest links approved poet spec lines daily approved poet spec lines grouped by user summed up stats of approved poet spec lines approved poet photos daily approved poet photos grouped by user summed up stats of approved poet photos approved user notes approved user notes grouped by user summed up stats of approved user notes donation service new donation delete donation update donation new expense update expense delete expense parse html of https://ganjoor.net/donate/ and fill the records regenerate donations page returns all donations get donation by id returns all expenses get expense by id Show Donating Information (temporary switch off/on) faq service interface get categories get category by id add a new faq category update an existing faq category delete a faq category get pinned items get category items get item by id add a new faq item update an existing faq item delete a faq item numbering service add numbering update an existing numbering (only name) delete numbering get numbering by id get all numberings get numberings for a cat get numberings for direct subcats of parent cat get all numbering patterns for a couplet start counting generate missing default numberings and start counting Ganjoor Poems Content Privider Service Get List of poets get poet by id get poet by url poet image id by url get cat by id get cat by url Update category extra info get list of books generate missing book covers get page by url get page url by id get redirect url for a url delete page delete a poem Get Poem By Id get poem verses Get Poem By Url get poem recitations (PlainText/HtmlText are intentionally empty) get poem sections get user up votes for the recitations of a poem get poem images by id (some fields are intentionally field with blank or null), EntityImageId : the most important data field, image url is {WebServiceUrl.Url}/api/images/thumb/{EntityImageId}.jpg or {WebServiceUrl.Url}/api/images/norm/{EntityImageId}.jpg get poem related songs get poem comments get a single comment information (replies are not included) get a section related sections poem id section index if sent 0 or less returns all items send poem corrections last unreviewed user correction for a poem user suggested songs get user or all corrections if sent empty returns all corrections effective corrections for poem get correction by id delete unreviewed user corrections for a poem get next unreviewed correction unreview correction count moderate poem correction break a poem from a verse forward update related sections next unreviewed track get track of user song suggestions suggest song get unreviewed count review song direct insert song get song by id modify a published song delete poem song by id new comment update user's own comment link or unlink user's own comment to a coupletIndex if null then unlinks couplet summary delete a reported comment delete user own comment delete anybody's comment publish awaiting comment get recent comments Guid.Empty report a comment id of report record delete a report Get list of reported comments Get Similar Poems accroding to prosody and rhyme informations language tagged poem sections modify page modify poem => only these fields: NoIndex, RedirectFromFullUrl, MixedModeOrder modify poet create new poet delete poet chaneg poet image returns metre list (ordered by Rhythm) get a random poem (2 = from hafez) import from sqlite import a catgory from sqlite Apply corrections from sqlite export to sqlite start generating gdb files examine site pages for broken links examine comments for long links start filling poems couplet indices refill couplet indices fill section couplets count regenerate poem full titles to fix an old bug start finding rhymes for single couplets separate verses in poem.PlainText with Environment.NewLine instead of SPACE clean cache for paeg by id clean cache for page by url clean cache for page by comment page modifications history get old version Search batch rename re sulg cat poems find poem rhyme find poem section rhyme find category poem rhymes Start finding missing rhthms find poem rhythm find category poem rhymes generate category TOC directly insert generated TOC start generating sub cats TOC build sitemap build tj.ganjoor.net site map start updating stats page start updating mundex page Switch Bookmark for couplet Bookmark couplet if it is not delete user bookmark /// to make sure a user can not delete another user's bookmarks modify bookmark private note to make sure a user can not modify another user's bookmarks get user ganjoor bookmarks (only Id, CoupletIndex and DateTime are valid) get verse bookmarks get user bookmarks (artifacts and items) regenerate half centuries get centuries with published poets start generating related sections info get next ganjoor section probable metre get a list of ganjoor poem sections probable metres save ganjoor poem probable metre problable metre id return list of suggested spec lines returns specfic suggested line for poet next unpublished suggested line for poets npublished suggested lines count for poets add a suggestion for poets spec lines modify a suggestion for poets spec lines reject a suggestion for poets spec lines delete published suggested spec line delete a category set category poems language tag set category poem format tag for poems consisting of a single whole poem section regenerate TOCs Finding Category Poems Duplicates list of category saved duplicated poems manually add a duplicate for a poems delete duplicate start removing category duplicates sectionizing poems start band couplets fix get couplet sections get all poem sections regenerate poem sections (dangerous: wipes out existing data) get a specific poem section delete a poem section last unreviewed user correction for a section get user section corrections if sent empty returns all corrections send a correction for a section moderate poem section correction delete unreviewed user corrections for a poem section get next unreviewed correction for a poem section unreviewed poem section correction count get section correction by id effective corrections for section regenerate category related sections transfer poems and sections from a meter to another one add poem geo tag update poem tag delete poem tag get poem tags ordered by LunarDateTotalNumber then by Id get a categoty poem tags synchronize naskban links number of synched items justify naskban links import naskban ganjoor matchings import paper sources from museum discover poet naskban paper sources category paper sources mark naskban links as human reviewed mark naskban links a text original for a category delete poem related naskban images by url get category poem related images filling poem formats extracting quoted poems regenerate related poems pages generate related poems page discover related poems get quoted poems for a poem two poems quoted records get quoted poems get quoted by id insert quoted poem update quoted poem delete quoted by id suggest new quote get user or all quoted suggestions if sent empty returns all suggestions next unmoderated quoted poem unmoderated quoted poems count moderate quoted poems digital source from tag tag with sources update digital sources stats add page build word counts fill CategoryWordCounts.RowNmbrInCat fill CategoryWordCountSummaries category words count category words summary comparison of word counts for poets get CategoryWordCount for a specific term in a category tajik import from sqlite tajik poets tajik page by url search tajik poems fill couplet summaries using open ai fill poem summaries using open ai geo tag poems using AI send cat correction delete unreviewed user corrections for a cat last unreviewed user correction for a cat get user or all corrections for categories if sent empty returns all corrections cat effectinve corrections get cat correction by id get next unreviewed cat correction unreviewed cat corrections count moderate cat correction translation service implementation add language update an existing language delete language get langauge by id get all languages add or update poem translation get translation -1 all languages get last language the user contributed to its translation get translation by id get all poem translations (for export utility) geo location service add new location update an existing location delete location get location by id get all locations IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation IArtifactService implementation start setting an artifact items as text original source start filling GanjoorLink table OriginalSource values import from http://www.qajarwomen.org 43117279 atame http://www.qajarwomen.org/fa/items/1018A10.html from http://www.bl.uk grenville_xli_f001r from http://cudl.lib.cam.ac.uk MS-RAS-00258 import from https://viewer.cbl.ie 119 golestan-baysonghori from https://curiosity.lib.harvard.edu example: https://curiosity.lib.harvard.edu/islamic-heritage-project/catalog/40-990114893240203941 from https://catalog.hathitrust.org 006814127 from IIIF manifest example: https://viewer.cbl.ie/viewer/api/v1/records/Per_268/manifest/ or https://iiif.bodleian.ox.ac.uk/iiif/manifest/bcbfd832-086b-4874-80f8-87500e0de704.json from https://www.loc.gov m084 boostan1207 plmp due to a bug in loc json outputs some artifacts with more than 1000 pages were downloaded incompletely from http://www.library.upenn.edu/ MEDREN_9949222153503681 import from server folder C:\Tools\batches\florence shahname-florence https://t.me/dr_khatibi_abolfazl/888 start appending from server folder from http://www.thedigitalwalters.org/01_ACCESS_WALTERS_MANUSCRIPTS.html W619 golestan-walters-01 start removing original images upload artifact to external server from http://pudl.princeton.edu/ dj52w476m get all artifacts (including CoverImage info but not items or tagibutes info) get tagged publish artifacts (including CoverImage info but not items or tagibutes info) gets specified artifact info (including CoverImage + images + tagibutes) get specific artifact info with limited number of images get artifact images according to start and count params gets specified artifact info (including CoverImage + images + tagibutes) edit master record Set Artifact Cover Item Index get tag bundle by frindly url get max lastmodified artifact date for caching purposes get all tags get tag bu friendly url get tag value by frindly url add tag edit tag changes LastModified field value for tagged artifacts and items changes order of tags based on their position in artifacts true => up, false => down the other tag which its Order has been changed changes order of tags based on their position in artifact items true => up, false => down the other tag which its Order has been changed get tag value bundle by frindly url add artifact tag value remove artfiact tag value edit artifact tag value apply on all same value tags add item tag value remove item tag value edit item tagibute value apply on all same value tags changes order of tag values based on their position in an artifact true => up, false => down the other tag value which its Order has been changed changes order of tag values based on their position in an item true => up, false => down the other tag value which its Order has been changed gets specified artifact item info (including images + tagibutes) update artifact item add new artifact import from external resources pdf/loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl/append/iiif 119/foldername golestan-baysonghori/artifact id upload artifact to external server upload artifact to external server reschedule jobs an incomplete prototype for removing artifacts import jobs Bookmark Artifact get artifact user bookmarks Bookmark Item get item user bookmarks update bookmark note delete user bookmark /// get user bookmarks (artifacts and items) Add Note to Artifact Add Note to Artifact Item Edit Note delete note sending null here means user is a moderator or the note is being deleted in a recursive delete of referenced notes list of notes deleted get artifact private user notes recursvie call to build notes tree get artifact public user notes get item artifact private user notes recursvie call to build notes tree for iten get item artifact item public user notes Get All USer Notes Get All Public Notes report a public note id of report record delete a report for abuse in public user notes delete a reported user note (accept the complaint) Get a list of reported notes suggest ganjoor link get Unsynchronized image count finds what the method name suggests get suggested ganjoor links Review Suggested Link remove ganjoor link Temporary api Synchronize suggested link get suggested pinterest links suggest pinterest link Review Suggested Pinterest Link remove pinterest link Synchronize suggested pinterest link Search Artifacts search artifact items add item to an artifact Database Contetxt Picture File Service Configuration Background Task Queue Instance User Service Messaging service Ganjoor Service constructor British Library Tile Downloader And Mixer Constructor find image encodder contributions stats service implementation user contributions approved edits daily approved edits grouped by user summed up stats of approved poem corrections approved section edits daily approved section edits grouped by user summed up stats of approved section corrections approved cat edits daily approved cat edits grouped by user summed up stats of approved cat corrections approved related songs daily approved related songs grouped by user summed up stats of approved related songs approved quoted poems daily approved quoted poems grouped by user summed up stats of approved quoted poems approved comments daily approved comments grouped by user summed up stats of approved comments approved recitations daily approved recitations grouped by user summed up stats of approved recitations approved museum links daily approved museum links grouped by user summed up stats of approved museum links approved pinterest links daily approved pinterest links grouped by user summed up stats of approved pinterest links approved poet spec lines daily approved poet spec lines grouped by user summed up stats of approved poet spec lines approved poet photos daily approved poet photos grouped by user summed up stats of approved poet photos approved user notes approved user notes grouped by user summed up stats of approved user notes Database Context constructor تبدیلگر CorrectionReviewResult تبدیل به رشته donation service new donation update donation delete donation new expense update expense delete expense returns all donations get donation by id returns all expenses get expense by id donation page row date amount donor usage remaining parse html of https://ganjoor.net/donate/ and fill the records regenerate donations page Show Donating Information (temporary switch off/on) Database Context Background Task Queue Instance Ganjoor Service configuration constructor faq service implementation get categories get category by id add a new faq category update an existing faq category delete a faq category get pinned items get category items get item by id add a new faq item update an existing faq item delete a faq item Database Context constructor Ganjoor User Service IMemoryCache Ganjoor Service Sign Up Email Subject subject Sign Up Email Html Content html content Start signup process using email finalize signup and assign his or him comments to him or her modify existing user /*update related entities cache*/ remove user data numbering service implementation add numbering update an existing numbering (only name) delete numbering get numbering by id get all numberings get numberings for a cat get numberings for direct subcats of parent cat get all numbering patterns for a couplet start counting generate missing default numberings and start counting Database Context Background Task Queue Instance constructor poem format convertor تبدیل به رشته IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation IGanjoorService implementation Switch Bookmark for couplet Bookmark couplet if it is not Bookmark Verse bookmark comment get user ganjoor bookmarks (only Id, CoupletIndex and DateTime are valid) get verse bookmarks delete user bookmark /// to make sure a user can not delete another user's bookmarks modify bookmark private note to make sure a user can not modify another user's bookmarks get user bookmarks (artifacts and items) category word counts category words summary comparison of word counts for poets ot subcats CategoryWordCount for a specific term in a category build word counts fill CategoryWordCounts.RowNmbrInCat fill CategoryWordCountSummaries set category poem format tag for poems consisting of a single whole poem section set category poems language tag re sulg cat poems batch rename list of category saved duplicated poems Update category extra info find category poem rhymes get centuries with published poets regenerate half centuries get digital source from tag tag with sources update digital sources stats Finding Category Poems Duplicates start removing category duplicates find category poem rhymes directly insert generated TOC generate category TOC make plain text separate verses in poem.PlainText with Environment.NewLine instead of SPACE examine site pages for broken links examine comments for long links start filling poems couplet indices refill couplet indices fill section couplets count regenerate poem full titles to fix an old bug start finding rhymes for single couplets transfer poems and sections from a meter to another one moderate cat correction moderate poem correction moderate poem section correction get user section corrections if sent empty returns all corrections effective corrections for section last unreviewed user correction for a section send a correction for a section delete unreviewed user corrections for a poem section get next unreviewed correction for a poem section get section correction by id unreview poem section correction count start updating stats page synchronize naskban links synchronize naskban links number of synched items mark naskban links as human reviewed mark naskban links a text original for a category delete poem related naskban images by url justify naskban links import naskban ganjoor matchings import naskban ganjoor matchings number of synched items fill couplet summaries using open ai fill poem summaries using open ai geo tag poems using AI category paper sources discover poet naskban paper sources import paper sources from museum return list of suggested spec lines returns specific suggested line for poets next unpublished suggested line for poets upublished suggested lines count for poets add a suggestion for poets spec lines modify a suggestion for poets spec lines delete a suggestion for poets spec lines delete published suggested spec line add poem geo tag update poem tag delete poem tag get poem tags ordered by LunarDateTotalNumber then by Id get a categoty poem tags filling poem formats sectionizing poems filter secion verses get couplet sections get all poem sections regenerate poem sections (dangerous: wipes out existing data) get a specific poem sections delete a poem section start band couplets fix Start finding missing rhthms get next ganjoor poem probable metre get a list of ganjoor poems probable metres save ganjoor poem probable metre problable metre id moderate quoted poems suggest new quote get user or all quoted suggestions if sent empty returns all suggestions next unmoderated quoted poem unmoderated quoted poems count discover related poems regenerate related poems pages generate related poems page parse related pages get quoted by id insert quoted poem update quoted poem delete quoted by id get quoted poems get quoted poems for a poem two poems quoted records extracting quoted poems parse related pages get a section related sections poem id section index if sent 0 or less returns all items regenerate category related sections update related sections info (after metreId or rhyme for one of these sections changes) start generating related sections info build sitemap build tj.ganjoor.net site map get poem related songs user suggested songs suggest song get unreviewed count next unreviewed track get track of user song suggestions review song direct insert song get song by id modify a published song delete a poem song by id start generating gdb files export to sqlite Apply corrections from sqlite import from sqlite import a catgory from sqlite make html text start updating stats page tajik poets tajik page by url Search You need to run this scripts manually on the database before using this method: CREATE FULLTEXT CATALOG [TajikPoemPlainTextCatalog] WITH ACCENT_SENSITIVITY = OFF AS DEFAULT CREATE FULLTEXT INDEX ON [dbo].[TajikPoems]( [TajikPlainText] LANGUAGE 'English') KEY INDEX [PK_TajikPoems] ON ([TajikPoemPlainTextCatalog], FILEGROUP [PRIMARY]) WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM) regenerate TOCs start generating sub cats TOC Get List of poets get poet by id get poet by url poet image id by url get cat by url get list of books generate missing book covers get cat by id get page url by id clean cache for paeg by id clean cache for page by url clean cache for page by comment get redirect url for a url get page by url get poem recitations (PlainText/HtmlText are intentionally empty) get poem whole sections get user up votes for the recitations of a poem get poem comments get a single comment information (replies are not included) new comment update user's own comment link or unlink user's own comment to a coupletIndex if null then unlinks couplet summary delete a reported comment publish awaiting comment delete anybody's comment delete user own comment get recent comments report a comment id of report record delete a report Get list of reported comments get poem images by id (some fields are intentionally field with blank or null), EntityImageId : the most important data field, image url is {WebServiceUrl.Url}/api/images/thumb/{EntityImageId}.jpg or {WebServiceUrl.Url}/api/images/norm/{EntityImageId}.jpg Get Poem By Url get poem verses Get Poem By Id sections delete unreviewed user corrections for a poem send poem correction last unreviewed user correction for a poem get user or all corrections if sent empty returns all corrections effective corrections for poem get correction by id get next unreviewed correction unreviewed corrections count random poem id from hafez sonnets and old c.ganjoor.net service get a random poem from hafez Get Similar Poems accroding to prosody and rhyme informations language tagged poem sections Search You need to run this scripts manually on the database before using this method: CREATE FULLTEXT CATALOG [GanjoorPoemPlainTextCatalog] WITH ACCENT_SENSITIVITY = OFF AS DEFAULT CREATE FULLTEXT INDEX ON [dbo].[GanjoorPoems]( [PlainText] LANGUAGE 'English') KEY INDEX [PK_GanjoorPoems]ON ([GanjoorPoemPlainTextCatalog], FILEGROUP [PRIMARY]) WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM) modify page modify poem => only these fields: NoIndex, RedirectFromFullUrl, MixedModeOrder break a poem from a verse forward update related sections return page modifications history get old version returns metre list (ordered by Rhythm) modify poet create new poet delete poet delete a page delete a poem delete a category chaneg poet image find poem rhyme find poem section rhyme find poem rhythm manually add a duplicate for a poems delete duplicate get category poem related images add page send cat correction delete unreviewed user corrections for a cat last unreviewed user correction for a cat get user or all corrections for categories if sent empty returns all corrections cat effectinve corrections get cat correction by id get next unreviewed cat correction unreviewed cat corrections count aggressive cache Database Context Configuration Background Task Queue Instance IAppUserService instance Messaging service Image File Service IMemoryCache http client options service constructor translation service implementation add language update an existing language delete language get langauge by id get all languages add or update poem translation get last language the user contributed to its translation get all poem translations (for export utility) get translation by id get translation Database Context constructor geo location service implementation add new location update an existing location delete location get location by id get all locations Database Context constructor Persian specific text utility class convert persian text to simple pinglish equaivalnet for persian characters Language Utilitis Persian Alphabet English Alphabet Check to see if input Contains Only Specific Characters make text searchable find rhyme format money format datetime Music Catalgue Service Implementation get golha collection programs get golha program tracks Configuration Database Contetxt constructor manipulating picture files recover from files add new picture pass empty if you want a generic date based folder returns image info Rotate Image in 90 deg. multiplicants: 90, 180 or 270 replace an image find image encodder returns image file stream فرمت تصاویر بندانگشتی و ... image/jpeg عرض تصویر با اندازه نرمال - جهت نمایش در صفحات /// طول تصویر با اندازه نرمال - جهت نمایش در صفحات عرض تصویر بندانگشتی طول تصویر بندانگشتی image info cache Image Storage Path Generated Cropped Image Based On ThumbnailCoordinates For Notes Database Contetxt Configuration Simple Image Storage (not storing multiple image sizes) for creating small cropped images memory cache constructor poet photo suggestion service return list of suggested photos for a poet returns a single suggested photo suggest a new photo for a poet next unpublished suggested photo for poets unpublished suggested photos count for poets modify a suggested photo for poets delete a suggested photo for poets delete published suggested photo Database Context picture file service Messaging service IAppUserService instance Configuration constructor Queued FTP Upload Service Implementation add upload (you should call ProcessQueue manually) s process queue reset queue get queued ftp uploads Database Context Configuration Background Task Queue Instance constructor creates an RSS feed from recitations build rss Role Service Implementation gets list of SecurableItem, should be reimplemented in end user applications constructor ganjoor.net banners service Add site banner modify site banner delete site banner get site banners get a random site banner Database Context Image File Service IMemoryCache constructor User Visits Tracking Service Implementation add record delete record start or stop tracking user get user history options service Database Context constructor Audio Narration Service Implementation returns list of narrations send Guid.Empty if you want all narrations returns list of publish recitations get category top one recitations check if a category has any recitations get published recitation by id return selected narration information Delete recitation Gets Verse Sync Range Information narration id validate PoemNarrationViewModel updates metadata for narration build profiles from exisng narrations data User Id which becomes owner of imported data error string if occurs Initiate New Upload Session for audio Save uploaded file finalize upload session (add files) Moderate pending narration retry publish unpublished narrations Get Upload Session (including files) Get User Profiles Get User Default Profile validating narration profile Add a narration profile Update a narration profile Delete a narration profile Get uploads descending by upload time if userId is empty all user uploads would be returned publishing tracker data Transfer Recitations Ownership move recitaions of an artist to the first position Synchronization Queue report an error in a recitation get errors reported for recitations reject a reported error for recitations and notify the reporter (and deletes the report) accepts a reported error for recitations and notify the reporter and recitation owner (and deletes the report) accepts a reported error for recitations, add mistake to approve the mistake and notify the reporter and recitation owner (and deletes the report) remove approved mistake edit approved mistake text compute poem recitations order up vote a recitation recitation id revoke recitaion up vote recitaion id switches recitation upvote upvote status get user upvoted recitations check recitaions with missing files and add them to reported errors list Upload Enabled (temporary switch off/on for upload) Configuration Database Contetxt Background Task Queue Instance Messaging service Users service memory cache ganjoor service constructor Music Catalogue Service get golha collection programs get golha program tracks manipulating picture files add new picture pass empty if you want a generic date based folder recover from files returns image info returns image file stream Rotate Image in 90 deg. multiplicants: 90, 180 or 270 replace an image Get Encoder Generate Cropped Image Based On ThumbnailCoordinates For Notes Image Storage Path poet photo suggestion service; return list of suggested photos for a poet returns a single suggested photo suggest a new photo for a poet next unpublished suggested photo for poets unpublished suggested photos count for poets modify a suggested photo for poets delete a suggested photo for poets delete published suggested photo Queued FTP Upload Service add upload (you should call ProcessQueue manually) s process queue reset queue get queued ftp uploads Audio Narration Service returns list of narrations send Guid.Empty if you want all narrations returns list of publish narrations (if poetId or catId is non-zero its ordered by poemId ascending if not it is ordered by publish date descending) get category top recitations check if a category has any recitations get published recitation by id return selected narration information Delete recitation (recitation should belong to userId) Gets Verse Sync Range Information narration id updates metadata for narration build profiles from exisng narrations data User Id which becomes owner of imported data error string if occurs Initiate New Upload Session for audio Save uploaded file finalize upload session (add files) Moderate pending narration Get Upload Session (including files) Get User Profiles Get User Default Profile Add a narration profile Update a narration profile Delete a narration profile Transfer Recitations Ownership Get uploads descending by upload time if userId is empty all user uploads would be returned publishing tracker data move recitaions of an artist to the first position Synchronization Queue report an error in a recitation get errors reported for recitations reject a reported error for recitations and notify the reporter (and deletes the report) accepts a reported error for recitations, change status of the recitation to rejected and notify the reporter and recitation owner (and deletes the report) accepts a reported error for recitations, add mistake to approve the mistake and notify the reporter and recitation owner (and deletes the report) remove approved mistake edit approved mistake text compute poem recitations order up vote a recitation recitation id revoke recitaion up vote recitaion id switches recitation upvote upvote status get user upvoted recitations check recitaions with missing files and add them to reported errors list retry publish unpublished narrations Upload Enabled (temporary switch off/on for upload) Add site banner modify site banner delete site banner get site banners get a random site banner User Visits Tracking Service add record delete record start or stop tracking user get user history ganjoor poem tools get an excerpt for the poem url جهت ذخیره، دریافت و پردازش مخازن مجموعه های شعرها به کار می رود ذخیرۀ لیستی از GDBInfoها در یک فایل xml دریافت یک فایل xml و تبدیل آن به لیستی از GDBInfoها اطلاعات فایل صوتی شعر سازنده شناسۀ شعر شناسۀ فایل صوتی با شروع از 1 برای هر شعر مسیر فایل شرح آیا همگام شده ساختار اطلاعات همگام سازی ترتیب مصرع (-1 نشانگر آغاز فایل صوتی و -2 نشانگر پایان آن است) زمان در فایل صوتی بر حسب میلی ثانیه اطلاعات همگام سازی نشانی دریافت فایل صوتی آیا لینک دریافت فایل صوتی مستقیم است شناسۀ یکتای اطلاعات همگام سازی امضای یکتای فایل صوتی محاسبه چک سام فایل آیا اطلاعات همگام سازی آپلود شده؟ تبدیل به رشته شرح Warning: not always filled Warning: Rarely filled پردازشگر ذخیره و بارگذاری لیستهای اشعار ذخیره در فایل ذخیره در فایل بارگذاری از فایل