Posts

For more information, see the search syntax documentation. Search results are sorted by creation date.

Search Results

Art Chat » 10th Anniversary Art Event » Post 613

ShadeTheRaven
Lunar Supporter - Helped forge New Lunar Republic's freedom in the face of the Solar Empire's oppressive tyrannical regime (April Fools 2023).
Roseluck - Had their OC in the 2023 Derpibooru Collab.
Elements of Harmony - Had an OC in the 2022 Community Collab
Ten years of changes - Celebrated the 10th anniversary of MLP:FiM!
My Little Pony - 1992 Edition
Friendship, Art, and Magic (2020) - Took part in the 2020 Community Collab

@ZippySqrl
 
That’s why I double-checked at a much earlier point, I had commissioned a character piece but wanted to know if it’d count. As it didn’t, I just ended up having to do a quick stick pony cause I didn’t have any of my pencils on hand XP Still, did manage to do something, even if it wasn’t anything mind-blowing.

Art Chat » 10th Anniversary Art Event » Post 612

Art Chat » 10th Anniversary Art Event » Post 611

Art Chat » 10th Anniversary Art Event » Post 610

Art Chat » 10th Anniversary Art Event » Post 609

Jb33124
Starlight Glimmer - For supporting the site
Starlight Glimmer - For supporting the site
Happy Derpy! - For site supporters
Silver Supporter - Silver Supporter
Pixel Perfection - Hot Pockets Spotted
Lunar Supporter - Helped forge New Lunar Republic's freedom in the face of the Solar Empire's oppressive tyrannical regime (April Fools 2023).
Crystal Roseluck - Had their OC in the 2023 Derpibooru Collab.
Non-Fungible Trixie -
Preenhub - We all know what you were up to this evening~
My Little Pony - 1992 Edition

Gaining Confidence
@Rainboom Dash  
I am slightly confused by what you mean, though this could be a misunderstanding on my end. I did create a collage of images for the tenth anniversary (being from Season 4) and posted it to this group, so I did make something for the event. If you mean that I didn’t create the images involved in the collage, then I I understand why I won’t get one.

Art Chat » 10th Anniversary Art Event » Post 608

Art Chat » 10th Anniversary Art Event » Post 607

Art Chat » 10th Anniversary Art Event » Post 606

Lil_VampireCJ
Silly Pony - Celebrated the 13th anniversary of MLP:FIM, and 40 years of MLP!
Shimmering Smile - Celebrated the 10th anniversary of Equestria Girls!
Lunar Supporter - Helped forge New Lunar Republic's freedom in the face of the Solar Empire's oppressive tyrannical regime (April Fools 2023).
Flower Trio - Helped others get their OC into the 2023 Derpibooru Collab.
Crystal Roseluck - Had their OC in the 2023 Derpibooru Collab.
King Sombra - Celebrated the 10th anniversary of The Crystal Empire!
A Lovely Nightmare Night - Celebrated the 12th anniversary of MLP:FIM!
An Artist Who Rocks - 100+ images under their artist tag
Princess of Love - Extra special version for those who participated in the Canterlot Wedding 10th anniversary event by contributing art.
Tree of Harmony - Drew someone's OC for the 2022 Community Collab

Lil_VampireCJ
Still haven’t received my badges yet but I am still keeping patient, I can’t exactly remember what page my submission is on but its likely between 7-14 I can’t remember… :/

Art Chat » 10th Anniversary Art Event » Post 605

Art Chat » 10th Anniversary Art Event » Post 604

Art Chat » 10th Anniversary Art Event » Post 603

Art Chat » 10th Anniversary Art Event » Post 602

Art Chat » 10th Anniversary Art Event » Post 601

Art Chat » 10th Anniversary Art Event » Post 600

Art Chat » 10th Anniversary Art Event » Post 599

Art Chat » 10th Anniversary Art Event » Post 598

Jb33124
Starlight Glimmer - For supporting the site
Starlight Glimmer - For supporting the site
Happy Derpy! - For site supporters
Silver Supporter - Silver Supporter
Pixel Perfection - Hot Pockets Spotted
Lunar Supporter - Helped forge New Lunar Republic's freedom in the face of the Solar Empire's oppressive tyrannical regime (April Fools 2023).
Crystal Roseluck - Had their OC in the 2023 Derpibooru Collab.
Non-Fungible Trixie -
Preenhub - We all know what you were up to this evening~
My Little Pony - 1992 Edition

Gaining Confidence
Still no badge on my end. However, as I said earlier, I’m more than happy to wait. I don’t want to force the admins to give it me immediately. It would be pointless and slow distribution down for others.

Art Chat » 10th Anniversary Art Event » Post 597

Art Chat » 10th Anniversary Art Event » Post 596

Background Pony #B5FC
@Ciaran  
A remark on that: Make no mistake, I didn’t mean to criticize anyone involved with the event for doing it the way they are doing it, just in case it came across as such.  
The suggestion is purely with the intent to ease the workload for the people who are doing all these things manually right now.
 
This took longer than I hoped, Javascript is not my forté, but it works. Tested in Firefox and Chrome with Violentmonkey v2.12.7
 
 
In action video (everything filter, contains some nudity)
 
If anyone wants to improve this somehow, by all means please go ahead. This is just a base to show how it could work.
 
Code:  

 
// ==UserScript==
// @name Derpibooru Badge Helper
// @namespace Derpibooru
// @match https://derpibooru.org/*
// @run-at document-idle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_xmlhttpRequest
// ==/UserScript==
console.log(“Badge Helper Running”);
// Export and Import data functionality
createExportImport();
// Uploader
var uploader_span = document.querySelector(“span[class=image_uploader]”);
if (uploader_span) {
console.log(uploader_span);
// Check if there’s an account linked
var anchor_element = uploader_span.querySelector(“a”);
if (anchor_element){
// Uploaded with an account, create the STORE THIS ACCOUNT button
var account_name = anchor_element.textContent;
var new_button = createStoreAccountButton(account_name);
// Display it
uploader\_span.appendChild\(new\_button\);
}
}
// Artist tags
var tag_div = document.querySelector(“div[class=tag-list]”);
if (tag_div) {
console.log(tag_div);
// Get all artist tags
var artist_tag_anchors = tag_div.querySelectorAll(“a[href*=’artist-colon’][class=tag__name”);
console.log(artist_tag_anchors);
for (var artist_anchor of artist_tag_anchors){
// Parse the artist tag page and possibly create and display the storage button for this tag
var account\_name = handleArtistTag\(artist\_anchor.href, artist\_anchor.closest\("span"\)\);
}
}
/**
* Reads the given url and extracts the associated user account for this tag - if it exists - and displays a store button for it
* @param tag_url url of an artist tag to parse
* @param parent element to append new buttons to as children
*/
function handleArtistTag(tag_url, parent){
// Load the given url
GM_xmlhttpRequest({
method: “GET”,
url: tag_url,
onload: function(response) {
if (response.status == 200){
// Create document from reply to ease parsing
var response_doc = new DOMParser().parseFromString(response.responseText, “text/html”);
var tag_info_div = response_doc.querySelector(“div[class=tag-info__more]”);
if (tag_info_div){
// Check if there’s a userpage link on this artist tag page
      // Get all fitting anchors and all strongs, the anchor right after a strong announcing "Associated users:" is the right one
      // This is in case there might be more than one profile link at an artist tag in a description somewhere
      var selected\_elements = tag\_info\_div.querySelectorAll\("strong, a\[href\*='/profiles/'\]"\);
      for \(var i = 0; i \< selected\_elements.length; i++\){
        var cur\_elem = selected\_elements\[i\];
        if \(cur\_elem.nodeName === "STRONG" && cur\_elem.textContent.includes\("Associated users:"\)\){
          // This is the right one, next element is the user account anchor
          var account\_name = selected\_elements\[i+1\].textContent;
          // Display the button to save it
          var new\_button = createStoreAccountButton\(account\_name\)
          parent.insertBefore\(new\_button, parent.firstChild\);
        }
      }
    }
  }
  
  
}
});
}
/**
* Creates and returns a button to store the given account name on click
* @param account_name String containing the account name to display and store on button click
* @return the created button
*/
function createStoreAccountButton(account_name){
// New button
var new_button = document.createElement(“button”);
new_button.textContent = “Store “ + account_name;
// On click store it
new_button.onclick = async function(){
GM_setValue(account_name, true);
console.log(“Stored “ + account_name);
this.textContent = “STORED “ + account_name;
}
return new_button;
}
/**
* Displays an export and import button at the start of the page, that can be used to export or import script data
*/
function createExportImport(){
// Get HTML body
var body_elem = document.getElementsByTagName(“body”)[0];
/*
* EXPORT
*/
var export_button = document.createElement(“button”);
export_button.textContent = “Export Badge Data”;
// On click display current data
export_button.onclick = async function(){
// Get all stored keys
var stored\_keys = GM\_listValues\(\);

// Make a list
var list\_form = "";
for \(var key of stored\_keys\){
  list\_form += key + ",";
}

// Now show it to user
console.log\(list\_form\);
prompt\("Badge Data Stored", list\_form.substring\(0, list\_form.length - 1\)\);
}
// Display the button
body_elem.insertBefore(export_button, body_elem.firstChild);
/*
* IMPORT
*/
var import_button = document.createElement(“button”);
import_button.textContent = “Import Badge Data”;
// On click prompt user for new data
import_button.onclick = async function(){
// Prompt user for input
var prompt_result = prompt(“Provide Data To Import”, “Put Previously Exported Data Here, insert spaces to purge all”);
if (prompt_result){
  // Delete all currently stored keys before storing user submitted ones
  for \(var key of GM\_listValues\(\)\){
    GM\_deleteValue\(key\);
  }
  
  // Split the list to store the individual names
  var split\_result = prompt\_result.split\(","\);
  if \(split\_result.length \> 1\){
    // Now store the new data
    for \(var i = 0; i \< split\_result.length; i++\){
      GM\_setValue\(split\_result\[i\], true\);
    }
  }
  
  // Done. Inform the user
  alert\("Given data imported."\);
}
}
// Display the button
body_elem.insertBefore(import_button, body_elem.firstChild);
}
 

Art Chat » 10th Anniversary Art Event » Post 595

Ciaran
ラ・ゼッタ - For supporting the site
Pixel Perfection - I still call her Lightning Bolt
Silly Pony - Celebrated the 13th anniversary of MLP:FIM, and 40 years of MLP!
Shimmering Smile - Celebrated the 10th anniversary of Equestria Girls!
Lunar Guardian - Earned a place among the ranks of the most loyal New Lunar Republic soldiers (April Fools 2023).
Crystal Roseluck - Had their OC in the 2023 Derpibooru Collab.
Flower Trio - Helped others get their OC into the 2023 Derpibooru Collab.
A Lovely Nightmare Night - Celebrated the 12th anniversary of MLP:FIM!
Princess of Love - Extra special version for those who participated in the Canterlot Wedding 10th anniversary event by contributing art.
Tree of Harmony - Drew someone's OC for the 2022 Community Collab

Senior Moderator
友情は魔法だ
@Background Pony #B5FC  
Yes. Being able to do some of these things faster or with some sort of automation is very desirable.
 
To be honest, there’s even more critical functionality that would be really great to have, too - like the ability to search for more than one artist tag on a single image.
 
But even though these kinds of tools have been suggested repeatedly over the years (and even more so now that the site’s core is publicly available) a lot of how the site operates really is just people clicking buttons.
 
However easy you might imagine these kinds of things ‘should’ be, they haven’t happened. Or, sometimes when someone does try to create automation for moderation we find bugs that keep it from being released to production, or there are other unanticipated problems that made them so unreliable that doing it by hand was easier and safer. Or, IIRC, they completely fucked the site so bad we had to take it down for a day and restore everything from backup because whoops.
 
There are instances of events where development has helped to set things up so that badging will be quick and easy when it’s all over (usually things like the April Fools events are good matches for these kinds of automation) so there is a precedence for this kind of automation - but for everything else we are blessed have really dedicated volunteers who are willing to put in hours of their own time to get these things done using what tools are available.
 
At the end of the day, we have the site and the tools we have. And staff try to accomplish what they can with the tools and workarounds that are available.
 
In the case of this event, if I recall correctly, Mildgyth volunteered to put all of this together and coordinated the run of it, and LightningBolt created the beautiful badge for it, and I know others were involved in getting it all working right including getting the badge added into the core, but this really was put together by a small group of people who really wanted to celebrate the anniversary with the community.
 
I think Mildgyth did a great job putting it all together with the tools that we have, and I’m really happy they did this, and I’m really happy that so many people participated. It really made me think, too, about what the show meant for me and how much it’s helped me over the last decade. I hope we keep having events like this one for years to come.

Art Chat » 10th Anniversary Art Event » Post 594

Art Chat » 10th Anniversary Art Event » Post 593

Background Pony #B5FC
@saby
 
@Ciaran  
I’m with saby there. You should consider that.
 
and actuallly assigning the badge to the profile is just 10 to 15 seconds. Less if the dev team is involved.
 
That’s still 10-15 seconds hundreds of times… removing this step seems very much desirable.
 
As for the manual checking: You could make a browser userscript to ease the list-compiling big time though.  
On the upload page ( like >>2387665 , just using the very first one) you could add two buttons  
“Add UPLOADER account to list”  
“Add TAGGED ARTIST(s) to list” <- maybe enable selection of which artist(s) if there are more than one. Then the script checks if that artist account has a derpibooru account associated with it and uses that.  
And then when that upload is checked, Mildgyth would just need to click the right button when it’s figured out who needs to get the badge which is then stored in a list for the userscript.  
Then add two buttons to load and store the list so it can be used in the award-all-these-accounts-the-badge-script or passed on to someone else
 
This would be seriously easy to do, with how tech savy our community is I bet many here could code that in a few minutes
 
x Worst case when neither option works is still adding the badge manually to the right person. But this would still be a step up from having to do them ALL manually.

Art Chat » 10th Anniversary Art Event » Post 592

Art Chat » 10th Anniversary Art Event » Post 591

Art Chat » 10th Anniversary Art Event » Post 590

Art Chat » 10th Anniversary Art Event » Post 589

Default search

If you do not specify a field to search over, the search engine will search for posts with a body that is similar to the query's word stems. For example, posts containing the words winged humanization, wings, and spread wings would all be found by a search for wing, but sewing would not be.

Allowed fields

Field SelectorTypeDescriptionExample
authorLiteralMatches the author of this post. Anonymous authors will never match this term.author:Joey
bodyFull TextMatches the body of this post. This is the default field.body:test
created_atDate/Time RangeMatches the creation time of this post.created_at:2015
idNumeric RangeMatches the numeric surrogate key for this post.id:1000000
myMetamy:posts matches posts you have posted if you are signed in. my:posts
subjectFull TextMatches the title of the topic.subject:time wasting thread
topic_idLiteralMatches the numeric surrogate key for the topic this post belongs to.topic_id:7000
topic_positionNumeric RangeMatches the offset from the beginning of the topic of this post. Positions begin at 0.topic_position:0
updated_atDate/Time RangeMatches the creation or last edit time of this post.updated_at.gte:2 weeks ago
user_idLiteralMatches posts with the specified user_id. Anonymous users will never match this term.user_id:211190
forumLiteralMatches the short name for the forum this post belongs to.forum:meta