less copy protection, more size visualization
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

353 строки
9.8 KiB

  1. const attributionData = {
  2. sources: [
  3. {
  4. prefix: "./media/buildings/",
  5. files: [
  6. { name: "house.svg", source: null },
  7. { name: "mailbox.svg", source: null },
  8. { name: "mobile-home.svg", source: null },
  9. ],
  10. authors: [
  11. "chemicalcrux"
  12. ]
  13. },
  14. {
  15. prefix: "./media/buildings/skyscrapers/",
  16. files: [
  17. { name: "wide.svg", source: null },
  18. { name: "medium.svg", source: null },
  19. { name: "slender.svg", source: null },
  20. { name: "narrow.svg", source: null },
  21. ],
  22. authors: [
  23. "chemicalcrux"
  24. ]
  25. },
  26. {
  27. prefix: "./media/characters/abysgar/",
  28. files: [
  29. { name: "front.svg", source: "https://www.furaffinity.net/view/32424108/"}
  30. ],
  31. authors: [
  32. "clown-grin",
  33. "labratkuma"
  34. ],
  35. owners: [
  36. ]
  37. },
  38. {
  39. prefix: "./media/characters/adake/",
  40. files: [
  41. { name: "front-1.svg", source: "https://www.furaffinity.net/view/26253324/"},
  42. { name: "front-2.svg", source: "https://www.furaffinity.net/view/26253324/"},
  43. { name: "back.svg", source: "https://www.furaffinity.net/view/26253324/"},
  44. { name: "kneel.svg", source: "https://www.furaffinity.net/view/26253324/"},
  45. ],
  46. authors: [
  47. "oselotti"
  48. ],
  49. owners: [
  50. "Dialuca01"
  51. ]
  52. },
  53. {
  54. prefix: "./media/characters/aigey/",
  55. files: [
  56. { name: "side.svg", source: "https://www.furaffinity.net/view/12006265/"}
  57. ],
  58. authors: [
  59. "just-a-little-mixed-up"
  60. ],
  61. owners: [
  62. ]
  63. },
  64. {
  65. prefix: "./media/characters/akari/",
  66. files: [
  67. { name: "front.svg", source: "https://www.furaffinity.net/view/21329356/"}
  68. ],
  69. authors: [
  70. "spyropurple"
  71. ],
  72. owners: [
  73. ]
  74. },
  75. {
  76. prefix: "./media/characters/andy/",
  77. files: [
  78. { name: "front.svg", source: null}
  79. ],
  80. authors: [
  81. "cardboardhead"
  82. ],
  83. owners: [
  84. ]
  85. },
  86. {
  87. prefix: "./media/characters/angelpatamon/",
  88. files: [
  89. { name: "front.svg", source: "http://www.furaffinity.net/view/26475369/"}
  90. ],
  91. authors: [
  92. "mallowchu"
  93. ]
  94. },
  95. {
  96. prefix: "./media/characters/cibus/",
  97. files: [
  98. { name: "side.svg", source: "https://www.furaffinity.net/view/15534343/"}
  99. ],
  100. authors: [
  101. "jaydom"
  102. ],
  103. owners: [
  104. "movler"
  105. ]
  106. },
  107. {
  108. prefix: "./media/characters/malfressa/",
  109. files: [
  110. { name: "side.svg", source: "https://www.furaffinity.net/view/25377262/"},
  111. { name: "feral.svg", source: "https://www.furaffinity.net/view/25377262/"}
  112. ],
  113. authors: [
  114. "d-eath-tail"
  115. ],
  116. owners: [
  117. "scareye"
  118. ]
  119. },
  120. {
  121. prefix: "./media/characters/malfressa/",
  122. files: [
  123. { name: "walking.svg", source: "https://www.furaffinity.net/view/23877052/"}
  124. ],
  125. authors: [
  126. "kerneldecoy"
  127. ],
  128. owners: [
  129. "scareye"
  130. ]
  131. },
  132. {
  133. prefix: "./media/characters/nibbles/",
  134. files: [
  135. { name: "front.svg", source: "https://www.furaffinity.net/view/22964778/"},
  136. { name: "side.svg", source: "https://www.furaffinity.net/view/22964778/"},
  137. ],
  138. authors: [
  139. "dragga"
  140. ],
  141. owners: [
  142. "movler"
  143. ]
  144. },
  145. {
  146. prefix: "./media/characters/rikky/",
  147. files: [
  148. { name: "side.svg", source: null}
  149. ],
  150. authors: [
  151. "ethan64"
  152. ],
  153. owners: [
  154. "quake-yote"
  155. ]
  156. },
  157. {
  158. prefix: "./media/characters/surgo/",
  159. files: [
  160. { name: "front.svg", source: "https://www.furaffinity.net/view/33348481/"},
  161. { name: "back.svg", source: "https://www.furaffinity.net/view/33348481/"},
  162. { name: "laying.svg", source: "https://www.furaffinity.net/view/33348481/"},
  163. ],
  164. authors: [
  165. "gaiawolfess",
  166. "malakhael"
  167. ],
  168. owners: [
  169. "movler"
  170. ]
  171. },
  172. {
  173. prefix: "./media/characters/tiberius/",
  174. files: [
  175. { name: "front.svg", source: "https://www.furaffinity.net/view/34977812/"},
  176. { name: "back.svg", source: "https://www.furaffinity.net/view/34977812/"}
  177. ],
  178. authors: [
  179. "Rebonica"
  180. ],
  181. owners: [
  182. "movler"
  183. ]
  184. },
  185. {
  186. prefix: "./media/characters/",
  187. files: [
  188. { name: "", source: ""}
  189. ],
  190. authors: [
  191. ]
  192. }
  193. ],
  194. people: {
  195. "cardboardhead": {
  196. name: "cardboardhead",
  197. url: "https://twitter.com/cardboardhead"
  198. },
  199. "chemicalcrux": {
  200. name: "chemicalcrux",
  201. url: "https://www.furaffinity.net/user/chemicalcrux"
  202. },
  203. "clown-grin": {
  204. name: "clown-grin",
  205. url: "https://www.furaffinity.net/user/clown-grin"
  206. },
  207. "d-eath-tail": {
  208. name: "Deathy",
  209. url: "https://www.furaffinity.net/user/d-eath-tail"
  210. },
  211. "Dialuca01": {
  212. name: "Dialuca",
  213. url: "https://www.furaffinity.net/user/dialuca01"
  214. },
  215. "dragga": {
  216. name: "Dragga",
  217. url: "https://www.furaffinity.net/user/dragga"
  218. },
  219. "ethan64": {
  220. name: "Ethan64",
  221. url: "https://www.furaffinity.net/user/ethan64/"
  222. },
  223. "gaiawolfess": {
  224. name: "Gaiawolfess",
  225. url: "https://www.furaffinity.net/user/gaiawolfess"
  226. },
  227. "jaydom": {
  228. name: "Jaydom",
  229. url: "https://www.furaffinity.net/user/jaydom"
  230. },
  231. "just-a-little-mixed-up": {
  232. name: "just-a-little-mixed-up",
  233. url: "https://www.furaffinity.net/user/just-a-little-mixed-up"
  234. },
  235. "kerneldecoy": {
  236. name: "Kernel Decoy",
  237. url: "https://www.furaffinity.net/user/kerneldecoy/"
  238. },
  239. "labratkuma": {
  240. name: "labratkuma",
  241. url: "https://www.furaffinity.net/user/labratkuma"
  242. },
  243. "malakhael": {
  244. name: "Malakhael",
  245. url: "https://www.furaffinity.net/user/malakhael"
  246. },
  247. "mallowchu": {
  248. name: "Mallowchu",
  249. url: "https://www.furaffinity.net/user/mallowchu"
  250. },
  251. "movler": {
  252. name: "Movler",
  253. url: "https://www.furaffinity.net/user/movler/"
  254. },
  255. "oselotti": {
  256. name: "Oselotti",
  257. url: "https://www.furaffinity.net/user/oselotti"
  258. },
  259. "quake-yote": {
  260. name: "Quake Yote",
  261. url: "https://www.furaffinity.net/user/rokossovskiy"
  262. },
  263. "Rebonica": {
  264. name: "Rebonica",
  265. url: "https://www.furaffinity.net/user/rebonica"
  266. },
  267. "scareye": {
  268. name: "Scareye",
  269. url: "https://www.furaffinity.net/user/scareye/"
  270. },
  271. "spyropurple": {
  272. name: "spyropurple",
  273. url: "https://www.furaffinity.net/user/spyropurple/"
  274. }
  275. }
  276. }
  277. const attribution = {};
  278. function prepareAttribution() {
  279. attribution["files"] = {};
  280. attributionData.sources.forEach(citation => {
  281. citation.files.forEach(file => {
  282. attribution.files[citation.prefix + file.name] = {
  283. authors: citation.authors,
  284. owners: citation.owners,
  285. source: file.source
  286. }
  287. })
  288. });
  289. }
  290. function authorsOf(file) {
  291. if (attribution.files[file])
  292. return attribution.files[file].authors;
  293. else
  294. return undefined;
  295. }
  296. function authorsOfFull(file) {
  297. if (attribution.files[file]) {
  298. const result = [];
  299. attribution.files[file].authors.forEach(author => {
  300. result.push(attributionData.people[author]);
  301. });
  302. return result;
  303. }
  304. else
  305. return undefined;
  306. }
  307. function ownersOf(file) {
  308. if (attribution.files[file])
  309. return attribution.files[file].owners;
  310. else
  311. return undefined;
  312. }
  313. function ownersOfFull(file) {
  314. if (attribution.files[file]) {
  315. if (attribution.files[file].owners !== undefined) {
  316. const result = [];
  317. attribution.files[file].owners.forEach(owner => {
  318. result.push(attributionData.people[owner]);
  319. });
  320. return result;
  321. } else {
  322. return [];
  323. }
  324. }
  325. else
  326. return undefined;
  327. }
  328. function sourceOf(file) {
  329. if (attribution.files[file])
  330. return attribution.files[file].source;
  331. else
  332. return undefined;
  333. }
  334. prepareAttribution();