Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

disqualify by taken date #503

Draft
wants to merge 31 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
50861c2
test raters' config by pattern match
intracer Mar 16, 2024
58c52e6
move rating to separate package
intracer Mar 16, 2024
f16ca43
move classes to separate files
intracer Mar 16, 2024
8657e27
optimize getting special nominations, cleanup
intracer Mar 16, 2024
56006a3
reformat
intracer Mar 16, 2024
e49ec48
cleanup
intracer Mar 16, 2024
990d8e8
fix test
intracer Mar 16, 2024
9d08250
cleanup
intracer Mar 16, 2024
0b33d14
fix compilation
intracer Mar 16, 2024
e7874f6
recently taken reporter
intracer Mar 17, 2024
7394e16
recently taken reporter
intracer Mar 17, 2024
9d0e130
recently taken exclude special nominations
intracer Mar 19, 2024
8c26d75
fixes
intracer Apr 3, 2024
69b94b2
Merge remote-tracking branch 'origin/disqualify-by-taken-date' into d…
intracer Apr 3, 2024
c99edc5
fix
intracer Apr 12, 2024
5f2c882
Merge remote-tracking branch 'origin/master' into disqualify-by-taken…
intracer Jul 6, 2024
49acd10
mime
intracer Jul 6, 2024
f5ec789
Merge remote-tracking branch 'origin/disqualify-by-taken-date' into d…
intracer Jul 6, 2024
066ae9b
Merge remote-tracking branch 'origin/master' into disqualify-by-taken…
intracer Sep 21, 2024
25722b3
simplify
intracer Sep 22, 2024
a6487e2
Польська спадщина, simplify
intracer Oct 5, 2024
418aa45
query only total not in years images
intracer Oct 5, 2024
3a51528
query only total not in years images fixes
intracer Oct 6, 2024
afdfd60
year 2024 configs
intracer Oct 6, 2024
14fec56
year 2024 configs
intracer Oct 11, 2024
a8f2cd3
cleanup
intracer Oct 11, 2024
4cb859b
2023 to 2024
intracer Oct 20, 2024
e709431
fix contest name
intracer Oct 20, 2024
2bbb41b
page parse returns option
intracer Oct 21, 2024
806cb50
newly pictured special nomination galleries
intracer Oct 28, 2024
ba50649
special nomination galleries by region per region pages
intracer Dec 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

## Directory-based project format:
.idea/
null/

## File-based project format:
*.ipr
Expand Down
3 changes: 2 additions & 1 deletion .scalafmt.conf
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
version = 3.8.3
runner.dialect = scala213
runner.dialect = scala213
maxColumn = 100
24 changes: 0 additions & 24 deletions .travis.yml

This file was deleted.

5 changes: 5 additions & 0 deletions scalawiki-core/src/main/resources/application.conf
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
akka.http.parsing {
max-content-length = 16m
max-to-strict-bytes = 16m
}

akka.default-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
}
4 changes: 2 additions & 2 deletions scalawiki-core/src/main/scala/org/scalawiki/MwBot.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ trait ActionBot {
limit: Option[Long] = None
): Future[Iterable[Page]]

def log: LoggingAdapter

}

trait MwBot extends ActionBot {
Expand Down Expand Up @@ -70,8 +72,6 @@ trait MwBot extends ActionBot {

def system: ActorSystem

def log: LoggingAdapter

def mediaWikiVersion: MediaWikiVersion
}

Expand Down
65 changes: 31 additions & 34 deletions scalawiki-core/src/main/scala/org/scalawiki/dto/Image.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,25 @@ import org.scalawiki.dto.markup.Gallery
import org.scalawiki.wikitext.TemplateParser
import org.sweble.wikitext.engine.nodes.EngPage

import scala.util.Try

case class ImageMetadata(data: Map[String, String]) {

def camera: Option[String] = data.get("Model")

def date: Option[ZonedDateTime] =
data
.get("DateTime")
.map(s => LocalDateTime.parse(s, ImageMetadata.df).atZone(ZoneOffset.UTC))
.get("DateTimeOriginal")
.flatMap { s =>
val parsed = Try(LocalDateTime.parse(s, ImageMetadata.df).atZone(ZoneOffset.UTC))
// parsed.failed.foreach(println)
parsed.toOption
}
}

object ImageMetadata {
val pattern = "yyyy:MM:dd HH:mm:ss"
val df = DateTimeFormatter.ofPattern(pattern)
private val pattern = "yyyy:MM:dd HH:mm:ss"
private val df = DateTimeFormatter.ofPattern(pattern)
}

case class Image(
Expand All @@ -38,7 +44,8 @@ case class Image(
pageId: Option[Long] = None,
metadata: Option[ImageMetadata] = None,
categories: Set[String] = Set.empty,
specialNominations: Set[String] = Set.empty
specialNominations: Set[String] = Set.empty,
mime: Option[String] = None
) extends Ordered[Image] {

def compare(that: Image): Int = title.compareTo(that.title)
Expand Down Expand Up @@ -82,7 +89,7 @@ object Image {
def fromPageRevision(
page: Page,
monumentIdTemplate: Option[String],
specialNominationTemplates: Seq[String] = Nil
specialNominationTemplates: Set[String] = Set.empty
): Option[Image] = {
page.revisions.headOption.map { revision =>
val content = revision.content.getOrElse("")
Expand All @@ -92,12 +99,8 @@ object Image {
.collectTemplates(parsedPage, template)
.flatMap(_.getParamOpt("1"))
}
val specialNominations = specialNominationTemplates.flatMap { template =>
Some(template).filter(_ => {
val value = TemplateParser.collectTemplates(parsedPage, template)
value.nonEmpty
})
}
val specialNominations =
TemplateParser.collectTemplateNames(parsedPage, specialNominationTemplates)

val author = getAuthorFromPage(parsedPage)

Expand All @@ -115,40 +118,32 @@ object Image {
monumentIds = ids,
pageId = page.id,
categories = categories,
specialNominations = specialNominations.toSet
specialNominations = specialNominations
)
}
}

def fromPage(
page: Page,
monumentIdTemplate: Option[String],
specialNominationTemplates: Seq[String] = Nil
): Option[Image] = {
for (
fromImage <- Image.fromPageImages(page);
specialNominationTemplates: Set[String] = Set.empty
)(page: Page): Option[Image] =
for {
fromImage <- Image.fromPageImages(page)
fromRev <- Image.fromPageRevision(
page,
monumentIdTemplate,
specialNominationTemplates
)
renamedAuthor = fromRev.author.map(author => AuthorsMap.renames.getOrElse(author, author))
} yield fromImage.copy(
monumentIds = fromRev.monumentIds,
author = renamedAuthor,
categories = fromRev.categories,
specialNominations = fromRev.specialNominations
)
yield {
val renamedAuthor = fromRev.author.map(author =>
AuthorsMap.renames.getOrElse(author, author)
)
fromImage.copy(
monumentIds = fromRev.monumentIds,
author = renamedAuthor,
categories = fromRev.categories,
specialNominations = fromRev.specialNominations
)
}
}

def getAuthorFromPage(content: String): String = {
def getAuthorFromPage(content: String): String =
getAuthorFromPage(TemplateParser.parsePage(content))
}

def getAuthorFromPage(parsedPage: EngPage): String = {
val template = TemplateParser.getTemplate(parsedPage, Some("Information"))
Expand Down Expand Up @@ -198,7 +193,8 @@ object Image {
url: Option[String],
pageUrl: Option[String],
pageId: Option[Long],
metadata: Option[Map[String, String]] = None
metadata: Option[Map[String, String]] = None,
mime: Option[String] = None
) =
new Image(
title = title,
Expand All @@ -210,7 +206,8 @@ object Image {
url = url,
pageUrl = pageUrl,
pageId = pageId,
metadata = metadata.map(ImageMetadata.apply)
metadata = metadata.map(ImageMetadata.apply),
mime = mime
)

def gallery(
Expand Down
18 changes: 8 additions & 10 deletions scalawiki-core/src/main/scala/org/scalawiki/dto/Page.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,29 @@ case class Page(
) /*extends HasId[Page]*/ {
val history = new History(revisions)

def titleWithoutNs = title.split("\\:").last
def titleWithoutNs: String = title.split("\\:").last

def withText(text: String) =
def withText(text: String): Page =
copy(revisions = Page.revisionsFromText(Some(text)))

def text: Option[String] = revisions.headOption.flatMap(_.content)

def isTalkPage = ns.exists(_ % 2 == 1)
def isTalkPage: Boolean = ns.exists(_ % 2 == 1)

def isArticle = ns.contains(Namespace.MAIN)
def isArticle: Boolean = ns.contains(Namespace.MAIN)

def withId(id: Long): Page = copy(id = Some(id))

def lastRevisionUser: Option[Contributor] =
revisions.headOption.flatMap(_.user)

def appendLists(other: Page) = copy(
def appendLists(other: Page): Page = copy(
revisions = this.revisions ++ other.revisions,
langLinks = this.langLinks ++ other.langLinks,
links = this.links ++ other.links
)

def withoutContent = copy(revisions = revisions.map(_.withoutContent))
def withoutContent: Page = copy(revisions = revisions.map(_.withoutContent))

}

Expand Down Expand Up @@ -120,11 +120,9 @@ object Page {
ns: Option[Int],
title: String,
editToken: Option[String]
) = {
new Page(id, ns, title, Seq.empty, Seq.empty, editToken)
}
): Page = new Page(id, ns, title, Nil, Nil, editToken)

def revisionsFromText(text: Option[String]) =
def revisionsFromText(text: Option[String]): Seq[Revision] =
text.fold(Seq.empty[Revision])(content => Revision.many(content))

def groupById(pages: Seq[Page]): Map[Long, Seq[Page]] =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ package iiprop {
Size,
Dimensions,
Sha1,
Mime,
ThumbMime,
MediaType,
Metadata,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ import org.scalawiki.dto.Page

object PageFilter {

def titles(titles: Set[String]) = (p: Page) => titles.contains(p.title)
type PageFilter = Page => Boolean

def ids(ids: Set[Long]) = (p: Page) => p.id.exists(ids.contains)
def titles(titles: Set[String]): PageFilter = (p: Page) => titles.contains(p.title)

def ns(namespaces: Set[Int]) = (p: Page) => p.ns.exists(namespaces.contains)
def ids(ids: Set[Long]): PageFilter = (p: Page) => p.id.exists(ids.contains)

val all = (p: Page) => true
def ns(namespaces: Set[Int]): PageFilter = (p: Page) => p.ns.exists(namespaces.contains)

val none = (p: Page) => false
val all: PageFilter = _ => true

val none: PageFilter = _ => false

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import org.scalawiki.dto.filter.RevisionFilter

class History(val revisions: Seq[Revision]) {

def hasPageCreation = revisions.headOption.exists(_.isNewPage)
def hasPageCreation: Boolean = revisions.headOption.exists(_.isNewPage)

def users(revisionFilter: RevisionFilter): Set[String] = {
val filtered = revisionFilter.apply(revisions)
Expand Down Expand Up @@ -45,10 +45,10 @@ class History(val revisions: Seq[Revision]) {

def updated: Option[ZonedDateTime] = revisions.headOption.flatMap(_.timestamp)

def createdAfter(from: Option[ZonedDateTime]) =
def createdAfter(from: Option[ZonedDateTime]): Boolean =
created.exists(rev => from.forall(rev.isAfter))

def editedIn(revisionFilter: RevisionFilter) =
def editedIn(revisionFilter: RevisionFilter): Boolean =
revisionFilter.apply(revisions).nonEmpty

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ case class SwTemplate(wtNode: WtTemplate) extends SwNode {
wtNode.getArgs.asScala.collect { case arg: WtTemplateArgument => arg }
val template = getTemplate

def getTemplate = {
def getTemplate: Template = {
val argsMap = args.zipWithIndex.map { case (arg, index) =>
val name =
if (arg.hasName)
Expand All @@ -25,13 +25,13 @@ case class SwTemplate(wtNode: WtTemplate) extends SwNode {
name -> value
}.toMap

new Template(name, argsMap)
Template(name, argsMap)
}

def getArg(name: String): Option[WtTemplateArgument] =
args.find(p => p.getName.isResolved && p.getName.getAsString.trim == name)

def setTemplateParam(name: String, value: String) = {
def setTemplateParam(name: String, value: String): Unit = {
getArg(name).foreach { arg =>
val orig = getText(arg.getValue)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ case class Table(
cssClass: String = "wikitable sortable"
) {

def asWiki = {
def asWiki: String = {
"{|" +
(if (cssClass.nonEmpty) s" class='$cssClass'" else "") +
(if (title.nonEmpty) "\n|+ " + title else "") +
Expand All @@ -22,7 +22,7 @@ case class Table(
"\n|}"
}

def asHtml = {
def asHtml: String = {
"<table>" +
(if (cssClass.nonEmpty) s" class='$cssClass'" else "") +
(if (title.nonEmpty) s"\n<caption> $title </caption>" else "") +
Expand Down
Loading
Loading