RMuseum User login/logout/register/... login loginViewModel LoggedOnUserModel renew an expired session user session id LoggedOnUserModel options service constructor 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) 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) 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 gets specified publish artifact item info (including images + attributes) 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 loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl 119 golestan-baysonghori 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 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 start filling GanjoorLink table OriginalSource values start removing original images search artifacts search artifact items readonly mode constructor Artifact Service IUserPermissionChecker instance IMemoryCache Captcha service IAppUserService instance Configuration Audit Log Controller Base 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 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 batch rename cat poems set category poems language tag start assigning poem rhythms Start Finding Missing Rhythms generate category toc directly insert generated TOC start generating sub cats TOC regenerate TOCs page by url modify page 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 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 Poem Related ones zero or less than it means all 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 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 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 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 return value is not complete or valid for some parts, you should use only the valid parts! 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 separate verses in poem.PlainText with Environment.NewLine instead of SPACE if it is 0 it is ignored start building sitemap regenerate stats page start updating mundex page switch bookmark 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 start generating related poems info 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 list of category saved duplicated poems start removing category duplicates 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 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 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 returns image stream with image/webp MIME type Rotate Image in 90 deg. multiplicants: 90, 180 or 270 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) 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 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) 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 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 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 نوع ویژگی عادی پیوند جستجو پیوند و جستجو متن چپ به راست بدون مقدار عنوان در فهرست 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 item count empty or null means this is last item next image empty or null means this is first item prev image 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 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 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 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 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) AudioSyncStatus Review Status Reviewer user Reviewer user Review Message 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 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 Post Error Report for recitations Id Recitation Id Reason Text recitation number of verses affected couplet index DateTime approved mistake view model mistake number of verses affected couplet index Poem Narration Moderation View Model Moderation Result Rejection Message Recitation Ordering View Model recitation earlyness advatage 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 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 Link Type Custom Museum Pinterest Instagram 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 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 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 correction review result id poem id poet id poem order poet name poet image url poem full url poem full title excerpt other poems Ganjoor Category id poet_id poet text parent_id parent url => slug sample: /hafez/ghazal TOC Style Category Type additional descripion or note html mode of additional descripion or note order when mixed with poems published 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 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 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 actuallay 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 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 and rhythm review result for rhythm had any effect on poem after moderation? effective in history Probable Prosody Information for a poem Id poem id poem metre 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 Ganjoor Poet Specification Id Poet Id Poet order Contents published suggested by id suggested by ganjoor.net site banner id banner image image id alternate text target url active 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 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 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/ معنی فیلد 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 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 cat view model id text url => slug full url TOC Style Category Type additional descripion or note html mode of additional descripion or note order when mixed with poems published Next Category without Ancestors/Children/Poems info Previous Category without Ancestors/Children/Poems info ancestors cat children poems 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 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 Rhyme Analysis Result rhyme the verse analysis stopped at modify page view model 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 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 descripion or note html mode of additional descripion 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) 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 category Next Poem Previous Poem verses Recitations Images Songs Comments top 6 related poems 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 poem summary id title url => slug excerpt text Rythm مفاعیلن مفاعیلن فعولن rhyme letters 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 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 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 text 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 Image Order poem related image type thumbnail image url target page url alternate text poem + verse order poem id verse order history of suggested songs by a user approved rejected 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 + SureName) 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 Item Artifact Name It is set only in cummulative api calls child notes It os set only in certain cases prepare note datetime 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) 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) 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 Temporary api Synchronize suggested link get suggested pinterest links suggest pinterest link Review Suggested 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 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 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 By Url get poem recitations (PlainText/HtmlText are intentionally empty) 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 poem related poems poem id 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 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 modify page 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 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 find poem 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 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 poems info get next ganjoor poem probable metre get a list of ganjoor poems 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 set category poems language tag regenerate TOCs Finding Category Poems Duplicates list of category saved duplicated poems start removing category duplicates 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 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 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 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 from http://www.thedigitalwalters.org/01_ACCESS_WALTERS_MANUSCRIPTS.html W619 golestan-walters-01 start removing original images 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) 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) add new artifact import from external resources loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl 119 golestan-baysonghori 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 Temporary api Synchronize suggested link get suggested pinterest links suggest pinterest link Review Suggested Pinterest Link Synchronize suggested pinterest link Search Artifacts search artifact items 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 تبدیلگر 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 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 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) get centuries with published poets regenerate half centuries 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 start updating stats page 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 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 get a poem related poems poem id if sent 0 or less returns all items update related poems info (after metreId or rhyme for one of these poems changes) get an excerpt for the poem start generating related poems info build sitemap 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 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 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 user up votes for the recitations of a poem get poem comments 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 By Id 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 unreview correction count moderate poem correction 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 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 break a poem from a verse forward 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 chaneg poet image batch rename find poem rhyme set category poems language tag find category poem rhymes find poem rhythm list of category saved duplicated poems 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 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 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 Database Context picture file service Messaging service IAppUserService 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 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 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) 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 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 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 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) 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) 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 url جهت ذخیره، دریافت و پردازش مخازن مجموعه های شعرها به کار می رود ذخیرۀ لیستی از GDBInfoها در یک فایل xml دریافت یک فایل xml و تبدیل آن به لیستی از GDBInfoها اطلاعات فایل صوتی شعر سازنده شناسۀ شعر شناسۀ فایل صوتی با شروع از 1 برای هر شعر مسیر فایل شرح آیا همگام شده ساختار اطلاعات همگام سازی ترتیب مصرع (-1 نشانگر آغاز فایل صوتی و -2 نشانگر پایان آن است) زمان در فایل صوتی بر حسب میلی ثانیه اطلاعات همگام سازی نشانی دریافت فایل صوتی آیا لینک دریافت فایل صوتی مستقیم است شناسۀ یکتای اطلاعات همگام سازی امضای یکتای فایل صوتی محاسبه چک سام فایل آیا اطلاعات همگام سازی آپلود شده؟ تبدیل به رشته شرح Warning: not always filled Warning: Rarely filled پردازشگر ذخیره و بارگذاری لیستهای اشعار ذخیره در فایل ذخیره در فایل بارگذاری از فایل