diff --git a/Socialmetrica.package/.filetree b/Socialmetrica.package/.filetree new file mode 100644 index 0000000..57a6797 --- /dev/null +++ b/Socialmetrica.package/.filetree @@ -0,0 +1,5 @@ +{ + "separateMethodMetaAndSource" : false, + "noMethodMetaData" : true, + "useCypressPropertiesFile" : true +} \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/README.md b/Socialmetrica.package/DiscourseTopic.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/addKeyword.to..st b/Socialmetrica.package/DiscourseTopic.class/instance/addKeyword.to..st new file mode 100644 index 0000000..4ad05a9 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/addKeyword.to..st @@ -0,0 +1,3 @@ +accessing +addKeyword: keyword to: subtopic + (self subtopics at: subtopic) add: keyword. \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/addSubtopic..st b/Socialmetrica.package/DiscourseTopic.class/instance/addSubtopic..st new file mode 100644 index 0000000..5d77402 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/addSubtopic..st @@ -0,0 +1,3 @@ +accessing +addSubtopic: subtopicString + self subtopics at: subtopicString put: Set new. \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/language..st b/Socialmetrica.package/DiscourseTopic.class/instance/language..st new file mode 100644 index 0000000..b19dfef --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/language..st @@ -0,0 +1,4 @@ +accessing +language: isoLanguageCode + "isoLanguageCode follows the ISO 639-1 two letters convention" + language := isoLanguageCode \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/language.st b/Socialmetrica.package/DiscourseTopic.class/instance/language.st new file mode 100644 index 0000000..6a19765 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/language.st @@ -0,0 +1,3 @@ +accessing +language + ^ language \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/name..st b/Socialmetrica.package/DiscourseTopic.class/instance/name..st new file mode 100644 index 0000000..e8cfe90 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/name..st @@ -0,0 +1,3 @@ +accessing +name: aString + name := aString \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/name.st b/Socialmetrica.package/DiscourseTopic.class/instance/name.st new file mode 100644 index 0000000..22077c2 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/name.st @@ -0,0 +1,3 @@ +accessing +name + ^ name \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/printOn..st b/Socialmetrica.package/DiscourseTopic.class/instance/printOn..st new file mode 100644 index 0000000..6792800 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '( ',self name, ' | ', self language, ' )' \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/subtopics..st b/Socialmetrica.package/DiscourseTopic.class/instance/subtopics..st new file mode 100644 index 0000000..ec1a799 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/subtopics..st @@ -0,0 +1,3 @@ +accessing +subtopics: subtopicsNamesArray + subtopicsNamesArray do: [:each | self addSubtopic: each ] \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/instance/subtopics.st b/Socialmetrica.package/DiscourseTopic.class/instance/subtopics.st new file mode 100644 index 0000000..a7e1243 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/instance/subtopics.st @@ -0,0 +1,3 @@ +accessing +subtopics + ^ subtopics ifNil: [ subtopics := Dictionary new ] \ No newline at end of file diff --git a/Socialmetrica.package/DiscourseTopic.class/properties.json b/Socialmetrica.package/DiscourseTopic.class/properties.json new file mode 100644 index 0000000..f96d578 --- /dev/null +++ b/Socialmetrica.package/DiscourseTopic.class/properties.json @@ -0,0 +1,15 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "language", + "name", + "subtopics" + ], + "name" : "DiscourseTopic", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/README.md b/Socialmetrica.package/NitterUser.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/NitterUser.class/class/nitterProvider.st b/Socialmetrica.package/NitterUser.class/class/nitterProvider.st new file mode 100644 index 0000000..11c9954 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/class/nitterProvider.st @@ -0,0 +1,6 @@ +accessing +nitterProvider + "For a full list of Nitter providers, see: + + https://github.com/zedeus/nitter/wiki/Instances" + ^ 'https://nitter.42l.fr/' \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/asDictionary.st b/Socialmetrica.package/NitterUser.class/instance/asDictionary.st new file mode 100644 index 0000000..e4f537c --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/asDictionary.st @@ -0,0 +1,7 @@ +accessing +asDictionary + + ^ { 'profile-card-avatar' -> self profileImageFile fullName. + 'profile-card-fullname' -> self name . + 'profile-card-username' -> self userName . + 'profile-bio' -> self profileBio } asDictionary \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/config..st b/Socialmetrica.package/NitterUser.class/instance/config..st new file mode 100644 index 0000000..ccb78a3 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/config..st @@ -0,0 +1,4 @@ +accessing +config: aDictionary + + config := aDictionary \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/config.st b/Socialmetrica.package/NitterUser.class/instance/config.st new file mode 100644 index 0000000..68e5e4a --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/config.st @@ -0,0 +1,4 @@ +accessing +config + + ^ config \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/createdAt.st b/Socialmetrica.package/NitterUser.class/instance/createdAt.st new file mode 100644 index 0000000..31412ab --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/createdAt.st @@ -0,0 +1,6 @@ +accessing +createdAt + ^ createdAt ifNil: [| joinDateString | + joinDateString := ((self documentTree xpath: '//div[@class="profile-joindate"]/span/@title') stringValue). + createdAt := (ZTimestampFormat fromString:'4:05 PM - 03 Feb 2001') parse: joinDateString. + ] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/description.st b/Socialmetrica.package/NitterUser.class/instance/description.st new file mode 100644 index 0000000..99dc25f --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/description.st @@ -0,0 +1,3 @@ +accessing +description + ^ description ifNil: [description := (self documentTree xpath: '//div[@class="profile-bio"]') stringValue] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/documentTree.st b/Socialmetrica.package/NitterUser.class/instance/documentTree.st new file mode 100644 index 0000000..86360ec --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/documentTree.st @@ -0,0 +1,3 @@ +operation +documentTree + ^ XMLHTMLParser parse: self userNameLink asUrl retrieveContents \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st b/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st new file mode 100644 index 0000000..1c167f6 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st @@ -0,0 +1,4 @@ +accessing +downloadProfileImage + + self exportProfileImageOn: self folder / self userName, '.jpg' \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st b/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st new file mode 100644 index 0000000..4039d1a --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st @@ -0,0 +1,12 @@ +accessing +exportProfileImageOn: fileReference + + | file | + file := fileReference asFileReference. + file ensureDelete. + file exists ifFalse: [ file ensureCreateFile ]. + file binaryWriteStreamDo: [ :stream | + stream nextPutAll: profileImageUrl retrieveContents ]. + profileImageFile := file. + super class inform: 'Exported as: ', String cr, file fullName. + ^ file \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/exportWithTemplate.On..st b/Socialmetrica.package/NitterUser.class/instance/exportWithTemplate.On..st new file mode 100644 index 0000000..8171291 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/exportWithTemplate.On..st @@ -0,0 +1,9 @@ +accessing +exportWithTemplate: mustacheFile On: folder + + | mustacheDoc | + self exportProfileImageOn:folder / userName, '-profileImage.jpg'. + mustacheDoc := mustacheFile asMustacheTemplate value: self asDictionary. + MarkupFile + exportAsFileOn: (folder / self userName , 'tex') + containing: mustacheDoc \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/folder.st b/Socialmetrica.package/NitterUser.class/instance/folder.st new file mode 100644 index 0000000..140885f --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/folder.st @@ -0,0 +1,4 @@ +accessing +folder + + ^ self config at: 'folder'. \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/getMessages.st b/Socialmetrica.package/NitterUser.class/instance/getMessages.st new file mode 100644 index 0000000..71f2715 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/getMessages.st @@ -0,0 +1,10 @@ +accessing +getMessages + | lastTweetsRaw lastTweets | + lastTweetsRaw := self rssFeed xmlDocument xpath: '//item'. + lastTweets := TweetsCollection new. + lastTweetsRaw do: [ :rssTweet | + lastTweets add: ((Tweet new fromNitterRssItem: rssTweet )) + ]. + ^ lastTweets + \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/id.st b/Socialmetrica.package/NitterUser.class/instance/id.st new file mode 100644 index 0000000..6db6025 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/id.st @@ -0,0 +1,3 @@ +accessing +id + ^ id ifNil: [id := (self profileImageUrl segments select: [ :each | each asInteger class = LargePositiveInteger]) first.] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/name.st b/Socialmetrica.package/NitterUser.class/instance/name.st new file mode 100644 index 0000000..e17d843 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/name.st @@ -0,0 +1,3 @@ +accessing +name + ^ name ifNil: [ name := ((self rssFeed requiredItems title) splitOn: '/') first ] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/profileBio.st b/Socialmetrica.package/NitterUser.class/instance/profileBio.st new file mode 100644 index 0000000..cb3348a --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/profileBio.st @@ -0,0 +1,4 @@ +accessing +profileBio + + ^ profileBio := (self documentTree xpath: '/html/body/div/div/div[2]/div[1]/div[2]/div[1]') stringValue \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/profileImageUrl.st b/Socialmetrica.package/NitterUser.class/instance/profileImageUrl.st new file mode 100644 index 0000000..7b64f58 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/profileImageUrl.st @@ -0,0 +1,4 @@ +accessing +profileImageUrl + ^ profileImageUrl ifNil: [ + profileImageUrl := ((self rssFeed xmlDocument xpath: '//image/url') stringValue copyReplaceAll: '%2F' with: '/') asUrl ] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/retrieveContents.st b/Socialmetrica.package/NitterUser.class/instance/retrieveContents.st new file mode 100644 index 0000000..1620063 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/retrieveContents.st @@ -0,0 +1,12 @@ +accessing +retrieveContents + self userName ifNil: [^ self]. + ^ self + id; + name; + description; + createdAt; + url; + profileImageUrl; + profileBio; + yourself. \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/rssFeed.st b/Socialmetrica.package/NitterUser.class/instance/rssFeed.st new file mode 100644 index 0000000..e3f6d47 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/rssFeed.st @@ -0,0 +1,4 @@ +accessing +rssFeed + + ^ RSSTools createRSSFeedFor: self userNameLink , '/rss' \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/url.st b/Socialmetrica.package/NitterUser.class/instance/url.st new file mode 100644 index 0000000..f0d63f4 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/url.st @@ -0,0 +1,7 @@ +accessing +url + ^ url ifNil: [ | temp | + temp := ((self documentTree xpath: '//div[@class="profile-website"]') // 'a' @@ 'href') first. + temp ifNil: [ ^ url := nil ]. + url := temp asUrl. + ] \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/userName..st b/Socialmetrica.package/NitterUser.class/instance/userName..st new file mode 100644 index 0000000..48074cd --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/userName..st @@ -0,0 +1,3 @@ +accessing +userName: userNameString + userName := userNameString. \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/userNameLink.st b/Socialmetrica.package/NitterUser.class/instance/userNameLink.st new file mode 100644 index 0000000..71f452b --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/instance/userNameLink.st @@ -0,0 +1,4 @@ +accessing +userNameLink + + ^ self class nitterProvider, self userName \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/properties.json b/Socialmetrica.package/NitterUser.class/properties.json new file mode 100644 index 0000000..c206f21 --- /dev/null +++ b/Socialmetrica.package/NitterUser.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "TwitterUser", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "config" + ], + "name" : "NitterUser", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/README.md b/Socialmetrica.package/Tweet.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/Tweet.class/instance/asCardElement.st b/Socialmetrica.package/Tweet.class/instance/asCardElement.st new file mode 100644 index 0000000..7998aa3 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/asCardElement.st @@ -0,0 +1,62 @@ +accessing +asCardElement + | aModeLook anEditor textInfoPane buttonsPane | + + aModeLook := BrEditorModeAptitude new + editableFocused: [ :aWidget | aWidget border: (BlBorder paint: BrGlamorousColors focusedEditorBorderColor width: 1) ]; + editableUnfocused: [ :aWidget | aWidget border: (BlBorder paint: BrGlamorousColors editorBorderColor width: 1) ]; + readOnly: [ :aWidget | aWidget border: BlBorder empty ]. + + anEditor := BrEditor new + aptitude: BrGlamorousRegularEditorAptitude new + aModeLook; + text: self text; + vFitContent. + + textInfoPane := BrVerticalPane new + hMatchParent; + vFitContent; + margin: (BlInsets left: 20); + addChild: (BrLabel new + aptitude: BrGlamorousLabelAptitude; + text: '@' , self user userName , ' | ' , self created asString; + beSmallSize); + addChild: anEditor. + buttonsPane := BrHorizontalPane new + fitContent; + cellSpacing: 5; + addChildren: { + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Toggle subtopics'; + action: [ anEditor beEditable ]. + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Add subtopic keyword'; + action: [ anEditor beReadOnlyWithSelection ]. + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Details'; + action: [ :e | e phlow spawnObject: self ]. + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Web view'; + action: [ self webView ]. + }. + + ^ BrHorizontalPane new + padding: (BlInsets all: 15); + margin: (BlInsets all: 10); + cellSpacing: 5; + hMatchParent; + vFitContent; + addChildren: { + (self user profileImage asElement asScalableElement size: 64 @ 64). + BrVerticalPane new + cellSpacing: 5; + hMatchParent; + vFitContent; + addChildren: { + buttonsPane. + textInfoPane. + } + } \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/created.st b/Socialmetrica.package/Tweet.class/instance/created.st new file mode 100644 index 0000000..dd73b5c --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/created.st @@ -0,0 +1,3 @@ +accessing +created + ^ created \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/fromDictionary..st b/Socialmetrica.package/Tweet.class/instance/fromDictionary..st new file mode 100644 index 0000000..cd755ce --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/fromDictionary..st @@ -0,0 +1,9 @@ +accessing +fromDictionary: aDictionary + created := (aDictionary at: 'created_at') asDateAndTime. + text := aDictionary at: 'text'. + id := aDictionary at: 'id'. + authorId := aDictionary at: 'author_id'. + user := aDictionary at: 'username' ifAbsent: [''] . + conversationId := aDictionary at: 'conversation_id' ifAbsent: [ '' ]. + ^ self \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/fromNitter..st b/Socialmetrica.package/Tweet.class/instance/fromNitter..st new file mode 100644 index 0000000..b583e8a --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/fromNitter..st @@ -0,0 +1,9 @@ +accessing +fromNitter: aDictionary + created := (aDictionary at: 'pubDate') "asDateAndTime". + text := aDictionary at: 'text'. + "id := aDictionary at: 'id'. + authorId := aDictionary at: 'author_id'." + user := aDictionary at: 'creator'. + "conversationId := aDictionary at: 'conversation_id' ifAbsent: [ '' ]." + ^ self \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/fromNitterRssItem..st b/Socialmetrica.package/Tweet.class/instance/fromNitterRssItem..st new file mode 100644 index 0000000..7abd0a3 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/fromNitterRssItem..st @@ -0,0 +1,9 @@ +accessing +fromNitterRssItem: xmlItem + | author | + author := (xmlItem xpath: 'dc:creator') stringValue allButFirst. + user := NitterUser new + userName: author . + created := (xmlItem xpath: 'pubDate') stringValue. + text := (XMLHTMLParser on: (xmlItem xpath: 'description') stringValue) parseDocument stringValue. + id := ((xmlItem xpath: 'guid') stringValue splitOn: '/') last copyReplaceAll: '#m' with: '' \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/gtViewTweetDetailsOn..st b/Socialmetrica.package/Tweet.class/instance/gtViewTweetDetailsOn..st new file mode 100644 index 0000000..ec1bd23 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/gtViewTweetDetailsOn..st @@ -0,0 +1,16 @@ +accessing +gtViewTweetDetailsOn: aView + + ^ aView explicit + title: 'Tweet Details' translated; + priority: 5; + stencil: [ + BlElement new + layout: BlFlowLayout new; + constraintsDo: [ :c | + c vertical fitContent. + c horizontal matchParent ]; + padding: (BlInsets all: 10); + addChild: (self asCardElement margin: (BlInsets all: 20)) + ] + \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/id.st b/Socialmetrica.package/Tweet.class/instance/id.st new file mode 100644 index 0000000..41241a3 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/id.st @@ -0,0 +1,3 @@ +accessing +id + ^ id \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/mentions..st b/Socialmetrica.package/Tweet.class/instance/mentions..st new file mode 100644 index 0000000..6a16528 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/mentions..st @@ -0,0 +1,3 @@ +queries +mentions: aWord + ^ self text includesSubstring: aWord \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/printOn..st b/Socialmetrica.package/Tweet.class/instance/printOn..st new file mode 100644 index 0000000..eacd230 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '( ',self text ,' )' \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/text.st b/Socialmetrica.package/Tweet.class/instance/text.st new file mode 100644 index 0000000..3251dea --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/text.st @@ -0,0 +1,3 @@ +accessing +text + ^ text \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/user..st b/Socialmetrica.package/Tweet.class/instance/user..st new file mode 100644 index 0000000..ccfbb78 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/user..st @@ -0,0 +1,3 @@ +accessing +user: aTwitterUser + user := aTwitterUser \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/user.st b/Socialmetrica.package/Tweet.class/instance/user.st new file mode 100644 index 0000000..362421a --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/user.st @@ -0,0 +1,3 @@ +accessing +user + ^ user \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/webView.st b/Socialmetrica.package/Tweet.class/instance/webView.st new file mode 100644 index 0000000..d02a1cb --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/webView.st @@ -0,0 +1,3 @@ +accessing +webView + WebBrowser openOn: 'https://twitter.com/', self user userName, '/status/', self id \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/words.st b/Socialmetrica.package/Tweet.class/instance/words.st new file mode 100644 index 0000000..698a2f8 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/words.st @@ -0,0 +1,3 @@ +utilities +words + ^ self text allRegexMatches: '\w*' \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/instance/wordsInLowercase.st b/Socialmetrica.package/Tweet.class/instance/wordsInLowercase.st new file mode 100644 index 0000000..6379427 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/instance/wordsInLowercase.st @@ -0,0 +1,3 @@ +accessing +wordsInLowercase + ^ self words collect: [:word | word asLowercase ] \ No newline at end of file diff --git a/Socialmetrica.package/Tweet.class/properties.json b/Socialmetrica.package/Tweet.class/properties.json new file mode 100644 index 0000000..17fa832 --- /dev/null +++ b/Socialmetrica.package/Tweet.class/properties.json @@ -0,0 +1,18 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "created", + "text", + "id", + "authorId", + "conversationId", + "user" + ], + "name" : "Tweet", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/README.md b/Socialmetrica.package/TweetsCollection.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/TweetsCollection.class/instance/add..st b/Socialmetrica.package/TweetsCollection.class/instance/add..st new file mode 100644 index 0000000..2bd096e --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/add..st @@ -0,0 +1,3 @@ +accessing +add: aTweet + self tweets add: aTweet \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/instance/gtTweetsFor..st b/Socialmetrica.package/TweetsCollection.class/instance/gtTweetsFor..st new file mode 100644 index 0000000..31f3051 --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/gtTweetsFor..st @@ -0,0 +1,25 @@ +ui +gtTweetsFor: aView + + ^ aView explicit + title: 'Tweets'; + stencil: [ + | container imageContainer | + container := BlElement new + layout: BlFlowLayout new; + constraintsDo: [ :c | + c vertical fitContent. + c horizontal matchParent ]; + padding: (BlInsets all: 10). + self tweets do: [ :each | + imageContainer := BlLazyElement new + withGlamorousPreview; + aptitude: BrShadowAptitude new; + background: Color white; + margin: (BlInsets all: 10); + constraintsDo: [ :c | + c vertical exact: 145. + c horizontal matchParent ]; + elementBuilder: [ each asCardElement margin: (BlInsets all: 20) ]. + container addChild: imageContainer]. + container asScrollableElement ] \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/instance/printOn..st b/Socialmetrica.package/TweetsCollection.class/instance/printOn..st new file mode 100644 index 0000000..d864500 --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '( ',self size asString, ' Tweet(s) )' \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/instance/size.st b/Socialmetrica.package/TweetsCollection.class/instance/size.st new file mode 100644 index 0000000..c2cdbcc --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/size.st @@ -0,0 +1,3 @@ +accessing +size + ^ self tweets size \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/instance/tweets..st b/Socialmetrica.package/TweetsCollection.class/instance/tweets..st new file mode 100644 index 0000000..1361d1b --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/tweets..st @@ -0,0 +1,3 @@ +accessing +tweets: aTweetsCollection + ^ tweets := aTweetsCollection \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/instance/tweets.st b/Socialmetrica.package/TweetsCollection.class/instance/tweets.st new file mode 100644 index 0000000..b2a337f --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/instance/tweets.st @@ -0,0 +1,3 @@ +accessing +tweets + ^ tweets ifNil: [ tweets := OrderedCollection new] \ No newline at end of file diff --git a/Socialmetrica.package/TweetsCollection.class/properties.json b/Socialmetrica.package/TweetsCollection.class/properties.json new file mode 100644 index 0000000..1758ab4 --- /dev/null +++ b/Socialmetrica.package/TweetsCollection.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "tweets" + ], + "name" : "TweetsCollection", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/README.md b/Socialmetrica.package/TwitterAPI.class/README.md new file mode 100644 index 0000000..ddb9a25 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/README.md @@ -0,0 +1,3 @@ +I model some parts of the Twitter API version 2 as described in: + + \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile..st b/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile..st new file mode 100644 index 0000000..59a8da7 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile..st @@ -0,0 +1,3 @@ +accessing +apiKeysFile: aFileReference + apiKeysFile := aFileReference \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile.st b/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile.st new file mode 100644 index 0000000..cf4eb03 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/class/apiKeysFile.st @@ -0,0 +1,5 @@ +accessing +apiKeysFile + "Return the defined apiKeysFile or assign a default location following the Linux Standard + File Hierarchy, which is relatively portable to other Operative Systems." + ^ apiKeysFile ifNil: [ apiKeysFile := FileLocator home / '.config/Datanalitica/twitter-api-keys.json' ] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/class/keys.st b/Socialmetrica.package/TwitterAPI.class/class/keys.st new file mode 100644 index 0000000..03ed198 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/class/keys.st @@ -0,0 +1,3 @@ +accessing +keys + ^ keys ifNil: [ keys := Dictionary new] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/class/loadKeys.st b/Socialmetrica.package/TwitterAPI.class/class/loadKeys.st new file mode 100644 index 0000000..b14572b --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/class/loadKeys.st @@ -0,0 +1,4 @@ +accessing +loadKeys + keys := STONJSON fromString: self apiKeysFile contents. + ^ keys \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/bearerToken.st b/Socialmetrica.package/TwitterAPI.class/instance/bearerToken.st new file mode 100644 index 0000000..4002900 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/bearerToken.st @@ -0,0 +1,3 @@ +accessing +bearerToken + ^ self class keys at: 'Bearer Token' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/defaultQueryParameters.st b/Socialmetrica.package/TwitterAPI.class/instance/defaultQueryParameters.st new file mode 100644 index 0000000..fdf58a2 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/defaultQueryParameters.st @@ -0,0 +1,7 @@ +accessing +defaultQueryParameters + ^ Dictionary new + at: 'tweetsOrig' put: '?tweet.fields=created_at&expansions=author_id&user.fields=created_at&max_results=100'; + at: 'tweets' put: '?', 'tweet.fields=created_at', '&', 'expansions=author_id', '&', 'max_results=100'; + at: 'mentionsOrig' put: '?expansions=author_id&tweet.fields=conversation_id,created_at,lang&user.fields=created_at,entities&max_results=100'; + yourself \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/keys.st b/Socialmetrica.package/TwitterAPI.class/instance/keys.st new file mode 100644 index 0000000..4289fa5 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/keys.st @@ -0,0 +1,3 @@ +accessing +keys + ^ keys ifNil: [ keys := self class loadKeys] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/loadKeys.st b/Socialmetrica.package/TwitterAPI.class/instance/loadKeys.st new file mode 100644 index 0000000..808d5f2 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/loadKeys.st @@ -0,0 +1,4 @@ +accessing +loadKeys + keys := self class loadKeys. + ^ self \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/options..st b/Socialmetrica.package/TwitterAPI.class/instance/options..st new file mode 100644 index 0000000..f7b81f6 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/options..st @@ -0,0 +1,3 @@ +accessing +options: aDictionary + options := aDictionary \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/options.st b/Socialmetrica.package/TwitterAPI.class/instance/options.st new file mode 100644 index 0000000..ce9e2ab --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/options.st @@ -0,0 +1,9 @@ +accessing +options + "Return the configuration options or define a default if they are not given" + ^ options ifNil: [ + options := Dictionary new + at: 'caching' put: true; + at: 'pagesPerRequest' put: '1'; + yourself + ] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/rawResponseForURL..st b/Socialmetrica.package/TwitterAPI.class/instance/rawResponseForURL..st new file mode 100644 index 0000000..2c3b790 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/rawResponseForURL..st @@ -0,0 +1,6 @@ +accessing +rawResponseForURL: anUrl + ^ ZnClient new + headerAt: 'Authorization' put: 'Bearer ', self bearerToken; + url: anUrl; + get. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/storage..st b/Socialmetrica.package/TwitterAPI.class/instance/storage..st new file mode 100644 index 0000000..ee2dfd3 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/storage..st @@ -0,0 +1,4 @@ +accessing +storage: aFolder + + storage := aFolder \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/storage.st b/Socialmetrica.package/TwitterAPI.class/instance/storage.st new file mode 100644 index 0000000..7275c54 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/storage.st @@ -0,0 +1,4 @@ +accessing +storage + + ^ storage \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting..st b/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting..st new file mode 100644 index 0000000..c385c69 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting..st @@ -0,0 +1,8 @@ +accessing +userEndPointFor: username selecting: tweetsOrMentions + "I build a shared URL for querying last 100 mentions or tweets for a particular user. + Second parameter should be only 'tweets' or 'mentions', dateString, if present, should be YYYY-MM-DD." + | commonQueryParameters userFields | + userFields := 'user.fields=username,name,description,profile_image_url,created_at'. + commonQueryParameters := '?expansions=author_id&tweet.fields=conversation_id,created_at&', userFields, '&max_results=100'. + ^ self usersBaseEndPoint, (self userIDFrom: username), '/', tweetsOrMentions, commonQueryParameters \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting.since..st b/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting.since..st new file mode 100644 index 0000000..bb3bd7c --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userEndPointFor.selecting.since..st @@ -0,0 +1,8 @@ +as yet unclassified +userEndPointFor: username selecting: tweetsOrMentions since: dateString + "I build a shared URL for querying last 100 mentions or tweets for a particular user. + Second parameter should be only 'tweets' or 'mentions', dateString should be YYYY-MM-DD." + | commonQueryParameters | + commonQueryParameters := '?expansions=author_id&tweet.fields=conversation_id,created_at&user.fields=username&max_results=100', + '&start_time=', dateString,'T00:00:00Z&'. + ^ self usersBaseEndPoint, (self userIDFrom: username), '/', tweetsOrMentions, commonQueryParameters \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userIDFrom..st b/Socialmetrica.package/TwitterAPI.class/instance/userIDFrom..st new file mode 100644 index 0000000..746989f --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userIDFrom..st @@ -0,0 +1,5 @@ +queries +userIDFrom: username + | rawResponse | + rawResponse := self rawResponseForURL: self usersBaseEndPoint, 'by/username/', username. + ^ (STONJSON fromString: rawResponse) at: 'data' at: 'id' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor..st b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor..st new file mode 100644 index 0000000..2ea7009 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor..st @@ -0,0 +1,4 @@ +accessing +userMentionsFor: username + "The following query gets the last 100 mentions that is the maximun allowed for a particular user without pagination:" + ^ self userQueryFor: username selecting: 'mentions' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since..st b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since..st new file mode 100644 index 0000000..312afa0 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since..st @@ -0,0 +1,18 @@ +accessing +userMentionsFor: username since: startDateString + | nextToken queryUrl sinceDate untilDate messages response | + + sinceDate := 'start_time=',startDateString, 'T00:00:00Z'. + messages := OrderedCollection new. + nextToken := ''. + [ nextToken includesSubstring: 'stop' ] whileFalse: [ + queryUrl := self usersBaseEndPoint, + (self userIDFrom: username), '/mentions', (self defaultQueryParameters at: 'mentionsOrig') , + '&', sinceDate, + '&', nextToken. + response := STONJSON fromString: (self rawResponseForURL: queryUrl). + (response at: 'data') do: [:tweetData | + messages add: (Tweet new fromDictionary: tweetData) + ]. + nextToken := 'pagination_token=',((response at: 'meta') at: 'next_token' ifAbsent: [ 'stop' ])]. +^ messages. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since.until..st b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since.until..st new file mode 100644 index 0000000..488502f --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userMentionsFor.since.until..st @@ -0,0 +1,21 @@ +accessing +userMentionsFor: username since: startDateString until: endDateString + | nextToken queryUrl sinceDate untilDate messages response extraQueryParamenters | + + sinceDate := 'start_time=',startDateString, 'T17:00:00Z'. + untilDate := 'end_time=',endDateString, 'T01:00:00Z'. + extraQueryParamenters := '?expansions=author_id&tweet.fields=conversation_id&user.fields=created_at,entities&max_results=100'. + messages := OrderedCollection new. + nextToken := ''. + [ nextToken includesSubstring: 'stop' ] whileFalse: [ + queryUrl := self usersBaseEndPoint, + (self userIDFrom: username), '/mentions', extraQueryParamenters, + '&', sinceDate, + "'&', untilDate," + '&', nextToken. + response := STONJSON fromString: (self rawResponseForURL: queryUrl). + (response at: 'data') do: [:tweetData | + messages add: (Tweet new fromDictionary: tweetData) + ]. + nextToken := 'pagination_token=',((response at: 'meta') at: 'next_token' ifAbsent: [ 'stop' ])]. +^ messages. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userQueryFor.selecting..st b/Socialmetrica.package/TwitterAPI.class/instance/userQueryFor.selecting..st new file mode 100644 index 0000000..fa9d2d5 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userQueryFor.selecting..st @@ -0,0 +1,10 @@ +accessing +userQueryFor: username selecting: tweetsOrMentions + | rawResponse queryURL | + "The following query gets the last 100 tweets or mentions that is the maximun allowed for a particular user without pagination:" + queryURL := self userEndPointFor: username selecting: tweetsOrMentions. + rawResponse := self rawResponseForURL:queryURL. + ^ TwitterAPIResponse new + fromDictionary: (STONJSON fromString: rawResponse); + queryURL: queryURL; + date: DateAndTime now. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom..st b/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom..st new file mode 100644 index 0000000..645e09c --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom..st @@ -0,0 +1,4 @@ +accessing +userTweetsFrom: username + "The following query gets the last 100 tweets, that is the maximun allowed for a particular user without pagination:" + ^ self userQueryFor: username selecting: 'tweets' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom.since.until..st b/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom.since.until..st new file mode 100644 index 0000000..2d82db2 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/userTweetsFrom.since.until..st @@ -0,0 +1,20 @@ +accessing +userTweetsFrom: username since: startDateString until: endDateString + | nextToken queryUrl sinceDate untilDate messages response | + + sinceDate := 'start_time=',startDateString, 'T00:00:00Z'. + untilDate := 'end_time=',endDateString, 'T23:59:59Z'. + messages := OrderedCollection new. + nextToken := ''. + [ nextToken includesSubstring: 'stop' ] whileFalse: [ + queryUrl := self usersBaseEndPoint, + (self userIDFrom: username), '/tweets', (self defaultQueryParameters at: 'tweets'), + '&', sinceDate, + '&', untilDate, + '&', nextToken. + response := STONJSON fromString: (self rawResponseForURL: queryUrl). + (response at: 'data') do: [:tweetData | + messages add: (Tweet new fromDictionary: tweetData) + ]. + nextToken := 'pagination_token=',((response at: 'meta') at: 'next_token' ifAbsent: [ 'stop' ])]. +^ messages. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/usersBaseEndPoint.st b/Socialmetrica.package/TwitterAPI.class/instance/usersBaseEndPoint.st new file mode 100644 index 0000000..9e2d942 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/usersBaseEndPoint.st @@ -0,0 +1,3 @@ +utilities api +usersBaseEndPoint + ^ 'https://api.twitter.com/2/users/' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/usersGroupMentioning..st b/Socialmetrica.package/TwitterAPI.class/instance/usersGroupMentioning..st new file mode 100644 index 0000000..7372b37 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/usersGroupMentioning..st @@ -0,0 +1,10 @@ +accessing +usersGroupMentioning: userName + | response | + response := self userQueryFor: userName selecting: 'mentions'. + ^ TwitterUsersGroup new + users: response messagesAuthors; + title: 'Users mentioning @', userName; + origin: response queryURL; + date: DateAndTime now; + storage: self storage. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/instance/usersMentioning..st b/Socialmetrica.package/TwitterAPI.class/instance/usersMentioning..st new file mode 100644 index 0000000..1cea532 --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/instance/usersMentioning..st @@ -0,0 +1,3 @@ +accessing +usersMentioning: userName + ^ (self userMentionsFor: userName) messagesAuthors \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPI.class/properties.json b/Socialmetrica.package/TwitterAPI.class/properties.json new file mode 100644 index 0000000..4993afd --- /dev/null +++ b/Socialmetrica.package/TwitterAPI.class/properties.json @@ -0,0 +1,18 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ + "apiKeysFile", + "keys" + ], + "instvars" : [ + "storage", + "options", + "keys" + ], + "name" : "TwitterAPI", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/README.md b/Socialmetrica.package/TwitterAPIResponse.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/data..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/data..st new file mode 100644 index 0000000..6133d52 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/data..st @@ -0,0 +1,3 @@ +accessing +data: anObject + data := anObject \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/data.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/data.st new file mode 100644 index 0000000..664ff01 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/data.st @@ -0,0 +1,3 @@ +accessing +data + ^ data \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/date..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/date..st new file mode 100644 index 0000000..9d04a8e --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/date..st @@ -0,0 +1,4 @@ +accessing +date: aDateAndTime + "As answers to the same query can change over time, for example regarding deteled users, its important to know where a query was ran." + date := aDateAndTime \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/date.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/date.st new file mode 100644 index 0000000..c536804 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/date.st @@ -0,0 +1,3 @@ +accessing +date + ^ date \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/fromDictionary..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/fromDictionary..st new file mode 100644 index 0000000..4eb5d95 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/fromDictionary..st @@ -0,0 +1,5 @@ +accessing +fromDictionary: aDictionary + data := aDictionary at: 'data'. + includes := aDictionary at: 'includes'. + meta := aDictionary at: 'meta'. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/fromQueryURL..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/fromQueryURL..st new file mode 100644 index 0000000..b86e6c5 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/fromQueryURL..st @@ -0,0 +1,3 @@ +accessing +fromQueryURL: aQueryURLString + \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/includes..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/includes..st new file mode 100644 index 0000000..282180e --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/includes..st @@ -0,0 +1,3 @@ +accessing +includes: anObject + includes := anObject \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/includes.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/includes.st new file mode 100644 index 0000000..b8cf758 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/includes.st @@ -0,0 +1,3 @@ +accessing +includes + ^ includes \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/messagesAuthors.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/messagesAuthors.st new file mode 100644 index 0000000..3eff33f --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/messagesAuthors.st @@ -0,0 +1,14 @@ +accessing +messagesAuthors + | groupedTweets | + self includes at: 'users' ifAbsent: [ ^ nil ]. + groupedTweets := self data groupedBy: [:each | each at: 'author_id' ]. + ^ (self includes at: 'users') collect: [:userDict | | user | + user := TwitterUser new fromDictionary: userDict. + (groupedTweets at: (user id)) do: [:tweetDict | | currentTweet | + currentTweet := Tweet new fromDictionary: tweetDict. + currentTweet user: user. + user tweets add: currentTweet. + ]. + user. + ] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/meta..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/meta..st new file mode 100644 index 0000000..5d288e8 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/meta..st @@ -0,0 +1,3 @@ +accessing +meta: anObject + meta := anObject \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/meta.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/meta.st new file mode 100644 index 0000000..36b6aca --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/meta.st @@ -0,0 +1,3 @@ +accessing +meta + ^ meta \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/nextToken.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/nextToken.st new file mode 100644 index 0000000..a8f658d --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/nextToken.st @@ -0,0 +1,3 @@ +accessing +nextToken + ^ self meta at: 'next_token' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/nextTokenPreview.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/nextTokenPreview.st new file mode 100644 index 0000000..25d40bf --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/nextTokenPreview.st @@ -0,0 +1,3 @@ +accessing +nextTokenPreview + ^ (self nextToken copyFrom: 1 to: 7), '...' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/printOn..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/printOn..st new file mode 100644 index 0000000..742d266 --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '( size: ', self data size asString, ' | next token: ', self nextTokenPreview, ' )' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL..st b/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL..st new file mode 100644 index 0000000..4fc36ca --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL..st @@ -0,0 +1,3 @@ +accessing +queryURL: aQueryURLString + queryURL := aQueryURLString \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL.st b/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL.st new file mode 100644 index 0000000..34197cb --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/instance/queryURL.st @@ -0,0 +1,3 @@ +accessing +queryURL + ^ queryURL \ No newline at end of file diff --git a/Socialmetrica.package/TwitterAPIResponse.class/properties.json b/Socialmetrica.package/TwitterAPIResponse.class/properties.json new file mode 100644 index 0000000..2f7c69b --- /dev/null +++ b/Socialmetrica.package/TwitterAPIResponse.class/properties.json @@ -0,0 +1,17 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "data", + "includes", + "meta", + "queryURL", + "date" + ], + "name" : "TwitterAPIResponse", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/README.md b/Socialmetrica.package/TwitterUser.class/README.md new file mode 100644 index 0000000..48a2214 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/README.md @@ -0,0 +1,3 @@ +I model some fields of a Twitter user model as described in: + + diff --git a/Socialmetrica.package/TwitterUser.class/instance/addToGroup..st b/Socialmetrica.package/TwitterUser.class/instance/addToGroup..st new file mode 100644 index 0000000..f1bc1f9 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/addToGroup..st @@ -0,0 +1,3 @@ +accessing +addToGroup: aTwitterUsersGroup + self groups add: aTwitterUsersGroup \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/asCardElement.st b/Socialmetrica.package/TwitterUser.class/instance/asCardElement.st new file mode 100644 index 0000000..787b8c3 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/asCardElement.st @@ -0,0 +1,67 @@ +accessing +asCardElement + | aModeLook anEditor textInfoPane buttonsPane webpageButton | + + aModeLook := BrEditorModeAptitude new + editableFocused: [ :aWidget | aWidget border: (BlBorder paint: BrGlamorousColors focusedEditorBorderColor width: 1) ]; + editableUnfocused: [ :aWidget | aWidget border: (BlBorder paint: BrGlamorousColors editorBorderColor width: 1) ]; + readOnly: [ :aWidget | aWidget border: BlBorder empty ]. + + anEditor := BrEditor new + aptitude: BrGlamorousRegularEditorAptitude new + aModeLook; + text: self description; + vFitContent. + + webpageButton := BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: self guiLinkLabel; + action: [ WebBrowser openOn: self url asString ]. + + textInfoPane := BrVerticalPane new + hMatchParent; + vFitContent; + margin: (BlInsets left: 20); + addChild: (BrLabel new + aptitude: BrGlamorousLabelAptitude; + text: '@' , self userName ; + beHugeSize); + addChild: (BrLabel new + aptitude: BrGlamorousLabelAptitude; + text: self name; + beLargeSize); + addChild: (BrLabel new + aptitude: BrGlamorousLabelAptitude; + text: 'Joined: ' , self createdAtShorted ). + self url ifNotNil: [textInfoPane addChild: webpageButton]. + textInfoPane addChild: anEditor. + buttonsPane := BrHorizontalPane new + fitContent; + cellSpacing: 5; + addChildren: { + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Tweets'; + action: [ :e | e phlow spawnObject: self getMessages ]. + BrButton new + aptitude: BrGlamorousButtonWithLabelAptitude new; + label: 'Web view'; + action: [ self webView ]. + }. + + ^ BrHorizontalPane new + padding: (BlInsets all: 15); + margin: (BlInsets all: 10); + cellSpacing: 5; + hMatchParent; + vFitContent; + addChildren: { + (self profileImage asElement asScalableElement size: 124 @ 124). + BrVerticalPane new + cellSpacing: 5; + hMatchParent; + vFitContent; + addChildren: { + buttonsPane. + textInfoPane. + } + } \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/createdAt.st b/Socialmetrica.package/TwitterUser.class/instance/createdAt.st new file mode 100644 index 0000000..75f554a --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/createdAt.st @@ -0,0 +1,3 @@ +accessing +createdAt + ^ createdAt \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/createdAtShorted.st b/Socialmetrica.package/TwitterUser.class/instance/createdAtShorted.st new file mode 100644 index 0000000..4112e52 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/createdAtShorted.st @@ -0,0 +1,3 @@ +accessing +createdAtShorted + ^ self createdAt asString copyFrom: 1 to: 10 \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/description.st b/Socialmetrica.package/TwitterUser.class/instance/description.st new file mode 100644 index 0000000..c5ddede --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/description.st @@ -0,0 +1,3 @@ +accessing +description + ^ description \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/fromDictionary..st b/Socialmetrica.package/TwitterUser.class/instance/fromDictionary..st new file mode 100644 index 0000000..0d67d73 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/fromDictionary..st @@ -0,0 +1,8 @@ +accessing +fromDictionary: userDict + id := userDict at: 'id'. + name := userDict at: 'name'. + userName := userDict at: 'username'. + createdAt := userDict at: 'created_at'. + profileImageUrl := userDict at: 'profile_image_url'. + description := userDict at: 'description'. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/fromNitterProfile..st b/Socialmetrica.package/TwitterUser.class/instance/fromNitterProfile..st new file mode 100644 index 0000000..b8e34b5 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/fromNitterProfile..st @@ -0,0 +1,10 @@ +accessing +fromNitterProfile: userNameString + | nitterUser joinDateString | + nitterUser := NitterUser new userName: userNameString. + name := nitterUser name. + userName := nitterUser userName. + "((title splitOn: '/') second trimmed) allButFirst." "<--This should go to a test." + profileImageUrl := nitterUser profileImageUrl. + description := nitterUser description. + createdAt := nitterUser createdAt. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/getMessages.st b/Socialmetrica.package/TwitterUser.class/instance/getMessages.st new file mode 100644 index 0000000..03cd1ff --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/getMessages.st @@ -0,0 +1,2 @@ +accessing +getMessages \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/groups..st b/Socialmetrica.package/TwitterUser.class/instance/groups..st new file mode 100644 index 0000000..1d4ed02 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/groups..st @@ -0,0 +1,3 @@ +accessing +groups: aTwitterUsersGroupCollection + groups := aTwitterUsersGroupCollection \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/groups.st b/Socialmetrica.package/TwitterUser.class/instance/groups.st new file mode 100644 index 0000000..86554a6 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/groups.st @@ -0,0 +1,3 @@ +accessing +groups + ^ groups ifNil: [ groups := OrderedCollection new] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/gtViewProfileDetailsOn..st b/Socialmetrica.package/TwitterUser.class/instance/gtViewProfileDetailsOn..st new file mode 100644 index 0000000..49c9da6 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/gtViewProfileDetailsOn..st @@ -0,0 +1,24 @@ +ui +gtViewProfileDetailsOn: aView + + ^ aView explicit + title: 'Details' translated; + priority: 5; + stencil: [ + | container imageContainer | + container := BlElement new + layout: BlFlowLayout new; + constraintsDo: [ :c | + c vertical fitContent. + c horizontal matchParent ]; + padding: (BlInsets all: 10). + imageContainer := BlLazyElement new + withGlamorousPreview; + aptitude: BrShadowAptitude new; + background: Color white; + margin: (BlInsets all: 20); + constraintsDo: [ :c | + c vertical exact: 175. + c horizontal matchParent ]; + elementBuilder: [ self asCardElement margin: (BlInsets all: 20) ]. + container addChild: imageContainer]. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/guiLinkLabel.st b/Socialmetrica.package/TwitterUser.class/instance/guiLinkLabel.st new file mode 100644 index 0000000..2e620ee --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/guiLinkLabel.st @@ -0,0 +1,4 @@ +accessing +guiLinkLabel + self url ifNil: [^ '']. + ^ (self url asString copyReplaceAll: self url scheme, '://' with: '') allButLast \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/id.st b/Socialmetrica.package/TwitterUser.class/instance/id.st new file mode 100644 index 0000000..41241a3 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/id.st @@ -0,0 +1,3 @@ +accessing +id + ^ id \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/metrics..st b/Socialmetrica.package/TwitterUser.class/instance/metrics..st new file mode 100644 index 0000000..452c93c --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/metrics..st @@ -0,0 +1,3 @@ +accessing +metrics: aDictionary + metrics := aDictionary \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/metrics.st b/Socialmetrica.package/TwitterUser.class/instance/metrics.st new file mode 100644 index 0000000..1c190cd --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/metrics.st @@ -0,0 +1,3 @@ +accessing +metrics + ^ metrics ifNil: [ metrics := Dictionary new] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/name.st b/Socialmetrica.package/TwitterUser.class/instance/name.st new file mode 100644 index 0000000..22077c2 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/name.st @@ -0,0 +1,3 @@ +accessing +name + ^ name \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/printOn..st b/Socialmetrica.package/TwitterUser.class/instance/printOn..st new file mode 100644 index 0000000..bc3acd6 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '(@', self userName,')' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/profileBio.st b/Socialmetrica.package/TwitterUser.class/instance/profileBio.st new file mode 100644 index 0000000..f971e84 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/profileBio.st @@ -0,0 +1,3 @@ +accessing +profileBio + ^ profileBio \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/profileImage.st b/Socialmetrica.package/TwitterUser.class/instance/profileImage.st new file mode 100644 index 0000000..686ba94 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/profileImage.st @@ -0,0 +1,7 @@ +accessing +profileImage + ^ BlUrlImageElement url: self profileImageUrl + "The previous version has something like + imageTemp on: Error do: [ ^ GtABContact new avatar ]. + ^ imageTemp value asElement + Should a generic avatar be reimplemented?" \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/profileImageFile.st b/Socialmetrica.package/TwitterUser.class/instance/profileImageFile.st new file mode 100644 index 0000000..bdc9f62 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/profileImageFile.st @@ -0,0 +1,3 @@ +accessing +profileImageFile + ^ profileImageFile \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/profileImageUrl.st b/Socialmetrica.package/TwitterUser.class/instance/profileImageUrl.st new file mode 100644 index 0000000..66db418 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/profileImageUrl.st @@ -0,0 +1,3 @@ +accessing +profileImageUrl + ^ profileImageUrl \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/tweets..st b/Socialmetrica.package/TwitterUser.class/instance/tweets..st new file mode 100644 index 0000000..27e07ae --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/tweets..st @@ -0,0 +1,3 @@ +accessing +tweets: aTweetsCollection + tweets := aTweetsCollection \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/tweets.st b/Socialmetrica.package/TwitterUser.class/instance/tweets.st new file mode 100644 index 0000000..7f01686 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/tweets.st @@ -0,0 +1,3 @@ +accessing +tweets + ^ tweets ifNil: [ tweets := OrderedCollection new ] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/url.st b/Socialmetrica.package/TwitterUser.class/instance/url.st new file mode 100644 index 0000000..958fa17 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/url.st @@ -0,0 +1,3 @@ +accessing +url + ^ url \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/userName.st b/Socialmetrica.package/TwitterUser.class/instance/userName.st new file mode 100644 index 0000000..2debc7e --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/userName.st @@ -0,0 +1,3 @@ +accessing +userName + ^ userName \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/instance/webView.st b/Socialmetrica.package/TwitterUser.class/instance/webView.st new file mode 100644 index 0000000..6aba999 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/instance/webView.st @@ -0,0 +1,3 @@ +accessing +webView + WebBrowser openOn: 'https://twitter.com/',self userName \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUser.class/properties.json b/Socialmetrica.package/TwitterUser.class/properties.json new file mode 100644 index 0000000..1953476 --- /dev/null +++ b/Socialmetrica.package/TwitterUser.class/properties.json @@ -0,0 +1,24 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "id", + "name", + "userName", + "profileImageUrl", + "description", + "metrics", + "tweets", + "createdAt", + "groups", + "url", + "profileImageFile", + "profileBio" + ], + "name" : "TwitterUser", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/README.md b/Socialmetrica.package/TwitterUsersGroup.class/README.md new file mode 100644 index 0000000..d1f8f68 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/README.md @@ -0,0 +1,5 @@ +I model a group of Twitter users. Generally I am the result of running a query on the Twitter API or refining over another +Twitter users group. + +I have methods that allow the running of such queries and making visualizations on particular properties of my users +or their tweets and in the future I will support topic modelling. \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/date..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/date..st new file mode 100644 index 0000000..98aff15 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/date..st @@ -0,0 +1,4 @@ +accessing +date: aDateAndTime + + date := aDateAndTime \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/date.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/date.st new file mode 100644 index 0000000..7e72937 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/date.st @@ -0,0 +1,4 @@ +accessing +date + + ^ date \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics..st new file mode 100644 index 0000000..bed6c52 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics..st @@ -0,0 +1,3 @@ +accessing +discourseTopics: discourseTopicsArray + discourseTopics := discourseTopicsArray \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics.st new file mode 100644 index 0000000..80ff725 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/discourseTopics.st @@ -0,0 +1,3 @@ +accessing +discourseTopics + ^ discourseTopics \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/gtTwitterUsersGroupOn..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/gtTwitterUsersGroupOn..st new file mode 100644 index 0000000..4b855ff --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/gtTwitterUsersGroupOn..st @@ -0,0 +1,13 @@ +accessing +gtTwitterUsersGroupOn: aView + + ^ aView columnedList + title: self title translated; + priority: 5; + items: [ self users ]; + column: 'Imagen' + icon: [ :aTwitterUser | aTwitterUser profileImage asElement asScalableElement size: 32 @ 32 ] + width: 75; + column: 'User Name' text: [ :aTwitterUser | '@', aTwitterUser userName ]; + column: 'Name' text: [ :aTwitterUser | aTwitterUser name ]; + column: 'Mentions' text: [ :aTwitterUser | aTwitterUser tweets size asString ] \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/origin..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/origin..st new file mode 100644 index 0000000..c1a36f6 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/origin..st @@ -0,0 +1,4 @@ +accessing +origin: anObject + + origin := anObject \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/origin.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/origin.st new file mode 100644 index 0000000..132b402 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/origin.st @@ -0,0 +1,4 @@ +accessing +origin + + ^ origin \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/printOn..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/printOn..st new file mode 100644 index 0000000..dedd3c4 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/printOn..st @@ -0,0 +1,5 @@ +accessing +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '( ', self users size asString, ' users )' \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/storage..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/storage..st new file mode 100644 index 0000000..90f97ef --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/storage..st @@ -0,0 +1,4 @@ +accessing +storage: aFileReference + + storage := aFileReference \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/storage.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/storage.st new file mode 100644 index 0000000..7275c54 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/storage.st @@ -0,0 +1,4 @@ +accessing +storage + + ^ storage \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/title..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/title..st new file mode 100644 index 0000000..b28409e --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/title..st @@ -0,0 +1,3 @@ +accessing +title: aString + title := aString \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/title.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/title.st new file mode 100644 index 0000000..fc1a896 --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/title.st @@ -0,0 +1,3 @@ +accessing +title + ^ title \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/users..st b/Socialmetrica.package/TwitterUsersGroup.class/instance/users..st new file mode 100644 index 0000000..d72369d --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/users..st @@ -0,0 +1,3 @@ +accessing +users: aTwitterUsersCollection + users := aTwitterUsersCollection \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/instance/users.st b/Socialmetrica.package/TwitterUsersGroup.class/instance/users.st new file mode 100644 index 0000000..dd6474d --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/instance/users.st @@ -0,0 +1,3 @@ +accessing +users + ^ users \ No newline at end of file diff --git a/Socialmetrica.package/TwitterUsersGroup.class/properties.json b/Socialmetrica.package/TwitterUsersGroup.class/properties.json new file mode 100644 index 0000000..2462f2b --- /dev/null +++ b/Socialmetrica.package/TwitterUsersGroup.class/properties.json @@ -0,0 +1,18 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Socialmetrica", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "users", + "title", + "discourseTopics", + "origin", + "date", + "storage" + ], + "name" : "TwitterUsersGroup", + "type" : "normal" +} \ No newline at end of file diff --git a/Socialmetrica.package/monticello.meta/categories.st b/Socialmetrica.package/monticello.meta/categories.st new file mode 100644 index 0000000..e742cbf --- /dev/null +++ b/Socialmetrica.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #Socialmetrica! diff --git a/Socialmetrica.package/monticello.meta/initializers.st b/Socialmetrica.package/monticello.meta/initializers.st new file mode 100644 index 0000000..e69de29 diff --git a/Socialmetrica.package/monticello.meta/package b/Socialmetrica.package/monticello.meta/package new file mode 100644 index 0000000..c84564c --- /dev/null +++ b/Socialmetrica.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Socialmetrica') \ No newline at end of file diff --git a/Socialmetrica.package/properties.json b/Socialmetrica.package/properties.json new file mode 100644 index 0000000..6f31cf5 --- /dev/null +++ b/Socialmetrica.package/properties.json @@ -0,0 +1 @@ +{ } \ No newline at end of file